1、目的
利用资源文件解决网站多语言版本的问题,在制作网站的时候,经常会遇到多种语言的版本,早期在asp的系统当中,很多网站开发师都会用传统的方法来开发,就是将同一套程序复制两份,功能是实现了,但往往后期的维护带来很大的麻烦,而在asp.net的时代,做这样的事情,原来是那么的简单.
2、概念
资源文件是 XML 文件,其中包含要转换为不同语言或图像路径的字符串。资源文件包含键/值对,每一对都是一个单独的资源。键名不区分大小写。例如,资源文件可能包含带有 Button1 键和 Submit 值的资源。
多语言是每种语言(如英语和法语)或每种语言和区域性(如英语 [英国]、英语 [美国])分别创建一个资源文件。每个本地化资源文件都有相同的键/值对;本地化资源文件与默认资源文件的唯一区别就是前者所包含的资源可能少于后者。然后,语言回退处理非特定资源或默认资源的加载。
ASP.NET 中的资源文件具有 .resx 扩展名。在运行时,.resx 文件将编译进一个程序集内,该程序集有时称为附属程序集。由于 .resx 文件是用与 ASP.NET 网页相同的方式动态编译的,因此不必创建资源程序集。编译过程将多个语言类似的资源文件压缩在同一程序集内。
在创建资源文件时,首先开始创建基文件 .resx。对于要支持的每种语言,分别创建一个新文件,该文件具有同一基本文件名但包含语言或语言及区域性(区域性名称)。有关区域性名称的列表,请参见 CultureInfo。例如,您可以创建下列文件:
WebResources.resx
基资源文件。该文件是默认或后备资源文件。
WebResources.es.resx
西班牙语的资源文件。
WebResources.es-mx.resx
专用于西班牙语(墨西哥)的资源文件。
WebResources.de.resx
德语的资源文件。
在运行时,ASP.NET 使用与 CurrentUICulture 属性的设置最为匹配的资源文件。线程的 UI 区域性根据页的 UI 区域性进行设置。例如,如果当前的 UI 区域性是西班牙语,则 ASP.NET 使用 WebResources.es.resx 文件的已编译版本。如果当前的 UI 区域性没有匹配项,则 ASP.NET 会使用资源后备;首先用特定区域性的资源,接着用非特定区域性,最后用默认资源文件。在本例中,默认资源文件是 WebResource.resx。
二、解决方案
1、全局资源文件(App_GlobalResources)
将资源文件放入应用程序根目录的保留文件夹 App_GlobalResources 中,即可创建全局资源文件。App_GlobalResources 文件夹中的任何 .resx 文件都具有全局范围。此外,ASP.NET 还生成了一个强类型对象,这为开发人员提供了一种以编程方式访问全局资源的简单方法。
2、本地资源文件(App_LocalResources)
本地资源文件是只应用于一个 ASP.NET 页的文件(带有 .aspx、.ascx、.master 等扩展名的 ASP.NET 页)。本地资源文件所放入的文件夹具有 App_LocalResources 保留名称。App_LocalResources 文件夹可以存在于应用程序的任何文件夹中,这与 App_GlobalResources 根文件夹不同。通过资源文件名将一组资源文件与特定的网页相关联。
例如,如果在 App_LocalResources 文件夹中有一个名为 Default.aspx 的页,则可以创建下列文件:
Default.aspx.resx
默认的本地资源文件,如果找不到语言匹配项,则该文件为后备资源文件。
Default.aspx.es.resx
西班牙语的资源文件,不包含区域性信息。
Default.aspx.es-mx.resx
专用于西班牙语(墨西哥)的资源文件。
Default.aspx.fr.resx
法语的资源文件,不包含区域性信息。
3、使用本地资源的隐式本地化
在服务器控件引用如:
在相应的资源文件定义:Button1.Text
4、显式本地化
页面引用如
资源文件定义:Button1Caption
当正在运行某页并且 ASP.NET 正在从资源管理器中检索值时,ASP.NET 为该页选择与当前 UICulture 设置匹配程度最高的资源文件版本,或者使用资源后备获取资源。例如,如果正在运行 Default.aspx 页并且当前的 UICulture 属性设置为 es(西班牙语),则 ASP.NET 使用本地资源文件 Default.aspx.es.resx 的已编译版本。
ASP.NET 可以将该页的 UICulture 和 Culture 属性设置为浏览器所传递的语言和区域性值。或者,可以以声明方式或通过使用代码显式设置 UICulture 和 Culture 属性。还可以在 Web.config 文件中以声明方式设置这些值。有关详细信息,请参见如何:为 ASP.NET 网页全球化设置区域性和 UI 区域性。
以是网页内容来自微软官方网站,本人做了整理,地址(http://msdn2.microsoft.com/zh-cn/library/ms227427(VS.80).aspx)
本人上传一个实例,希望能帮到大家.link