3

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

我已将ember-i18n 使用的CLDR 复数函数app/vendor/添加到目录中,并将该文件添加到我的Assetfile. 我已经验证该代码包含在我app.js之前的 ember-i18n 代码中。我还在requiremain.js 中添加了适当的行:

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?

4

1 回答 1

3

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

如果您在站点中看到的消息与在提琴手中看到的消息相同,那是由于文件只是乱序加载。几乎“复数”必须在“i18n”插件之前加载。如果您翻转链接文件的顺序,它将起作用(我分叉了错误示例)。

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

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

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

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

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

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

于 2012-08-16T06:13:50.063 回答