歡迎訪問我們的網站,網站上有更多關於技術性的交流:http://www.ncloud.hk/技術分享/ionic-plus-angularjs-angular-translate-國際化本地化解決方案/
一、手動切換語言
1.在app.js文件中首先要加上一個參數:
angular.module(’passbox’,[‘ionic’,’pascalprecht.translate’])
2.需要引用js文件
<script src=”js/angular-translate.js”></script>
3.在edit.html文件中加入點擊切換按鈕:
<button class="button" ng-click="changeLanguage('en')" translate="Language_en"></button>
<button class="button" ng-click="changeLanguage('zh')" translate="Language_zh"></button>
4.在controllers.js文件edit的控制器中加入切換的函數:
.controllers(‘edit’,[‘$scope’ ,function($scope, $translate){
$scope.changeLanguage = function (langkey) {
$translate.use(langkey);
};
}])
5.在app.js文件中先定義變量:
var translationsEN = {
Language_en: 'english',
Language_zh: 'chinese',
};
var translationZH = {
Language_en: '英文',
Language_zh: '中文',
};
之后再寫函數方法:
angular.model(‘passbox’,[‘ionic’,’pascalprecht.translate’]);
.config(function($stateProvider,$translateProvider){
$translateProvider.translations(‘en’,translationEN);
$translateProvider.translations(‘zh’,translationZH);
$translateProvider.preferredLanguage(‘en’);//首選語言
$translateProvider.fallbackLanguage(‘en’);
}
二、自動獲取手機語言為默認語言
1.在app.js文件中首先要加上一個參數:
angular.module(’passbox’,[‘ionic’,’pascalprecht.translate’]);
2.需要引用js文件
<script src=”js/angular-translate.js”></script> <script src=”js/angular-translate-loader-static-files.min.js”></script>
3.在app.js文件中添加參數:
.config(function($stateProvider,$translateProvider){
$translateProvider.registerAvailabeLanguageKeys([‘en’,’zh’],{
‘en-*’:’en’,
‘zh-*’:’zh’
});
$translateProvider.determinePreferredLanguage();//這個方法是獲取手機默認語言設置
4.翻譯的變量可一根據上面那樣來自己定義,也可以通過路由來改變(但是經過測試這種方法不適用在手機上,模擬機上都測試失敗(增加第五條為手機可以識別的)。):
【1】可以將每個翻譯文件放到/language/中,比如/languages/en.json /language/zh.json
【2】然后通過useStaticFilesLoader來配置:
$translateProvider.useStaticFilesLoader({
Prefix:’/languages/’,
Suffix:’.json’
});
【3】需要引用js文件
<script src=”js/angular-translate-loader-static-files.min.js”></script>
【4】注意:
json文件格式要注意不可以有注釋內容;
引用的js文件需要的是靜態的文件angular-translate-loader-static-files.min.js。
5.這是經過測試研究后又得到的經驗,上邊路由方法其實是不可行的,可以將json文件改為js文件,在index.html文件中引用,接着在app文件中:
$translateProvider.translations('en',_translate_EN);
$translateProvider.translations('zh',_translate_ZH);
$translateProvider.translations('ja',_translate_JA);
$translateProvider.registerAvailableLanguageKeys(['en','zh','ja'],{
'en-*': 'en',
'zh-*': 'zh',
'jp-*': 'ja'
});
$translateProvider.determinePreferredLanguage();
當然這種方法也不需要再引入<script src=”js/angular-translate-loader-static-files.min.js”></script>這個文件了.
三、這個自動獲取手機語言一加上去,瞬間感覺軟件高大上了好多~
參考教程:通過插件來控制切換語言的:https://blog.nraboy.com/2014/08/internationalization-localization-ionicframework-angular-translate/
這個更詳細一點:http://angular-translate.github.io/docs/#/guide/07_multi-language
