2014-05-14 29 views
6

我無法在angular-translate的文檔或API中找到它。如何通過angular translate檢索所有加載的語言?如何列出角度翻譯加載的所有語言

假設我有一個這樣的LanguageCtrl:

angular.module('myApp') 
.controller('LanguageCtrl', ['$translate', '$scope', 
    function ($translate, $scope) { 
     $scope.switchLang = function (lang) { 
      $translate.use(lang); 
     }; 
     $scope.currentLang = function() { 
      return $translate.use(); 
     }; 
     $scope.isCurrentLang = function (lang) { 
      return $translate.use() === lang; 
     }; 
     $scope.languages = function(){ 
      return $translate.IS_THERE_AN_API_FUNCTION_TO_GET_ALL_LANGUAGES(); 
     } 
    }]); 

我加載這些語言:

angular.module('myApp', ['pascalprecht.translate']) 
.config(['$translateProvider', function ($translateProvider) { 
    $translateProvider.translations('de', de); 
    $translateProvider.translations('fr', fr); 
    $translateProvider.translations('en', en); 
    $translateProvider.preferredLanguage('en'); 
}]); 

現在我想以顯示所有語言:

<ul ng-controller="LanguageCtrl"> 
    <li ng-repeat="lang in languages" ng-class="{active: isCurrentLang(lang)}"> 
      <a href="" ng-click="switchLang(lang)">lang</a> 
    </li> 
</ul> 
+1

從我在他們的代碼中看到,你可以叫'$ translateProvider.transations()'不帶任何參數,你會得到'$ translationTable'返回到您。如果這項工作,讓我知道,我可以給它一個答案 – JoseM

+0

謝謝@JoseM!我會嘗試這個明天。所以將一個提供者注入控制器並不會在angularjs中造成任何麻煩,是嗎?我只是習慣在啓動時在配置中使用它們。 – fischermatte

+0

我認爲你可能無法在你的控制器中注入提供者。我試圖對此做一些快速研究,但是我還沒有發現任何確定性。 – JoseM

回答

2

更新答案:

/** 
* @description 
* This function simply returns the registered language keys being defined before in the config phase 
* With this, an application can use the array to provide a language selection dropdown or similar 
* without any additional effort 
* 
* @returns {object} returns the list of possibly registered language keys and mapping or null if not defined 
*/ 

    $translate.getAvailableLanguageKeys(); 

/* 
* To register language keys, use the following function in your configuration: 
*/ 

    $translateProvider.registerAvailableLanguageKeys(['en', 'de']); 
10

不幸的是沒有API尚未獲得所有註冊語言。所以總之:這是不可能的還有

如果你想,你可以在github上打開一個問題來提出該功能。但是,請記住,使用異步裝載程序時,在加載語言之前,語言是而不是

+3

按照您的建議創建了ab問題[https://github.com/angular-translate/angular-translate/issues/566](https://github.com/angular-translate/angular-translate/issues/566) – fischermatte

+0

有關這方面的消息嗎?我想在我的視圖中顯示語言列表 – sports