Почему переключатель языка не сохраняет выбор пользователя? Переключатель языка не сохраняет выбор, если он записывает язык только в память текущей страницы, а не в постоянное хранилище — cookie с длительным сроком, localStorage или профиль на сервере. При перезагрузке, открытии новой вкладки или очистке cookie такой выбор исчезает, и сайт возвращается к языку по умолчанию. Отдельная причина — конфликт языкового кода в cookie, localStorage, URL и настройках браузера: при расхождении значений приоритет получает не тот источник, который выбрал пользователь.
Практическое уточнение: чаще всего проблема решается дублированием выбора в двух местах — cookie или серверный профиль плюс localStorage — и явным приоритетом источников. Если язык хранится только в JavaScript-переменной, в сессии без срока жизни или подставляется из кэша CDN, выбор будет сбрасываться снова и снова. Проверьте мини-чек-лист: cookie ставится без флага session и с реальным сроком жизни; значение не перезаписывается при загрузке страницы языком по умолчанию; параметр языка учитывается в URL или в маршрутизации; кэш страниц и CDN не отдают старую версию; блокировщики и режим инкогнито не режут запись хранилища. Технический нюанс: автоопределение языка по IP или заголовку браузера не должно срабатывать поверх уже сделанного выбора — иначе пользователь каждый раз получает исходный язык.
