C#中如何使用资源文件
2009-06-29 09:53
519 查看
2008-10-31 17:14
摘要:随着计算机网络的发展,一些商业机构也开始向国际市场迈进。因此这些商业的机构的网站也开始面向全世界的用户,要求网站具有多语言的选择,实现本地化。在.NET1.1框架下面,如果你要实现本地化,你可能要借助某些插件,甚至要编写一连串的代码;但是在.NET2.0框架底下,你会发现一切原来是那么的简单~~! 主要内容: 1. 简单例子 2. 进一步认识Localization 3. 语言转换 4. 解决方案 一. 简单例子 下面通过一个简单的例子来说明利用Localization来实现本地化是那么的简单,首先我们打开Visual Studio 2005,新建一个名叫Localization的工程(名字就无关紧要了,随你喜欢~~),如下所示: 然后我们在Default.aspx这张页面上放一些控件,例如我们在页面上放一个按钮,一个标签一个文本框,添加完之后的页面就好像下面的一样: 接下来的一步主要是负责生成本地资源,我们点击“工具->生成本地资源(R)”, 于是我们的项目中多了一个文件夹App_LocalResources,里面包含一个文件Default.aspx.resx,而这个文件就是用来编辑保存我们想要显示的一些文字资源, 例如我们为我们添加的控件输入以下信息: 在完成以上步骤之后,我们就可以看到效果了。 在以上的步骤中,我们没有手工编写任何代码,而由.NET2.0自动实现绑定过程。而页面跟以往的不同就是HTML代码发生了变化: 再运行一次我们的项目,你会发现简单的本地化已经实现, 至此,通过一个简单的例子,我们已经初步认识了.NET2.0是如何实现利用Localization来实现本地化的。但是如果我们要构建一个优秀的国际化网站或软件,我们需要对Localization做进一步的认识。 二. 进一步认识Localization 到了这里,你会发现上述的页面中是每一个页面对应一些属于自己的资源文件,如果我们要求多张页面或者全部页面都要用同一个资源文件的时候,该怎么做呢?很简单,我们可以在项目中添加一个文件夹,名叫App_GlobalResources,这是系统默认的存放全局资源的目录。例如我们在全局目录中添加两个文件,分别是global.resx和global.en-us.resx, 然后我们分别在里面输入一些对应的key/value值,至于怎么应用我们的全局资源绑定到页面中,我们有两种方法: 一种是在HTML代码里面进行绑定,表达式是 <%$ resources: [applicationkey], resourcekey, [default] %>,例如我们在Default.aspx多放一个按钮,其HTML代码为: 转自:Kenneth Poon 技术空间--专注于 .NET 技术 <asp:Button ID="Button2" runat="server" Text="<%$ resources: global, String1 %> 于是我们会得到以下的效果,可以看出资源已绑定到控件上。 另一种方式则是在程序代码进行绑定,由于.NET2.0框架会将全局资源文件编译成一个类,也就是说我们刚才创建的global.resx文件将被编译成一个类global,而资源文件里面的所有key将成为类的属性,以供在程序里进行访问。例如我们可以在程序里这样写: this.Button2.Text = Resources.global.String1; 大家等会可以下载附件尝试一下,看看效果是否一样~~~~ 另外,资源文件除了可以存放一些字符串之外,还可以存放图片,声频,文件等等, 例如我们在资源文件中添加一些图片资源,你可以将图片设置为在编译时链接或者嵌入到资源文件, 而在程序代码里面,我们得到的将是System.Drawing.Bitmap类型的变量,至于添加其他类型的文件,得到的是什么,这里不多说了,大家自己探讨一下吧。 <% @ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> </head> <body> <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> </form> </body> </html> 除了Page里面增加了Culture="auto" meta:resourcekey="PageResource1" UICulture="auto"等属性设置外,我们添加的控件也相应的多了meta:resourcekey这个属性,而.NET2.0就是根据这些属性来进行语言绑定。 在上述的简单项目中,我们只提供了一种语言,还没达到本地化的要求,于是我们向App_localresources这个目录手工增加一个资源文件Default.aspx.en-us.resx文件(其中英文[美国]的语言代码是"en-us"),我们向里面添加一些key/value对,如下所示: 然后我们去修改IE的Internet选项的语言,添加“英文(美国)[en-us]”,并且把它移动到最上面:
|
相关文章推荐
- 如何在C#中使用内嵌资源文件
- 如何在C#中使用内嵌资源文件
- 如何在C#中使用内嵌资源文件(转载学习)
- 如何在C#中使用内嵌资源文件
- 如何在C#中使用内嵌资源文件(转载学习)
- 如何在C#中使用内嵌资源文件
- 如何在C#中使用内嵌资源文件(转载学习)
- 如何在C#中使用内嵌资源文件
- C#中如何使用资源文件 Web
- 如何在C#中使用内嵌资源文件
- 如何在C#中使用内嵌资源文件
- 如何在C#中使用内嵌资源文件
- C#资源文件和C#枚举如何结合使用?
- C#使用资源文件的方法
- 程序中如何删除MO中当前正在使用的SHP文件(C#,MO2.4)
- C#使用SevenZipSharp库时如何去掉压缩文件中的目录文件夹
- 如何在.Net 中使用资源文件?
- C# 资源文件的使用
- [C#]如何将类放置于不同的文件中在同一个解决方案中调用?(不同解决方案的需要使用类库ClassLibrary)
- C# 使用资源文件 Resource.resx 的方法