auto select language code
This commit is contained in:
21
src/main.tsx
21
src/main.tsx
@@ -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 }}>
|
||||||
|
|||||||
Reference in New Issue
Block a user