Многоязычный веб-сайт - уникальные URL-адреса, необходимые для разных языков (для предотвращения кэширования)? - PullRequest
1 голос
/ 01 декабря 2010

Я разработал приложение AppEngine / Python / Django, которое в настоящее время работает на испанском языке, и я нахожусь в процессе интернационализации с многоязычной поддержкой.В основном это сайт знакомств, на котором люди могут просматривать другие профили и отправлять сообщения.Просмотр профиля на разных языках приведет к тому, что часть текста (меню и т. Д.) Будет отображаться на любом выбранном языке, но сгенерированный пользователем контент (например, профиль пользователя или сообщение) будет отображаться на языке оригинала, на котором он был написан..

Мой вопрос: необходимо (или хорошая идея) использовать уникальные URL-адреса для одной и той же страницы, отображаемой на разных языках, или это нормально, чтобы перегрузить один и тот же URL-адрес для данной страницы, отображаемой на разныхязыки.В частности, меня беспокоит то, что если я использую один и тот же URL для нескольких языков, некоторые страницы могут быть кэшированы (либо Google, либо каким-либо другим прокси-сервером, о котором я не знаю), что может привести к неверному отображению языка.отображается для пользователя.

Кто-нибудь знает, если это законная проблема, или я беспокоюсь о том, что не произойдет?

Ответы [ 2 ]

4 голосов
/ 01 декабря 2010

В принципе, вы можете использовать Content-Language и Vary заголовки ответа и Accept-Language заголовок запроса для управления поведением кэшей и предотвращения они подают неправильный язык пользователям.

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

3 голосов
/ 01 декабря 2010

Я не знаю, как это работает с django, но, глядя на это с точки зрения общей веб-разработки, вы могли бы:

  • используйте параметр запроса для определения языка (например, /foo/bar/page.py?lang=en)

  • Добавьте код языка к пути URL (например, /foo/bar/en/page.py) и при необходимости используйте mod_rewrite, чтобы эта часть пути передавалась вашему сценарию в качестве параметра запроса.

...