aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-17 22:34:49 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-17 22:34:49 +0200
commitc55662a90d6bbfcb4001df26705231cb7d0a4ba2 (patch)
treedc1132c5ced33e158866d42995b23d49cd36fa55
parent931222e85a070762f20819341252254d5f5f3a5c (diff)
downloadhurrycurry-c55662a90d6bbfcb4001df26705231cb7d0a4ba2.tar
hurrycurry-c55662a90d6bbfcb4001df26705231cb7d0a4ba2.tar.bz2
hurrycurry-c55662a90d6bbfcb4001df26705231cb7d0a4ba2.tar.zst
tc: lang from url
-rw-r--r--test-client/locale.ts19
-rw-r--r--test-client/main.ts2
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/`