如何正确填充Intl语言环境数据

时间:2017-04-12 07:39:32

标签: javascript internationalization aurelia i18next

我对如何从Intl polyfill实际填充某些常见的区域设置数据(CLDR)感到有些困惑。

到目前为止,我所理解的是以下内容(如果我在这里错了,请纠正我):

  • 现代浏览器自行发送区域设置数据(不需要任何填充)
  • Intl.min没有任何区域设置数据
  • Intl.complete附带来自intl/locale-data捆绑
  • 的所有区域设置数据

由于我们只需要支持某些区域设置(例如en& de),因此只需捆绑Intl.min并在需要时动态加载CLDR即可:在应用程序启动时或用户更改语言时。)

如何在需要时动态加载CLDR&如何将其添加到Intl

我有aurelia-i18n&已设置i18next,以便仅在需要时使用i18next-xhr-backend加载我们的自定义翻译。我可以以某种方式加入这个&还从Intl polyfill?

加载所需的区域设置
  • 如果是这样,我该如何做,以及如何预先检查是否有必要(新浏览器不需要它并且它已经可以加载)?
  • 我是否认为我不必在加载后自动添加语言环境,因为它自己这样做(例如intl/locale-data/jsonp/en.jsIntlPolyfill.__addLocaleData(...);开头)?

1 个答案:

答案 0 :(得分:0)

intl polyfills repo显示了如何通过CDN服务仅加载必要的CLDR数据described here

Aurelia本身会关注polyfill是needed at all唯一的例外,如果您要分发捆绑的生产版本,那么您必须确保该文件已包含在捆绑中。根据您的设置/模块加载程序,这可能会有所不同。

至于加载其他语言环境是的,你只是要求文件修补窗口对象以提供额外的翻译。 为了检查需要哪些,您可以使用数字/日期格式化程序的supportedLocalesOf method

所以打电话

console.log(Intl.NumberFormat.supportedLocalesOf("de-DE"))

如果它有必要的区域设置(你可以在节点中尝试)在空数组中,可能会在你的浏览器中产生[“de-DE”]