我想使用i18n(for require.js)库根据用户的语言在资源文件中加载我存储的字符串。 我使用this方法,因为我在我的项目中使用了backbone和require.js。
让我们说这是我的模板,我想使用翻译的字符串。
<h1><%= test.options.test %></h1>
<b> user_ud: <%= data.id %> </b>
使用从资源文件中获取的数据评估第一行。 但第二行是我希望使用来自不同来源的数据。
(默认资源文件)
define({
'root': {
'options': {
'test': 'Yellow'
}
},
"en-us": true
});
现在有一部分我想在此视图中呈现这一点。
define(['underscore', 'backbone', 'models/model', 'templates/template' , 'i18n!nls/resource'], function ( _, Backbone, tModel, template, resource) {
var TooltipView = Backbone.View.extend({
el : $('#test'),
initialize: function(options){
this.model = new tModel();
},
render: function(){
var $el = this.$el;
if(template.length != 0){
var compiledTemplate = template['test']( resource ) /// loads pre-compiled template ///
$el.html(compiledTemplate);
}else{
console.log(" [e] No template found. ");
}
});
}
});
return TooltipView;
});
我希望实现此输出:
<h1> Yellow </h1>
<b> id: 14 </b>
但我不确定如何将两个数据源放入一个模板中。
答案 0 :(得分:1)
您可以将resource
和模型数据包装到一个新对象中,该对象将成为模板中使用的根对象:
var compiledTemplate = template['test']({
i18n: resource,
data: this.model.toJSON()
});
然后在模板中访问它们
<h1><%= i18n.test.options.test %></h1>
<b> user_ud: <%= data.id %> </b>