Resolve "set default language based on user browser header"
This commit is contained in:
parent
21f02a8149
commit
3fe78025d2
1 changed files with 29 additions and 22 deletions
51
src/App.vue
51
src/App.vue
|
|
@ -40,29 +40,12 @@ export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: true,
|
loading: true,
|
||||||
};
|
browserLanguage: null,
|
||||||
|
availableJsonTranslation: null
|
||||||
|
}
|
||||||
},
|
},
|
||||||
beforeMount() {
|
beforeMount() {
|
||||||
if (!this.$store.state.language) {
|
this.setDefaultLanguage();
|
||||||
// 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";
|
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
/**
|
/**
|
||||||
|
|
@ -98,6 +81,30 @@ export default {
|
||||||
stickers.loadStickersFromConfig(config);
|
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: {
|
computed: {
|
||||||
currentUser() {
|
currentUser() {
|
||||||
|
|
@ -187,7 +194,7 @@ export default {
|
||||||
.main {
|
.main {
|
||||||
@media #{map-get($display-breakpoints, 'lg-and-up')} {
|
@media #{map-get($display-breakpoints, 'lg-and-up')} {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
width: $main-desktop-width;;
|
width: $main-desktop-width;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue