【发布时间】:2016-02-18 11:08:27
【问题描述】:
我们在我们的应用程序中使用 Angular 2.0。在那个应用程序中,我们希望提供多语言支持。我们知道使用 Angular 1.0 如何实现。但不知道如何在 2.0 中使用。
【问题讨论】:
标签: angular multilingual
我们在我们的应用程序中使用 Angular 2.0。在那个应用程序中,我们希望提供多语言支持。我们知道使用 Angular 1.0 如何实现。但不知道如何在 2.0 中使用。
【问题讨论】:
标签: angular multilingual
我可以推荐ngx-translate库,它非常易于集成和使用。
1.通过 npm 安装
npm install @ngx-translate/core --save
2。在 app.module.ts 导入中添加 TranslateModule
import {TranslateModule} from '@ngx-translate/core';
@NgModule({
declarations: [...],
imports : [TranslateModule.forRoot(), ...],
exports : [...],
providers : [...],
bootstrap : [AppComponent]
})
export class AppModule {}
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);
}
}
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>
5.用翻译文件创建 i18n 文件夹
en.json
{
"home" : "Home",
"about" : "About",
"contact" : "Contact"
}
hy.json
{
"home" : "Գլխավոր",
"about" : "Մեր մասին",
"contact" : "Հետադարձ կապ"
}
【讨论】:
TranslateService 以防你想使用它,例如。您想更改当前语言、检测语言更改或获取翻译。如果您只想使用 {{ "contact" | translate }} 这样的翻译管道,则无需在组件中从 ngx-translate 导入任何内容。
Angular2 中的 i18n 仍在进行中,似乎还不能使用。
另见https://github.com/angular/i18n/issues/28
还有这个类似的问题Angular2 i18n at this point?
【讨论】: