2017-07-21 9 views
1

翻訳パイプを使用してテキストを翻訳できますが、翻訳サービスのgetメソッドとinstantメソッドを使用して翻訳をロードしようとしています。 以下は、私がコンソールにイベントを印刷していますapp.component.tsngx-translateのservice-translate.getを使用してテキストを翻訳できません

export class AppComponent { 

event : string; 
constructor(private translate: TranslateService) { 
    translate.addLangs(["en", "fr"]); 
    translate.setDefaultLang('en'); 
    let LangChangeEvent : {} 
    let browserLang = translate.getBrowserLang(); 
    translate.use(browserLang.match(/en|fr/) ? browserLang : 'en'); 

    this.translate.get('ALL_LOCATIONS_TREEVIEW').subscribe((event: String) => { 
       console.log(event); 

      }); 
} 

} 

で私のコードです。ユーザーが言語を変更するたびにその翻訳を変更したい。私の残りの翻訳(パイプを使用)は正常に動作していますが、私は言語の変更に伴いコンソールの変更を見ることができません。私は何が欠けていますか?

答えて

3

getは一度だけ実行され、現在使用されている言語のキーの値を取得します。これを行うための別の方法は、streamメソッドを使用して、そこにある

this.translate.onLangChange 
.mergeMap(() => this.translate.get('ALL_LOCATIONS_TREEVIEW')) 
.subscribe(v => console.log(v)); 

を最新のrelase(^ 7.0.0)では:あなたは次のように言語の変更イベントにコンソールログをバインドする必要があり

this.translate 
.stream('ALL_LOCATIONS_TREEVIEW') 
.subscribe(v => console.log(v)); 

これは基本的にgetと同じですが、言語変更対応(選択した言語が変更されるたびに新しい値を発行します)。

詳細については、the documentation

+0

を魅力的に働かせてください。私は、.streamまたは.getでsubscribeを使用する以外に、角度変換のように他の方法があることを知りたかったのですが、これはもっと簡単でした。$ translate.instant(key)。 – pankaj

+0

インスタントメソッドもAPIの一部ですが、使用していないので、言語の変更が認識されるかどうかはわかりません –

関連する問題