Navigator: свойство languages
Базовая Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Чтение только свойство Navigator.languages возвращает массив строк, представляющих предпочтительные языки пользователя. Язык описывается с помощью тегов языка в соответствии с RFC 5646: Теги для идентификации языков (также известный как BCP 47). В возвращаемом массиве они упорядочены по предпочтению, начиная с наиболее предпочтительного языка.
Значение navigator.language является первым элементом возвращаемого массива.
При изменении его значения, когда пользователь изменяет предпочтительные языки, событие languagechange срабатывает на объекте Window.
Заголовок HTTP Accept-Language в каждом запросе HTTP от браузера пользователя, как правило, перечисляет те же языковые области, что и свойство navigator.languages , с уменьшающимися q значениями (значения качества). Некоторые браузеры (Chrome и Safari) добавляют теги только для языков в качестве резервных вариантов в Accept-Language — например, en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 , когда navigator.languages является ["en-US", "zh-CN"]. В целях конфиденциальности (сокращение отпечатков пальцев) как Accept-Language , так и navigator.languages могут не включать весь список пользовательских предпочтений, например, в Safari (всегда) и режиме инкогнито Chrome, где указан только один язык.
Значение
Массив строк.
Примеры
Вывод содержимого navigator.language и navigator.languages
navigator.language; // "en-US" navigator.languages; // ["en-US", "zh-CN", "ja-JP"]
Использование конструкторов Intl для форматирования, зависящего от языка, с резервным вариантом
Массив идентификаторов языков, содержащихся в navigator.languages , можно напрямую передавать в конструкторы Intl для реализации выбора локалей на основе предпочтений, где используется первый элемент списка, соответствующий локали, поддерживаемой Intl:
const date = new Date("2012-05-24");
const formattedDate = new Intl.DateTimeFormat(navigator.languages).format(date);
Спецификации
| Спецификация |
|---|
| HTML # dom-navigator-languages-dev |
Совместимость браузеров
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
languages |
37До Chrome 65,navigator.languages[0] не гарантированно равно navigator.language. |
16 | 32В Firefox, значение свойстваnavigator.languages берется из предпочтения intl.accept_languages. |
24 | 10.1 | 37До Chrome Android 65,navigator.languages[0] не гарантированно равно navigator.language. |
32В Firefox для Android, значение свойстваnavigator.languages берется из предпочтения intl.accept_languages. |
24 | 10.3 | 3.0 | 37До версии 65,navigator.languages[0] не гарантированно равно navigator.language. |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Navigator/languages