import { createI18n } from "vue-i18n";
import en from "./en.json";
import ru from "./ru.json";
const STORAGE_KEY = "ltt.locale";
export const SUPPORTED_LOCALES = ["en", "ru"] as const;
export type Locale = (typeof SUPPORTED_LOCALES)[number];
function initialLocale(): Locale {
try {
const saved = localStorage.getItem(STORAGE_KEY) as Locale | null;
if (saved && SUPPORTED_LOCALES.includes(saved)) return saved;
} catch {
/* storage unavailable */
}
const nav = navigator.language.slice(0, 2);
return SUPPORTED_LOCALES.includes(nav as Locale) ? (nav as Locale) : "en";
}
export const i18n = createI18n({
legacy: false,
locale: initialLocale(),
fallbackLocale: "en",
messages: { en, ru },
});
export function setLocale(locale: Locale) {
i18n.global.locale.value = locale;
try {
localStorage.setItem(STORAGE_KEY, locale);
} catch {
/* storage unavailable */
}
}