Получение текущего активного языка в Chrome через javaScript (Chrome 66 Stable) - PullRequest
0 голосов
/ 18 мая 2018

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

window.navigator.language возвращает язык

window.navigator.languages ​​возвращает все языки, добавленные в Chrome

Штукатурка по всему интернету. Мне сказали, что window.navigator.language помогает найти язык Active .Однако это уже не так.Он просто возвращает то, что находится в списке первым, то есть en-US, однако, как вы можете видеть, активный язык не гарантирован, я подозреваю, из-за нового дизайна.Мне интересно, нашел ли кто-нибудь решение для более современного хрома.

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

enter image description here

ПРИМЕЧАНИЕ. Я также отправил запрос на свой сервер и проверил заголовок, та же информация приведена выше.enter image description here

accept-language: en-AU,en-GB;q=0.9,en-US;q=0.8,en;q=0.7,es-ES;q=0.6,es;q=0.5

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

Не имеет значения, является ли язык активного браузера en-GB или es-ES, одинаковая информация заголовка дается с одинаковыми весами.

1 Ответ

0 голосов
/ 18 мая 2018

Если вы хотите, чтобы язык находился на первой позиции, вы можете использовать этот код:

 var browserLanguage = navigator.language || navigator.userLanguage; 

Работает для меня с новейшей версией Chrome: enter image description here

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

То, что может увидеть javascript, это заголовок HttpRequest.Например:

Accept-language httprequest header

Вы можете увидеть поле Accept-Language, которое сообщает серверу, какие языки вы хотите видеть. RFC 7231 5.3.1.

Обратите внимание, что некоторые получатели рассматривают порядок, в котором перечислены языковые теги, как признак нисходящего приоритета, особенно для назначенных теговравные значения качества (никакое значение не равно q = 1).Однако на это поведение нельзя положиться.Для обеспечения согласованности и максимизации функциональной совместимости многие пользовательские агенты присваивают каждому языковому тегу уникальное значение качества, а также перечисляют их в порядке уменьшения качества.Дополнительное обсуждение списков приоритетов языка можно найти в Разделе 2.3 [RFC4647].

Это означает, что браузер будет добавлять вес каждому тегу, а затем сортировать их по убыванию (нет qq = 1, поэтому максимум).

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

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