@ChuckIsReady
2019-04-08T07:05:49.000000Z
字数 1545
阅读 1005
未分类
运行 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}}