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

Posted

技术标签:

【中文标题】ngx-translate 与 ts 文件上的动态文本【英文标题】:ngx-translate with dynamic text on ts file 【发布时间】:2018-02-19 17:05:52 【问题描述】:

我在 Ionic 3 应用程序上使用 ngx-translate 进行国际化。我在html 代码上很好地使用了pipe。但是现在我在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();
    

这里的问题是我不知道$topic.name 的值。那么我怎样才能在i18n json 文件上提供key/value 呢?还是我在这里遗漏了什么?

【问题讨论】:

【参考方案1】:

你必须在你的组件中注入翻译服务:

constructor(private translate: TranslateService) 

并在您的翻译文件中声明如下:


  "TOPIC": "Topic value subscribed!"

那么你可以选择以下方式之一:

立即翻译:

showToast(this.translate.instant('TOPIC', value: topic.name));

用 observable 翻译

this.translate.get('TOPIC', value: topic.name).subscribe(res => 
      showToast(res);
);

直接在模板中翻译

 'TOPIC' | translate: value: topic.name 

【讨论】:

这里的问题是我不知道$topic.name 的值。那么我怎样才能在i18n json 文件上提供key/value 呢?还是我在这里遗漏了什么? 我编辑了我的帖子来回答你的问题。希望对您有所帮助。 但是当语言发生变化时,默认语言消息仍然会出现。【参考方案2】:

你也可以这样做:

this.showToast(this.translate.instant('TOPIC', value: $topic.name));

【讨论】:

但是当语言发生变化时,默认语言消息仍然会出现。

以上是关于ngx-translate 与 ts 文件上的动态文本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用参数对ngx-translate进行参数动态翻译?

无法将JSON数据访问到角度(.ts)文件中

ngx-translate 与 i18n 的区别

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

Highcharts lang with ngx-translate

如何在 Typescript 中使用动态枚举器(上限量词)克服枚举类型上的 TS2589