【问题标题】:Getting ember-i18n.js Translation Keys from Controller Properties从控制器属性中获取 ember-i18n.js 翻译键
【发布时间】:2014-04-29 15:52:14
【问题描述】:

我刚刚开始研究一个使用 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(),如 here 所示,但这也未定义。

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

【问题讨论】:

    标签: javascript ember.js translation ember-i18n


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      相关资源
      最近更新 更多