3

如果我使用的是 Ember.js 内置帮助程序input

{{input value=query class="form-input" placeholder="Search"}}

我想用该字符串的翻译版本替换占位符字符串“Search”。

通常,如果我还没有使用input帮助程序,我会像这样访问翻译后的字符串:

{{ t "home.search" }}
4

3 回答 3

8

通过使用子表达式解决了这个问题: http ://handlebarsjs.com/expressions.html

{{input value=query class="form-input" placeholder=(t "home.search") }}
于 2014-05-12T03:54:53.703 回答
2

我无法让 dylanjha 的解决方案起作用,因为 Ember.I18n 的 t 助手返回一个环绕翻译文本的跨度,而不是翻译文本本身。我通过编写自己的帮助程序直接调用翻译来解决这个问题:

Ember.Handlebars.registerHelper('ts', function (key) {
  return Em.I18n.t(key);
});

然后我可以像这样使用我的助手:

{{input value=login placeholder=(ts 'signin.login') }}
于 2014-06-27T01:07:18.947 回答
0

我在我的应用程序中使用它:

// This is a custom text field that allows i18n placeholders
App.TextField = Ember.TextField.extend({
    attributeBindings: ['autofocus', 'z-index', 'autocomplete'],

    placeholder: function () {
        if (this.get('placeholderKey')) {
            return I18n.t(this.get('placeholderKey'));
        } else {
            return ''; //or this.get('placeholder')
        }
    }.property('placeholderKey')
});
于 2014-05-12T11:06:21.397 回答