如果您还没有预编译您的翻译,则需要包含 完整的Handlebars,而不仅仅是你手中的把手 - runtime.js 应用
问题是即使使用预编译模板,一旦我们使用函数 Em.I18n.t ,如下所示,它仍然会调用Handlebars编译功能,需要完整的Handlebars。
任何人都知道解决方案吗?即使是函数调用,也许有预编译的最佳实践?
答案 0 :(得分:1)
嗯,因为我对这个案子有紧迫感,这就是我修复它的方式:
/* Customized version of translation compiler */
Em.I18n.compile = function(template) {
// Full Handlebars completely disabled
//if (typeof window.Handlebars.compile === 'function')
// return window.Handlebars.compile(template);
return function(context, options){
var ret = template;
if (context !== undefined) {
$.each(context, function(key, value){
ret = ret.replace("{{"+key+"}}", value);
});
}
return ret;
}
}
这非常有效,但我并非100%确信它涵盖了所有可能的情况。
答案 1 :(得分:0)
最新版本的ember-i18n(编写本文时为2.2.1)在运行时有此控制台消息:
Ember.I18n将来不再包含Handlebars编译;相反,它将提供自己的默认编译器。将Ember.ENV.I18N_COMPILE_WITHOUT_HANDLEBARS设置为true以立即选择加入。
所以看起来你现在可以选择不使用Handlebars编译,这将是未来版本中的默认设置。这对你的需求来说可能为时已晚,但也许其他有同样问题的人会发现它很有用。