diff options
| author | Fuwn <[email protected]> | 2026-05-24 13:22:34 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-05-24 13:22:34 +0000 |
| commit | 56a7a7851b09cb30a5cd543c8cb4f926109b4290 (patch) | |
| tree | a620f908405fa48fd601580c5a48432831ec5c33 /src/lib/CommandPalette/toggleActions.ts | |
| parent | fix(layout): preserve list panel when clicking action buttons in summary (diff) | |
| download | due.moe-56a7a7851b09cb30a5cd543c8cb4f926109b4290.tar.xz due.moe-56a7a7851b09cb30a5cd543c8cb4f926109b4290.zip | |
refactor(locale): move hardcoded UI strings into english locale
Adds optional namespaces (common, errors, commandPalette, headTitle,
notifications, schedule, events, home, reader, routes, badgePreview,
badgeWall) and extends existing ones (settings.*, lists.*, tools.*,
user.*, hololive.*) on the Locale interface. New fields are optional
so japanese.ts can omit them; svelte-i18n's fallbackLocale handles
the runtime miss.
HeadTitle gains an optional routeKey prop for type-safe lookup.
defaultActions becomes a factory so the command palette re-reads
locale on language toggle. The existing JP feedback translation
in routes/settings is preserved via japanese.ts.
Out of scope (kept hardcoded): service-worker.ts, app.html,
Landing*.svelte, tools.ts registry, Easter Event 2025 pages.
Diffstat (limited to 'src/lib/CommandPalette/toggleActions.ts')
| -rw-r--r-- | src/lib/CommandPalette/toggleActions.ts | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/src/lib/CommandPalette/toggleActions.ts b/src/lib/CommandPalette/toggleActions.ts index ca64ff5f..9ba1d121 100644 --- a/src/lib/CommandPalette/toggleActions.ts +++ b/src/lib/CommandPalette/toggleActions.ts @@ -1,4 +1,6 @@ import settings, { type Settings } from "$stores/settings"; +import locale from "$stores/locale"; +import { get } from "svelte/store"; import type { CommandPaletteAction } from "./actions"; const TITLE_FORMATS: Settings["displayTitleFormat"][] = [ @@ -51,82 +53,84 @@ export const toggleActions = (current: Settings): CommandPaletteAction[] => { const nextOutbound = OUTBOUND_TARGETS[(outboundIndex + 1) % OUTBOUND_TARGETS.length]; + const t = get(locale)().commandPalette?.toggles; + return [ boolToggle( current.display24HourTime, "display24HourTime", - "Switch to 24-hour time", - "Switch to 12-hour time", + t?.time24On ?? "Switch to 24-hour time", + t?.time24Off ?? "Switch to 12-hour time", ["time", "clock", "24h", "12h", "format"], ), boolToggle( current.displayDisableAnimations, "displayDisableAnimations", - "Disable animations", - "Enable animations", + t?.animationsOff ?? "Disable animations", + t?.animationsOn ?? "Enable animations", ["motion", "animation", "accessibility"], ), boolToggle( current.displayBlurAdultContent, "displayBlurAdultContent", - "Blur adult content", - "Show adult content unblurred", + t?.blurAdultOn ?? "Blur adult content", + t?.blurAdultOff ?? "Show adult content unblurred", ["nsfw", "adult", "blur", "censor"], ), boolToggle( current.displayCoverModeAnime, "displayCoverModeAnime", - "Show anime covers", - "Hide anime covers", + t?.showAnimeCovers ?? "Show anime covers", + t?.hideAnimeCovers ?? "Hide anime covers", ["cover", "image", "anime", "display"], ), boolToggle( current.displayCoverModeManga, "displayCoverModeManga", - "Show manga covers", - "Hide manga covers", + t?.showMangaCovers ?? "Show manga covers", + t?.hideMangaCovers ?? "Hide manga covers", ["cover", "image", "manga", "novels", "display"], ), boolToggle( current.displayHoverCover, "displayHoverCover", - "Enable hover cover preview", - "Disable hover cover preview", + t?.hoverCoverOn ?? "Enable hover cover preview", + t?.hoverCoverOff ?? "Disable hover cover preview", ["cover", "hover", "preview"], ), boolToggle( current.displayScheduleListMode, "displayScheduleListMode", - "Schedule: list mode", - "Schedule: grid mode", + t?.scheduleListMode ?? "Schedule: list mode", + t?.scheduleGridMode ?? "Schedule: grid mode", ["schedule", "list", "grid", "view"], ), boolToggle( current.displayReverseSort, "displayReverseSort", - "Reverse sort order", - "Restore default sort order", + t?.reverseSort ?? "Reverse sort order", + t?.restoreSort ?? "Restore default sort order", ["sort", "reverse", "order"], ), boolToggle( current.displayDataSaver, "displayDataSaver", - "Enable data saver", - "Disable data saver", + t?.dataSaverOn ?? "Enable data saver", + t?.dataSaverOff ?? "Disable data saver", ["data", "bandwidth", "saver", "performance"], ), boolToggle( current.displayDisableNotifications, "displayDisableNotifications", - "Disable in-app notifications", - "Enable in-app notifications", + t?.notificationsOff ?? "Disable in-app notifications", + t?.notificationsOn ?? "Enable in-app notifications", ["notifications", "alerts", "toast"], ), { name: current.displayLanguage === "en" - ? "Switch language to 日本語" - : "Switch language to English", + ? (t?.switchLanguageJa ?? "Switch language to 日本語") + : (t?.switchLanguageEn ?? "Switch language to English"), url: "#", preventDefault: true, tags: ["language", "locale", "translate", "japanese", "english"], @@ -137,14 +141,18 @@ export const toggleActions = (current: Settings): CommandPaletteAction[] => { ), }, { - name: `Title format: ${current.displayTitleFormat} → ${nextTitle}`, + name: (t?.titleFormat ?? "Title format: {from} → {to}") + .replace("{from}", current.displayTitleFormat) + .replace("{to}", nextTitle), url: "#", preventDefault: true, tags: ["title", "format", "english", "romaji", "native"], onClick: () => settings.setKey("displayTitleFormat", nextTitle), }, { - name: `Outbound links: ${OUTBOUND_LABELS[current.displayOutboundLinksTo]} → ${OUTBOUND_LABELS[nextOutbound]}`, + name: (t?.outboundLinks ?? "Outbound links: {from} → {to}") + .replace("{from}", OUTBOUND_LABELS[current.displayOutboundLinksTo]) + .replace("{to}", OUTBOUND_LABELS[nextOutbound]), url: "#", preventDefault: true, tags: [ |