Клиентский доступ HTTP_ACCEPT_LANGUAGE?JavaScript?Я не вижу упаковщик JQuery.Статические страницы для определения предпочитаемого языка! - PullRequest
0 голосов
/ 20 июня 2010

Я пытаюсь получить доступ к языковым настройкам пользователя без использования кода сервера.

Я ищу какой-то JavaScript, подобный этому:

var language_array = jQuery.languagePreferences();
//en-ca,en;q=0.8,en-us;q=0.6,de-de;q=0.4,de;q=0.2

Я знаю, что могу использовать HTTP_ACCEPT_LANGUAGEна стороне сервера, но как насчет статической (не сгенерированной) страницы на стороне клиента JavaScript / JQuery?

Я провел большое количество операций по поиску и не имею четкого решения, не связанного с браузером. Как JavaScript получает доступ к списку предпочитаемых языков браузерами?(как настроено, скажем, в FireFox с помощью Tools> Options> Content> Languages) Кажется, это слишком сложно.

Если это невозможно, кажется, что они могут работать:

1) [Aвопрос для ServerFault.com] Использовать перезапись URL на стороне сервера, чтобы Apache отвечал с правильной статической страницей на основе языковых предпочтений?

2) Использовать AJAX на клиенте, чтобы запрашивать сервер исключительно для чтения HTTP_ACCEPT_LANGUAGE?Кажется очень запутанным!

Я что-то упустил?

1 Ответ

4 голосов
/ 22 июня 2010

К сожалению, невозможно получить эквивалент HTTP_ACCEPT_LANGUAGE, используя чисто клиентские методы. Самое близкое, что вы можете получить, это текущие настройки языка операционной системы пользователя:

navigator.userLanguage для IE

и

window.navigator.language для большинства других (FF, Opera и т. Д.).

Я считаю, что navigator.language и navigator.browserLanguage не очень надежны (например, IE8 неправильно дает мне en-us , а не en-gb ).

Использование ajax или изменение маршрутизации, как вы предложили, будет единственным надежным способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...