我需要根据浏览器的语言将用户重定向到另一个页面。例如:如果浏览器的语言english
重定向到site.com/en/
。
我尝试这样做:
$(document).ready(function () {
var userLang = navigator.language || navigator.userLanguage;
switch (userLang) {
case 'en':
window.location.href = window.location.origin + '/en';
break;
case 'de':
window.location.href = window.location.origin + '/de';
break;
default:
break;
}
});
它的工作原理但页面不断重新加载。如何解决或提示另一种解决方案?
答案 0 :(得分:4)
由于您没有检查用户是否已经在正确的语言网站上,因此页面会不断重新加载。
在您的页面上,您可以为服务器端生成的页面语言存储javascript变量。例如:
var thisLanguage = 'en';
然后更改您的javascript逻辑以将此考虑在内,并且仅在用户的语言与thisLanguage
不同时才应用重定向:
$(document).ready(function () {
var userLang = navigator.language || navigator.userLanguage;
if (userLang != thisLanguage){
switch (userLang) {
case 'en':
window.location.href = window.location.origin + '/en';
break;
case 'de':
window.location.href = window.location.origin + '/de';
break;
default:
break;
}
}
});
答案 1 :(得分:0)
我认为你应该通过从URL中读取语言来检测语言,因为你想将用户重定向到适当的URL:
$(document).ready(function () {
var languageSuffix = window.location.pathname;
if(languageSuffix !== '/') {
return;
}
var userLang = navigator.language || navigator.userLanguage;
switch (languageSuffix) {
case '/en':
window.location.href = window.location.origin + '/en';
break;
case '/de':
window.location.href = window.location.origin + '/de';
break;
default:
break;
}
});
答案 2 :(得分:0)
我们可以检查网址是否与当前网址相同:
$(document).ready(function () {
var userLang = navigator.language || navigator.userLanguage;
var urlToRedirect = '';
switch (userLang) {
case 'en':
urlToRedirect = window.location.origin + '/en';
break;
case 'de':
urlToRedirect = window.location.origin + '/de';
break;
default:
break;
}
if(urlToRedirect!=='' && urlToRedirect!==window.location.href){
window.location.href = urlToRedirect;
}
});
答案 3 :(得分:0)
尝试以下内容:
$(document).ready(function () {
var url = $(location).attr('href');
var userLang = navigator.language || navigator.userLanguage;
if(url.indexOf("/en") == -1 && userLang == 'en') {
window.location.href = window.location.origin + '/en';
} else if (url.indexOf("/de") == -1 && userLang == 'de'){
window.location.href = window.location.origin + '/de';
} else {
// Do nothing
}
});