Можно ли определить ** страну ** локали пользователя, установленную в ОС, из браузера в JavaScript?

Есть ли в веб-браузерах интерфейс для доступа к любым настройкам локали, заданным пользователем в операционной системе?

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

Есть ли способ определить, в какой стране / локали установлен браузер / ОС?

Если нет, то есть ли предложение добавить правильную поддержку локали в JavaScript?

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

3 ответа

Решение

Лучшее, что вы получите, это языки:

  • navigator.language (Netscape - Локализация браузера)
  • navigator.browserLanguage (IE-Specific - локализованный язык браузера)
  • navigator.systemLanguage (IE-Specific - ОС Windows - локализованный язык)
  • navigator.userLanguage

Из-за проблем безопасности или просто не реализованных, то, что вы просили, изначально невозможно. Однако вы можете использовать объект ActiveX для ваших пользователей Windows

Пользователь может выбрать предпочитаемый язык, страну и т. Д., А затем использовать javascript для установки файла cookie, который будет отправляться на ваш сервер каждый раз, когда запрашивается страница.

Я должен был бы защитить или переформулировать ответы SReject и CodeJack, потому что язык браузера, как правило, содержит локализацию ОС страны, как в "en-US" или же "de-CH",

Мы использовали это в течение многих лет, чтобы предварительно выбрать страну в формах, и это работает в достаточном количестве случаев, чтобы быть полезным.

Так что с путешествующими швейцарскими пользователями вы бы использовали navigator.language.slice(-2) и получить "CH" который является правильным ответом на ваш вопрос.

var userLocale = navigator.language or

navigator.userLanguage;

РЕДАКТИРОВАТЬ только другой способ - это API геолокации HTML5

http://html5demos.com/geo http://dev.w3.org/geo/api/spec-source.html

Другие вопросы по тегам