【发布时间】:2015-06-05 06:46:54
【问题描述】:
我正在使用 angular-translate 在我的应用程序中显示不同的语言,但是当我在成功登录后或通过其他 Web 服务调用尝试刷新翻译数据时出现错误。
注意:我在“app.config”中成功调用$translateProvider.useLoader 来设置默认翻译数据。但我需要在任何网络服务调用后在应用程序中动态重置该数据,因为语言数据因登录用户的组织而异(或可能随时更改)。
这是我尝试过的代码,它给了我一个 $translateProvider 未引用的错误:
var ctrl = angular.module('app.ctrls', ['pascalprecht.translate']);
ctrl.controller('LoginCtrl', ['$translate'
,'$translateProvider' // << error!
, function( $translate
, $translateProvider ) {
...
// call web service to refresh "translations" in $translateProvider
}]);
仅供参考,该应用程序是使用基于 angularjs 的 Ionic 框架的移动应用程序。
【问题讨论】:
-
我现在的解决方法是将任何最近下载的 LanguageData 文件存储到本地存储中——然后在配置阶段再次运行时读取它是否可用。此解决方法的问题在于,用户需要终止或退出在其手机上运行的应用程序才能再次执行配置阶段。理想情况下,我希望新数据立即生效(或至少不必终止应用)。
-
已解决 - 根据 JB Nizet 的回答,每当 Web 服务调用返回指示语言数据已更改时,我都会调用 $translate.refresh()。这会调用我在“app.config”中设置的 $translateProvider.useLoader(),这是一个令人满意的解决方案。最初我试图根据来自 any Web 服务调用(如果有的话)的有效负载来设置数据,但这让事情变得干净和简单。
标签: angularjs internationalization ionic angular-translate