是否可以将默认语言环境设置为ECMAScript Internationalization API?

时间:2017-12-09 23:57:20

标签: javascript localization internationalization

ECMAScript Internationalization API可以本地化货币,日期,时间和其他值。这是一个小例子:



var date = new Date();

alert(new Intl.DateTimeFormat('en-US').format(date));
alert(new Intl.DateTimeFormat('de-CH').format(date));




如何覆盖浏览器默认语言环境,以便可以将语言环境设置为广泛?目前我有帮助器,它包装Intl API并设置本地。有更简单的解决方案吗?

2 个答案:

答案 0 :(得分:1)

由于潜在的安全风险和对嵌入式应用程序的潜在干扰,您已经有了使用自己的API包装API的正确方法,并且没有设置默认语言环境的标准方法。

在国际化API上引用this comprehensive article,作者对于公开允许设置默认语言环境的API有这样的说法:

  

两个问题阻止了这一点:首先,可设置的默认语言环境列表将在同一环境中运行的不同脚本之间创建全局通信通道,这被视为安全风险。其次,应用程序可能包含需要不同默认语言环境的不同组件,例如嵌入式应用程序。 ECMAScript不了解这些组件,也无法为它们管理适当的上下文。因此,我们决定将默认语言环境留给更高级别的系统。例如,YUI库已经包含一个Intl模块,该模块管理一系列请求的语言环境,这些语言环境的范围限定在包含YUI对象并用于加载资源包。可以轻松修改此模块以保留区域设置列表对象,以便它可以在包含YUI对象的范围内用作默认值。

此外,如果您查看official specification,则默认语言环境是特定于实现的。目前,没有浏览器公开API来设置默认语言环境。

答案 1 :(得分:0)