Ngx-translate setTraslation отсутствует перевод в динамическом компоненте - PullRequest
0 голосов
/ 25 апреля 2018

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

У меня проблема, которая, по моему мнению, является ошибкой, см. Этот стекаблит для воспроизведения: https://stackblitz.com/edit/github-1ujje5

И связанная с этим проблема на github: https://github.com/ngx-translate/core/issues/834

Кто-нибудь посоветует, как обойти эту проблему?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Это происходит потому, что переводы, поступающие через запрос http, переопределяют переводы, установленные в динамическом компоненте.Ответ предоставлен https://github.com/alexzuza в связанном выпуске github.

this.translate.getTranslation('en').pipe(take(1)).subscribe(() => {
  this.translate.setTranslation('en', {
    'DYNAMIC': 'I am dynamic component'
  }, true);
});
0 голосов
/ 25 апреля 2018

Похоже, что при первой загрузке файлов i18n в ресурсы для mustMerge установлено значение false. Ожидание загрузки этих файлов перед загрузкой динамического компонента работает.

Для этого я просто добавил немой перевод в en.json и fr.json:

"LOADING_TEST": "LOADED"

Затем использовал это наблюдаемое, чтобы обнаружить, что переводы загружены:

this.translate.get('LOADING_TEST')
.pipe(filter(_ => _ != 'LOADED'), first());

Вот вилка с этим предложенным решением.

...