Подтвердить что ты не робот

Каков наилучший способ обнаружения пользовательской локали браузера в 2012 году?

Я хочу определить локаль пользователя (а не их местоположение). Проблема в том, что ни один из методов не кажется надежным.

Заголовок принятого языка

Доводы

  • Вы должны получить список значений, которые могут выявить истинную локаль, если браузер был изменен по умолчанию на что-то еще.
  • По умолчанию ли IE по умолчанию?
  • Точная в IE по умолчанию означает точное значение FF в Windows по умолчанию? (т.е. вы загружаете правильную версию с сайта mozilla.org).
  • То же, что и # 3 для Opera в Windows?

против

  • Накладные расходы на стороне сервера и помехи при кешировании (или дополнительном XHR).
  • По умолчанию используется "en-us" в Chrome для всех систем для английского языка, если вы не устанавливаете локальный словарь и не перетаскиваете его вверх.
  • Не отправлено Safari?
  • Неправильно по умолчанию в Safari и Chrome означает, что http://mozilla.org и http://opera.com прямо на пользователь к неправильным загрузкам, а также установит сами версии "en-us".

Заключение

  • Полностью ненадежный в OSX, поскольку каждый браузер будет ошибочным по умолчанию. Однако должен быть точным в IE и FF на Windows.

window.navigator.language/UserLanguage

Доводы

  • Лучшая часть этого заключается в том, что это приятное облегченное клиентское решение.
  • По умолчанию ли IE по умолчанию?
  • По умолчанию FF по умолчанию по умолчанию?

против

  • Всегда "en-us" по умолчанию в Safari для всех систем.
  • По умолчанию используется "en-us" в Chrome для всех систем для английского языка, если вы не устанавливаете локальный словарь и не перетаскиваете его вверх.
  • Всегда просто "en" в Opera.

Заключение

  • Еще более ненадежный, чем Accept-Language.

IP Геолокация

Доводы

  • Работает независимо от настроек браузера и языка ОС.

против

  • Работает независимо от настроек браузера и языка ОС.
  • Все о производительности, ценах, актуальности и т.д.

Заключение

  • Будет ли это действительно зависеть от того, почему вы пытаетесь обнаружить локаль пользователя. Этот метод дает пользователю локальность, которая не совпадает с локалью в i18n смысле.

HTML5 Геолокация

Доводы

  • Как правило, так же корректно, как IP-геолокация без служебных ресурсов сервера.

против

  • Требуется, чтобы пользователь разрешил вам доступ к своему местоположению.
  • Поддержка браузера (на самом деле поддержка выглядит неплохо).

Заключение

  • Требование разрешения - это, как правило, прерыватель транзакции. Также такой же вывод, как IP-геолокация.

Резюме

Теперь кажется, что обнаружить локализацию пользователя сложнее, чем когда-либо, когда обнаружение их физического местоположения стало проще. Большим нарушителем является Safari, который по крайней мере должен отражать настройки ОС по умолчанию в OSX, но Chrome также не устанавливает никаких примеров. Даже если люди устанавливают свой локальный словарь в Chrome, я действительно сомневаюсь, что он также перетащит его в начало списка.

Я не могу обвинять Mozilla и Opera в том, что они перетаскиваются другими браузерами, неверно передавая их на страницы загрузки. Однако это уменьшит проблему, если они переключат свои страницы загрузки на использование геолокации вместо того, чтобы, вероятно, смотреть на Accept-Language.

Но на самом деле, какие параметры оставляют для определения пользовательской локали теперь, когда IE больше не доминирует? Осталось что-то?

4b9b3361

Ответ 1

Это зависит от того, что вы подразумеваете под "user locale". Возможности, перечисленные в вопросе, отражают различные значения для "user locale". Ни один из них не отражает адекватное значение в современной локализации, а именно набор культурных конвенций, предпочитаемых пользователем (включая список человеческих языков в порядке предпочтения). Способ найти это, чтобы спросить пользователя о них.

Естественно, вы должны только спросить о соглашениях, которые действительно имеют значение в контексте, и вы можете подумать о сохранении предпочтений, когда-то выраженных пользователем, в файле cookie, в хранилище HTML5, в пользовательской базе данных или где-то еще.

Браузеры обычно позволяют пользователю указывать список предпочтительных языков, отправляемых в заголовки Accept-Language. Это, однако, относится только к одному аспекту концепции языка, он неизвестен большинству пользователей и, как известно, очень часто имеет неправильные значения по умолчанию.