gpt4 book ai didi

javascript - 浏览器默认语言环境 - Intl.DateTimeFormat vs navigator.language

转载 作者:行者123 更新时间:2023-12-03 06:52:33 27 4
gpt4 key购买 nike

在对网站进行编码和格式化日期时,我想使用用户在浏览器中设置的语言环境。

例如,如果用户自定义了他们的 chrome://settings/languages在 Chrome 中设置为非默认值,这就是我想要使用的值。

但是,当我在这种浏览器的控制台中运行下面的代码时,我得到了两个不同的值。

 [window.navigator.language, new Intl.DateTimeFormat().resolvedOptions().locale]
// Array [ "en-AU", "en-US" ]
navigator.language给了我期望值,但是 new Intl.DateTimeFormat().resolvedOptions().locale才不是。

这两个项目的 MDN 似乎(对我来说)表明它们应该返回相同的值:
  • NavigatorLanguage.language

    returns a string representing the preferred language of the user

  • Intl.DateTimeFormat locale parameter

    To use the browser's default locale, omit this argument or pass undefined.


  • 这两个调用都应该返回用户在浏览器设置中配置的语言环境吗?

    最佳答案

    我也看到了这一点,并做了一些测试。
    Chrome
    在 Windows 上,Chrome 85 提供了两种不同的方式来设置其配置中的语言:

  • 按优先顺序排列的语言列表。这似乎驱动 navigator.languages .
  • 一种用于“显示 Google Chrome UI”的语言。这似乎驱动 Intl.DateTimeFormat().resolvedOptions().locale .

  • 例如,当我有这个集合时:
    Google Chrome language settings
    我明白了:
    navigator.languages                            : en-US, en-GB, en
    navigator.language : en-US
    Intl.DateTimeFormat().resolvedOptions().locale : en-GB
    请注意,在装有 Chrome 85 的 Mac 上似乎没有这两个单独的设置,而只是能够设置语言顺序(不是将语言设置为“显示 Google Chrome UI”的选项)。
    节点
    在节点中,我发现 Intl.DateTimeFormat().resolvedOptions().locale 的值是由我的操作系统的语言设置驱动的。请注意,我只在 Windows 上进行了测试,但我认为其他地方也是如此。
    时区旁注
    我看到 Intl.DateTimeFormat().resolvedOptions().timeZone Chrome 和 Node 都使用操作系统设置的时区(也仅在 Windows 上测试过)。 Chrome 的设置中似乎没有自己的时区设置,所以我猜只是使用操作系统配置。

    关于javascript - 浏览器默认语言环境 - Intl.DateTimeFormat vs navigator.language,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57666095/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com