在ts代码中具有i18n的Angular 6应用程序

时间:2018-06-21 00:50:01

标签: angular internationalization primeng

我正在根据这篇文章翻译我的角度应用程序 http://www.dzurico.com/i18n-with-angular-6/

im还使用primeng组件库,并且im根据应用程序流给出自定义错误消息 例如

if (duplicateSerial) {
      this.msgs.push({
        severity: 'error', summary: 'Serial already selected'
      });
      setTimeout(() => this.msgs = [], 2000);
      return;
    }

在TS代码“已选择序列”中转换文字的方法是什么

2 个答案:

答案 0 :(得分:1)

这完全取决于您喜欢哪种翻译框架。例如,使用ngx-translate,翻译将如下所示。

您可能在某个地方有一个包含i18n-json-files的文件夹,或者直接从数据库中获取键值对。

如果是文件,则通过这样的位置字符串来命名

en.json, en-GB.json, en-US.json, de.json ...

内容是由键值对组成的普通json对象

{
    "wrong_password": "Wrong Password!",
    "serial_already_selected": "Serial Already Selected",
    "no_user_logged_in": "No User Logged In"
}

App.Module

将TranslateModule导入AppModule以及需要翻译的其他任何模块。

import {TranslateService} from '@ngx-translate/core';

组件

将TranslateService导入需要翻译的任何组件中

import {TranslateService} from '@ngx-translate/core';

constructor(translate: TranslateService) {}

如果要在组件的ts文件中使用它,请按以下方式进行操作:

if (duplicateSerial) {
  this.msgs.push({
    severity: 'error', summary: this.translate.instant('serial_already_selected')
  });
  setTimeout(() => this.msgs = [], 2000);
  return;
}

答案 1 :(得分:0)

private showInformationMessage() {
  this.messageService.add({
    severity: SeverityMessage.INFO,
    summary: (<HTMLInputElement>
        (document.getElementById('informationMessageSupplierVendorID'))).value,
    detail: ''
  });
}

然后在任何html代码上

<input type="hidden"
       value="text to translate"
       i18n-value="text to translate|Label for information text to translate@@informationMessageToSupplierVendorID"
       id="informationMessageSupplierVendorID"/>