0

我刚刚开始研究使用 ember-i18n.js 进行本地化的现有 Ember.js 项目。

Ember.Mixin.create({
    setupController: function (controller, model) {
         controller.set("somePropertyName", "my.translation.key");
    }
});

我定义了另一个帮助器,它让我从上下文属性中获取翻译键,而不是直接传递它,例如我可以使用{{tr someContext.someProperty}}而不是{{t "my.translation.key"}}.

Ember.Handlebars.registerBoundHelper('tr', function(property, options) {
    return Ember.I18n.t(property);
});

我对 Ember 还很陌生,所以我的想法是我可以简单地将{{somePropertyName}}模板中的替换替换为{{tr somePropertyName}}. 那没有用。当我在帮助程序中设置断点时,我发现它property总是未定义的。

我还尝试修改我的帮助器以按照此处Ember.Handlebars.get()演示的方式使用,但这也解决了未定义的问题。

假设我无法更改翻译密钥的来源,是否有适当的方法将翻译密钥从控制器获取到助手?

4

1 回答 1

0

您所做的应该没问题 -property帮助器的参数只是一个字符串,并且将字符串从控制器传递给模板(然后传递给帮助器)很简单。

所以,我猜测(这只是一个没有 jsbin 的猜测)要么你在某个地方有编码问题。或者您使用 mixin 时可能发生了一些奇怪的事情。

我会看到字符串属性从你的 mixin 到控制器到模板到帮助器有多远。

如果您更改{{tr property}}字符串是否会写入您的模板中,好吗?如果没有,那么您的控制器上没有设置该属性。

如果你有一个 jsbin,那么这会让你更容易看到发生了什么。

于 2014-04-29T16:05:53.207 回答