Javascript AngularJS:在app.js中获取翻译密钥
在我的应用程序中,我使用AngularJS模块Pascal Precht(翻译模块)。我来找你是因为我无法进入我的方法Javascript AngularJS:在app.js中获取翻译密钥,javascript,angularjs,angular-translate,Javascript,Angularjs,Angular Translate,在我的应用程序中,我使用AngularJS模块Pascal Precht(翻译模块)。我来找你是因为我无法进入我的方法myApp.Run的app.js翻译键。 我可以在控制器或视图中执行。但不可能在项目初始化时得到它。它给我的是钥匙,不是信件 你有解决办法吗 这是我的密码: var myApp = angular.module('myApp', ['ngRoute', 'ngAnimate', 'myApp.filters', 'myApp.services', 'myApp.directive
myApp.Run
的app.js
翻译键。
我可以在控制器或视图中执行。但不可能在项目初始化时得到它。它给我的是钥匙,不是信件
你有解决办法吗
这是我的密码:
var myApp = angular.module('myApp', ['ngRoute', 'ngAnimate', 'myApp.filters', 'myApp.services', 'myApp.directives', 'pascalprecht.translate']);
// Declare routeProvider
myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {templateUrl:'partials/connectView.html', controller:'ConnectController'});
$routeProvider.when('/homeView', {templateUrl:'partials/homeView.html', controller:'HomeController'});
}]);
// Declare translateProvider
myApp.config(['$translateProvider', function($translateProvider) {
$translateProvider.useStaticFilesLoader({
prefix: 'res/localization/lang-',
suffix: '.json'
});
$translateProvider.preferredLanguage('fr_FR');
//$translateProvider.preferredLanguage('en_US');
}]);
// Declare Global variables
myApp.run(['$rootScope', '$filter', function($rootScope, $filter) {
$rootScope.list = false;
etc....
//I'm trying to get translate Key but it doesn't work
console.log($filter('translate')('MY_KEY'));
}]);
我的AngularJS版本是1.2.16(最新稳定版本)。Thx为什么不在run部分注入$translate服务呢 然后调用它而不是使用过滤器
console.log($translate('MY_KEY'));
很显然,由于声誉问题,我无法发表评论,我们遇到了一些可能是您正在经历的事情-由于区域设置文件仅在angular的配置部分下载,因此在调用translate时可能(尚未)不可用 我们通过预先添加所有语言环境文件(我们没有很多,而且它们很小)来解决这个问题,在初始化过程中,我们只选择正确的一个,这样我们就避免了问题
(同样,这可能更像是一个评论,而不是一个答案,但我不能评论…这不是解决您的问题的方法,但是如果您在“运行”中尝试以下代码,您将了解到,为什么在初始化状态下翻译不可用
myApp.run(['$rootScope', '$filter','$timeout', function($rootScope, $filter,$timeout) {
$timeout(function(){
alert($filter('translate')('MY_KEY'));
},5000)
}]);
这里的问题是,在加载翻译时,“运行”将被执行。因此无法保证您将在那时加载翻译。尝试在
app.run()
中注入$translate
服务
角度平移版本1.1.1及以下版本
我还建议您升级到Pascal Precht的最新版本。这里面有一些
角度平移版本2.0.0及更高版本
看到这一点很有帮助。我试过了,因为我把AngularJS的v1.2.16
$translate('my_key')
放进去了,它就不再工作了。结果是console.log($translate('my_key'))={}
Whileconsole.log($filter('translate')('my_key'))=my_key
(结果是键而不是值)。小心,$translate-return值是一个承诺,必须从AngularJS 2.0:-)开始注意。我也得到了一个{}而不是键的翻译。我也在run部分注入了$translate服务。我不知道我需要为这个承诺付出什么样的努力。我现在正在运行AngularJs 1.2.24。明白了$translate('DATEPICKER_CURRENT'))。然后(函数(值){datepickerPopupConfig.currentText=value;});用小提琴来演示这个问题怎么样?
myApp.run(['$rootScope', '$translate', '$log', function ($rootScope, $translate, $log) {
$log.debug($translate('MY_KEY'));
}]);
myApp.run(['$rootScope', '$translate', '$log', function ($rootScope, $translate, $log) {
// translate via promises (recommended way)
$translate(['MY_KEY', 'MY_OTHER_KEY'])
.then(function (translation) {
$log.debug(translation.MY_KEY);
});
// translate instantly from the internal state of loaded translation
$log.debug($translate.instant('MY_KEY'));
}]);