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

 

 

 

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

我个人觉得这个是比较重要的,所以想写清楚点,自己也一直在研究用xml实现!但是还没投入实践,技术有限,我也才刚进入社会的学生而已!!等做出来再写篇blog和大家分享不过本人也是菜鸟,所以有什么地方写错...
  • lanlan520
  • lanlan520
  • 2007年07月27日 14:13
  • 5135

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

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

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

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

使用VB6资源文件开发多国语言应用攻略

使用VB6资源文件开发多国语言应用
  • fulcrumtech
  • fulcrumtech
  • 2016年06月17日 12:12
  • 650

.Net 多语言 与资源文件

目前很多网站都支持多语言,特别是中英文。而.Net网站中的多语言就要用到资源文件。资源文件分为全局资源文件(App_GlobalResource)以及本地资源文件(App_LocalResource)...
  • dong5151
  • dong5151
  • 2016年04月06日 22:13
  • 3519

C# 多语言资源文件的访问

这两天一直研究关于duoyuyan资源的处理
  • courageously
  • courageously
  • 2014年06月20日 09:23
  • 2172

C#学习笔记17——多语言

C#实现多语言方法有很多种。这里只介绍两种,一种是修改对应每种语言的资源文件;另外一种是通过XML自动加载某语言的xml文件,同时动态读取对应的自动值并显示。 一、修改资源文件1、要在项目稳定以后,再...
  • byxdaz
  • byxdaz
  • 2011年09月01日 23:17
  • 5338

用c# 创建支持多语言的应用程序 资源文件 resx

原文地址: http://blog.csdn.net/antswallow/article/details/2150318   互联网无国界,越来越多的应用程序必须面对全球用户了,如何设计一个...
  • xiuping05214
  • xiuping05214
  • 2014年04月09日 23:04
  • 521

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

如图,将Form的Localizable设为True,然后选择需要的Language比如英语 这时更改窗体控件的文本,Form下会出现.en-GB.resx资源文件,再更改Form的La...
  • m0_38110784
  • m0_38110784
  • 2017年04月05日 17:08
  • 477

ASP.NET MVC资源文件多语言实现方式

1、项目结构 2、代码 using System; using System.Collections.Generic; using System.Linq; using S...
  • lxrj2008
  • lxrj2008
  • 2017年07月01日 12:17
  • 546
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:net2.0的资源文件实现多语言开发! 2222
举报原因:
原因补充:

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