2015-03-10 5 views
0

Я использую модуль углового перевода и пытаюсь внедрить все мои переводы, которые находятся на сервере с $ 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 
     }); 

Я знаю, что этот код имеет некоторые ошибки, но я только хочу у вас есть идея, что я хочу сделать.

Благодаря

ответ

0

Так углового перевода обеспечивает его собственный процесс $ HTTP, чтобы сделать это. Мне довелось буквально реализовать это сегодня, так что вам повезло. Вы можете увидеть это здесь в своих документах.

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

Их документы довольно плохо, но так, как вы бы реализовать это в вашем app.config, где у Вас есть свой предпочтительный язык, что вы бы добавить ...

$translateProvider.useUrlLoader(options) 

Снова это то, где их документация плохая. Параметры, необходимые для это будут только ваш URL, так что ...

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

Это создаст HTTP вызов, который будет пытаться получить от «/ yoururl? LANG = en_US» или любого другого кода языка в настоящее время активно ,

Вы также будете нуждаться, чтобы включить сценарий для URL-адрес загрузчика, который это здесь

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

Это также дает некоторую информацию в комментариях об использовании его.

Дайте мне знать, если у вас есть вопросы. Надеюсь это поможет. Понадобился время, чтобы выяснить, что происходит с этим. Опять же, очень плохая документация.

Edit:

Я заметил, вы также писать свои услуги, чтобы сделать список доступных языков. Угловой-перевод тоже есть что-то для этого ...

$translateProvider.registerAvailableLanguageKeys(['en', 'ja']); 
+0

Hello! Большое спасибо за ваш ответ. Я видел второй URL-адрес, и я отмечаю, что я не могу выбрать метод или параметры .. Я ошибаюсь? –

+0

Правильно, но было бы довольно легко войти в loader-url.js и отредактировать его прямо там. Это не большой файл, поэтому легко увидеть, что там происходит. – ribsies

+0

большое спасибо :) –