i18n.js /** * Created by don on 2016/10/20. * 同级目录下创建 language-package 文件夹,其下存放各种语言对应的配置文件 */;(function (translator, getPath) { var type = navigator.appName; if (type == "Netscape") { var
/**
* Created by don on 2016/10/20.
* 同级目录下创建 language-package 文件夹,其下存放各种语言对应的配置文件
*/
;(function (translator, getPath) {
var type = navigator.appName;
if (type == "Netscape") {
var lang = navigator.language;
}
else {
var lang = navigator.userLanguage;
}
//取得浏览器语言的前两个字母
var lang = lang.substr(0, 2);
var file_name = "language-package/";
// var languageJson = {};
switch (lang){
case 'en':
file_name += "en.json";
break;
case 'zh':
file_name += "zh.json";
break;
default:
file_name += "en.json";
break;
}
// 根据当前文件的路径获取到绝对路径,进而得到语言配置文件
$.ajax(getPath("i18n.js") + file_name, {async : false, dataType: "json"})
.done(function (languageJson) {
window.i18n = translator(languageJson);
window.i18n.language = lang;
window.i18n.translate();
});
})(
/**
* 翻译
* @param languageJson 配置文件内容,json格式
*/
function translator(languageJson){
// 执行指定域(domain)范围内的翻译
var trans = function (domain) {
$(domain || document.body).find("[i18n]").each(function(){
var $this = $(this);
var type = $this.attr("i18n-type") || "html";
var key = $this.attr("i18n");
var value = languageJson[key];
if(!value)
return;
switch (type){
case 'html':
$this.html(value);
break;
default:
$this.attr(type, value);
break;
}
});
};
// 获取指定key的配置项
var getValue = function(key){
return languageJson[key] || "";
};
return {
getValue: getValue,
translate: trans
}
},
/**
* 获取页面引用的指定js的地址
*
*/
function getPath(jsName) {
var js = document.scripts;
var jsPath;
for (var i = js.length; i > 0; i--) {
if (js[i - 1].src.indexOf(jsName) > -1) {
jsPath = js[i - 1].src.substring(0, js[i - 1].src.lastIndexOf("/") + 1);
}
}
return jsPath;
}
);
