diff --git a/CHANGELOG.rst b/CHANGELOG.rst index fe7a89aa0ed37c4d3b6bf684618a0f2f1c5ac001..788739fd1e7913c572f8da84023eb319f3f31129 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -9,6 +9,11 @@ and this project adheres to `Semantic Versioning`_. Unreleased ---------- +Fixed +~~~~~ + +* Browser locale was not the default locale in the entire frontend. + `3.0`_ - 2022-05-11 ------------------- diff --git a/aleksis/core/frontend/components/app/LanguageForm.vue b/aleksis/core/frontend/components/app/LanguageForm.vue index 12acbe613e94a23e25f5d1195b0badf420d92aa6..cdef5932231e5b0401296b6918d009eb544588ec 100644 --- a/aleksis/core/frontend/components/app/LanguageForm.vue +++ b/aleksis/core/frontend/components/app/LanguageForm.vue @@ -33,17 +33,33 @@ export default { type: Array, required: true, }, + defaultLanguage: { + type: Object, + required: true, + }, }, methods: { setLanguage: function (languageOption) { document.cookie = languageOption.cookie; this.$i18n.locale = languageOption.code; this.$vuetify.lang.current = languageOption.code; + this.language = languageOption; }, nameForMenu: function (item) { return `${item.nameLocal} (${item.code})`; }, }, + mounted() { + if ( + this.availableLanguages.filter((lang) => lang.code === this.$i18n.locale) + .length === 0 + ) { + console.warn( + `Unsupported language ${this.$i18n.locale} selected, defaulting to ${this.defaultLanguage.code}` + ); + this.setLanguage(this.defaultLanguage); + } + }, name: "LanguageForm", }; </script> diff --git a/aleksis/core/frontend/components/app/SideNav.vue b/aleksis/core/frontend/components/app/SideNav.vue index 0975c580cda88d03fd8a5d34b2fb16425ece69ee..bba811884c9f97d0b57985f0133ac6863eb4b880 100644 --- a/aleksis/core/frontend/components/app/SideNav.vue +++ b/aleksis/core/frontend/components/app/SideNav.vue @@ -82,6 +82,7 @@ <v-spacer /> <language-form :available-languages="systemProperties.availableLanguages" + :default-language="systemProperties.defaultLanguage" /> <v-spacer /> </div> diff --git a/aleksis/core/frontend/index.js b/aleksis/core/frontend/index.js index f59aa8578b59addcb420d6165c6ef1672c669c30..72bf942a71faf76275490599846000df749e6eab 100644 --- a/aleksis/core/frontend/index.js +++ b/aleksis/core/frontend/index.js @@ -36,9 +36,7 @@ import routerOpts from "./app/router.js"; import apolloOpts from "./app/apollo.js"; const i18n = new VueI18n({ - locale: Vue.$cookies.get("django_language") - ? Vue.$cookies.get("django_language") - : "en", + locale: Vue.$cookies.get("django_language") || navigator.language || "en", ...i18nOpts, }); const vuetify = new Vuetify({