Angular 2 - 多语言支持

Pop*_*ath 9 multilingual angular

我们在我们的应用程序中使用Angular 2.0.在那个应用程序中我们想要提供多语言支持.我们知道使用angular 1.0如何实现.但不知道如何在2.0中使用.

sty*_*dev 27

我可以推荐ngx-translate库,它很容易集成和使用.

1.通过npm安装

npm install @ngx-translate/core --save
Run Code Online (Sandbox Code Playgroud)

2.在app.module.ts导入中添加TranslateModule

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

@NgModule({
   declarations: [...],
   imports     : [TranslateModule.forRoot(), ...],
   exports      : [...],
   providers   : [...],
   bootstrap   : [AppComponent]
})

export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

3. app.components.ts

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

@Component({
  selector   : 'app',
  templateUrl: './app.component.html',
})
export class AppComponent {
  constructor(private translate: TranslateService) {
    translate.addLangs(['en', 'hy']);
    translate.setDefaultLang('en');
    translate.use('en');
  }
  changeLang(lang: string) {
    this.translate.use(lang);
  }
}
Run Code Online (Sandbox Code Playgroud)

4. app.component.html

<nav>
  <a [routerLink]="['/']">    
    {{ "home" | translate }}
  </a>
  |
  <a [routerLink]="['/about']">
    {{ "about" | translate }}
  </a>
  |
  <a [routerLink]="['/contact']">
    {{ "contact" | translate }}
  </a>
</nav>
<div class="lang-bar">
  <a (click)="changeLang('en')">EN</a>
  <a (click)="changeLang('hy')">??</a>
</div>
Run Code Online (Sandbox Code Playgroud)

5.使用翻译文件创建i18n文件夹

en.json

{
    "home" : "Home",
    "about" : "About",
    "contact" : "Contact"
}
Run Code Online (Sandbox Code Playgroud)

hy.json

{
    "home" : "???????",
    "about" : "??? ?????",
    "contact" : "???????? ???"
}
Run Code Online (Sandbox Code Playgroud)

  • @styopdev角度怎么知道在哪里找到i18n文件夹? (3认同)

Gün*_*uer 1

Angular2 中的 i18n 仍在开发中,似乎尚未可用。

另请参阅https://github.com/angular/i18n/issues/28

和这个类似的问题Angular2 i18n 此时?