aboutsummaryrefslogtreecommitdiffstats
path: root/apps/kit/src/lib/locale.ts
blob: e1fb6d6e30a58f8fa847c41afe1d56e3596e84ce (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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<Locales>((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);
}