summaryrefslogtreecommitdiff
path: root/test-client/locale.ts
diff options
context:
space:
mode:
Diffstat (limited to 'test-client/locale.ts')
-rw-r--r--test-client/locale.ts19
1 files changed, 18 insertions, 1 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"
+}