2014-05-14 11 views
6

द्वारा लोड की गई सभी भाषाओं को कैसे सूचीबद्ध करें, मैं इसे 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

धन्यवाद @ जोसेम! मैं कल यह कोशिश करूंगा। तो एक नियंत्रक में प्रदाता को इंजेक्शन देने से 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

दुर्भाग्य से वहाँ सभी पंजीकृत भाषाओं को पाने के लिए अभी तक कोई एपीआई नहीं है। तो संक्षेप में: यह संभव नहीं है अभी तक

यदि आप चाहते हैं, तो आप उस सुविधा का प्रस्ताव देने के लिए जिथब पर कोई समस्या खोल सकते हैं। हालांकि, ध्यान रखें कि एसिंक्रोनस लोडर का उपयोग करते समय, लोड होने तक पंजीकृत नहीं हैं।

+3

ने सुझाव दिया है जैसा कि आपने सुझाव दिया है [https://github.com/angular-translate/angular-translate/issues/566 ](https://github.com/angular-translate/angular-translate/issues/566) – fischermatte

+0

इस पर कोई भी समाचार? मैं अपने विचार में भाषाओं की सूची प्रदर्शित करना चाहता हूं – sports

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^