Правильный способ - посмотреть заголовок HTTP Accept-Language, отправленный на сервер. Он содержит упорядоченный, взвешенный список языков, который пользователь настроил для своего браузера.
К сожалению, этот заголовок недоступен для чтения внутри JavaScript; все, что вы получаете, это navigator.language
, в котором рассказывается, какая локализованная версия веб-браузера была установлена. Это не обязательно то же самое, что и предпочтительный язык (ы) пользователя.В IE вы вместо этого получаете systemLanguage
(OS установленный язык), browserLanguage
(то же, что и language
), и userLanguage
(пользовательская область ОС), которые все одинаково бесполезны.
Если бы мне пришлось выбирать между этими свойствами, я бы понюхать для userLanguage
первого, отступая к language
и только после этого (если таковые не соответствуют ни одному из доступных языков), глядя на browserLanguage
и, наконец, systemLanguage
.
Если вы можете поставить на стороне сервера скрипт где-то в сети, который просто читает заголовок Accept-Language и выплевывает его обратно в файл JavaScript со значением заголовка в строке, например .:
var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';
Затем вы можете включить скрипт < src>, указав на эту внешнюю службу в HTML, и используйте JavaScript для анализа заголовка языка. Однако я не знаю какого-либо существующего библиотечного кода, так как разбор Accept-Language почти всегда выполняется на стороне сервера.
Независимо от того, что вы в конечном итоге делаете, вам обязательно нужно переопределить пользователя, потому что он всегда будет ошибочным для некоторых людей. Часто проще всего установить языковой параметр в URL-адрес (например, http: //www.example.com/en/site vs http: //www.example.com/de/site) и позволить пользователю щелкнуть связей между ними. Иногда вам нужен один URL-адрес для обеих языковых версий, и в этом случае вам нужно сохранить этот параметр в файлах cookie, но это может смутить пользовательские агенты без поддержки файлов cookie и поисковых систем.
единственный способ браузер может обмениваться метаданными о своем пользователе, а запрос - через URL-адреса и заголовки. Захватите Firefox и загляните в заголовки, отправляемые при запросе. Его довольно интересно исследовать типичные заголовки запросов и ответов. –