angular2 i18n的替代方案

时间:2017-03-21 22:59:50

标签: javascript angular typescript

我正在寻找一种方便的方法来使用内置i18n支持的angular2,以便处理API返回的服务器端消息。例如,我有一个很大的动态菜单,每个项目的标签都来自服务器。我还有来自API的消息(错误,警告,结果代码)。

由于我发现了我认为阻止like this的问题,我还在寻找允许简单的键/值转换消息的第三方库,并且可以包含在angular2应用中。我是Angular2的新手,所以我想听听社区接受的这个案例库。

谢谢!

2 个答案:

答案 0 :(得分:2)

  

我正在寻找一个允许简单的键/值翻译消息的库,并且可以包含在angular2应用程序中。

写起来很容易:

type Messages = {
  error: string,
  hello: string,
}

export function getMessage(message: keyof Messages, localization = 'en') {
  /** Define your messages */
  const messages: {
    [localization: string]: Messages;
  } = {
      en: {
        error: 'Unexpected error',
        hello: 'hello world'
      }
    }
  return messages[localization][message];
}

// Usage 
getMessage('error'); // OK
getMessage('notvalid'); // Compile time error

您可以将此模式扩展为所需的

答案 1 :(得分:0)

我知道这不是您正在寻找的答案,但我只想记录使用Angular的静态翻译为服务器错误提供消息值是微不足道的。

@Component(
  template: `
    <ng-container [ngSwitch]="errorCode">
      <ng-container *ngSwitchCase="error1" i18n>A bad thing happend</ng-container>
      <ng-container *ngSwitchCase="5152" i18n>Error in AE35 unit</ng-container>
      <ng-container *ngSwitchCaseDefault i18n>Unknown Error</ng-container>
    </ng-container>
  `
)
export class ErrorMessageComponent {
  @Input errorCode: number | string;
}