Ngx-translate setTraslation在动态组件中缺少翻译

时间:2018-04-25 06:49:51

标签: angular ngx-translate

我想加载定义自己的翻译的动态组件,但仍使用TranslateService的相同实例,以便全局语言更改事件到达动态组件。

我正在运行一个我认为是bug的问题,请参阅此stackblitz进行复制:https://stackblitz.com/edit/github-1ujje5

关于github的相关问题:https://github.com/ngx-translate/core/issues/834

有人建议如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

似乎第一次加载资产中的i18n文件时,shouldMerge设置为false。 在加载动态组件之前等待加载这些文件。

为此,我在en.json和fr.json中添加了一个愚蠢的翻译:

"LOADING_TEST": "LOADED"

然后使用此observable检测翻译是否已加载:

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

Here is the fork with this suggested solution.

答案 1 :(得分:1)

这是因为通过http请求进行的翻译会覆盖动态组件中设置的翻译。由https://github.com/alexzuza在链接的github问题中提供的答案。

this.translate.getTranslation('en').pipe(take(1)).subscribe(() => {
  this.translate.setTranslation('en', {
    'DYNAMIC': 'I am dynamic component'
  }, true);
});