0

在使用 Ember 实现多语言 Web 应用程序时,我需要使用可以翻译成用户选择的语言的字符串。对于 Ember,I18n.js 就是这样做的。它提供了一个 Handlebars 助手,它接受一个键字符串并处理翻译:{{t login.username }} 将查找键“login.username”并将其替换为当前语言的相应文本。我的问题是这个助手接受一个文字字符串值并使用该值进行查找,但我在某些地方引用了一个字符串。例如,我正在使用 {{#each}} 表达式循环一个哈希数组,然后我必须从每个哈希中转换一个值。我想提供给翻译 Handlebars 助手的是一个表达式,必须在当前上下文中进行评估才能确定翻译键。不幸的是,I18n.js 提供的助手不支持。如何将 I18n.js 功能与表达式而不是文字一起使用?

4

1 回答 1

0

I18n.js 提供的 Handlebars 助手使用函数 I18n.t(key, options) 来进行真正的翻译。您可以编写自己的帮助程序来使用相同的功能。这是一个不支持 'options' 参数的示例实现。

Em.Handlebars.registerHelper('translate', function(keypath, options) {
    var translationKey = Em.Handlebars.get (this, keypath, options);
    return Em.I18n.t(translationKey);
});

然后可以在 Handlebars 表达式中使用它:

{{#each type in dishtypes}}
{{translate type.key}}
{{/each}}
于 2013-08-06T06:18:32.993 回答