This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user