【问题标题】:How do I include the CLDR.js library in my Ember application?如何在 Ember 应用程序中包含 CLDR.js 库?
【发布时间】:2012-07-11 14:35:06
【问题描述】:

我正在构建一个 Ember 应用程序,它开始使用 ember-skeleton(这意味着我使用 Rake Pipeline 作为我的构建工具链)。我正在使用ember-i18n,它不断地抛出关于没有 CLDR.pluralForm 函数的警告。

我已将 ember-i18n 使用的 CLDR plural functions 添加到 app/vendor/ 目录,并将该文件添加到我的 Assetfile。我已验证代码包含在我的app.js 中,位于 ember-i18n 代码之前。我还在 main.js 中添加了适当的 require 行:

require('plurals');
require('ember-i18n');

不过,ember-i18n 仍在发出警告。这是发生的代码:

if (typeof CLDR !== "undefined" && CLDR !== null) {
  pluralForm = CLDR.pluralForm;
}

if (pluralForm == null) {
  Ember.Logger.warn("CLDR.pluralForm not found. Em.I18n will not support count-based inflection.");
}

如何确保在我的应用中定义了 CLDR?

【问题讨论】:

  • 你能拼出一个简单的fiddler来演示这个问题吗?
  • 我不确定 jsfiddle 是否会真正澄清这一点,因为我认为问题在于我如何需要该库。然而,我试过了,它很有启发性。这有效:jsfiddle.net/pjmorse/SWcaX(检查控制台是否有警告;我没有得到任何警告)而这无效:jsfiddle.net/pjmorse/VdwtK(您会在控制台中看到警告。)不同之处在于 Ember 的版本:1.0预工作,我几周前的边缘版本没有。
  • 另外,将我的应用升级到 Ember 1.0pre 并不会像在 jsfiddle 中那样使警告消失。

标签: javascript ember.js internationalization cldr


【解决方案1】:

因为没有其他人有,如果我自己调试问题,我会建议一些我可能会看的东西。

如果您在站点中看到的消息与 fiddler 中的消息相同,那是因为文件加载时出现了乱序。在“i18n”插件之前加载几乎“复数”必须。如果您翻转linked files 的顺序,它将起作用(我分叉了错误示例)。

我会尝试通过将一些 debugger; 语句扔到每个文件中来验证我是否错了,以查看哪个实际上首先在浏览器上加载。

由于您的require('plurals'),我假设您正在使用requirejs(github is down for maintenance,所以我目前实际上无法检查 ember-skeleton ......所以将来可能会进行编辑)。如果此断言为真,则需要声明“复数”是“i18n”的依赖项。

“如果你不表达依赖关系,你可能会遇到加载错误,因为 RequireJS 异步加载脚本并且速度不正常。” - RequireJS API

这意味着您可能最终会将两个调用合并为一个,添加define 或制作“shim”;这些(以及更多)示例可以在RequireJS 网站上找到。

很抱歉,如果这对您没有帮助但没有看到它实际上已损坏;我很难调试问题。

编辑:查看 ember-skeleton,我没有看到 requireJS。我从来没有使用过 rake(我们最终在 nodeJS 中编写了我们的管道)所以我不太确定你是否真的试图在 rake 中使用require "blaw" 连接文件,或者你是否真的试图同时使用这两者......所以现在我认为这个答案可能不是很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-27
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2018-02-01
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多