当我们开发ASP.NET应用程序时,使用多语言资源文件是一种良好的实践。本文将为你介绍ASP.NET应用程序中资源文件的用法。
资源文件的定义和分类
资源文件是什么?
资源文件(Resource File)是指保存一个或多个文本字符串、图像、音频或其他类型数据的文本文件。 .NET Framework 提供了一种能够以有组织的方式存储、访问和管理资源的方式,称之为资源管理器。 我们可以把表情、提示信息、页面标题文字、客户端脚本等放到资源文件中,即使应用程序需要支持多语言,也能方便的进行管理。
资源文件的分类
ASP.NET 支持内嵌资源文件、本地化资源文件和全局化资源文件三种类型的资源。三种资源处理方式的主要区别在于:
- 内嵌资源文件 .resx 文件是嵌入在程序集中的,且只能包含默认语言的内容。
- 本地化资源文件 .resx.resxx 文件包含应用程序中某个语言的翻译版本。
- 全局化资源文件 和本地化同义。.resx.resx.resx 文件包含多个附属语言翻译版本,程序会使用相关的本地化文件动态加载资源。例如页面使用代码和控件分别采用英文和中文实现的,使用全局化即便默认语言为英语,也可以设定使用本地化数据。
ASP.NET资源文件的命名规则是:文件名.语言.后缀名.resx。其中,语言部分采用 ISO 639-1 代码标准:
- zh-CN: 中文(简体中文)
- zh-HK: 中文(香港)
- zh-TW: 中文(台湾地区)
- en-US: 美国英文
- en-GB: 英国英文
等等
使用资源文件
我们可以使用代码,通过HttpContext.GetGlobalResourceObject和HttpContext.GetLocalResourceObject方法来获得资源文件中的内容。以下是一个简单的示例:
// 获取全局资源文件
string title = HttpContext.GetGlobalResourceObject("Resource", "Title").ToString();
// 获取本地化资源文件
string keyword = HttpContext.GetLocalResourceObject("~/Default.aspx", "Keyword").ToString();
在这个例子中,假设我们有两个资源文件 "Resource.en-US.resx" 和 "Default.en-US.resx",分别存储全局资源和本地化资源。这两个资源定义都包含同名的"Title" 和 "Keyword" 的字符串。
需要注意的是,上面的资源文件名字是在项目检查文件是否在合适目录中并且文件名/语言顺序对应恰当时才会读取到的,而资源文件的生成顺序也是如果本地化资源文件中缺少资源,那么 ASP.NET 会自动地从全局资源文件中获取相应的值。
创建资源文件和资源键
我们可以通过 Visual Studio 工具来创建ASP.NET应用程序的资源文件,方法是右键单击应用程序项目,然后选择 "添加" -> "资源文件"。我们需要为项目的每种语言创建一个单独的资源文件。
在资源文件中包含一个或多个名称/值对,这些名称/值对被称为资源键,值可以包括任何字符串或对象类型,例如字串字符串、位图图片等等。有了资源文件和资源键,我们就可以在应用程序中很容易地引用一个资源了。
以下是一个 "Resource.resx" 文件的示例代码:
//Resouce.resx
<data name="Title" xml:space="preserve">
<value>My Title</value>
<comment>Web Site Title</comment>
</data>
<data name="Welcome" xml:space="preserve">
<value>Welcome to my web site.</value>
<comment>Welcome Message</comment>
</data>
因为这是一个全局资源文件,所以我们可以从任何页面中访问这些资源,方法是在代码中调用HttpContext.GetGlobalResourceObject 方法。
string title = HttpContext.GetGlobalResourceObject("Resource", "Title").ToString();
string welcome = HttpContext.GetGlobalResourceObject("Resource", "Welcome").ToString();
我们也可以使用本地化资源文件来存储特定语言的资源。 接下来,我们将在 "Default.aspx" 页面中创建一个本地化资源文件 "Default.aspx.resx",使用 "zh-CN" 作为语言网格,则文件名为 "Default.aspx.zh-CN.resx"。
<data name="Keyword" xml:space="preserve">
<value>ASP.NET</value>
<comment>Keywords for SEO</comment>
</data>
我们可以使用HttpContext.GetLocalResourceObject方法来检索本地化资源文件中的资源。
string keyword = HttpContext.GetLocalResourceObject("~/Default.aspx", "Keyword").ToString();
以上是本文的 ASP.NET 中资源文件的使用攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net中资源文件的使用 - Python技术站