angular 国际化实战
今天和大家分享的内容目录:
使用 bower 管理工具下载 angular 及 angular-translate 模块 bowerinstallangular bowerinstallangular-translate bowerinstallangular-translate-loader-static-files //然后在页面引用进去 <scriptsrc="/vender/angular-1.3.8.js"></script> <scriptsrc="/vender/bower-angular-translate-2.4.2/angular-translate.min.js"></script> <scriptsrc="/bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js"></script> 第一个文件 angular-1.3.8.js 就不用多说了.你懂的. 第二个文件 angular-translate.min.js 是angular官方提供的国际化模块 第三个文件 angular-translate-loader-static-files.min.js 模块是用来读取本地文件的模块,因为我们的翻译内容都是独立的 json 文件. 我们找一个独立的文件夹 i18n 用来放json 文件,目录及文件如下层级关系: /i18n/ en.json cn.json en.json 文件内容如下: {"100001":"Login","100002":"Register"} cn.json 文件内容如下: {"100001":"登录","100002":"注册"} 上面2个json文件对应相同的键,我们称之为 翻译键. 不同的语言文件中,相同的翻译键对应相应的翻译值即可.如 "Login" 对应 "登录" 接下来我们需要在注入依赖: varapp=angular.module('myApp',['pascalprecht.translate']) .config(['$translateProvider',function($translateProvider){ varlang=window.localStorage.lang||'cn'; $translateProvider.preferredLanguage(lang); $translateProvider.useStaticFilesLoader({ prefix:'/i18n/',suffix:'.json' }); }]); 分解的看下上面的代码: 这一句就是告诉我们已经把 angular-translate 模块以一个依赖项加载进来..config(['$translateProvider',function($translateProvider) 这样在不同的语言环境,angular.js 会加载不同的语言配置文件,根据翻译ID展示出来翻译值. 2.3 方法3(服务方式) 我们在javascript 脚本中使用国际化,当然有人说直接用过滤器来做,也是可以的,但是个人更喜欢创建一个服务,感觉使用起来简单方法。 我们在 /services/ 目录里创建 T.js 服务,内容如下: angular.module('myApp').factory('T',function($translate){ varT={ T:function(key){ if(key){ return$translate.instant(key); } returnkey; } } returnT; }]); 服务T 返回了一个方法 T.下面我们样式一下如何在controller 里使用国际化. 假如登录的控制器 LoginCtrl.js 有一个登录标签需要做国际化: angular.module('myApp').controller('LgoinCtrl','T',function($scope,T){ $scope.login_title=T.T(100001); } ]); 首先需要把 T 服务依赖注入到控制器,然后在需要国际化的地方直接调用 T 服务的 T 方法,传入翻译ID 返回 翻译值。 http://yijiebuyi.com/blog/3b55056c87b73ba606c19e9338dca679.html http://www.cnblogs.com/bonelee/p/6874803.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |