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/Error | |
| 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/Error')
| -rw-r--r-- | src/lib/Error/AnimeRateLimited.svelte | 3 | ||||
| -rw-r--r-- | src/lib/Error/LogInRestricted.svelte | 7 | ||||
| -rw-r--r-- | src/lib/Error/RateLimited.svelte | 31 |
3 files changed, 25 insertions, 16 deletions
diff --git a/src/lib/Error/AnimeRateLimited.svelte b/src/lib/Error/AnimeRateLimited.svelte index 70509a0c..c8b822e0 100644 --- a/src/lib/Error/AnimeRateLimited.svelte +++ b/src/lib/Error/AnimeRateLimited.svelte @@ -1,12 +1,13 @@ <script> import Spacer from "$lib/Layout/Spacer.svelte"; import Popup from "$lib/Layout/Popup.svelte"; +import locale from "$stores/locale"; </script> <Popup locked fullscreen> <p><slot /></p> - <span>It is likely that you have been rate-limited by AniList. Please try again later.</span> + <span>{$locale().errors?.animeRateLimited}</span> {#await fetch('https://api.waifu.pics/sfw/cry') then response} {#await response.json() then json} diff --git a/src/lib/Error/LogInRestricted.svelte b/src/lib/Error/LogInRestricted.svelte index 999f2db3..0d4f00e3 100644 --- a/src/lib/Error/LogInRestricted.svelte +++ b/src/lib/Error/LogInRestricted.svelte @@ -2,18 +2,19 @@ import Popup from "$lib/Layout/Popup.svelte"; import { env } from "$env/dynamic/public"; import localforage from "localforage"; +import locale from "$stores/locale"; </script> <Popup fullscreen locked> <div class="message"> - Please <a + {$locale().errors?.loginRequiredPrefix}<a href={`https://anilist.co/api/v2/oauth/authorize?client_id=${env.PUBLIC_ANILIST_CLIENT_ID}&redirect_uri=${env.PUBLIC_ANILIST_REDIRECT_URI}&response_type=code`} onclick={async () => { await localforage.setItem( 'redirect', window.location.origin + window.location.pathname + window.location.search ); - }}>log in</a - > to view this page. + }}>{$locale().errors?.loginRequiredLink}</a + >{$locale().errors?.loginRequiredSuffix} </div> </Popup> diff --git a/src/lib/Error/RateLimited.svelte b/src/lib/Error/RateLimited.svelte index 2a79efb6..890c4d20 100644 --- a/src/lib/Error/RateLimited.svelte +++ b/src/lib/Error/RateLimited.svelte @@ -1,5 +1,6 @@ <script lang="ts"> import Spacer from "$lib/Layout/Spacer.svelte"; +import locale from "$stores/locale"; export let type = "Media"; export let loginSessionError = true; export let contact = true; @@ -13,15 +14,18 @@ export let might = true; <ul> <li> <p> - {type} could not be loaded. You{might ? ' might' : ''} have been rate-limited. {#if !might} - Try again in one minute. + {type} + {might + ? $locale().errors?.rateLimited?.notLoadedMight + : $locale().errors?.rateLimited?.notLoadedDefinitely} + {#if !might} + {$locale().errors?.rateLimited?.tryAgainOneMinute} {/if} </p> {#if loginSessionError} <p> - Your login session may have expired. Try logging out and logging back in, or try again - in a few minutes. + {$locale().errors?.rateLimited?.sessionExpired} </p> {/if} @@ -30,22 +34,25 @@ export let might = true; {#if contact} <Spacer /> - If the problem persists, please contact - <a href="https://anilist.co/user/fuwn" target="_blank">@fuwn</a> on AniList. + {$locale().errors?.rateLimited?.contactSupport?.split('@fuwn')[0]} + <a href="https://anilist.co/user/fuwn" target="_blank">@fuwn</a>{$locale().errors?.rateLimited?.contactSupport?.split('@fuwn')[1]} {/if} </li> </ul> {:else} <p> - {type} could not be loaded. You{might ? ' might' : ''} have been rate-limited. {#if !might} - Try again in one minute. + {type} + {might + ? $locale().errors?.rateLimited?.notLoadedMight + : $locale().errors?.rateLimited?.notLoadedDefinitely} + {#if !might} + {$locale().errors?.rateLimited?.tryAgainOneMinute} {/if} </p> {#if loginSessionError} <p> - Your login session may have expired. Try logging out and logging back in, or try again in a - few minutes. + {$locale().errors?.rateLimited?.sessionExpired} </p> {/if} @@ -54,8 +61,8 @@ export let might = true; {#if contact} <Spacer /> - If the problem persists, please contact - <a href="https://anilist.co/user/fuwn" target="_blank">@fuwn</a> on AniList. + {$locale().errors?.rateLimited?.contactSupport?.split('@fuwn')[0]} + <a href="https://anilist.co/user/fuwn" target="_blank">@fuwn</a>{$locale().errors?.rateLimited?.contactSupport?.split('@fuwn')[1]} {/if} {/if} </div> |