2017-04-26 45 views
0

我有一個問題,我無法解決。該應用程序在Angular JS中,正在使用pascalprecht.translate。我有一個從數據庫以json形式調用的項目列表。 json有兩種語言的數據,阿拉伯語和英語。

當在適用/當前控制器中通過$translate.use()更改語言時,如何使選擇框中的項目更改語言。我怎樣才能實現這個?

有什麼我想:

  • 使用靜態字段像所有其他的翻譯(這將使應用程序的工作,但似乎像一個骯髒的方式把事情做好
  • 創建RootScope功能,將密鑰更改爲enar,但我不知道如何觸發該功能全部給定頁面上的選擇元素。我不能想到$watch,但我怎麼能tr igger它在所有選擇工作?

的數據是按以下格式:

[ 
    {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"}, 
    ... 
] 

商祺!

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

下面的代碼是一個簡單的實現,它的行爲像這樣的過濾器,這樣就可以將它修改爲:

+0

如何通過一個關鍵字來識別翻譯?像'$ translate'中一樣?我的意思是,''DATA_TRANLATION_KEY「:{en:」En 1中的數據「,ar:」Ar 1中的數據「},'? –

回答

1

您可以根據喜歡你的翻譯格式創建一個過濾器來處理數據轉換適合你的代碼。

;(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

謝謝。我會試試這個! –

相關問題