Ответ 1
angular -translate поддерживает асинхронную загрузку файлов с частичным языком. Все частичные файлы объединены в один словарь на каждый язык. Официальную документацию можно найти здесь: http://angular-translate.github.io/docs/#/guide/12_asynchronous-loading
Он поддерживает применение шаблона для шаблонов url, которые указывают на модулированные языковые файлы:
$translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: '/i18n/{part}/{lang}.json'
});
Внутри контроллеров вы можете добавить языковые модули и обновить привязки данных следующим образом:
angular.module('contact')
.controller('ContactCtrl',
function ($scope, $translatePartialLoader, $translate) {
$translatePartialLoader.addPart('contact');
$translate.refresh();
});
Конечно, загрузка партикулов также может быть рассмотрена на фазе разрешения маршрута
В качестве альтернативы вы также можете создать собственную пользовательскую функцию загрузчика. http://angular-translate.github.io/docs/#/guide/13_custom-loaders
Это обеспечивает всю гибкость, необходимую для объединения необходимых языковых модулей за один снимок. Например. вы можете сделать что-то вроде этого:
app.factory('customLoader', function ($http, $q) {
// return loaderFn
return function (options) {
var deferred = $q.defer();
var data = {
'TEXT': 'Fooooo'
};
$http.get('nls/moduleA/en.json').success(function(moduleA){
angular.extend(data, moduleA);
$http.get('nls/moduleB/en.json').success(function(moduleB){
angular.extend(data, moduleB);
deferred.resolve(data);
});
});
return deferred.promise;
};
});