Let the storm money come!

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

 

posted @ 2013-11-15 16:13  精密~顽石  阅读(9342)  评论(0编辑  收藏  举报
在通往地狱的路上,加班能使你更快到达。