0

我的目标是检测用户的语言并将他们重定向到法语页面或英语,英语是默认设置。如果我只将代码放在法语页面上并尝试打开法语页面,这将起作用,这会自动检测并加载英语。如果我在两者上都有代码,那么它就会陷入无限循环。任何帮助将不胜感激。这是代码。

<script language="javascript"> 

var langcodes=new Array("en", "fr", "default") ;

var langredirects=new Array("http://defaulten.asp", 
"http://default-fr.asp", 
"http://default.asp"); 

var languageinfo=navigator.language? navigator.language : navigator.userLanguage ;
var gotodefault=1 ;

function redirectpage(dest){ 
if (window.location.replace) 
window.location.replace(dest) 
else 
window.location=dest 
} 

for (i=0;i<langcodes.length-1;i++){ 
if (languageinfo.substr(0,2)==langcodes[i]){ 
redirectpage(langredirects[i]) 
gotodefault=0 
break 
} 
} 

if (gotodefault) 
redirectpage(langredirects[langcodes.length-1]) 

</script>
4

1 回答 1

1

如果您已经在正确的页面上,则需要确保不会重定向,例如

if (languageinfo.substr(0,2)==langcodes[i]) {
    gotodefault = 0;
    var redirPage = langredirects[i];
    if (redirPage != document.URL)
        redirectpage(redirPage);
    break 
}

此外,如果en是默认值,我将没有特定页面,即defaulten.asp. 我只会提供特定于语言的页面,即default-fr.asp/ default-us.asp,如果您遵循这种方法,您的代码会更简单,例如

var languageinfo = navigator.language ? navigator.language : navigator.userLanguage;
languageinfo = languageinfo == "en" ? "" : languageinfo;
var langUrl = sprintf("http://default%s.asp", languageinfo);
if (document.URL != langUrl)
    redirectpage(langUrl);
于 2013-11-01T14:55:38.807 回答