Files
tool-evaluator/artifacts/toolrate/src/i18n/index.ts
T
opencode 2f38889726
Build & Push Docker Image / build (push) Successful in 2m31s
fix: compact filter popover; feat: i18n (de/en)
2026-08-02 13:42:53 +02:00

38 lines
1.0 KiB
TypeScript

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;