net2.0的资源文件实现多语言开发! 2222

原创 2007年10月06日 13:22:00

mfethod:

1.先作个 SElect Language.aspx

<form id="form1" runat="server">
    <div>
     
        <asp:Button ID="Button1" runat="server" meta:resourcekey="Button1Resource1" Text="Button" />
        <asp:TextBox ID="TextBox1" runat="server" meta:resourcekey="TextBox1Resource1"></asp:TextBox>
        <asp:Label ID="Label1" runat="server" meta:resourcekey="Label1Resource1" Text="Label"></asp:Label></div>
          <asp:Button ID="Button2" runat="server" Text="<%$resources: global, String1%>" OnClick="Button2_Click" />

    </form>

 

2.selectLanguage.aspx.cs:

public partial class SelectLanguage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Button2.Text = Resources.global.String1;
            }

        }

 

        protected void Button2_Click(object sender, EventArgs e)
        {
            if (Session["PreferredCulture"] == "en-us")
            {
                Session["PreferredCulture"] = "zh-cn";

            }
            else if(Session["PreferredCulture"]=="en-us")
            {
                Session["PreferredCulture"] = "en-us";
           
            }

            Response.Redirect(Request.Url.PathAndQuery);

        }
    
}

 

3.写基类ResourceManager.cs

 

public class ResourceManager
    {
        public ResourceManager()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        public static string GetString(string name, string userLanguages)
        {
            //通过指定属性名返回包含此属性名相关信息的hash表
            Hashtable source = LoadSource(userLanguages);

            //如果hash表不等于null就将其值返回
            if (source != null)
            {
                return source[name].ToString();
            }
            else
            {
                return "";
              
            }

           
          
        }

        //获取语言语句字典
        public static Hashtable LoadSource(string userLanguages)
        {
            //获取xml文件存放的物理路径
            string pathFile = System.Web.HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath + "/Languages/" + userLanguages + "/Resources.xml");

            //创建一个xmldatadocument对象
            System.Xml.XmlDataDocument lagXml = new XmlDataDocument();

            //加载其要操作的xml文件
            lagXml.Load(pathFile);

            //声明一个hash表
            Hashtable supportedLanguages;

            //创建hash表
            supportedLanguages = new Hashtable();

            //获取xml文件中root节点下的所有子节点
            foreach (XmlNode xn in lagXml.SelectSingleNode("root").ChildNodes)
            {
                //如果不是注释就将子节点属性值和节点文本以键/值对形式存放到hash表里
                if (xn.NodeType != XmlNodeType.Comment)
                {
                    supportedLanguages.Add(xn.Attributes["name"].Value, xn.InnerText);
                }
            }

           
            return supportedLanguages;
        }

 

    }

 

4.写配制Web.Config

<system.web>

  <anonymousIdentification enabled="true"/>
  <profile>
   <properties>
    <add name="LanguagePreference" type="string"  defaultValue="auto" allowAnonymous="true" />
   </properties>
  </profile>
    </system.web>

 

5.global.asax

<%@ Application Codebehind="Global.asax.cs" Inherits=" TangramMiniWeb.Global" %>

global.asax.cs

protected void Application_BeginRequest(Object sender, EventArgs e)
  {
            //CultureInfo类表示有关特定区域性的信息,提供信息的区域性特定对象的访问
            ultureInfo cultureInfo = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);
            //CurrentCulture属性用来获取或设置当前线程的区域性
            Thread.CurrentThread.CurrentCulture = cultureInfo;
            //CurrentUICulture属性用来获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源
            Thread.CurrentThread.CurrentUICulture = cultureInfo;
  }

 

6.建立页面的资源文件:

 global.resx

global.en-us.resx

selectlanguage.resx

selectlanguage.en-us.resx

7.其他页面的继承的东西

比如:ablut.aspx.cs

 public partial class tan_About :ResourceManager
    {
        public void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
               
               //
            }
          

        }
      
    }

 

 

最后就是作资源文件了:

 ablut..aspx.resx                                              // add chinese value

ablut.aspx.en-us.resx                                    //add english value

 

thank you

 

 

 

asp.net 资源文件 实现多语言

  • 2008年09月25日 16:27
  • 20KB
  • 下载

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

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

.Net 多语言 与资源文件

目前很多网站都支持多语言,特别是中英文。而.Net网站中的多语言就要用到资源文件。资源文件分为全局资源文件(App_GlobalResource)以及本地资源文件(App_LocalResource)...

利用资源文件实现窗体多语言

如图,将Form的Localizable设为True,然后选择需要的Language比如英语 这时更改窗体控件的文本,Form下会出现.en-GB.resx资源文件,再更改Form的La...

MFC - 资源文件实现多语言界面

这里介绍的方法是使用不同语言的资源文件达成多语言的效果。 多语言DLL   第一步:创建一个MFC的DLL     第二步:设置工程属性为Resource DLL,如果在 ...

c#使用资源文件实现多语言应用程序

实现多语言的方法可能有使用资源文件,或者配置xml两种方法吧。没时间研究过多,学习了一下使用资源文件的方法,成功了。在.net2.0 中,m$ 为我们提供了一种简单方便的方法, 使用资源文件。 ...

使用资源文件做多语言软件

  • 2010年01月19日 15:24
  • 17KB
  • 下载

资源文件(多语言)的管理

现在很多产品都有国际化或者说多语言的需求。及时产品现阶段不需要做多语言,但在产品设计上也大多会预留多语言的设计。 所谓多语言的设计也就是用资源文件的方式来编写程序代码。简单来说就是前端所有看的见的静态...
  • lackin
  • lackin
  • 2015年10月14日 17:46
  • 904

资源文件使用&多语言切换方法

1、使用资源文件前,初始控件方法   2、使用资源文件后,初始控件方法       语言切换方法:在Form的属性中,Localizable设为True,表示...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:net2.0的资源文件实现多语言开发! 2222
举报原因:
原因补充:

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