Как перевести нестандартные трубы в угловые с помощью i18n? - PullRequest
1 голос
/ 02 апреля 2019

Я перевожу свое приложение Angular 7 с помощью i18n, и у меня есть пользовательские каналы, которые генерируют текст. Как я могу перевести текст, созданный трубами?

Я придерживаюсь i18n директивы , предоставленной угловыми документами, я использую эту стратегию слияния xliff для разработки и использую этот учебник для своих сборок по локали.

Например, я пытаюсь перевести время назад трубу , в которой числа преобразуются в текст.

В настоящий момент я не знаю, как переводить пользовательские каналы. Я знаю только, как переводить html-теги с помощью атрибута i18n, который, по-видимому, неприменим к пользовательским каналам, которые я использую.

В этом угловом абзаце i18n предлагается установить некоторую глобальную переменную в основной app.module.ts, но примеры немного скудны и (а) я не знаю, как установить языковой стандарт в зависимости от сборки для каждого языка, как я делаю, следуя этому руководству , (б) я не знаю, как получить глобальную локаль в свой пользовательский канал и (в) возможно ли перевести содержимое для канала в файлах messages.<locale>.xlf, а не в трубе?

1 Ответ

1 голос
/ 25 мая 2019

Обычно, что вы можете сделать в этой ситуации, это добавить translateService в качестве зависимости в ваш канал и просто перевести из кода.

Итак, ваш конструктор в трубе будет выглядеть так:

constructor(private changeDetectorRef: ChangeDetectorRef, private ngZone: NgZone, private tr: TranslateService) {}

И в вашей функции преобразования вы можете вернуть текстовое значение следующим образом:

// [...]
} else if (days <= 545) {
  return this.tr.instant('time.one-year-ago');
} else { // (days > 545)
  return this.tr.instant('time.years-ago', { years });
}
// [...]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...