23 lines
644 B
TypeScript
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 };
|