如何在Ember应用程序中包含CLDR.js库

How do I include the CLDR.js library in my Ember application?

本文关键字:包含 CLDR js 应用程序 Ember      更新时间:2023-09-26

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

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

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

尽管如此,member-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中的消息相同,那是因为文件加载不正常。在"i18n"插件之前,几乎"复数"必须加载。如果你翻转链接文件的顺序,它会起作用(我分叉了错误的例子)。

我会尝试通过向每个文件中抛出一些debugger;语句来验证我错了,看看哪一个真正首先加载到浏览器上。

由于您的require('plurals'),我将假设您正在使用requirejs(github已停机进行维护,因此我目前无法实际检查ember骨架……因此这可能会在未来进行编辑)。如果此断言为true,则需要声明"plurals"是"i18n"的依赖项。

"如果你不表达依赖关系,你很可能会得到加载错误,因为RequireJS异步加载脚本,速度失控。"-RequireJS API

这意味着您最终可能会将两个调用打包为一个,添加一个define或制作一个"填充程序";这些(以及更多)示例可以在RequireJS网站上找到。

很抱歉,如果这对你没有帮助,但没有看到它真的坏了;我很难调试这个问题。

编辑:看着余烬骨架,我看不到requireJS。我从未使用过rake(我们最终在nodeJS中编写了管道),所以我不太确定你是真的试图在rake中用require "blaw"连接文件,还是真的试图同时使用两者。。。。所以现在我认为这个答案可能没有太大帮助。