diff --git a/dashboard/src/Index.vue b/dashboard/src/Index.vue index ed0ab2f59..dbe8d104d 100644 --- a/dashboard/src/Index.vue +++ b/dashboard/src/Index.vue @@ -246,7 +246,7 @@ onMounted(async () => { await refreshProfile(); // ensure language from profile if set - if (profile.value.language) await setLanguage(profile.value.language); + if (profile.value.language) await setLanguage(profile.value.language, true); [error, result] = await dashboardModel.config(); if (error) return console.error(error); diff --git a/dashboard/src/i18n.js b/dashboard/src/i18n.js index 309b5fe32..9089d1b05 100644 --- a/dashboard/src/i18n.js +++ b/dashboard/src/i18n.js @@ -51,8 +51,10 @@ async function main() { return i18n; } -async function setLanguage(lang) { - window.localStorage.NG_TRANSLATE_LANG_KEY = lang; +async function setLanguage(lang, profile = false) { + // only change if we set the language also for the profile or the user has no profile language set + if (profile) window.localStorage.NG_TRANSLATE_LANG_KEY = lang; + else if (window.localStorage.NG_TRANSLATE_LANG_KEY) return; try { const result = await fetcher.get(`${API_ORIGIN}/translation/${lang}.json`); diff --git a/dashboard/src/views/ProfileView.vue b/dashboard/src/views/ProfileView.vue index 7489fea40..e94ba877f 100644 --- a/dashboard/src/views/ProfileView.vue +++ b/dashboard/src/views/ProfileView.vue @@ -48,7 +48,7 @@ async function onSelectLanguage(lang) { const error = await profileModel.setLanguage(lang); if (error) return console.error('Failed to set language', error); - await setLanguage(lang); + await setLanguage(lang, true); } // Profile edits diff --git a/dashboard/src/views/SystemLocaleView.vue b/dashboard/src/views/SystemLocaleView.vue index c90da985b..4ce578bc6 100644 --- a/dashboard/src/views/SystemLocaleView.vue +++ b/dashboard/src/views/SystemLocaleView.vue @@ -6,6 +6,7 @@ const t = i18n.t; import { ref, onMounted } from 'vue'; import { SingleSelect } from '@cloudron/pankow'; +import { setLanguage } from '../i18n.js'; import moment from 'moment-timezone'; import SettingsItem from '../components/SettingsItem.vue'; import Section from '../components/Section.vue'; @@ -42,6 +43,8 @@ async function onLanguageChange(value) { if (error) return console.error(error); currentLanguage.value = value; + + await setLanguage(value, false); } onMounted(async () => {