获取运行时默认语言环境的 JavaScript 标准 API?

标签 javascript locale default-value

为了确定当前的语言环境,我找到了不同的方法:

  • 在浏览器中,大多数人建议查看 HTTP header (Accept-Language)
  • 有人建议咨询navigator.language
  • 在后端(Node.js)和HTTP之外,建议咨询(取决于系统)process.env

  • 另一方面,ECMAScript 国际化 API 定义了 locales Intl 中的每一个的参数构造函数作为可选:

    If the locales argument is not provided or is undefined, the runtime's default locale is used.


    因此,似乎应该有一种独立于浏览器和独立于操作系统的方式来获取“运行时的默认语言环境”。
    有没有比获取运行时的默认语言环境更直接的方法
    new Intl.NumberFormat().resolvedOptions().locale
    
    ?

    问题 How/Where does JavaScript detect the default locale?是不同的,因为它要求检测默认语言环境(在浏览器主机中)的实现。与此相反,我的问题不是关于实现,而是关于标准 API 的存在。

    最佳答案

    我不知道更直接的方法,但正如你已经指出的那样,

  • new Intl.NumberFormat().resolvedOptions().locale是一个解决方案
  • DefaultLocale是一个抽象操作,将来可能会或可能不会实现。

  • 因此,我主张对 function 进行 polyfill。作为:
    if (typeof DefaultLocale === "undefined") {
        function DefaultLocale() {
            return new Intl.NumberFormat().resolvedOptions().locale;
        }
    }
    
    因此,您的代码将合理地假设存在并将其称为 function .在 future 的某个时候,当这个 function以标准方式实现,您将能够通过从上面删除 block 来进行清理。

    关于获取运行时默认语言环境的 JavaScript 标准 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55385129/

    相关文章:

    iOS bundle 显示名称 - en-GB 和 en-US

    android - 用 TTS 说话,例如印地语

    mysql - 无法弄清楚为什么这个 sql 查询不起作用

    python - 写入文件时出现 UnicodeEncodeError

    .net - 如何在 AutoFac 中创建可选依赖项?

    c++ - 当出现不明确的默认参数时,C++ 编译器会做什么?

    javascript - 为什么使用 Ant Tree Design 在子组件中不检查树复选框

    javascript - 使用 Jasmine 测试 Angular2/TypeScript 管道

    javascript - JS : relation between "data-background-color" and . 数据 ("background-color")

    javascript - Ascensor.js IE8