From 56a7a7851b09cb30a5cd543c8cb4f926109b4290 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sun, 24 May 2026 13:22:34 +0000 Subject: 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. --- src/lib/CommandPalette/CommandPalette.svelte | 16 +- src/lib/CommandPalette/actions.ts | 356 ++++++++--------- src/lib/CommandPalette/authActions.ts | 8 +- src/lib/CommandPalette/syncActions.ts | 35 +- src/lib/CommandPalette/toggleActions.ts | 56 +-- src/lib/Data/AniList/media.ts | 6 +- src/lib/Error/AnimeRateLimited.svelte | 3 +- src/lib/Error/LogInRestricted.svelte | 7 +- src/lib/Error/RateLimited.svelte | 31 +- src/lib/Hololive/Lives.svelte | 3 +- src/lib/Home/HeadTitle.svelte | 21 +- src/lib/Home/LastActivity.svelte | 10 +- src/lib/Image/FallbackImage.svelte | 4 +- src/lib/List/Anime/CleanAnimeList.svelte | 10 +- src/lib/List/Manga/CleanMangaList.svelte | 36 +- src/lib/List/Manga/MangaListTemplate.svelte | 7 +- src/lib/List/MediaRoulette.svelte | 34 +- src/lib/Loading/Message.svelte | 5 +- src/lib/Locale/english.ts | 485 +++++++++++++++++++++++- src/lib/Locale/japanese.ts | 4 + src/lib/Locale/layout.ts | 429 +++++++++++++++++++++ src/lib/Media/invalidate.ts | 6 +- src/lib/Reader/Chapters/MangaDex.svelte | 8 +- src/lib/Schedule/Crunchyroll.svelte | 5 +- src/lib/Settings/Categories/Attributions.svelte | 29 +- src/lib/Settings/Categories/Cache.svelte | 12 +- src/lib/Settings/Categories/Calculation.svelte | 35 +- src/lib/Settings/Categories/Debug.svelte | 9 +- src/lib/Settings/Categories/Display.svelte | 77 ++-- src/lib/Settings/Categories/RSSFeeds.svelte | 5 +- src/lib/Settings/Categories/SettingSync.svelte | 17 +- src/lib/Settings/SettingCheckboxToggle.svelte | 2 +- src/lib/Settings/Verbiage.svelte | 25 +- src/lib/Tools/ActivityHistory/Grid.svelte | 3 +- src/lib/Tools/ActivityHistory/Tool.svelte | 5 +- src/lib/Tools/EpisodeDiscussionCollector.svelte | 9 +- src/lib/Tools/FollowFix.svelte | 3 +- src/lib/Tools/InputTemplate.svelte | 3 +- src/lib/Tools/Likes.svelte | 3 +- src/lib/Tools/Picker.svelte | 5 +- src/lib/Tools/SequelCatcher/List.svelte | 9 +- src/lib/Tools/SequelCatcher/Tool.svelte | 11 +- src/lib/Tools/SequelSpy/Tool.svelte | 12 +- src/lib/Tools/Tracker/Tool.svelte | 34 +- src/lib/Tools/Wrapped/Tool.svelte | 141 ++++--- src/lib/User/BadgeWall/AWC.svelte | 4 +- src/lib/User/BadgeWall/BadgePreview.svelte | 20 +- src/lib/User/BadgeWall/Badges.svelte | 3 +- src/lib/User/BadgeWall/FallbackBadge.svelte | 7 +- src/lib/Utility/Loading.svelte | 6 +- 50 files changed, 1597 insertions(+), 477 deletions(-) (limited to 'src/lib') diff --git a/src/lib/CommandPalette/CommandPalette.svelte b/src/lib/CommandPalette/CommandPalette.svelte index b68d468d..04eabff9 100644 --- a/src/lib/CommandPalette/CommandPalette.svelte +++ b/src/lib/CommandPalette/CommandPalette.svelte @@ -3,6 +3,7 @@ import { onMount } from "svelte"; import { fly, fade } from "svelte/transition"; import { flip } from "svelte/animate"; import type { CommandPaletteAction } from "./actions"; +import locale from "$stores/locale"; export let items: CommandPaletteAction[] = []; export let open = false; @@ -176,7 +177,7 @@ const handleGlobalKey = (e: KeyboardEvent) => { class="dropdown {open ? 'fade-in' : 'fade-out'}" role="dialog" aria-modal="true" - aria-label="Command palette" + aria-label={$locale().commandPalette?.ariaLabel} >