Merge branch '154-set-default-language-based-on-user-browser-header' into 'dev'
Resolve "set default language based on user browser header" See merge request keanuapp/keanuapp-weblite!28
This commit is contained in:
commit
f797fb6712
1 changed files with 29 additions and 22 deletions
51
src/App.vue
51
src/App.vue
|
|
@ -40,29 +40,12 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
loading: true,
|
||||
};
|
||||
browserLanguage: null,
|
||||
availableJsonTranslation: null
|
||||
}
|
||||
},
|
||||
beforeMount() {
|
||||
if (!this.$store.state.language) {
|
||||
// No language set, default to browser language?
|
||||
var browserLang = (
|
||||
navigator.language ||
|
||||
navigator.userLanguage ||
|
||||
""
|
||||
).toLowerCase();
|
||||
if (this.$i18n.messages[browserLang]) {
|
||||
this.$store.commit("setLanguage", browserLang);
|
||||
} else if (browserLang.includes("-")) {
|
||||
// Try with language name only.
|
||||
let lang = browserLang.split("-")[0];
|
||||
if (this.$i18n.messages[lang]) {
|
||||
this.$store.commit("setLanguage", lang);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set language
|
||||
this.$i18n.locale = this.$store.state.language || "en";
|
||||
this.setDefaultLanguage();
|
||||
},
|
||||
mounted() {
|
||||
/**
|
||||
|
|
@ -98,6 +81,30 @@ export default {
|
|||
stickers.loadStickersFromConfig(config);
|
||||
}
|
||||
},
|
||||
setDefaultLanguage() {
|
||||
let LocalesArr= Object.keys(this.$i18n.messages);
|
||||
// No language set, default to browser language?
|
||||
this.browserLanguage = (navigator.language ||navigator.userLanguage ||"").toLowerCase();
|
||||
// Try with language name only.
|
||||
let lang = this.browserLanguage.split("-")[0];
|
||||
// Assigns available language for ex 'zh_Hans' when browser header language is 'zh' or 'zh-HK'
|
||||
this.availableJsonTranslation= LocalesArr[LocalesArr.findIndex(locale => locale.includes(lang))];
|
||||
|
||||
if (this.$i18n.messages[this.browserLanguage]) {
|
||||
this.$store.commit("setLanguage", this.browserLanguage);
|
||||
} else if (this.browserLanguage.includes("-")) {
|
||||
if (this.$i18n.messages[lang]) {
|
||||
this.$store.commit("setLanguage", lang);
|
||||
} else {
|
||||
this.$store.commit("setLanguage", this.availableJsonTranslation);
|
||||
}
|
||||
} else {
|
||||
this.$store.commit("setLanguage", this.availableJsonTranslation);
|
||||
}
|
||||
|
||||
// Set language
|
||||
this.$i18n.locale = this.$store.state.language || "en";
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
currentUser() {
|
||||
|
|
@ -187,7 +194,7 @@ export default {
|
|||
.main {
|
||||
@media #{map-get($display-breakpoints, 'lg-and-up')} {
|
||||
margin: 0 auto;
|
||||
width: $main-desktop-width;;
|
||||
width: $main-desktop-width;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue