locale detection to auto select language if user didnt change language manually
This commit is contained in:
@@ -105,8 +105,40 @@ function _langToggleLabel(lang){
|
|||||||
return 'Espanol';
|
return 'Espanol';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _mapSupportedLang(lang){
|
||||||
|
if(!lang)return '';
|
||||||
|
var l=String(lang).toLowerCase().replace(/_/g,'-').trim();
|
||||||
|
if(l==='de'||l==='en'||l==='es'||l==='zh-cn')return l;
|
||||||
|
|
||||||
|
var base=l.split('-')[0];
|
||||||
|
if(base==='de'||base==='en'||base==='es')return base;
|
||||||
|
|
||||||
|
if(base==='zh'){
|
||||||
|
if(l.indexOf('cn')>=0||l.indexOf('hans')>=0||l==='zh')return 'zh-cn';
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
function _normalizeLang(lang){
|
function _normalizeLang(lang){
|
||||||
return (lang==='de'||lang==='en'||lang==='es'||lang==='zh-cn')?lang:'de';
|
return _mapSupportedLang(lang)||'de';
|
||||||
|
}
|
||||||
|
|
||||||
|
function _detectBrowserLanguage(){
|
||||||
|
var prefs=[];
|
||||||
|
if(Array.isArray(navigator.languages)&&navigator.languages.length)prefs=navigator.languages;
|
||||||
|
else if(navigator.language)prefs=[navigator.language];
|
||||||
|
for(var i=0;i<prefs.length;i++){
|
||||||
|
var mapped=_mapSupportedLang(prefs[i]);
|
||||||
|
if(mapped)return mapped;
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function _resolveInitialLanguage(){
|
||||||
|
var saved=localStorage.getItem('lang');
|
||||||
|
var mappedSaved=_mapSupportedLang(saved);
|
||||||
|
if(mappedSaved)return mappedSaved;
|
||||||
|
return _detectBrowserLanguage()||'de';
|
||||||
}
|
}
|
||||||
|
|
||||||
async function _loadLanguage(lang){
|
async function _loadLanguage(lang){
|
||||||
@@ -374,7 +406,7 @@ function ensureAceDryCards(){
|
|||||||
grid.setAttribute('data-init','1');
|
grid.setAttribute('data-init','1');
|
||||||
}
|
}
|
||||||
(function(){
|
(function(){
|
||||||
var l=localStorage.getItem('lang')||'de';
|
var l=_resolveInitialLanguage();
|
||||||
currentLang=_normalizeLang(l);
|
currentLang=_normalizeLang(l);
|
||||||
var langSel=document.getElementById('lang-select');
|
var langSel=document.getElementById('lang-select');
|
||||||
if(langSel)langSel.value=currentLang;
|
if(langSel)langSel.value=currentLang;
|
||||||
|
|||||||
Reference in New Issue
Block a user