this repo has no description
1import { _, getLocaleFromNavigator, init, locale, register } from "svelte-i18n"; 2 3const LOCALE_STORAGE_KEY = "tranquil-pds-locale"; 4 5const SUPPORTED_LOCALES = ["en", "zh", "ja", "ko", "sv", "fi"] as const; 6export type SupportedLocale = typeof SUPPORTED_LOCALES[number]; 7 8export const localeNames: Record<SupportedLocale, string> = { 9 en: "English", 10 zh: "中文", 11 ja: "日本語", 12 ko: "한국어", 13 sv: "Svenska", 14 fi: "Suomi", 15}; 16 17register("en", () => import("../locales/en.json")); 18register("zh", () => import("../locales/zh.json")); 19register("ja", () => import("../locales/ja.json")); 20register("ko", () => import("../locales/ko.json")); 21register("sv", () => import("../locales/sv.json")); 22register("fi", () => import("../locales/fi.json")); 23 24function getInitialLocale(): string { 25 const stored = localStorage.getItem(LOCALE_STORAGE_KEY); 26 if (stored && SUPPORTED_LOCALES.includes(stored as SupportedLocale)) { 27 return stored; 28 } 29 30 const browserLocale = getLocaleFromNavigator(); 31 if (browserLocale) { 32 const lang = browserLocale.split("-")[0]; 33 if (SUPPORTED_LOCALES.includes(lang as SupportedLocale)) { 34 return lang; 35 } 36 } 37 38 return "en"; 39} 40 41export function initI18n() { 42 init({ 43 fallbackLocale: "en", 44 initialLocale: getInitialLocale(), 45 }); 46} 47 48export function setLocale(newLocale: SupportedLocale) { 49 locale.set(newLocale); 50 localStorage.setItem(LOCALE_STORAGE_KEY, newLocale); 51 document.documentElement.lang = newLocale; 52} 53 54export function getSupportedLocales(): SupportedLocale[] { 55 return [...SUPPORTED_LOCALES]; 56} 57 58export { _, locale };