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"
Другие вопросы по тегам