为了确定当前的语言环境,我找到了不同的方法:
Accept-Language
)navigator.language
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/