Ember i18n динамическая ссылка внутри перевода
Мне было интересно, как я могу передать ссылку на {{t}}
помощник. Я использую v3.0.1 Ember i18n на данный момент.
Очевидно, что вы не можете передать помощнику ссылки в помощник (что-то вроде
{{ t "some-translation-string" link={{#link-to 'page' model}}page{{/link-to}} }}
не сработает конечно).
Так что я подумал, может быть, я смогу создать собственный реквизит, который возвращает целую ссылку. Но опять же, как мне создать эту ссылку? Кто-нибудь знает метод, который имеет те же аргументы, что и link-to
помощник, но возвращает только ссылку (в моем случае 'page'
а также model
)?
2 ответа
Возможно, вам удастся добиться этого с помощью базовой ссылки, но я сомневаюсь, что вы сможете добавить живой компонент ссылки в перевод.
Поэтому вместо этого разбейте строку перевода на части:
{{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.
Helper:
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"