[关闭]
@ChuckIsReady 2019-04-08T07:05:49.000000Z 字数 1545 阅读 1005

angularjs 前端翻译方案

未分类


首先引入翻译插件

运行 npm install --save angular-translate

页面中加入

  1. <script type="text/javascript" src="yourpath/angular.min.js"></script>
  2. <script type="text/javascript" src="yourpath/angular-translate.min.js"></script>
  3. <script type="text/javascript" src="yourpath/angular-translate-loader-static-files.min.js"></script>

新建文件夹i18n用于存放翻译字典,在文件夹内部新建 en.json, zh-hans.json

  1. //zh-hans.json
  2. {
  3. "Edit":"编辑",
  4. }
  1. //en.json
  2. {
  3. }

在angularjs 设置中注入翻译模块

  1. var myApp = angular.module('myApp', ['pascalprecht.translate'])
  2. .config(['$translateProvider',function($translateProvider){
  3. //读取存储中的语言设置,默认使用中文的json文件名
  4. var lang = window.localStorage['lang'] || 'zh-hans';
  5. $translateProvider
  6. .preferredLanguage(lang)
  7. .useStaticFilesLoader({
  8. prefix: 'app/i18n/', //读取json文件的地址
  9. suffix: '.json' //读取json文件的后缀
  10. })
  11. .useSanitizeValueStrategy('escape');//过滤掉翻译文本的XSS攻击
  12. }])

切换翻译文本

  1. localStorage.setItem('lang',str);

在LeapAI中由于还要切换后台返回的信息的语音,所以会在回调中执行:

  1. loginRequest.switchLang(str)
  2. .then(success=>{
  3. localStorage.setItem('lang',str);
  4. document.location.reload();
  5. },error=>notice.error(error));

在HTML中使用

  1. <div>{{ app | translate}}</div> //app值为'Edit' 最终显示: 编辑
  2. <div>{{ 'Edit' | translate}}</div>//最终显示: 编辑
  3. <div ng-bind="'Edit' | translate"></div>//最终显示: 编辑

在Javascript中使用

  1. //首先在控制器上引入$translate服务
  2. xxController($state, $translate,...){
  3. let str = $translate.instant("Edit");
  4. console.log(str);
  5. //控制台输出 编辑
  6. }

同英文不同中文含义的处理

比如No 在选择中是 的意思,在项目显示中是 的意思

那么我们可以通过使用其他标志来比较方便地解决这个问题

  1. //zh-hans.json
  2. {
  3. "Edit":"编辑",
  4. "No":"否",
  5. "No_dont_have":"无"
  6. }
  1. //en.json
  2. {
  3. "No_dont_have":"No"
  4. }

这时候 去翻译 No_dont_have, 在英文模式下显示的就是 No 在中文模式下显示
翻译 No , 在英文模式下现实的是No (无匹配返回原文),在中文模式下显示

常用的字段

  1. gettext
  2. 替换
  3. $translate.instant
  4. {{::'
  5. '|translate}}
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注