From 56a7a7851b09cb30a5cd543c8cb4f926109b4290 Mon Sep 17 00:00:00 2001
From: Fuwn <contact@fuwn.net>
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/List/Anime/CleanAnimeList.svelte | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

(limited to 'src/lib/List/Anime/CleanAnimeList.svelte')

diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte
index 42f4d933..5cb6cb1e 100644
--- a/src/lib/List/Anime/CleanAnimeList.svelte
+++ b/src/lib/List/Anime/CleanAnimeList.svelte
@@ -1,5 +1,6 @@
 <script lang="ts">
 import Spacer from "$lib/Layout/Spacer.svelte";
+import locale from "$stores/locale";
 
 import settings from "$stores/settings";
 import type { Media } from "$lib/Data/AniList/media";
@@ -250,7 +251,7 @@ const increment = (anime: Media, progress: number) => {
     <button
       class="small-button"
       onclick={() => (showRoulette = true)}
-      title="Pick a random anime to watch"
+      title={$locale().lists.actions?.pickRandomAnime}
     >
       Roulette
     </button>
@@ -258,12 +259,13 @@ const increment = (anime: Media, progress: number) => {
 </ListTitle>
 
 {#if media.length === 0}
-  No anime to display. <button onclick={() => (animeLists = cleanCache(user, $identity))}>
-    Force refresh
+  {$locale().lists.empty?.anime}
+  <button onclick={() => (animeLists = cleanCache(user, $identity))}>
+    {$locale().lists.actions?.forceRefresh}
   </button>
 {:else if $settings.displayMediaListFilter && !disableFilter && hasDistinguishingList}
   <select value={selectedList} onchange={updateSelectedList}>
-    <option value="All">All</option>
+    <option value="All">{$locale().lists.actions?.all}</option>
 
     {#each lists as list}
       <option value={list}>{list}</option>
-- 
cgit v1.2.3

