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

Как получить предпочтение текущего локального браузера с помощью javascript?

Кто-нибудь знает, как получить культуру браузера от Firefox и Google Chrome с помощью javascript? Примечание. Это веб-приложение asp.net 3.5.

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

Я могу получить его в IE со следующим фрагментом кода:

var browserCulture = this.clientInformation.browserLanguage;

Любая информация была бы замечательной!

4b9b3361

Ответ 1

В объекте navigator существуют следующие свойства (которые также могут быть известны как clientInformation для IE, но нет причины использовать это имя):

  • language (не IE, язык установки браузера)
  • browserLanguage (IE, язык установки браузера)
  • userLanguage (IE, языковые настройки уровня OS на уровне пользователя)
  • systemLanguage (IE, язык установки ОС)

Но! Вы никогда не должны использовать какие-либо из этих свойств! Во многих случаях они будут неправильным языком.

Ни один из них не отражает языковые настройки, которые пользователь фактически настраивает в пользовательском интерфейсе предпочтительных языков браузера, и они могут быть недоступны для пользователей. Вы можете вызвать большие разочарования, используя любое из этих значений без дополнительного простого ручного способа переключения языков.

Правильное место, которое нужно понюхать, чтобы решить, какой язык использовать по умолчанию, как настроено обычным пользовательским интерфейсом браузера, является Accept-Language заголовок, переданный вашему серверу в HTTP-запросе. Это ранжированный список предпочтительных языков, из которых вы можете выбрать, и это то, что ASP.NET использует, чтобы угадать автоматическую клиентскую культуру, если вы ее используете.

К сожалению, это свойство недоступно в JavaScript!

Что вы обычно делаете, это использовать серверную часть для анализа заголовка Accept-Language и выбрать один подходящий язык для его использования. В ASP.NET вы можете получить предварительно отсортированный список из HttpRequest.UserLanguages и выбрать первое, что вам нравится.

Затем вы вводите это имя языка в элемент <script>, чтобы передать информацию о языке на клиентскую сторону.

Ответ 2

Попробуйте следующее:

var l_lang;
  if (navigator.userLanguage) // Explorer
    l_lang = navigator.userLanguage;
  else if (navigator.language) // FF
    l_lang = navigator.language;
  else
    l_lang = "en";

Источник: http://forums.digitalpoint.com/showthread.php?t=631706

Ответ 3

navigator.languages - это массив и содержит все выбранные языки в порядке. И работает только для Chrome и Firefox.

Это не то же самое, что navigator.language и под этим я подразумеваю, что navigator.language не обязательно соответствует navigator.languages[0].

Просто чтобы быть ясным.

Ответ 4

Чтобы получить локаль в IE, вам нужно написать код на стороне сервера. Я попытался с сервлетом и получил язык принятия IE. Он отображает языки, выбранные пользователем. Запустите сервлет на стороне клиента и получите локаль.

String name=request.getHeader("accept-language");
        AcceptClass ac=new AcceptClass();
        ac.setAccLang(name);
        Gson gs=new Gson();
          String json = gs.toJson(ac);
          response.setContentType("application/json");
          response.getWriter().write(json);