AngularJS 國際化簡單demo

首先,要做AngularJS國際化,需要下面三個模塊

    <script src="../angular/angular/angular.js"></script>
    <script src="../angular/angular-translate/angular-translate.js"></script>
    <script src="../angular/angular-translate-loader-static-files/angular-translate-loader-static-files.js"></script>

大家可以使用bower工具下載這些模塊

bower install angular
bower install angular-translate
bower install angular-translate-loader-static-files

首先,我們這里那中文和英文舉個??,先新建一個目錄i18n,在這個目錄下新建兩個json文件cn.json, en.json.用來保存中英文對應(yīng)的key和value.
cn.json:

{
  "title": "這是標題"
}

en.json:

{
  "title": "this is our title"
}
目錄結(jié)構(gòu)

這里就不把module模塊和controller模塊單獨分到不同的文件離去了,全部寫到html里:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../angular/angular/angular.js"></script>
    <script src="../angular/angular-translate/angular-translate.js"></script>
    <script src="../angular/angular-translate-loader-static-files/angular-translate-loader-static-files.js"></script>
</head>

<body ng-app="myApp">
<div ng-controller="testCtr">
<select class="language-switching" ng-model="cur_lang" ng-change="switching(cur_lang)">
    <option value="en">English</option>
    <option value="cn">簡體中文</option>
</select>
<br/>
<span>測試:<span ng-bind="title"></span></span>
</div>


<script>
    var app = angular.module('myApp', ['pascalprecht.translate'])
            .config(['$translateProvider',function($translateProvider){

                $translateProvider.useStaticFilesLoader({
                    prefix: '../i18n/',
                    suffix: '.json'
                });

            }]).controller('testCtr',['$scope', '$translate', function($scope, $translate){
                var lang = window.localStorage.lang||'cn'; //默認加載中文對應(yīng)的json文件
                $translate.use(lang).then(function() {
                    $scope.title = $translate.instant('title');
                });

                $scope.switching = function(langKey){
                    $translate.use(langKey).then(function() {
                        $scope.title = $translate.instant('title'); //這里一定要注意:.use()是async方法,而.instant()是sync方法,所以一定要.use方法加載完之后再去取值,不然.instant()可能會在json文件還沒加載完就執(zhí)行,導(dǎo)致取值失敗。
                    });
                }
            }]);
</script>

</body>
</html>

參考文獻:
1.Plnkr .
2.document.


最后打個小廣告,閑著沒事東拼西湊了個小程序(好多妹子奧??),閑著無聊的小伙伴幫我掃掃湊湊人數(shù)哈:

炱無聊
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容