2016-12-09 11 views
0

私は現在、ng2-translateを使用してGUIの複数の言語を管理するAngular 2アプリを持っています。 HTTPステータスコードとカスタムAPIコードの組み合わせを使用してリクエストに応答するAPIと通信しています。角2 i18n:動的フィードバック

だから私は、例えば、それにHTTP呼び出しでこの取り戻すことができます:

{ 
    success = true, 
    code = 'A00001' 
} 

私は「A00001」は何を意味するのかを説明した文書を持っているが、私はロードするためにどのような翻訳を知っています。

ここでは、Angular独自のi18nソリューションを使用するように切り替えたいと考えています。主に私はできるだけ少数のサードパーティのライブラリを使用したいので、最も重要なのは翻訳に文脈を与えることでより良いサポートを提供するからです。

ドキュメントfor i18n on angular.ioを見ると、それはかなり真っ直ぐに見えますが、私の背を握っているのは、APIからの応答をどのように処理するかです。

コンパイル時にすべての文字列が置換/翻訳されるため、翻訳された文字列を取得してAPIの特定のコードを検出した場合にのみ表示するにはどうすればよいですか?

これは私が今何をすべきか、基本的である:

switch(response.code) { 
    case 'A00001': 
     feedback = this._translateService.instant('translationKey'); 
    break; 
} 

その後、私はGUIでユーザーのフィードバックを提示。

Angulars i18nソリューションを使用してこれをどのように解決できますか?

答えて

0

私は自分自身を理解しようとしてきました。

A)同僚はDOM上のすべての文字列を翻訳し、サービスにこれらの要素のHTMLコンテンツを取得させて、何も表示しないように設定しました。

B)別の方法として、可能なすべてのエラーについてDOMにスイッチケースを設定し、* ngIfを使用して適切に表示することができます。

C)AとBを組み合わせて、別のコンポーネント+サービスとして作成できます。動的エラーメッセージが必要な場所であればどこでも使用できます。この方法では、コンパイルされたビューに必ず不要な翻訳が含まれるわけではありません。