i18n.js
2.79 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
;!window["xnI18n"]&&(function (global) {
var prompts={};
/**
* 获取当前要显示的语言
*/
var getLanguage = function () {
// 优先从URL中获取语言配置
var lang = getUrlParam("lang");
if(!lang) {
// 如果URL中不存在语言信息,从Cookie中获取语言
lang = getCookie("FOREIGN_LANGUAGE");
}
if(!lang) {
// 如果Cookie中也不存在语言信息,获取非IE浏览器默认的语言设置
lang = navigator.language;
if(!lang) {
// 获取IE浏览器中的语言
lang = navigator.browserLanguage;
}
}
if(!lang) {
lang = "ZH_CN";
} else {
lang = lang.replace("-", "_").toUpperCase();
}
setLanguage(lang);
return lang;
};
/**
* 设置当前语言
* @param language 语言
*/
var setLanguage = function (language) {
setCookie("FOREIGN_LANGUAGE", language, 60*60*24*365);
};
/**
* 加载所有要显示的语言信息
*/
var loadData = function() {
var lang = getLanguage();
$.post("/lang/" + lang + ".json", function (data) {
prompts = data;
})
};
loadData();
/**
* 获取
* @param code
* @param params
*/
var get = function(code, params) {
var lang = getLanguage();
var message = prompts[code];
if(message == undefined || message == null) {
$.post("/lang/" + lang + ".json?code=" + code);
message = code;
} else {
if(params) {
$.each(params, function (key, value) {
message = message.replace("{"+key+"}",value);
})
}
}
return message;
};
var core={
get : get,
getLanguage : getLanguage,
setLanguage : setLanguage
};
global.xnI18n = core;
// 获取url中的参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]); return null; //返回参数值
}
// 获取Cookie的值
function getCookie(name) {
if (document.cookie.length>0) {
var c_start=document.cookie.indexOf(name + "=");
if (c_start!=-1) {
c_start=c_start + name.length+1;
var c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
}
// 设置Cookie的值
function setCookie(name, value, duration) {
var newDate=new Date();
var expires = "";
if(duration) {
newDate.setDate(newDate.getTime() + duration);
expires = ";expires=" + newDate.toGMTString();
}
document.cookie=name + "=" + escape(value) +";path=/;domain="+ window.location.host + expires;
}
})(window);