js及后台代码多语言处理

1.js

/*!
 * js 帮助工具,主要是对一些常用方法的第二次封装
 * Create Date: 2015-06-16 22:57
*/

Date.prototype.Format = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1,
        "d+": this.getDate(),
        "h+": this.getHours(),
        "m+": this.getMinutes(),
        "s+": this.getSeconds(),
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度   
        "S": this.getMilliseconds()//毫秒   
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

var lan = {
    languageFileFolder: "languages",
    languageFile: "lan",
    languageCode: "en-us",
    defaultControllerName: "Home"
}

$.ajax({
    type: "post",
    contentType: "application/json",
    url: "/WS/WSCommon.asmx/GetLanguageInfo",//这里通过设置url属性来获取xml
    dataType: "json",
    async: false,
    //timeout: 1000,      //设定超时
    cache: false,       //禁用缓存
    success: function (data) {//这里是解析xml
        data = $.parseJSON(data.d);
        lan.languageCode = data.languageCode;
        lan.languageFile = data.languageFile;
        lan.languageFileFolder = data.languageFileFolder;
        lan.defaultControllerName = data.defaultControllerName;
    },
    error: function (x, e) {
        alert(x.responseText);
    }
});


var jsHelper = {};
jsHelper.getControllerName = function () {
    var controllerName = window.location.pathname.substr(1);
    if (controllerName == "")
        return defualtControllerName;
    else if (controllerName.indexOf("/") != -1) {
        controllerName = controllerName.substr(0, controllerName.indexOf("/"));
        return controllerName;
    }
    return controllerName;
}
var itemTextArray = new Array();
var currentResourceFileName = undefined;

//jsHelper.getLanguageItemText = function (itemCode, resourceFileFlag) {
//    var lanFile = undefined;
//    var itemValue = "";
//    var currentResourceFileName = undefined;
//    if (resourceFileFlag == undefined) {
//        lanFile = lan.languageFile;
//        lanFile += "." + lan.languageCode;
//        lanFile += ".xml";
//        lanFile = "/" + lan.languageFileFolder + "/" + lanFile
//    }
//    else {
//        currentResourceFileName = jsHelper.getControllerName();
//        lanFile = currentResourceFileName + "Controller." + lan.languageCode + ".xml";
//        lanFile = "/" + lan.languageFileFolder + "/" + lanFile;
//    }
//    if (currentResourceFileName != lanFile) {
//        currentResourceFileName = lanFile;
//        $.ajax({
//            type: "get",
//            url: lanFile,//这里通过设置url属性来获取xml
//            dataType: "xml",
//            async: false,
//            //timeout: 1000,      //设定超时
//            cache: false,       //禁用缓存
//            success: function (xml) {//这里是解析xml
//                $(xml).find("item").each(function (index, item) {
//                    var code = $(this).attr("code");
//                    if (code != undefined) {
//                        var itemText = $(this).text();
//                        itemTextArray[index] = { "code": code, "text": itemText };
//                        if (code == itemCode) {
//                            itemValue = itemText;
//                        }
//                    }
//                });
//            },
//            error: function (x, e) {
//                alert(x.responseText);
//            }
//        });
//    }
//    $.each(itemTextArray, function (index, item) {
//        if (item.code == itemCode) {
//            itemValue = item.text;
//            return false;
//        }
//    });
//    return itemValue;
//};

jsHelper.getLanguageItemText = function (itemCode, resourceFile) {
    var lanFile = undefined;
    var itemValue = itemCode;
    if (resourceFile == undefined) {
        lanFile = lan.languageFile;
        lanFile += "." + lan.languageCode;
        lanFile += ".xml";
        lanFile = "/" + lan.languageFileFolder + "/" + lanFile
    }
    else {
        if (resourceFile.indexOf(".") == -1)
            lanFile = resourceFile
        else
            lanFile = resourceFile.substring(0, resourceFile.lastIndexOf("."));

        lanFile = lanFile + "." + lan.languageCode + ".xml";
        lanFile = "/" + lan.languageFileFolder + "/" + lanFile;
    }
    if (currentResourceFileName != lanFile) {
        itemTextArray.length = 0;
        currentResourceFileName = lanFile;
        $.ajax({
            type: "get",
            url: lanFile,//这里通过设置url属性来获取xml
            dataType: "xml",
            async: false,
            //timeout: 1000,      //设定超时
            cache: false,       //禁用缓存
            success: function (xml) {//这里是解析xml
                $(xml).find("item").each(function (index, item) {
                    var code = $(this).attr("code");
                    if (code != undefined) {
                        var itemText = $(this).text();
                        itemTextArray[index] = { "code": code, "text": itemText };
                    }
                });
            },
            error: function (x, e) {
                itemTextArray.length = 0;
                if (x.status != "404")
                    alert(x.responseText);
            }
        });
    }
    $.each(itemTextArray, function (index, item) {
        if (item.code == itemCode) {
            itemValue = item.text;
            return false;
        }
    });
    return itemValue;
};

2.WSCommon

  /// <summary>
    /// WebService1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
    [System.Web.Script.Services.ScriptService]
    public class WSCommon : System.Web.Services.WebService
    {
        [WebMethod(EnableSession =true)]
        public void SetLanguageCode(string languageCode)
        {
            Session["languageCode"] = languageCode;
        }

        [WebMethod(EnableSession =true)]
        public string GetLanguageInfo()
        {
            var languageFile = ConfigurationManager.AppSettings["languageFile"];
            if (string.IsNullOrEmpty(languageFile) == true)
                languageFile = "lan.xml";
            languageFile = Path.GetFileNameWithoutExtension(languageFile);
            return "{" + string.Format("\"languageFileFolder\":\"{0}\",\"languageCode\":\"{1}\",\"languageFile\":\"{2}\",\"defaultControllerName\":\"{3}\"", ConfigurationManager.AppSettings["languageFolder"], Session["languageCode"]?? ConfigurationManager.AppSettings["languageCode"], languageFile, ConfigurationManager.AppSettings["defaultControllerName"]) + "}";
        }

        [WebMethod(EnableSession = true)]
        public List<SYS_DICT> GetSystemLanguages()
        {
            try
            {
                return IOC.Resolve<ISYS_DICTService>().GetMany(lan => lan.dtype == "Language").OrderBy(lan => lan.dictSeq).ToList();
            }
            catch {
                return null;
            }
        }
    }

3.js中使用

 $.alert("mC003:" + jsHelper.getLanguageItemText("mC003"));
 

猜你喜欢

转载自blog.csdn.net/qiji2011/article/details/81271224
今日推荐