【问题标题】:Is there an i18n (Intl) shim for JavaScript?JavaScript 是否有 i18n (Intl) 垫片?
【发布时间】:2013-01-23 05:06:05
【问题描述】:

我正在为ECMAScript Internationalization API 寻找垫片。有人知道这样的项目吗? (即使它目前仍在进行中。)

【问题讨论】:

  • 或许可以直接询问 Norbert Lindenberg,谁是该规范的编辑
  • 为什么不采用 ISO 标准,忘记我奶奶使用的所有传统的模糊日期格式? (ISO 日期、ISO 货币代码等)。
  • 很高兴知道,@AndyE!继续工作!我会关注进度的。
  • @NathanWall:我写的 polyfill 现在支持 DateTimeFormatNumberFormat,并且可以作为已发布的 NPM 包使用。因此,我决定是时候在这里实际提供答案了。 ;-)

标签: javascript internationalization ecmascript-5 ecma262 ecmascript-intl


【解决方案1】:

刚刚发现这个老问题,由于 ECMA-402 实现并非在所有浏览器中都可用,我发现 formatjs.io 的 polyfill 在您需要支持 Safari 或 IE 等浏览器时很有用。

【讨论】:

    【解决方案2】:

    是的,https://github.com/andyearnshaw/Intl.js 上有一个适用于 ECMA-402(又名 ECMA 国际化 API 规范)的 polyfill。

    为了在 Node.js 应用程序中使用,您可以使用 NPM 安装:

    npm install intl
    

    它也可以作为前端的 Bower 组件使用:

    bower install intl
    

    支持NumberFormatDateTimeFormat,但不支持Collator。目前,对于客户端浏览器环境,您需要使用单独的函数添加语言环境数据。有关详细信息,请参阅 README.md 文件。

    免责声明:@AndyE 是Intl.js 的作者。

    【讨论】:

    • Collat​​or 来了吗?这对我来说是最有趣的一点。
    • @hippietrail 可能不是。我在开发早期研究了添加 Collat​​or,它需要大量下载到用户的浏览器以获取 DUCET 和语言文件。我怀疑这会让大多数人望而却步,最终这些麻烦将不值得。
    • 在自称为 Intl 的 polyfill 的东西中,这是一个非常严重的差距。您可能还期望人们会因为根本不支持排序规则而被推迟。由于您描述的问题(这当然是合理的),排序规则似乎是 Intl 的尴尬继子。
    【解决方案3】:

    我假设您知道“Google Chrome 版本 24,目前处于测试阶段,使用如上所述的 Collat​​or、NumberFormat 和 DateTimeFormat 对象实现 API。” (见here)。就语言环境覆盖而言,任何 shim 要么是巨大的和/或不完整的——你真的想要实现卡纳达语数字(这是他们在班加罗尔使用的语言)吗?

    我的建议是使用您需要的部件来滚动您自己的精简垫片,并根据需要从执行类似操作的其他库中挑选和选择。例如,您可能需要日期/时间格式,而不是排序(这很复杂)。

    【讨论】:

      【解决方案4】:

      【讨论】:

      猜你喜欢
      • 2015-07-06
      • 2017-04-26
      • 1970-01-01
      • 2011-01-08
      • 2018-11-24
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多