2012-07-11 86 views
3

我建设使用ember-skeleton(这意味着我用耙管道作为我的生成工具链),它开始灰烬应用。我正在使用ember-i18n,并且不断抛出关于不具有CLDR.pluralForm函数的警告。如何在我的Ember应用程序中包含CLDR.js库?

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

require('plurals'); 
require('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是在我的应用程序中定义的?

+0

你可以放在一起简单的小提琴手来说明问题? – SciSpear 2012-08-12 17:03:47

+0

我不确定一个jsfiddle会实际澄清这一点,因为我认为*问题在于我如何要求图书馆。但是,我试过了,它照亮了。这工作:http://jsfiddle.net/pjmorse/SWcaX/(检查控制台的警告;我没有得到任何),这不:http://jsfiddle.net/pjmorse/VdwtK/(你'会在控制台中看到警告。)不同之处在于Ember的版本:1.0版本,我的几周版本的版本没有。 – pjmorse 2012-08-13 14:43:33

+0

另外,将我的应用程序升级到Ember 1.0pre并不会使警告消失,它在jsfiddle中的做法。 – pjmorse 2012-08-15 20:22:53

回答

3

因为没有其他人了,我会建议一些事情我可以看看,如果我是我自己调试问题。

如果你在网站上看到的信息是一样的提琴手,这是由于文件只加载失灵。非常“复数”必须在“i18n”插件之前加载。如果您翻转linked files的顺序,它将起作用(我分叉了错误示例)。

我会尝试验证我错了,通过抛出一些debugger;语句到每一个文件,看看它实际上被第一次加载在浏览器上。

因为你的require('plurals')我假定你正在使用requirejs(github is down for maintenance,所以我现在不能实际检查烬骨骼...所以这可能会在未来得到编辑)。如果这个断言是真的,你需要声明'复数'是'i18n'的依赖。

“如果你没有表达依赖关系,你可能会因为RequireJS异步加载脚本并加速脚本而导致加载错误。” - RequireJS API

这意味着你最终可能会在两个通话包裹成一个,加入define或进行“垫片”;这些(以及更多)示例可以在RequireJS网站上找到。

很抱歉,如果这并不能帮助你,但没有看到它实际上打破;我很难调试这个问题。

编辑:看着余烬骨架,我没有看到requireJS。我从来没有使用过rake(我们最终在nodeJS中编写了我们的管道),所以我不太确定你是否试图用012ke在rake中连接文件,或者如果你真的试图同时使用....所以现在我假设这个答案可能不是很有帮助。

相关问题