gpt4 book ai didi

javascript - 如何在某些事件后加载 Angular 平移

转载 作者:行者123 更新时间:2023-12-04 01:26:56 29 4
gpt4 key购买 nike

我有一个在登录事件后调用的 TranslationService,在这个服务中我想初始化 $translateProvider.translation 但这个对象似乎无法在 app.config(...) 之外访问。在服务中我想替换之前的翻译。这里有一些代码:

.config(['$translateProvider', function ($translateProvider) {        
$translateProvider.useStaticFilesLoader({
prefix: 'i18n/',
suffix: '.json'
});
$translateProvider.preferredLanguage('it');
}]);

在我的 TranslateService 中我需要类似的东西

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
}]);

最佳答案

诀窍是存储$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 仅使用选项作为新的翻译数据。

关于javascript - 如何在某些事件后加载 Angular 平移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34676735/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com