fix: compact filter popover; feat: i18n (de/en)
Build & Push Docker Image / build (push) Successful in 2m31s
Build & Push Docker Image / build (push) Successful in 2m31s
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import i18n from "i18next";
|
||||
import { initReactI18next } from "react-i18next";
|
||||
import en from "./locales/en.json";
|
||||
import de from "./locales/de.json";
|
||||
|
||||
export const SUPPORTED_LANGUAGES = [
|
||||
{ code: "en", label: "English" },
|
||||
{ code: "de", label: "Deutsch" },
|
||||
] as const;
|
||||
|
||||
export type LanguageCode = (typeof SUPPORTED_LANGUAGES)[number]["code"];
|
||||
|
||||
const STORAGE_KEY = "toolr-language";
|
||||
|
||||
export function getStoredLanguage(): LanguageCode {
|
||||
if (typeof window === "undefined") return "en";
|
||||
const stored = window.localStorage.getItem(STORAGE_KEY);
|
||||
if (stored === "en" || stored === "de") return stored;
|
||||
const nav = window.navigator.language?.toLowerCase() ?? "";
|
||||
return nav.startsWith("de") ? "de" : "en";
|
||||
}
|
||||
|
||||
export function setStoredLanguage(lang: LanguageCode) {
|
||||
window.localStorage.setItem(STORAGE_KEY, lang);
|
||||
}
|
||||
|
||||
void i18n.use(initReactI18next).init({
|
||||
resources: {
|
||||
en: { translation: en },
|
||||
de: { translation: de },
|
||||
},
|
||||
lng: getStoredLanguage(),
|
||||
fallbackLng: "en",
|
||||
interpolation: { escapeValue: false },
|
||||
});
|
||||
|
||||
export default i18n;
|
||||
Reference in New Issue
Block a user