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-Languagenavigator.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 的浏览器中加载。

另请参阅