2017-04-26 7 views
0

私は周りを回ることができないという問題があります。アプリはAngular JSで、pascalprecht.translateを使用しています。私はjson形式でデータベースから呼び出される項目のリストを持っています。 jsonは、アラビア語と英語の2つの言語のデータを持っています。

該当する/現在のコントローラで言語が$translate.use()で変更された場合、選択ボックスの言語を変更するにはどうしたらいいですか?これをどのように実装できますか? (このアプリの作業を行います他のすべての翻訳などの静的フィールドを使用

  • を物事がRootScopeの作成
  • を成し遂げるために汚いやり方のように思える:私は試してみました何

    関数をenまたはarに変更しますが、どのようにその関数をトリガーするのかわかりませんすべて指定されたページの選択要素。$watchを考えることはできませんが、どのようにすればtrすべての選択でうまくいくのか?

データの形式は次のとおりです。

[ 
    {en:"Data in En 1", ar: "Data in Ar 1"}, 
    {en:"Data in En 2", ar: "Data in Ar 2"}, 
    {en:"Data in En 3", ar: "Data in Ar 3"}, 
    ... 
] 

よろしく!あなたが好きなあなたの翻訳フォーマットに従ってデータ変換を処理するためのフィルタを作成することができます

+0

どのように翻訳をキーで特定しますか? '$ translate'のように?つまり、「DATA_TRANLATION_KEY」:{en:「En 1のデータ」、「ar 1のデータ」}、「? –

答えて

1

<span>{{ { "en":"Data in En 1", "ar": "Data in Ar 1"} | translateData }}</span> 

次のコードは、あなたがそれを修正することができるように、このように振る舞うフィルタの単純な実装でありますコード内に適切に収まるようにします。

;(function() { 

    angular.module('app.filters', ['ngTranslate']) 
     .filter('translateData', TranslateData); 

    function TranslateData($translate) { 

     return function TranslateDataFilter(data) { 

      if (!angular.isObject(data)) { // don't handle it if it's not an obj 
       return data; 
      } 

      var lang = $translate.use(); // get current app language 

      return data[lang]; // return the prop value named by the `lang` 
     }; 
    } 
})(); 
+0

ありがとうございます。私はこれを試してみよう! –

関連する問題