Можно ли определить ** страну ** локали пользователя, установленную в ОС, из браузера в 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