i18n Translate.instant с параметрами - PullRequest
1 голос
/ 28 января 2020

Мне нужно использовать TranslateService.instant из ngx-core и передавать параметры для интерполяции строк.
Пока я сделал:

MY_STRING: "Welcome {{user}}"

В моем компоненте я делаю:

translateService.instant(MY_STRING, {user: 'Nick'})

и из этого я получаю:

Welcome {{user}}

Параметр user не интерполируется. Что я делаю не так?

1 Ответ

2 голосов
/ 28 января 2020

Для использования метода instant вы должны быть уверены, что ваши переводы были загружены, и его можно безопасно использовать, в противном случае это не удастся. Это может быть главное.

Объяснение простое, у вас есть три способа загрузки перевода:

  • Вы уверены, что ваши файлы перевода уже загружены и не нуждаются в обновлениях: translate.instant ('key')

  • Вы не уверены в загрузке и не нуждаетесь в обновлениях (возвращает Observable для подписки): translate .get ('key')

  • Вы хотите обновления, когда пользователь меняет язык:
    translate.stream ('key')

Я думаю, что вы можете использовать опцию get, как и вариант с менее известными ошибками:

let userName = 'Nick'     
translateService.get('MY_STRING', { user: this.userName }).subscribe((text:string) => {console.log(text});
...