NGX翻译一次具有多个翻译和TS文件上的动态文本



我想用ngx-translate将动态元素实现到多个翻译中,以便融合此解决方案(多个翻译(:

this.translate.get(['HOME', 'MY_ACCOUNT', 'CHANGE_PASSWORD']).subscribe(res => {
      showToast(res.HOME,res.MY_ACCOUNT,res.CHANGE_PASSWORD);
});

有了那个(动态文本(:

this.translate.get('HOME', {value: 'test_HOME'}).subscribe(res => {
      showToast(res);
});

不确定你现在是否想出了自己的解决方案,但我做了这样的事情:

public translateTableHeadings(stringArr: string[] = []): Observable<string[]> {
        const sub = new Subject<string[]>();
        const obs$ = Observable.from(stringArr);
        obs$
            .map(aString=>
                this.translate.get(aString)
            )
            .toArray()
            .takeUntil(sub)
            .subscribe(translatedStrings=> {
                sub.next(translatedStrings);
                sub.complete();
            });
        return sub.asObservable();
}

虽然我知道对TranslationService上的get函数所做的更改,以满足多个翻译字符串作为输入,但我有一个特定的用例,我需要在翻译后为每个代码运行代码(即,我在this.translate.get(...中添加了一个.map并在那里运行了一些代码。

希望这有帮助。

根据get方法的类型注释,TranslateService可以指定interpolateParams作为第二个参数。

TranslateService.get(key: string | string[], interpolateParams?: Object): Observable<any>

最新更新