Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何列出角度翻译加载的所有语言_Javascript_Angularjs - Fatal编程技术网

Javascript 如何列出角度翻译加载的所有语言

Javascript 如何列出角度翻译加载的所有语言,javascript,angularjs,Javascript,Angularjs,我在的文档或api中找不到它。如何通过角度翻译检索所有加载的语言 假设我有这样一种语言Ctrl: angular.module('myApp') .controller('LanguageCtrl', ['$translate', '$scope', function ($translate, $scope) { $scope.switchLang = function (lang) { $translate.use(lang);

我在的文档或api中找不到它。如何通过角度翻译检索所有加载的语言

假设我有这样一种语言Ctrl:

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>
现在我想显示所有语言:

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>

不幸的是,目前还没有API可以获取所有注册语言。简而言之,这是不可能的

如果您愿意,您可以在github上打开一个问题来提出该功能。但是,请记住,在使用异步加载程序时,语言在加载之前不会注册。

更新的答案:

/**
* @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']);

根据我在他们代码中看到的内容,您可以不带任何参数调用
$translateProvider.transactions()
,然后将
$translationTable
返回给您。如果这行得通,让我知道,我可以回答谢谢@JoseM!明天我就试试这个。因此,在angularjs中,将提供者注入控制器不会引起任何问题,是吗?我只是习惯在启动时在配置中使用它们。我认为您可能无法将提供程序注入控制器。我试图对此做一些快速的研究,但我还没有找到任何确定的东西。有人知道如何获得翻译表的参考吗?按照你的建议创建了ab问题,关于这方面有什么新闻吗?我想在我的视图中显示语言列表