我有一个在登录事件后调用的TranslationService,在这个服务中我想要对$ translateProvider.translation进行初始化,但是这个对象在app.config(...)之外似乎不是accessibile。在服务中我想替换以前的翻译。 这里有一些代码:
angular.module('myapp')
.factory('TranslateService', ['$translate', $translateProvider, function($translate, $translateProvider) {
$mydata = { "LABEL": "Label" };
$translateProvider.translations('it', mydata); // injection problem
$translate.somethingLike_getProvider().translations('it', mydata); // doesn't exist
}]);
在我的TranslateService中,我需要像
这样的东西setenforce 0
答案 0 :(得分:0)
诀窍是将$translateProvider
存储在稍后可以访问的变量中:
var app = angular.module('app', ['pascalprecht.translate']);
var provider = null;
app.config(function($translateProvider) {
provider = $translateProvider;
$translateProvider.translations('en', {
TITLE: 'Hello',
FOO: 'This is a paragraph.'
});
$translateProvider.preferredLanguage('en');
});
app.factory('inlineLoaderFactory', function($q) {
return function(options) {
var deferred = $q.defer();
deferred.resolve(options[options.key]);
return deferred.promise;
};
});
app.controller('MainCtrl', function($scope, $q, $translate) {
$scope.override = function() {
provider.useLoader('inlineLoaderFactory', {
en: {
TITLE: 'Hello My Friend',
FOO: 'TLDR',
CUSTOM: 'New Key'
}
});
$translate.refresh();
};
});

如果需要更改翻译,我们会告知$translateProvider
使用inlineLoaderFactory
translation loader service。 inlineLoaderFactory
仅使用选项作为新的翻译数据。