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/User/BadgeWall/BadgePreview.svelte | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

(limited to 'src/lib/User/BadgeWall/BadgePreview.svelte')

diff --git a/src/lib/User/BadgeWall/BadgePreview.svelte b/src/lib/User/BadgeWall/BadgePreview.svelte
index 104a53da..ebf47d9b 100644
--- a/src/lib/User/BadgeWall/BadgePreview.svelte
+++ b/src/lib/User/BadgeWall/BadgePreview.svelte
@@ -147,7 +147,7 @@ const onClick = (event: MouseEvent) => {
       {/if}
 
       {#if selectedBadge.designer}
-        <b>Designer:</b>
+        <b>{$locale().badgePreview?.designer}</b>
 
         <!-- {#if selectedBadge.designer.startsWith('http')}
 				<a href={selectedBadge.designer} target="_blank">
@@ -166,7 +166,11 @@ const onClick = (event: MouseEvent) => {
       {/if}
 
       {#if selectedBadge.post && selectedBadge.post !== '#'}
-        <b>{selectedBadge.post.includes('forum') ? 'Forum' : 'Activity'}:</b>
+        <b
+          >{selectedBadge.post.includes('forum')
+            ? $locale().badgePreview?.forum
+            : $locale().badgePreview?.activity}:</b
+        >
 
         <a href={selectedBadge.post} target="_blank">
           {selectedBadge.post}
@@ -176,7 +180,7 @@ const onClick = (event: MouseEvent) => {
       {/if}
 
       {#if selectedBadge.source}
-        <b>Source:</b>
+        <b>{$locale().badgePreview?.source}</b>
 
         {#if selectedBadge.source.startsWith('http')}
           <!-- <a href={selectedBadge.source} target="_blank">
@@ -191,7 +195,7 @@ const onClick = (event: MouseEvent) => {
       {/if}
 
       {#if selectedBadge.category}
-        <b>Category:</b>
+        <b>{$locale().badgePreview?.category}</b>
 
         <a href={`?category=${selectedBadge.category}`} onclick={() => (selectedBadge = undefined)}>
           {selectedBadge.category}
@@ -200,18 +204,18 @@ const onClick = (event: MouseEvent) => {
         <br />
       {/if}
 
-      <b>SauceNAO:</b>
+      <b>{$locale().badgePreview?.sauceNAO}</b>
       <a href={`https://saucenao.com/search.php?url=${selectedBadge.image}`} target="_blank">
-        Search
+        {$locale().badgePreview?.search}
       </a>
 
       <div class="badge-preview-seek">
         {#if hasPrevious}
-          <button onclick={onPrevious}>Previous</button>
+          <button onclick={onPrevious}>{$locale().badgePreview?.previous}</button>
         {/if}
 
         {#if hasNext}
-          <button onclick={onNext} style="float: right;">Next</button>
+          <button onclick={onNext} style="float: right;">{$locale().badgePreview?.next}</button>
         {/if}
       </div>
     </div>
-- 
cgit v1.2.3

