This commit is contained in:
2020-02-06 16:35:35 +00:00
parent 3e28b06374
commit 8a899b6792
3 changed files with 27 additions and 52 deletions

View File

@@ -194,54 +194,22 @@ export default {
return ret;
},
////////////////////////////////////////////////////////
// attempt to determine user's preferred first browser language setting
// https://stackoverflow.com/a/46514247/8939
// attempt to determine user's preferred language settings
// As of Jan 2020 all major browsers support
// navigator.languages
// but some use navigator.language (singular) to denote UI language preference
// not browsing language preference
// so the ideal way to do this is to use navigator.languages[0] for the preferred language
// and ignore the singular property since we don't care about the actual browser UI language
// only how the user expects to see the page itself
//
//
getFirstBrowserLanguage() {
var nav = window.navigator,
browserLanguagePropertyKeys = [
"language",
"browserLanguage",
"systemLanguage",
"userLanguage"
],
i,
language,
len,
shortLanguage = null;
// support for HTML 5.1 "navigator.languages"
if (Array.isArray(nav.languages)) {
for (i = 0; i < nav.languages.length; i++) {
language = nav.languages[i];
len = language.length;
if (!shortLanguage && len) {
shortLanguage = language;
}
if (language && len > 2) {
return language;
}
}
}
// support for other well known properties in browsers
for (i = 0; i < browserLanguagePropertyKeys.length; i++) {
language = nav[browserLanguagePropertyKeys[i]];
//skip this loop iteration if property is null/undefined. IE11 fix.
if (language == null) {
continue;
}
len = language.length;
if (!shortLanguage && len) {
shortLanguage = language;
}
if (language && len > 2) {
return language;
}
}
return shortLanguage;
// also for sake of future proofing and edge cases need to have it be manually settable as well
// ############### TODO: modify both of these to put the user's manual override first in line (if there is one)
getBrowserLanguages() {
return window.navigator.languages;
},
getBrowserFirstLanguage() {
return window.navigator.languages[0];
},
////////////////////////////////////////////////////////
// dynamically set the vuetify language elements from