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 に答える