Ale*_*s K 15 javascript internationalization handlebars.js ember.js
对不起,如果之前已经被问了一百万次,但我似乎无法在任何地方找到满意的答案.
我正在尝试构建一个把手帮助器连接到我的i18n库中,我需要它接受任意数量的命名参数,如下所示:
{{i18n yml.text.definition count=2 name="Alex" ... param="hello}}
Run Code Online (Sandbox Code Playgroud)
这将转换为这样的调用:
i18n.t("yml.text.definition", { count: 2, name: "Alex", ... param: "hello"})
Run Code Online (Sandbox Code Playgroud)
这可能吗,还是我完全离开了我的树?
Mar*_*ior 12
提供以下帮助:
{{myHelper "foo" this ... key=value ...}}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下声明获取数据:
Ember.Handlebars.helper('name', function(param1, param2, options) {
param1 // The string "foo"
param2 // some object in that context
options.hash // { key: value }
});
Run Code Online (Sandbox Code Playgroud)
函数的每个参数都是{{myHelper param1 param2}}中传递的参数.但剩下的将是一个带有一些特殊/私人信息的对象.使用该对象,您可以使用哈希对象检索key = value信息.
如果引用提供给助手的参数,如"param1",则返回该字符串,否则将解析为该上下文中的某个对象.
在您的情况下,您将需要:
Ember.Handlebars.helper('i18n', function(property, options) {
var hash = options.hash;
return 'i18n.t(' + property + ', { count: ' + hash.count + ', name: ' + hash.name + ', param: ' + hash.param + '})';
});
Run Code Online (Sandbox Code Playgroud)
这是一个jsfiddle与这个工作http://jsfiddle.net/marciojunior/64Uvs/
我希望它有所帮助