.NET 双语(多语言、中英文)网站建设方法

来源:互联网 发布:php个人怎么接私活 编辑:程序博客网 时间:2024/05/16 08:23

其他参考资源:
http://apps.hi.baidu.com/share/detail/226875

http://hi.baidu.com/jiangbo_301/blog/item/9ec3b4244bc7fc0d4d088d3b.html

http://www.cnblogs.com/ceniy/articles/1007212.html

http://topic.csdn.net/u/20090920/16/ECF12395-4F9E-487B-9E4B-6FEA08FF8F38.html

转载地址:http://blog.csdn.net/kaigood/article/details/1780478
首先定义一个执行中英文转换的类

using System;using System.Reflection;using System.Resources;using System.Text;using System.Diagnostics;namespace CommonClass{    /// <summary>    /// ResourcesCollection 的摘要说明。    /// </summary>    public class ResourcesCollection    {        private ResourceManager resourceManager;        /// <summary>        /// Constructs an instance using the specified Assembly.         /// </summary>        /// <param name="assembly">The Assembly to be used.</param>        public ResourcesCollection(string defaultLanguage,Assembly assembly)        {            resourceManager = new ResourceManager(                assembly.GetName().Name + "." + defaultLanguage, assembly);        }        /// <summary>        /// 根据此属性从资源文件中读取信息        /// </summary>        public string this[string name]        {            get             {                return resourceManager.GetString(name);            }        }    }}

再定义一个Page的基类
using System;using System.Text;using System.Globalization;using System.Reflection;using System.Web;using System.Web.UI;using CommonClass;public class PageBase : System.Web.UI.Page{    protected static string strDefaultLanguage;    protected static ResourcesCollection resources;        /// <summary>    /// 重载 Oninit 方法    /// </summary>    /// <param name="e"></param>    protected override void OnInit(EventArgs e)    {        base.OnInit (e);                            // 根据不同的语言读取不同的资源文件。        resources = new ResourcesCollection(                GetDefaultLanguage(),Assembly.GetExecutingAssembly());        // 设置当前请求的原始Url        strRawUrl = GetRawUrl();        //检查页面的权限            //Common.CheckAuthority(this,Request);        }    /// <summary>    /// 定义一个属性用于页面调用资源文件 该属性是静态属性     /// </summary>    public static ResourcesCollection Resources    {        get        {            return resources;        }    }    /// <summary>    /// 判断默认语言。    /// </summary>    /// <returns></returns>    protected string GetDefaultLanguage()    {        //判断Session 中默认语言的设置。        if(Session["DEFAULTLANGUAGE"] != null)        {            strDefaultLanguage = Session["DEFAULTLANGUAGE"].ToString();        }        else        {            // 取得用户浏览器默认语言。            string strLanguage = Request.UserLanguages[0];            // 如果默认语言的前两个字符为“en”则为英语。            if(strLanguage.Substring(0, 2).Equals("en"))            {                strDefaultLanguage = "en";            }            else            {                // 如果前两个字符不为“en”则设置默认语言为中文。                strDefaultLanguage = "zh-cn";            }            // 将默认语言值写入Session 。            Session["DEFAULTLANGUAGE"] = strDefaultLanguage;        }        return strDefaultLanguage;        }}

然后在页面中 页面继承PageBase 类 请注意引用资源文件的方式

  // 引用资源文件
  lblTitle.Text = Resources["ModuleName27"];
  lblRoleNume.Text = Resources["RoleName"];
  lblRemark.Text = Resources["Remark"];
  btnAdd.Text = Resources["Add"];

注:省略了刚进系统时的用户自定义的资源文件引用的判断Session["DEFAULTLANGUAGE"],读者可自行加上


原创粉丝点击