angular-translate进行项目国际化

  1. 安装插件
1
2
bower install angular-translate 
bower install angular-translate-loader-static-files
  1. 直接引入(二选一)
    1
    2
    <script src="editor-app/libs/angular-translate_2.4.2/angular-translate.min.js"></script>
    <script src="editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js"></script>

注: angular-translate-loader-static-files.min.js用来读取本地多语言文件。

  1. 添加翻译文本
1
在项目中建立/i18/文件夹,然后在该文件夹中添加对应的json文件(en-us.json/ch-cn.json)

4.注入依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var myApp = angular.module('myApp', [
'pascalprecht.translate']);

myApp.config(['$translateProvider', function ( $translateProvider) {

// 从cookie里获取 lang
function getCookie(name){
var strcookie = document.cookie;//获取cookie字符串
var arrcookie = strcookie.split("; ");//分割
for ( var i = 0; i < arrcookie.length; i++) {
var arr = arrcookie[i].split("=");
if (arr[0] == name){
return arr[1];
}
}
return "";
}

var lang = getCookie('language');

$translateProvider.useStaticFilesLoader({
prefix: '/i18n/',
suffix: '.json'
});
// 加载本地多语言配置文件
$translateProvider.useStaticFilesLoader({
prefix: './i18n/',
suffix: '.json'
});

$translateProvider.preferredLanguage(lang);
  1. 创建过滤器做html内容国际化
1
2
3
4
5
6
7
.filter('translate', ['$translate', function ($translate) {
return function (key) {
if (key) {
return $translate.instant(key);
}
}
}])
1
2
3
4
5
6
<div 
class="Or-button"
id="delete-button"
title="{{'BUTTON.DELETE.TOOLTIP' | translate}}"
ng-click="deleteTooltip()"
/>
  1. javascript 脚本中使用国际化
1
$translate.instant("TOOLBAR.DESIGN.MODULE")