28 lines
745 B
TypeScript
28 lines
745 B
TypeScript
import i18n from "i18next";
|
|
import { initReactI18next } from "react-i18next";
|
|
import en from "./en.json";
|
|
import sv from "./sv.json";
|
|
|
|
export const LOCALE_KEY = "locale";
|
|
const stored =
|
|
typeof localStorage !== "undefined" ? localStorage.getItem(LOCALE_KEY) : null;
|
|
const fallback = "en";
|
|
|
|
void i18n.use(initReactI18next).init({
|
|
resources: { en: { translation: en }, sv: { translation: sv } },
|
|
lng: stored ?? fallback,
|
|
fallbackLng: fallback,
|
|
interpolation: { escapeValue: false },
|
|
});
|
|
|
|
function syncHtmlLang(lng: string) {
|
|
if (typeof document !== "undefined") {
|
|
document.documentElement.lang = lng.startsWith("sv") ? "sv" : "en";
|
|
}
|
|
}
|
|
|
|
i18n.on("languageChanged", syncHtmlLang);
|
|
syncHtmlLang(i18n.language);
|
|
|
|
export default i18n;
|