1
我有一个I18n应用程序,它实际上通过返回JSON的ajax调用来加载语言环境的翻译。使用EmberJS进行本地化
现在,它将JSON放入Em.STRINGS中。在HTML中,我有一个车把标签,上面写着这样的事情
{{translate context key="LOGOUT_LABEL"}}
我已经写在我的JS一个帮手,看起来像这样
Ember.Handlebars.registerHelper('translate', function(property, options) {
var key = options.hash && options.hash.key,
replacants = options.hash && options.hash.values, value;
if (key) {
value = Em.String.loc(key, replacants ? Em.String.w(replacants) : []);
return value ;
}
});
在运行此,我的HTML首先被绘制,然后发生AJAX调用。所以,翻译有效地不显示!我该如何解决?
这里的小提琴网址:http://jsfiddle.net/infinityat0/gBa7T/
嗨,@mavilein非常感谢您的回复。我知道AJAX调用不会在JSFiddle中工作(为了清楚起见,我只是保留它)。另外,如果我只保留html中的json字符串,它将起作用(因为它基本上意味着我已经预先获取了翻译并在init中应用了),我真正想要的是在AJAX调用中获取翻译, JSON添加到Em.Strings,然后完成之后,由于Em.STRINGS中的变化,把手会自行更新。 – user661905 2013-02-27 18:10:37
为什么不使用ember-i18n?它处理这类问题。 – mavilein 2013-02-27 21:41:09