import {setLocale} from "src/lib/i18n/i18n-svelte"; import {loadLocaleAsync} from "src/lib/i18n/i18n-util.async"; import {writable} from "svelte/store"; import {base_domain, CookieNames} from "./configuration"; import {get_cookie, set_cookie} from "./helpers"; export function preffered_or_default() { if (/^en\b/i.test(navigator.language)) { return "en"; } if (/^nb\b/i.test(navigator.language) || /^nn\b/i.test(navigator.language)) { return "nb"; } return "en"; } type Locales = "en" | "nb"; export const currentLocale = writable((get_cookie(CookieNames.locale) === "preffered" ? preffered_or_default() : get_cookie(CookieNames.locale) ?? preffered_or_default()) as Locales); currentLocale.subscribe(locale => { // @ts-ignore set_cookie(CookieNames.locale, locale, base_domain()); }); export async function load_and_set_locale(locale: Locales) { await loadLocaleAsync(locale); setLocale(locale); }