Где хранить выбранный язык на многоязычном сайте: сеанс/файлы cookie или URL-адрес?

У меня есть сайт, на котором все его содержимое переведено на несколько языков и не имеет учетных записей (чтобы указать предпочтительный язык там). Я могу обнаружить предпочтительный язык, используя Accept-Language, ip или что-то еще. У меня есть 3 способа хранения выбора языка пользователя:

  • Определить язык и сохранить его в cookie/сеансе и разрешить переключение языка (а также сохранить его в файле cookie/сеансе).
  • Использовать обнаруженный язык, если в url нет языка, и показывать ссылки на URL с другим языком.
  • Использовать язык сайта по умолчанию и показать ссылки на другие языки

Хранение langage в url может быть любого типа: другой домен, субдомен или где-то в URL

Я думаю о первом случае, так как он позволяет мне отправлять один URL-адрес кому-либо, и он будет представлен им на их предпочтительном языке. Но другое мнение заключается в том, что другой язык означает разные данные, поэтому он должен иметь разную ссылку.

Ответ 1

Храните его в URL как часть пути, желательно как можно ближе к доменному имени. Например. http://example.com/en/page или http://en.example.com/page. Он не только оптимизирован для SEO, но также гарантированно работает с клиентами cookie/без сеансов.

Вы также можете выбрать комбинацию. Если клиент поддерживает файлы cookie, вы можете использовать его для хранения "предпочтительного" языка. Если эта информация отсутствует в сеансе, перенаправляйте URL-адрес, который больше всего отображает язык, соответствующий заголовку Accept-Language, и сохраняет этот язык в сеансе (который находится в большинстве языков программирования/фреймворков, уже поддерживаемый печенье). Если пользователь изменяет эту информацию, то также отразите изменение в сеансе.