0

我正在使用 angular-translate 模块并尝试使用 $http 注入服务器上的所有翻译。我使用提供程序,我知道只有我可以通过 $get 注入依赖项,但我不能从我的提供程序调用该函数。我需要知道我是否可以做到这一点以及如何做到这一点。

这是我的提供者。

.provider('languageServices', function (){

    this.languages = {};

    this.getExistLanguages = function() {
      return ['en','es'];
    };

    this.getAllLanguages = function(){
      return this.languages;
    };

    this.$get = function($http){
      return {
        getSpecificLanguage : function(lan) {
          return  this.languages = $http.post('fr3/i18n',lan);
        }
      }
    };
  });

这是我的配置应用

    .config(function ($stateProvider, $urlRouterProvider, USER_ROLES, $translateProvider, languageServicesProvider) {
            $stateProvider.state('dashboard', {
                    url: '/dashboard',
                    views: {
                        'header': {template: ''},
                        'content': { templateUrl: 'views/dashboard.html' }
                    },
                    data: { authorizedRoles: [USER_ROLES.admin] }
                });

            $translateProvider.preferredLanguage('es');
    // here is where i want inject all my translations with something like:
   // var languages = languageServicesProvider.getAllLanguages();
//and languages pass it to translateProvider
        });

我知道这段代码有一些错误,但我只希望你有一个我想做的想法。

谢谢

4

1 回答 1

0

所以 angular-translate 提供了它自己的 $http 过程来做到这一点。我碰巧今天刚刚实现了这个,所以你很幸运。你可以在他们的文档中看到它。

http://angular-translate.github.io/docs/#/api/pascalprecht.translate .$translateUrlLoader

他们的文档非常糟糕,但是您实现这一点的方式是在您的 app.config 中,您可以在其中添加您喜欢的语言...

$translateProvider.useUrlLoader(options)

这也是他们的文档不好的地方。您需要的选项就是您的网址,所以...

$translateProvider.userUrlLoader({
  url: '/yoururl'
});

这将创建一个 http 调用,该调用将尝试从 '/yoururl?lang=en_US' 或当前处于活动状态的任何语言代码中获取。

您还需要包含 url 加载器的脚本,这就是这里

https://github.com/angular-translate/angular-translate/blob/master/src/service/loader-url.js

这也会在有关使用它的评论中为您提供更多信息。

如果您还有问题,请告诉我。希望这可以帮助。我花了一段时间才弄清楚这件事发生了什么。同样,非常糟糕的文档。

编辑:

我注意到您也在编写自己的服务来列出可用语言。Angular-translate 也有这方面的东西......

$translateProvider.registerAvailableLanguageKeys(['en', 'ja']);
于 2015-03-10T21:50:10.750 回答