我想在服务中使用angular translate。我尝试使用translatePartialLoader加载它然后刷新但没有成功我在视图中获得空对象。以下是我的代码。
***服务*
angular
.module('common')
.factory('ConversationService', conversationService);
function conversationService($translate, $translatePartialLoader) {
$translatePartialLoader.addPart('home');
$translate.refresh();
var asdsa;
asdsa = $translate('home.test');
console.log(asdsa);
/* Tried with then also no success..
$translate("home").then (function (home) {
asdsa = home;
console.log(asdsa);
});*/
}
})();
app.js 我定义$ translate
angular.element(document).ready(function() {
angular.bootstrap(document, ['app']);
});
function config($stateProvider, $urlRouterProvider, $logProvider, $httpProvider, $translateProvider) {
$urlRouterProvider.otherwise('/login');
$logProvider.debugEnabled(true);
$httpProvider.interceptors.push('httpInterceptor');
$translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: '/src/app/modules/{part}/resources/{lang}.json'
});
$translateProvider.preferredLanguage('en');
en.json文件
{
"home" :{
"test": "Teeeeeeeeeeeeeeeeeeest",
}
}
在控制器中,我在解析方法translatePartialLodaer中使用并且正在工作,但这种方式我需要服务它不起作用。以下是我在正在使用的路线中的使用方法。
resolve: {
translatePartialLoader: ['$translate', '$translatePartialLoader', function ($translate, $translatePartialLoader) {
$translatePartialLoader.addPart('home');
return $translate.refresh();
}]
}
答案 0 :(得分:0)
$ translate是async fn,你应该像
一样使用它$translate('token.token2').then(function(translation){
});