我正在使用Ionic框架开发移动应用程序,我在处理帮助页面的多语言功能时遇到了很大的问题。
我有2种语言(en + de),我想根据语言加载help_en.html或help_de.html。
我在主控制器中设置了默认语言和changeLanguage函数,它将在$ cookies.language中设置lang并且它正在工作;
1.View:
<a ng-href="#/help" >
2.MainCtrl -change语言功能:
$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,但在移动设备上会一直停留在&#34; en&#34;语言甚至我将值从$ cookies.language更改为&#34; de&#34;。
我可以做些什么来完成这项工作?任何想法? 我真的很感激任何帮助
由于
答案 0 :(得分:1)
关于离子和饼干中的饼干问题。 cordova app ..解决方案是使用 localStorage 。看看this question
关于 i18n 我建议您使用angular-translate。我已经在Android和ios的离子应用程序中使用过。如果您需要翻译app的所有字符串和小文本,这非常有用。
我的帮助页面中可能存在相同的问题,因为我有很多文本(一些段落)我更喜欢使用普通的html和所有文本,只显示当前语言的简单ng-if:
<ion-content class="has-header">
<div class="list padding card" ng-if="settings.languageId == 'en'">
...
English text here
...
</div>
<div class="list padding card" ng-if="settings.languageId == 'pt'">
...
Portuguese text here
...
</div>
</ion-content>