diff options
Diffstat (limited to 'test-client')
-rw-r--r-- | test-client/locale.ts | 19 | ||||
-rw-r--r-- | test-client/main.ts | 2 |
2 files changed, 19 insertions, 2 deletions
diff --git a/test-client/locale.ts b/test-client/locale.ts index 61d083b4..b584be3c 100644 --- a/test-client/locale.ts +++ b/test-client/locale.ts @@ -1,6 +1,14 @@ +const LANGUAGES = [ + "ar", "de", "en", "es", "eu", + "fi", "fr", "he", "ja", "nl", + "pl", "pt", "to", "tr", + "zh_Hans", "zh_Hant", +] + let TR: { [key: string]: string } = {} -export async function init_locale(lang: string) { +export async function init_locale(lang?: string) { + if (!lang) return await init_locale(select_language()) const res = await fetch(`/locale/${encodeURIComponent(lang)}.json`, { headers: { "Accept": "application/json" } }) if (!res.ok) throw new Error("language pack download failed"); TR = await res.json() @@ -12,3 +20,12 @@ export function tr(key: string, ...args: string[]): string { s = s.replace(/%(s|i)/ig, () => args.shift() ?? "[not provided]") return s } + +function select_language(): string { + const plang = (new URLSearchParams(globalThis.location.hash.substring(1))).get("lang") + if (plang) return plang + const navlang = navigator.language.split("-")[0] ?? "en" + if (navlang in LANGUAGES) return navlang + console.warn("fallback language selected"); + return "en" +} diff --git a/test-client/main.ts b/test-client/main.ts index 9ec4ac5e..1b2d7db3 100644 --- a/test-client/main.ts +++ b/test-client/main.ts @@ -37,7 +37,7 @@ export let ctx: CanvasRenderingContext2D; export let canvas: HTMLCanvasElement; let ws: WebSocket; document.addEventListener("DOMContentLoaded", async () => { - await init_locale(navigator.language.split("-")[0] ?? "en") + await init_locale() const ws_uri = window.location.protocol.endsWith("s:") ? `wss://${window.location.host}/` : `ws://${window.location.hostname}:27032/` |