2016-02-18 203 views
8

我们在我们的应用程序中使用Angular 2.0。在那个应用程序中,我们要给多语言支持。我们知道使用angular 1.0如何实现。但不知道如何在2.0中使用。Angular 2 - 多语言支持

回答

1

Angular2中的i18n仍在进行中,似乎尚未可用。

又见https://github.com/angular/i18n/issues/28

这类似的问题Angular2 i18n at this point?

+0

,它现在可用吗?有没有任何指导方针来做到这一点。 – peaceUser

+0

它可用。检查http://angular.io(我今天就在我的手机上) –

+0

搭配在这方面怎么样照顾。 看起来像我们必须生成.xlf文件并进行渲染。另一种定义为一种JSON并加载它。这是要做的吗?如果需要翻译动态数据,您会喜欢什么? – peaceUser

23

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

1.通过NPM在app.module.ts进口安装

npm install @ngx-translate/core --save 

2.添加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" : "Հետադարձ կապ" 
} 
+0

3. app.components.ts您不需要从'ng2-translate'导入TranslateService,而是从@ ngx-translate/core中导入它 – Jnana

+0

您是否只需要将它添加到应用程序组件或使用它的每个组件中?因为应用程序组件是所有东西的开始 - >所以在我的其他htmls中,我可以假设它已导入? – fangio

+0

@fangio如果你想使用它,你必须导入'''TranslateService''',例如。你想改变当前的语言,检测语言变化或获得翻译。如果你想使用像这样的'''{{“contact”|你不需要在你的组件中从ngx-translate导入任何东西。 – styopdev