aboutsummaryrefslogtreecommitdiffstats
path: root/apps/projects/src/app/lib/stores/locale.ts
blob: 1215c200beb4df7049e2a5dc51a2c1114ad36f6c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import {base_domain, CookieNames} from "$shared/lib/configuration";
import {get_cookie, set_cookie} from "$shared/lib/helpers";
import {writable} from "svelte/store";
import type {Locales} from "$app/lib/i18n/i18n-types";

export function preffered_or_default(): Locales {
    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";
}

export const currentLocale = writable<Locales>((get_cookie(CookieNames.locale) ?? preffered_or_default()) as Locales);
currentLocale.subscribe(locale => {
    //@ts-ignore
    if (locale === "preffered") set_cookie(CookieNames.locale, preffered_or_default(), base_domain());
    set_cookie(CookieNames.locale, locale, base_domain());
});