locale detection to auto select language if user didnt change language manually

This commit is contained in:
Gangoke
2026-05-28 14:41:44 -10:00
parent 8383c59b39
commit cdaf74985c

View File

@@ -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;