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"
我想知道如何将 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"