使用ASP.Net2.0国际化你的网站祥解

这个功能其实大家早就知道了,现在由于有一个项目要用到这个技术,所以又去全面一些的查找了一下。自己纪录一下,方便于以后查找使用吧。
        创建可有多种语言版本的 Web 应用程序在 ASP.NET 2.0 版以前是一项复杂的任务。如果您使用资源文件 (RESX) 及 ResourceManager,则需要手动分离出可本地化的元素,并执行自己的资源加载过程,这需要花费您很多的精力并需要编写大量的代码。ASP.NET 2.0 版大大简化了此过程,并且增加了很多功能,如:

  • 对客户端浏览器发送的接受语言 (Accept-Language) HTTP 请求标头字段进行自动检测
  • 使用声明性资源表达式将控件或其属性连接到资源
  • 通过程序访问资源及强类型资源
  • 自动编译 RESX 或 RESOURCE 文件并将其链接到运行库附属程序集
  • 对资源的创建提供进一步的设计时支持
  • 提供具有完全的扩展性的模型,以使 RESX 模型能够交换出来

        首先要在页面级别(<%@ Page UICulture="auto" Culture="auto" %>)或整个Portal级别(在Web.config中<globalization uiCulture="auto" culture="auto"/>)定义特定 UICultureCulture 属性。这两个属性的值均为 auto。这将指示 ASP.NET 基于客户端浏览器的首选区域性为页的执行检测并设置当前线程区域性和 UI 区域性。如果不为auto则可以为其指定具体的语言。

        如果需要从数据库中读取的信息作为选择语言的标准,需要对Thread.CurrentThread.CurrentCulture 和 Thread.CurrentThread.CurrentUICulture 进行更改,并且需要在 InitializeCulture() 方法中进行,因为对首选浏览器语言的自动检测是在页生存期的早期发生的。 
        可以通过后台代码或直接在页面上调用资源文件中的内容。
        有两种形式的资源表达式:显式和隐式。

资源表达式形式 说明
显式 <%$ Resources:[filename prefix,]resource-key %>

显式表达式用于以声明性语法定义控件属性的值,resource-key(必需)用于映射到资源中的值。filename prefix 参数是可选的,filename 指定全局资源文件夹中的资源文件的名称。

隐式 <asp:Label ID="Label1" runat="server" meta:resourcekey="resource-key-prefix" />

隐式表达式以声明性语法用作控件或对象的属性,并且定义 resource-key-prefix,用于为控件执行许多属性分配。资源文件包含许多具有常规形式 resource-key-prefix.Property 的潜在资源键,例如 Label1KeyPrefix.Text 和 Label1KeyPrefix.Font-name。所有资源都只能从本地资源获取。可以将表达式看作一个短格式表示法,用于在未显式在页中定义属性的情况下映射一个到多个控件属性。

        以编程的方法检索资源值:

        可以使用声明性语法将 ASP.NET 服务器控件属性值设置为资源值,也可以以编程方式检索资源值。如果在设计时资源值未知或者需要根据运行时条件设置资源值,可能会这样做。

        可以从本地资源文件和全局资源文件中获取资源值,这些文件使用的方法返回一个可强制转换为适当类型的对象。由于 ASP.NET 使用强类型编译全局资源,因此也可以使用强类型成员获取全局资源。

        调用 GetLocalResourceObjectGetGlobalResourceObject 方法以分别从全局资源文件或本地资源文件中读取特定的资源。在 HttpContext 和 TemplateControl 类中提供了这些重载方法。

        GetGlobalResourceObject 方法采用资源类名和资源 ID。该类名基于的是 .resx 文件名。例如,文件 WebResources.resx 和所有相关联的本地化文件都由类名 WebResources 引用。

        GetLocalResourceObject 方法采用表示 ResourceKey 属性的资源名。

        下面的代码示例演示如何从本地资源文件和全局资源文件获取资源值。这些方法返回一个对象;因此,必须将该资源强制转换为适当的类型。

        存储在 App_LocalResources 特殊文件夹中的默认本地资源文件根据 ASP.NET 页命名。例如,如果在 Default.aspx 页中使用了下面的代码,则必须将该资源文件命名为 Default.aspx.resx。在此示例中,向此文件添加了一个名为 Button1.Text 的字符串资源,并且该资源带有 "Found Resources" 值。

        此外,在此示例中,存储在 App_GlobalResources 特殊文件夹中的默认全局资源文件命名为 WebResourcesGlobal.resx。向此文件添加了一个名为 LogoUrl 的字符串资源,而且该资源带有http://go.microsoft.com/fwlink/?LinkId=49295 值或其他图像的 URL

<%@ Page Language="C#" %>

<script runat="server">
    protected void Button1_Click(object sender, EventArgs e)
    {
        Button1.Text = 
            GetLocalResourceObject("Button1.Text").ToString();
        Image1.ImageUrl = 
            (String)GetGlobalResourceObject(
            "WebResourcesGlobal", "LogoUrl");
        Image1.Visible = true;
    }
</script>

<html  >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" 
            OnClick="Button1_Click" 
            Text="Get Resources" />
        <asp:Image ID="Image1" runat="server" 
            Visible="false" />
    </div>
    </form>
</body>
</html>
使用强类型检索全局资源

  • 按照下面的语法获取资源:

    Resources.Class.Resource

    资源将编译到命名空间 Resources 中,并且每个默认资源都将成为 Resources 类的成员。例如,如果创建了默认资源文件 WebResources.resx,并且该文件包含一个名为 WelcomeText 的资源,则可以在代码中引用该资源,如下面的代码示例所示:

    String welcome;
    welcome = Resources.WebResources.WelcomeText;

           

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, 控件
, 属性
, 类型
, 表达式
资源
asp.net 国际化、asp.net mvc 国际化、asp.net2.0教程、asp.net2.0培训、asp.net2.0,以便于您获取更多的相关知识。

时间: 2024-10-22 14:15:59

使用ASP.Net2.0国际化你的网站祥解的相关文章

ASP.NET2.0连接SQL Server数据库详解

asp.net|server|数据|数据库|详解 本文将详细介绍如何使用Connection对象连接数据库.对 本文将详细介绍如何使用Connection对象连接数据库.对于不同的.NET数据提供者,ADO.NET采用不同的Connection对象连接数据库.这些Connection对象为我们屏蔽了具体的实现细节,并提供了一种统一的实现方法. Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection.

ASP.NET2.0实现网站的自动升级

asp.net 网站的自动升级主要是要实现从一台服务器上下载某些文件到本服务器上,然后对下载下来的文件进行更新等操作. 比如,现在有服务器A,服务器B和客户端C. 作为COM公司开发的产品DIV网站系统被安装到服务器B上,而它的更新设置及更新文件则在服务器A上.当客户C访问服务器B的网站时,B从A上下载更新文件,然后进行更新操作. 其中虽然第四步最重要,是逻辑的核心,但是下载什么文件,怎么下载也捆饶着我们. 这里介绍的ASP.NET2.0是VB.NET.VB.NET 引入了一个新的命名空间 --

谁有 ASP. NET2.0动态网站程序设计(第二版)程不功 课后答案??发个给我呀!1083371806@qq.com

问题描述 谁有ASP.NET2.0动态网站程序设计(第二版)程不功课后答案??发个给我呀!1083371806@qq.com 解决方案 解决方案二:这本书我当初学的时候也看了,但是没怎么看答案,在看习题的时候不懂的话就百度,google,你将会知道更多

请高手指点如何使用installshield11.5创建虚拟目录部属asp.net2.0开发的网站?

问题描述 使用asp.net2.0开发的站点,想打包自动安装到IIS的默认网站下的某个目录中,可以新建一个目录,但不另建一个新的站点放到下面,如何实现?请跟贴者说的详细一些,能解决问题,一知半解并不能解决什么问题者请勿发言,多谢大家,多谢高手发言 解决方案 解决方案二:我就是不懂!!!!为什么不给我发???帮你顶北!!!不然沉下去!解决方案三:is11.5的自动配置数据库已经搞懂了,在IIS中加入虚拟目录的方法,请高手指点,细致的指点,在默认网站下加入某个目录放入开发的站点,使用户进行浏览,请高

ASP.NET2.0网站的发布(高分求助)

问题描述 小弟使用vs.net2005作了个ASP.NET2.0的网站,想上传到远端服务器,现在的问题是,直接使用vs.net2005自带的打包工具制成安装文件再上传,还是使用vs.net2005开发环境下的"发布网站"功能?哪位大侠能提供有关的操作步骤(详细一点最好~嘿嘿~:) 解决方案 解决方案二:直接发布网站就可以了.然后去服务去配置一下IIS.装个.netframework2.0解决方案三:生成->发布网站上传到服务器服务器设置版本为.NETFRAMEWORK2.0解决方

ASP.NET2.0应用的全球化与本地化之本地化

asp.net 摘要:本文将通过一个实际案例来详细剖析如何实现一个ASP.NET 2.0网站开发过程中的全球化与本地化问题. 一.简介 全球化和本地化是每一位开发者在创建全球化产品或应用程序时必须清楚的两个重要的慨念.尽管有许多文章对这个题目作过较好的解释,但是我一直没有看到一篇全面而综合地讨论关于全球化/本地化的所有重要概念的文章.本文旨在通过一个具体案例来详细分析使用ASP.NET2.0开发一个web应用程序时所涉及到的全球化问题. 二.背景理论 全球化是应用程序开发中某一阶段的任务,其目的

ASP.NET2.0 HiddenField控件

asp.net|控件    HiddenField控件顾名思义就是隐藏输入框的服务器控件,它能让你保存那些不需要显示在页面上的且对安全性要求不高的数据.也许这个时候应该有这么一个疑问,为什么有了ViewState.Session和Cookie等状态保存机制,还需要用起HiddenField呢?增加HiddenField,其实是为了让整个状态管理机制的应用程度更加全面.因为不管是ViewState.Cookie还是Session,都有其失效的时候,比如用户因某种需求要求设置ViewState为fa

ASP.NET2.0数据操作之母板页和站点导航

asp.net|导航|数据|站点 导言 通常,用户友好的个性化站点都有着一致的,站点统一的页面布局和导航体系.Asp.net 2.0引入的两个新特性给我们在统一站点的页面布局和站点导航上提供了简单而有效的工具,它们是母板页和站点导航.母板页允许开发者创建统一的站点模板和指定的可编辑区域.这样,aspx页面只需要给模板页中指定的可编辑区域提供填充内容就可以了,所有在母板页中定义的其他标记将出现在所有使用了该母板页的aspx页面中.这种模式允许开发者可以统一的管理和定义站点的页面布局,因此可以容易的

原创:在ASP.NET2.0中实现主页嵌套

asp.net|原创 现在的很多商业公司都设有不同的部门,而这些部门在公司的网站上都有自己的子网站.一般情况下,每一个部门都会根据自己的需要来维护各自的网站.这样做虽然会使公司的网站显得丰富多彩,但这却会对用户的访问带来不便,也就是说,由于各个部门的子网站没有保持一致性而使用户在浏览网站时造成了困难.幸运的是,ASP.NET2.0为我们提供了一种解决方案,这就是主页嵌套. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com: