У меня есть многоязычный сайт с возможностью переключения между немецким и английским языками. Я хочу сохранить выбранный язык в файле cookie, чтобы посетителю не приходилось переключать его снова и снова на свой предпочитаемый язык при следующем посещении веб-сайта. К сожалению, у меня странное поведение с этим. Это выглядит так:
У меня есть ссылка для переключения языка (onclick). Эта функция выглядит так:
function storeLanguage(lang) {
/*deletes the cookie? */
document.cookie = "MYCOOKIE=; expires=Thu, 01-Jan-70 00:00:01 GMT;";
var ablauf = new Date();
var expTime = ablauf.getTime() + (60 * 24 * 60 * 60 * 1000); //Cookie for 60 days
ablauf.setTime(expTime);
if (lang == 'en') {
document.cookie = "MYCOOKIE=EN; expires=" + ablauf.toGMTString() + ";";
}
else {
document.cookie = "MYCOOKIE=DE; expires=" + ablauf.toGMTString() + ";";
}
}
Firebug говорит, что он переходит в правую ветвь IF, поэтому, когда я нажимаю «German», эта часть будет исполнена «MYCOOKIE = DE», иначе - английская ветвь. Это выглядит правильно. Но когда я попадаю на любую веб-страницу своего веб-сайта (для тестирования я выбрал индексный сайт) и выполняю команду
alert(document.cookie);
Внезапно я получаю результат на немецкой веб-странице "MYCOOKIE = EN", хотя это должно быть "MYCOOKIE = DE", потому что функция переместилась в правую ветвь IF (другая ветвь). Когда я переключаюсь на английский язык, я получаю результат на английской веб-странице "MYCOOKIE = DE; MYCOOKIE = EN". Так что неожиданно есть два куки с одинаковым именем. Таким образом, значения файлов cookie не просто инвертируются и не удаляются правильно, но полностью чушь. Кто-нибудь может объяснить, что не так в моем коде, что приводит к такому поведению?