【问题标题】:Set a default locale to Internationalization API?将默认语言环境设置为 Internationalization API?
【发布时间】:2017-12-09 23:57:19
【问题描述】:

ECMAScript 国际化 API 使本地化货币、日期、时间和其他值成为可能。这里有一个小例子:

var date = new Date();

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

如何覆盖浏览器的默认语言环境,从而可以在站点范围内设置语言环境?目前我有助手,它们包装国际 API 并设置本地。有更简单的解决方案吗?

【问题讨论】:

    标签: javascript localization internationalization


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 2016-09-07
        • 2014-01-01
        • 1970-01-01
        • 2020-04-05
        • 2018-06-13
        • 2014-03-09
        • 2017-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多