JS 实现中英文翻译
缺点就是还是会闪出中文,但是效果还行。
var langPackage = { "主题":"Title", "下一页":"NextPage", "末页":"LastPage", "首页":" FirstPage ", "上一页":" PreviousPage ", "待办工作":"MyTasks", "中":"Middle", "每页":" EachPage ", "条":" Record ", "共":" Total ", "页":" Page ", "第":" Current ", "工作主题":" ProcTitle" };
执行遍历 DOM 的逻辑
/* 主调函数 在 Jquery的 .read方法里调用 ReplaceChildChs($(document)); 或者页面的最后调用 ReplaceChildChs($(document)); */ function ReplaceChildChs(nodeObj){ // if($("#hdfUseLang").val()=="CN")return; if (nodeObj.children().length > 0){ nodeObj.children().each(function(){ ReplaceChildChs($(this)); // if ($(this)[0].nodeName.toUpperCase() == "TD"){ FindChsAndReplaceIt($(this)); // } }); } else { FindChsAndReplaceIt(nodeObj); } } // 直接替换html 的一种设想,但总是报错 function JustReplaceChsDom(nodeObj){ var pat = new RegExp("[\u4e00-\u9fa5]+","g"); // 匹配中文的正则表达式 var str = $(nodeObj).html(); while((arr = pat.exec(str)) != null){ if (langPackage[arr[0]]){ str = str.replace(arr[0], langPackage[arr[0]]); } } $(nodeObj).html(str); } function FindChsAndReplaceIt(nodeObj){ var pat = new RegExp("[\u4e00-\u9fa5]+","g"); if ((nodeObj.text() || nodeObj.val() || nodeObj.attr("title")) && (pat.exec(nodeObj.text()) || pat.exec(nodeObj.val()) || pat.exec(nodeObj.attr("title")) )){ var str = "" if (nodeObj.text()){ str = nodeObj.text(); ReplaceValue(str, nodeObj, "text"); } if (nodeObj.val()){ str = nodeObj.val(); ReplaceValue(str, nodeObj, "val"); } if (nodeObj.attr("title")){ str = nodeObj.attr("title"); ReplaceValue(str, nodeObj, "title"); } } } function ReplaceValue(str, nodeObj, attrType){ var arr; var pat = new RegExp("[\u4e00-\u9fa5]+","g"); while((arr = pat.exec(str)) != null){ if (langPackage[arr[0]]){ str = str.replace(arr[0], langPackage[arr[0]]); if (attrType == "text"){ nodeObj.text(str); } else if (attrType == "val"){ nodeObj.val(str); } else if (attrType == "title"){ nodeObj.attr("title", str); } } } }
ReplaceChildChs($(document));
走向地狱的途中,不小心走了程序员这条路,路上一个个黑心的老板,和暗无天日的加班,我才发现,通往地狱的路径中,我们这行是最短的。