Angular国际化

正如官方API中所说i18n for your Angular apps, made easy,angular-translate.js使用起来确实简单方便,自己动手尝试了一下,几步搞定项目国际化。
1、下载angular-translate.js, 并引入。

<!-- i18n -->
<script src="modules/mainframe/media/js/angular-translate.min.js"></script>
<script src="modules/mainframe/media/js/angular-translate-loader-static-files.min.js"></script><--! 用来读取本地文件的模块 --!>

2、独立的文件夹 i18n 用来放语言包json 文件,目录及文件如下层级关系:
/i18n/
en.json
cn.json

//cn.json内容
{
  "HEADLINE": "神奇的模块",
  "PARAGRAPH": "这是段落!",
  "PASSED_AS_TEXT": "欢迎来中国",
  "PASSED_AS_ATTRIBUTE": "今天天气不错",
  "PASSED_AS_INTERPOLATION": "开始",
  "VARIABLE_REPLACEMENT": "你好PascalPrecht",
  "BUTTON_LANG_CN": "中文",
  "BUTTON_LANG_EN": "英语"
}
//en.json内容
{
  "HEADLINE": "What an awesome module!",
  "PARAGRAPH": "This is a paragragh!",
  "PASSED_AS_TEXT": "Welcome to China!",
  "PASSED_AS_ATTRIBUTE": "It's a nice day",
  "PASSED_AS_INTERPOLATION": "Start",
  "VARIABLE_REPLACEMENT": "Hi {{name}}",
  "BUTTON_LANG_CN": "Chinese",
  "BUTTON_LANG_EN": "English"
}

3、注入依赖

var app = angular.module('mainFrame', ['pascalprecht.translate']);
//国际化配置********* begin ***********
app.config(['$translateProvider',function($translateProvider){
  //默认加载的语言包
  //使用了 localStorage.lang来存储用户上一次选择的语言,如果用户是第一次范围,默认显示中文
  var lang = window.localStorage.lang||'cn';
  $translateProvider.preferredLanguage(lang);
  $translateProvider.useStaticFilesLoader({
    files: [{
      prefix: './modules/mainframe/media/js/i18n/',//语言包路径
      suffix: '.json'   //语言包后缀名
    }]
  });
}]);
//国际化配置*********** end **********//

4、controller中的配置

 <div class="row-fluid" ng-controller="i18nController">
    <div class="span12">
        <div class="portlet box grey">
            <div class="portlet-title">
                <div class="caption"><i class="icon-user"></i>i18n</div>
            </div>
            <div class="portlet-body">
                <div class="clearfix">
                    <div class="btn-group" ng-click="changeLanguage('cn')">

                        <button id="sample_editable_1_new" class="btn green">

                        <i class="icon-pencil"></i>&nbsp;{{ 'BUTTON_LANG_CN' | translate }}

                        </button>
                    </div>
                    <div class="btn-group" ng-click="changeLanguage('en')">

                        <button id="sample_editable_1_new" class="btn blue">

                        <i class="icon-pencil"></i>&nbsp;{{ 'BUTTON_LANG_EN' | translate }} 
                        </button>
                    </div>
                </div>
            </div>
        </div>
        <div class="portlet-body">
              <p>{{ 'HEADLINE' | translate }}</p>
              <p>{{ 'PARAGRAPH' | translate }}</p>
              <p translate>PASSED_AS_TEXT</p>
              <p translate="PASSED_AS_ATTRIBUTE"></p>
              <p translate>{{ 'PASSED_AS_INTERPOLATION' }}</p>
              <p translate="{{ 'PASSED_AS_INTERPOLATION' }}"></p>
              <p translate="VARIABLE_REPLACEMENT" translate-values="{ name: 'PascalPrecht' }"></p>
              <!-- <button ng-click="changeLanguage('cn')" translate="BUTTON_LANG_CN"></button> -->
        </div>
    </div>
</div>


//注入$translate, 注入T服务处理js中国际化信息
app.register.controller('i18nController', function($scope, $translate, T) {
//手动切换语言
$scope.changeLanguage = function (langKey) {
    $translate.use(langKey);
  };
  //测试js
  console.log(T.T("HEADLINE"))
});

这里为了处理js中的国际化信息添加了一个方法:

//添加service 对js中内容进行国际化
app.factory('T', ['$translate', function($translate) {
    var T = {
        T:function(key) {
            if(key){
                //传入key 调用instant方法转换
                return $translate.instant(key);
            }
            return key;
        }
    }
    return T;
}]);

最后效果如图:
英文

切换浏览器语言或者手动点击切换语言按钮到中文:
这里写图片描述

//Done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值