Use the preferred language from the browser when user is not logged in

Resolves VBV-421
This commit is contained in:
Ramon Wenger 2023-06-06 22:37:03 +02:00
parent 57bfadf94a
commit 37fcd1dd3b
1 changed files with 18 additions and 1 deletions

View File

@ -2,6 +2,7 @@ import log from "loglevel";
import { bustItGetCache, itGetCached, itPost } from "@/fetchHelpers";
import { loadLocaleMessages, setI18nLanguage } from "@/i18n";
import { usePreferredLanguages } from "@vueuse/core";
import dayjs from "dayjs";
import { defineStore } from "pinia";
@ -31,6 +32,22 @@ export type UserState = {
language: AvailableLanguages;
};
const languages = usePreferredLanguages();
const isAvailableLanguage = (language: string): language is AvailableLanguages => {
return language in AVAILABLE_LANGUAGES;
};
let defaultLanguage: AvailableLanguages = "de";
const AVAILABLE_LANGUAGES = ["de", "fr", "it"];
for (const language of languages.value) {
if (isAvailableLanguage(language)) {
defaultLanguage = language;
break;
}
}
const initialUserState: UserState = {
id: 0,
email: "",
@ -41,7 +58,7 @@ const initialUserState: UserState = {
is_superuser: false,
course_session_experts: [],
loggedIn: false,
language: "de",
language: defaultLanguage,
};
async function setLocale(language: AvailableLanguages) {