net2.0+xml实现多语言开发333

原创 2007年10月06日 20:28:00

 method :

1.Index.aspx

 <form id="form1" runat="server">
    <div>
        <asp:Label ID="lanuage" runat="server">Label</asp:Label>
        <asp:DropDownList ID="drp_language" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drp_language_SelectedIndexChanged"
            Width="152px">
        </asp:DropDownList>
        <asp:Button ID="btnLogon" runat="server" Text="Button" OnClick="btnLogon_Click" /></div>
    </form>

2.index.aspx.cs

public partial class index : System.Web.UI.Page
    {
        public static string strName;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                init();
            }

        }
        private void init()
        {
            drp_language.DataSource = TangramMiniWeb.ResourceManager.GetSupportedLanguages();
            drp_language.DataTextField = "name";
            drp_language.DataValueField = "key";
            drp_language.DataBind();

            if (drp_language.Items.Count > 0)
            {
                strName = drp_language.SelectedValue;
                ShowText(drp_language.Items[0].Value);
            }
        }
        private void ShowText(string userlanguage)
        {
            btnLogon.Text = TangramMiniWeb.ResourceManager.GetString("GO", userlanguage);
            //strName = btnLogon.Text = MultLanuage.ResourceManager.GetString("btnLogon", userlanguage);
            lanuage.Text = TangramMiniWeb.ResourceManager.GetString("lanuage", userlanguage);

        }
        protected void drp_language_SelectedIndexChanged(object sender, EventArgs e)
        {
            ShowText(drp_language.SelectedValue);
            strName = drp_language.SelectedValue;
        }
        protected void btnLogon_Click(object sender, EventArgs e)
        {
            Session["selectvalue"] = drp_language.SelectedValue.ToString();
            Response.Redirect("tan/Default.aspx");
        }
    }

3.基类的代码   ResourceManager.cs

public class ResourceManager
 {
  
  public ResourceManager()
  {
            //
   
  }
  public static string GetString(string name,string userLanguages)
  {
            //通过指定属性名返回包含此属性名相关信息的hash表
   Hashtable source=LoadSorce(userLanguages);
            if (source != null)
            {
                //不为空就返回其值
                return source[name].ToString();
            }
            else
            {
                //为空
                return "";
            }

  }
          //获取语言目录数据,返回一个数据视图
  public static DataView GetSupportedLanguages()
  {
   string cacheKey = "Languages"; 
         //判断当前数据缓存中是否为空
   if(HttpContext.Current.Cache[cacheKey]==null)
   {
                //获取xml文件存放的物理路径
    string PathFile=System.Web.HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath+"/Languages/languages.xml");
    DataSet objDataSet=new DataSet();
                //
    objDataSet.ReadXml(PathFile);
    CacheDependency dp = new CacheDependency(PathFile);
    HttpContext.Current.Cache.Insert(cacheKey,objDataSet.Tables[0].DefaultView,dp,DateTime.MaxValue, TimeSpan.Zero);
             }
    return (DataView)HttpContext.Current.Cache[cacheKey];

         }
  //获取语言语句字典

  public  static Hashtable LoadSorce(string userLanguages)
  {
            //获取xml文件存放的物理路径
   string PathFile=System.Web.HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath+"/Languages/"+userLanguages+"/Resources.xml");
   //建一个XML DOCUMENT的实例对象
            System.Xml.XmlDocument LagXml=new XmlDocument();
            //导入要操作的XML文件
   LagXml.Load(PathFile);
            //
   Hashtable supportedLanguages;
            //建立HASHTABLE的对象实例
   supportedLanguages = new Hashtable();
   //遍历XML文件中的所有子节点
   foreach (XmlNode n in LagXml.SelectSingleNode("root").ChildNodes)
   {
    if (n.NodeType != XmlNodeType.Comment)
    {
                    //把子节点的键/值对添加到hashtable中
     supportedLanguages.Add(n.Attributes["name"].Value,n.InnerText);
    }

   }
            //返回hashtable
   return  supportedLanguages;
   
   
  }
 }

4.配制web.config

<!--  全球化
          此节设置应用程序的全球化设置。
    -->
  <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
  <xhtmlConformance mode="Legacy"/> 

5.global.asax

global.asax.cs

global.asax.resx

6.建立资源文件

建个文件夹为Languages

再建三个数据文件  en-us  resourcesEN-US.xml

                                 zh-cn    resourcesZH-CN.xml

                                zh-tw   resourcesZH-TW.xml

                                (share xml files)  Language.xml 

 

 

这个小测试是成功的。 
我现在要把全站都用中文和英文业显示,那方法为 
就拿一个about.aspx这个网页来说吧,我说我的个人方法 
先作完about.aspx的中文页面,然后调用我那个语言的基类,再写这个about.aspx的XML的2种语言的XML的文件吗。  

最后每一个页面都要这样完成.

yaqi

                                                                                                                                     

 

 

相关文章推荐

在ASP.Net 2.0中实现多语言界面的方法

      1. 跟以前一样做界面,只是注意,把所有需要有多语言界面的文字都用label来做  2. 做完以后,在Solution Explorer里选中这个文件,选Tools->Generate L...

跟我一起学如何在ASP.net 2.0中实现多语言支持

1. 引言     对于支持多语言的网站,用户可以动态选择网站所显示的语言。本文介绍如何在ASP 2.0(C#)上利用GlobalResource实现多语言支持,习惯用VB的朋友们可以做个参考。 ...
  • donhao
  • donhao
  • 2011年09月23日 10:59
  • 913

ASP.NET2.0支持多语言示例源码

ASP.NET2.0支持多语言示例源码 例子中可以实现中英文双语,其他的可以自己扩展 1.使用工具自动生成本地化资源(LocalResources) 2.原来Localizable Attribute...

asp.net开发中,web页面实现页面元素的多语言化(多国语化)

开发的一些系统,经常要求支持多语言(例如日文,英文等),以前大部分做法是创建一个资源文件, 将每一个标签,按钮等标题文字预先用各种语言设定保存好, 在程序中根据选择的语言来显示对应文字。 这样做...

asp.net多语言xml解决方案

利用xml文件来存储多语言的文本资源,在网站运行的时候根据语言来获取相对应的资源。 xml文件示例: 中文 English cn ...

Asp.net多语言处理(数据库,XML,资源文件等)

项目中用到多语言的时候最先想到的就是资源文件了,但是这个在开发的时候实在是不方便(反正我是这么觉得的)。 在写代码的同时还要去建资源文件,还要在资源文件中填入内容,当有的翻译不合理修改也是个麻烦事,...

ASP.NET2.0支持多语言示例源码

  • 2007年07月11日 15:13
  • 15KB
  • 下载

在ASP.Net 2.0中实现多语言界面的方法及多语言区域代码对应表

在ASP.Net 2.0中实现多语言界面的方法及多语言区域代码对应表
  • zztfj
  • zztfj
  • 2011年04月21日 17:48
  • 1900

ASP.NET2.0支持多语言示例源码

  • 2015年12月08日 10:53
  • 16KB
  • 下载

C#的Winform多语言实现(XML文件)

  • 2017年01月07日 19:23
  • 77KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:net2.0+xml实现多语言开发333
举报原因:
原因补充:

(最多只允许输入30个字)