2016-02-18 15 views
8

私たちはアプリケーションでAngular 2.0を使用しています。このアプリケーションでは、多言語サポートを提供したいと考えています。角度1.0を使用して実装する方法を知っています。 2.0での使用方法はわかりません。角2 - 多言語サポート

答えて

1

Angular2のi18nはまだ進行中であり、まだ使用可能ではないようです。 |イオン2 -

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

を参照してください、私はそれを得たAngular2 i18n at this point?

+0

現在入手可能ですか?それを行うためのガイドラインはありますか? – peaceUser

+0

利用可能です。 http://angular.ioを確認してください(私は今日私の電話にちょうどいいです) –

+0

どうやってこのコロケーションが気になりましたか? は、.xlfファイルを生成してレンダリングする必要があるようです。もう1つはJSONの一種で定義して読み込みます。これらはやり方ですか?動的に到着するデータを翻訳する必要がある場合、あなたは何を好むでしょうか? – peaceUser

23

であなたのアプリケーションを国際化とローカライズ私はそれを統合し、非常に使いやすいです、ngx-translateライブラリをお勧めすることができます。

1. app.module.ts輸入

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

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

export class AppModule {} 

3. app.components.ts

でTranslateModuleを追加NPM経由

npm install @ngx-translate/core --save 

2をインストールします。

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.翻訳ファイル

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

それをアプリケーションコンポーネントまたはそれを使用するすべてのコンポーネントに追加するだけですか? appコンポーネントはすべての開始点です - >私の他のhtmlではインポートされていると思いますか? – fangio

+0

@fangio '' TranslateService'''を使用したい場合にインポートする必要があります。現在の言語を変更したり、言語の変更を検出したり、翻訳を取得する必要があります。このような '' '{' "contact" | translate}} '' 'あなたのコンポーネントでngx-translateから何かをインポートする必要はありません。 – styopdev