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