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);