auto select language code

This commit is contained in:
2023-10-25 14:08:33 +08:00
parent fc72a5b7c1
commit 695221d912

View File

@@ -1,10 +1,29 @@
import { render } from "preact"; import { render } from "preact";
import { App } from "./app"; import { App } from "./app";
import { useState } from "preact/hooks"; import { useState, useEffect } from "preact/hooks";
import { Tr, langCodeContext, LANG_OPTIONS } from "./translate"; import { Tr, langCodeContext, LANG_OPTIONS } from "./translate";
function Base() { function Base() {
const [langCode, setLangCode] = useState("en-US"); const [langCode, setLangCode] = useState("en-US");
// select language
useEffect(() => {
const browserCode = window.navigator.language;
for (const key in LANG_OPTIONS) {
for (const i in LANG_OPTIONS[key].matches) {
const code = LANG_OPTIONS[key].matches[i];
if (code === browserCode) {
console.log(`set langCode to "${code}"`);
setLangCode(key);
return;
}
}
}
// fallback to english
console.log('fallback langCode to "en-US"');
setLangCode("en-US");
}, []);
return ( return (
/* @ts-ignore */ /* @ts-ignore */
<langCodeContext.Provider value={{ langCode, setLangCode }}> <langCodeContext.Provider value={{ langCode, setLangCode }}>