2014-05-14 18 views
6

Non riesco a trovarlo in documenti o API di angular-translate. Come posso recuperare tutte le lingue caricate da angular translate?Come elencare tutte le lingue caricate da angular-translate

Supponendo che ho un LanguageCtrl come questo:

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(); 
     } 
    }]); 

E che carico nelle lingue:

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

Ora vorrei per visualizzare tutte le lingue:

<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

Da quello che vedo nel loro codice si può chiamare '$ translateProvider.transations()' senza alcun argomento e si otterrà il '$ translationTable' restituito di nuovo voi. Se funziona, fammelo sapere e posso renderlo una risposta – JoseM

+0

grazie a @JoseM! lo proverò domani. quindi iniettare un fornitore in un controller non causa alcun problema in angularjs, vero? sono abituato a usarli in configurazione all'avvio. – fischermatte

+0

Penso che potresti non essere in grado di iniettare il provider nel tuo controller. Stavo cercando di fare qualche ricerca veloce su questo, ma non ho ancora trovato nulla di definitivo. – JoseM

risposta

2

risposta Aggiornato:

/** 
* @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

Purtroppo non c'è nessuna API ancora per ottenere tutte le lingue registrate. Quindi, in breve: questo non è possibile eppure.

Se si desidera, è possibile aprire un problema su github per proporre tale funzione. Tuttavia, tieni presente che quando si utilizzano caricatori asincroni, le lingue sono non registrate fino a quando non vengono caricate.

+3

ha creato un problema come suggerito [https://github.com/angular-translate/angular-translate/issues/566](https://github.com/angular-translate/angular-translate/issues/566) – fischermatte

+0

Qualche novità al riguardo? Voglio visualizzare l'elenco delle lingue nella mia vista – sports

Problemi correlati