Если это коммерческий сайт, и вы заботитесь о своем рейтинге Google, вам следует с осторожностью использовать перенаправления JavaScript.
Сканеры поисковых систем не могут выполнять такие перенаправления. Было бы лучше обработать его на стороне сервера и выполнить истинное перенаправление 301.
Также вы должны дать способ вручную изменить это, нажав кнопку в вашем пользовательском интерфейсе.
Этот код не имеет никакого смысла для меня:
//Explorer
if (navigator.userLanguage)
language = navigator.userLanguage;
//other browsers
else
language = (navigator.language) ? navigator.language : navigator.userLanguage;
Кажется, он проверяет, заполнен ли .userLanguage, и если нет, он проверяет, заполнен ли .language, и если это не так, использует .userLanguage, который к этому моменту уже считался неопределенным.
Я бы реорганизовал код примерно так:
if (IsCookieSet()) {
if (IsCookieLanguage("en-US")) {
document.location.href = "en/index.jsp";
}
}
else {
language = navigator.userLanguage ? navigator.userLanguage : navigator.language;
if (!IsCookieSet()){
setCookie('language', language, 365, '/', 'onCheck');
if (IsCookieLanguage("en-US")) {
document.location.href = "en/index.jsp";
}
else if(IsCookieLanguage("sv"))
{
document.location.href="index.jsp";
}
}
}
function IsCookieSet()
{
return language!=null && language!="";
}
function IsCookieLanguage(lang)
{
return language.toLowerCase() == lang.toLowerCase();
}
Хорошо, этот код немного чище, но все равно не имеет особого смысла, потому что вы не включили весь свой код - то есть бит, который извлекает cookie.