@ChuckIsReady
2019-04-08T07:05:49.000000Z
字数 1545
阅读 1061
未分类
运行 npm install --save angular-translate
页面中加入
<script type="text/javascript" src="yourpath/angular.min.js"></script><script type="text/javascript" src="yourpath/angular-translate.min.js"></script><script type="text/javascript" src="yourpath/angular-translate-loader-static-files.min.js"></script>
en.json, zh-hans.json
//zh-hans.json{"Edit":"编辑",}
//en.json{}
var myApp = angular.module('myApp', ['pascalprecht.translate']).config(['$translateProvider',function($translateProvider){//读取存储中的语言设置,默认使用中文的json文件名var lang = window.localStorage['lang'] || 'zh-hans';$translateProvider.preferredLanguage(lang).useStaticFilesLoader({prefix: 'app/i18n/', //读取json文件的地址suffix: '.json' //读取json文件的后缀}).useSanitizeValueStrategy('escape');//过滤掉翻译文本的XSS攻击}])
localStorage.setItem('lang',str);
在LeapAI中由于还要切换后台返回的信息的语音,所以会在回调中执行:
loginRequest.switchLang(str).then(success=>{localStorage.setItem('lang',str);document.location.reload();},error=>notice.error(error));
<div>{{ app | translate}}</div> //app值为'Edit' 最终显示: 编辑<div>{{ 'Edit' | translate}}</div>//最终显示: 编辑<div ng-bind="'Edit' | translate"></div>//最终显示: 编辑
//首先在控制器上引入$translate服务xxController($state, $translate,...){let str = $translate.instant("Edit");console.log(str);//控制台输出 编辑}
比如No 在选择中是 否 的意思,在项目显示中是 无的意思
那么我们可以通过使用其他标志来比较方便地解决这个问题
//zh-hans.json{"Edit":"编辑","No":"否","No_dont_have":"无"}
//en.json{"No_dont_have":"No"}
这时候 去翻译 No_dont_have, 在英文模式下显示的就是 No 在中文模式下显示 无
翻译 No , 在英文模式下现实的是No (无匹配返回原文),在中文模式下显示 否
gettext替换$translate.instant{{::''|translate}}