Navigator:languages 属性
Navigator.languages
只读属性返回一个字符串数组,表示用户的首选语言。语言使用语言标签进行描述,符合 RFC 5646:语言标识标签(也称为 BCP 47)。在返回的数组中,它们按优先级排序,最优先的语言排在最前面。
navigator.language
的值是返回数组的第一个元素。
当用户首选语言更改时,其值也会发生变化,此时 languagechange
事件将在 Window
对象上触发。
来自用户浏览器的每个 HTTP 请求中的 Accept-Language
HTTP 标头通常列出与 navigator.languages
属性相同的语言环境,并按 q
值(质量值)递减排序。一些浏览器(Chrome 和 Safari)在 Accept-Language
中添加了仅包含语言的后备标签,例如,当 navigator.languages
为 ["en-US", "zh-CN"]
时,则为 en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
。出于隐私目的(减少 指纹识别),Accept-Language
和 navigator.languages
可能不会包含用户的完整偏好列表,例如 Safari(始终)和 Chrome 的隐身模式,其中仅列出一种语言。
值
一个字符串数组。
示例
列出 navigator.language 和 navigator.languages 的内容
js
navigator.language; // "en-US"
navigator.languages; // ["en-US", "zh-CN", "ja-JP"]
使用 Intl 构造函数进行特定于语言的格式化,并提供回退
navigator.languages
中包含的语言标识符数组可以直接传递给 Intl
构造函数,以实现基于偏好的语言环境回退选择,其中列表中第一个与 Intl
支持的语言环境匹配的条目将被使用。
js
const date = new Date("2012-05-24");
const formattedDate = new Intl.DateTimeFormat(navigator.languages).format(date);
规范
规范 |
---|
HTML 标准 # dom-navigator-languages-dev |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。