ngx-translate 一次具有多个翻译和 ts 文件上的动态文本

Posted

技术标签:

【中文标题】ngx-translate 一次具有多个翻译和 ts 文件上的动态文本【英文标题】:ngx-translate with multiple translations at once and dynamic text on ts file 【发布时间】:2018-07-02 04:42:15 【问题描述】:

我想用 ngx-translate 将动态元素实现为多个翻译,以便融合this solution(多个翻译):

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

that one(动态文本):

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

【问题讨论】:

【参考方案1】:

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

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 并在其中运行了一些代码。

希望这会有所帮助。

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于ngx-translate 一次具有多个翻译和 ts 文件上的动态文本的主要内容,如果未能解决你的问题,请参考以下文章

ionic2 基于ngx-translate实现多语言切换,翻译

ngx-translate 与 i18n 的区别

Highcharts lang with ngx-translate

带有 ngx-translate 的自定义 Angular 库

一次应用多个翻译?

在字符串中放入新行以进行翻译