i18nHelper.js
3 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/**
* 国际化帮助脚本,主要步骤
* 1、禁用JqueryEasy 的自动初始化功能
* 2、首先同步加载语言包
* 3、加载语言成功后,在回调里,根据当前的语言设置加载EasyUI的脚本。
* 然后再调用其它初始化脚本
*/
/**
* 加载语言设置
*/
function loadLanguage(callback, messages) {
var i18nOptions = {
name: "lang",
path: "i18n/",
mode: "both",
async: false,
cache: true,
debug: true,
checkAvailableLanguages: true,
callback: function() {
parseMessageAndPage(messages);
if (callback instanceof Function) {
callback();
}
}
};
$.i18n.properties(i18nOptions);
// 解析页面的所有i18n项,获取"data-i18n-for-attribute"项指定的要设置的属性名称,
// 分别设置每个属性的值,如果没有设置该项,默认设置元素的text
function parseMessageAndPage(messages) {
// 解析变量
if (messages) {
for (var key in messages) {
if (messages.hasOwnProperty(key)) {
var target = messages[key];
if (typeof target === "function") {
var keyString = key;
messages[key] = function() {
var args = [keyString];
for (var i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
console.log(args);
return $.i18n.prop.apply($.i18n, args);
};
} else if (typeof target === "string") {
messages[key] = $.i18n.prop(key);
}
}
}
console.log(messages);
}
// 解析标签
$(".i18n-item").each(function(index, element) {
var i18nKey = this.getAttribute("data-i18n-key");
var i18nValue = $.i18n.prop(i18nKey);
// 根据元素的配置项,来替换文本
var attributes = this.getAttribute("data-i18n-for-attribute");
if (attributes && attributes.length > 0) {
var attributeArray = attributes.split(",");
for (var i = 0; i < attributeArray.length; i++) {
$(this).attr(attributeArray[i], i18nValue);
}
} else {
$(this).text(i18nValue);
}
});
}
}
/**
* 根据当前的语言设置加载EasyUI组件及相应的组件
* @param {any} modules 组件名数组
* @param {any} callback 加载完成后的回调
*/
function loadEasyuiModules(modules, callback) {
// easyloader.base = basePath;
easyloader.locale = $.i18n.normaliseLanguageCode();
easyloader.css = false;
easyloader.load(modules, function() {
if (callback instanceof Function) {
callback();
}
});
}