【发布时间】:2015-04-25 06:36:31
【问题描述】:
我正在使用 Ionic 框架开发一个移动应用程序,但在处理帮助页面的多语言功能时遇到了一个大问题。
我有 2 种语言 (en + de),我想根据语言加载 help_en.html 或 help_de.html。
我在主控制器中设置了默认语言和 changeLanguage 函数,它将在 $cookies.language 中设置语言并且它正在工作;
1.查看:
<a ng-href="#/help" >
2.MainCtrl - 更改语言功能:
$scope.changeLanguage = function(lang) {
$scope.translation=translationService.getTranslation($scope, lang);
$cookies.lang=lang;
};
3.app.js 的配置看起来像这样:
var myApp = angular.module('MyPetApp', ['ionic', 'config', 'MyApp.controllers', 'ngCordova', 'ngResource', 'ngCookies']);
myApp.config(function($stateProvider, $urlRouterProvider) {
var $cookies;
angular.injector(['ngCookies']).invoke(function(_$cookies_) {
$cookies = _$cookies_;
});
if ($cookies.language==undefined){
$cookies.language = 'en'
}
$stateProvider
.state('default', {
url: "/",
templateUrl: "templates/default.html"
})
.state('help', {
url: '/help',
templateUrl: function (){
return 'templates/help_'+$cookies.lang+'.html'
}
})
$urlRouterProvider.otherwise('/');
});
这在 chrome 中工作,但在移动设备上将一直使用“en”语言,即使我将值从 $cookies.language 更改为“de”。
我能做些什么来完成这项工作?有什么想法吗? 我真的很感谢任何帮助
谢谢
【问题讨论】:
-
任何其他简单有效的方法都会很棒
-
我认为为 aboutUs-en 和 de 创建 2 个状态不是一个好的解决方案 :)
-
你为什么使用cookies而不是本地存储?
-
我正在使用这个例子blog.novanet.no/creating-multilingual-support-using-angularjs ...如果可以的话,我可以更改为 localStorage 但只是在这里(动态 templateUrl)我有这个问题,因为在其他页面上 cookie 工作正常
标签: android angularjs angular-ui-router ionic-framework