我想加载定义自己的翻译的动态组件,但仍使用TranslateService的相同实例,以便全局语言更改事件到达动态组件。
我正在运行一个我认为是bug的问题,请参阅此stackblitz进行复制:https://stackblitz.com/edit/github-1ujje5
关于github的相关问题:https://github.com/ngx-translate/core/issues/834
有人建议如何解决这个问题吗?
答案 0 :(得分:1)
似乎第一次加载资产中的i18n文件时,shouldMerge设置为false。 在加载动态组件之前等待加载这些文件。
为此,我在en.json和fr.json中添加了一个愚蠢的翻译:
"LOADING_TEST": "LOADED"
然后使用此observable检测翻译是否已加载:
this.translate.get('LOADING_TEST')
.pipe(filter(_ => _ != 'LOADED'), first());
答案 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);
});