ngx-translate与ts文件上的动态文本

Sam*_*ath 5 typescript ngx-translate ionic3 angular

我正在使用ngx-translateIonic 3app 上进行国际化.我已经pipe很好地使用了HTML代码.但现在我有一个类似下面的情况ts.你能告诉我如何处理这种动态用例ngx吗?

 updateApi(topic) {
     this.showToast(`Topic ${topic.name} subscribed!`);//this is the dynamic text
  }

 showToast(message) {
        let toast = this.toastCtrl.create({
            message: message,
            duration: 3000
        });
        toast.present();
    }
Run Code Online (Sandbox Code Playgroud)

这里的问题是我不知道${topic.name}前面的价值.所以,我怎么可以给key/value该上i18n json的文件吗?或者我在这里遗失了什么?

Eni*_*ima 9

您必须在组件中注入Translate Service:

constructor(private translate: TranslateService) {}
Run Code Online (Sandbox Code Playgroud)

并调用它,它将返回一个observable:

this.translate.get('TOPIC', {value: topic.name}).subscribe(res => {
      showToast(res);
});
Run Code Online (Sandbox Code Playgroud)

在您的翻译文件中,您必须声明如下内容:

{
  "TOPIC": "Topic {{value}} subscribed!"
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

正如@Exari Constantin所说,您还可以使用TranslateService的即时方法以编程方式转换密钥.它看起来像这样:

showToast(this.translate.instant('TOPIC', {value: topic.name}));
Run Code Online (Sandbox Code Playgroud)

  • 但当语言更改时,仍然会出现默认语言消息。 (2认同)

Exa*_*tin 5

你也可以这样做:

this.showToast(this.translate.instant('TOPIC', {value: ${topic.name}}));
Run Code Online (Sandbox Code Playgroud)

  • 但当语言更改时,仍然会出现默认语言消息。 (2认同)