在一个ember. js应用程序中,我创建了一个用于文本本地化的自定义助手。具体来说,它通过Jed传递给助手的值,Jed是一个gettext风格的文本翻译库,如下所示:
Ember.Handlebars.helper('_', function(value, options) {
return Lang.gettext(value);
});
在我的模板中:
{{_ "Translate Me"}}
问题是,enber将其渲染为绑定的助手,即渲染的文本值被包围在中
在API文档中,我确实看到了解决方法:
{{未绑定}}助手可以与绑定的助手调用一起使用,以将它们呈现为未绑定的形式,例如。
然而,我更喜欢一种将我的助手全局定义为未绑定的助手的方法,这样我就不必为每个本地化字符串输入{{未绑定_"Foo"}}
。更不用说这样做会导致字符串不能被我用来从源代码中提取所有本地化字符串的库(xgettext模板)解析。
快速回答,如果您没有将属性绑定到您的函数,您可以使用regsterHelper
Ember.Handlebars.registerHelper('_', function(value, options) {
return value + 'moo';
});
以防万一你可能需要这个。
从另一个车把助手调用车把助手
Ember.Handlebars.helper('_', function(value, options) {
return Lang.gettext(value);
});
Ember.Handlebars.registerHelper('i18n', function(value, options){
var args = Array.prototype.slice.call(arguments, 1);
args.unshift(value);
args.unshift('_');
return Ember.Handlebars.helpers.unbound.apply(this, args);
});
像这样使用{{国际化"Translate Me"}}
这里是JSBin