Ember i18n 动态 link 内部翻译

Ember i18n dynamic link inside of translation

我想知道如何将 link 传递给 {{t}} 助手。我目前使用的是 Ember i18n 的 v3.0.1。

显然你 不能 将 link 助手传递给 t 助手(类似于

{{ t "some-translation-string" link={{#link-to 'page' model}}page{{/link-to}} }}

当然不行。

所以我在想,也许我可以创建一个 returns 整个 link 的自定义道具。但话又说回来,我该如何创建 link?有谁知道一种方法与 link-to 助手具有相同的参数,但 returns 只是 link(在我的例子中是 'page'model)?

您也许可以通过基本的 link 实现这一点,但我怀疑您是否能够在翻译中投入一个实时 link-to 组件。

所以改为将您的翻译字符串拆分成多个部分:

{{t 'goToSettingPage-before'}}
{{link-to (t 'goToSettingPage-link') 'route.name'}}
{{t 'goToSettingPage-after'}}
'goToSettingPage-before': 'Go to'
'goToSettingPage-link':   'settings'
'goToSettingPage-after':  'page.'

您可以使用 ember-href-to 创建一个助手来完全按照您的意愿行事。

帮手:

compute (params) {
  const i18n = this.get('i18n');
  const target = hrefTo(this, params[1]);
  // const targetParam = params[2]; //dynamic segment
  const text = i18n.t(params[0]);

  return Ember.String.htmlSafe('<a href='+ target +'>' + text +'</a>');
}

模板用法:

{{t "linkExample-learnMore" link=(helper-name 'linkExample-here' 'some.route')}}

翻译:

"linkExample-learnMore": "Click {{{link}}} to do something",
"linkExample-here":"here"