【问题标题】:Get current locale of Chrome获取 Chrome 的当前语言环境
【发布时间】:2014-10-25 17:38:51
【问题描述】:

我正在使用此 API 确定浏览器的当前语言环境:

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

这在 IE 中返回 "fr-FR",但在 Chrome 中仅返回 "fr"(对于其他语言环境也是如此)。

还有其他 API 会在 Chrome 中返回 "fr-FR" 吗?

我们依靠它来加载适当的文化文件。

【问题讨论】:

标签: javascript google-chrome locale


【解决方案1】:

在最新版本的 Chrome 浏览器中,
var language = window.navigator.userLanguage || window.navigator.language; 返回“fr-FR”。

如果你还是遇到同样的问题,可以试试var language = navigator.language;

【讨论】:

    【解决方案2】:

    更新:

    截至 2021 年 9 月,Chrome 对 Intl 库提供了相当广泛的支持。

    function getClientLocale() {
      if (typeof Intl !== 'undefined') {
        try {
          return Intl.NumberFormat().resolvedOptions().locale;
        } catch (err) {
          console.error("Cannot get locale from Intl")
        }
      }
    }
    

    否则您可以回退到window.navigator 对象:

    Firefox 和 Chrome 在 navigator 对象上有一个 languages 数组。通常,该数组中的第一个元素是用户选择的语言环境(通常继承自操作系统设置)

    var language;
    if (window.navigator.languages) {
        language = window.navigator.languages[0];
    } else {
        language = window.navigator.userLanguage || window.navigator.language;
    }
    

    chrome 中的navigator.languages 数组对我来说是["en-GB", "en-US", "en"]navigator.language = "en-US",略有不同但很重要

    【讨论】:

    • 这个问题是关于获取语言环境,而不仅仅是语言。语言环境包含的信息远不止语言(最重要的是日期时间和数字格式设置)。
    • @exhuma,也许是这样,但很明显 OP 询问了语言环境字符串
    • @exhuma,您不会传递整个语言环境包。它只是被传递的区域设置 ID,通常是 Unicode 的 ID(例如 en-GB)。请参阅 W3 的文档:w3.org/TR/ltli/#locale 和 MDN 的:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 进行消费,您可以将该 ID 传递给不同对象的 .toLocaleString(),例如 Date
    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    相关资源
    最近更新 更多