Files
gerbeur/src/i18n.ts

23 lines
644 B
TypeScript

import { i18n } from "@lingui/core";
const SUPPORTED = ["en", "fr"] as const;
type Locale = (typeof SUPPORTED)[number];
function detectLocale(): Locale {
const stored = localStorage.getItem("locale");
if (stored && (SUPPORTED as readonly string[]).includes(stored)) {
return stored as Locale;
}
return navigator.language.startsWith("fr") ? "fr" : "en";
}
export async function loadCatalog(locale: Locale = detectLocale()) {
const { messages } = await import(`./locales/${locale}.po`);
i18n.load(locale, messages);
i18n.activate(locale);
localStorage.setItem("locale", locale);
}
export { i18n };
export type { Locale };