ASP.NET网站实现多语言版本 【转】

摘要:
ASP。NET具有.resx扩展名。因为与ASP.NET网页一起使用的resx文件以相同的方式动态编译,因此不需要创建资源程序集。例如,如果当前UI区域性是西班牙语。NET使用WebResources.es的编译版本。resx文件。此外,ASP.NET还生成一个强类型对象,这为开发人员提供了一种以编程方式访问全局资源的简单方法。ASP。NET可以将页面的UICulture和Culture属性设置为浏览器传递的语言和区域性值。有关详细信息,请参阅如何:为ASP设置区域性和UI区域性。NET网页全球化。
一、项目概述

      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、使用本地资源的隐式本地化
              在服务器控件引用如:    meta:resourcekey="Button1" />
             在相应的资源文件定义:Button1.Text

         4、显式本地化
          页面引用如    Text="<%$ Resources:WebResources, Button1Caption %>" />
         资源文件定义: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

免责声明:文章转载自《ASP.NET网站实现多语言版本 【转】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇layui 时间框选择一闪就消失,打不开问题解决办法细聊Oracle通过ODBC数据源连接SQL Server数据库下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ASP.NET中Get和Post的用法 Request.QueryString,Request.Form,Request.Params的区别

表单form的提交有两种方式,一种是get的方法,一种是post 的方法.看下面代码,理解ASP.NET Get和Post两种提交的区别:   代码 view plaincopy to clipboardprint?< form id="form1" method="get" runat="server"> < div>...

iis发布网站可能遇到的问题及解决方法

虚拟机上网问题:桥接模式:跟物理机使用的同一个物理网卡(以太网) 虚拟机跟物理机的ip要在同一段,就可以上网了 NAT模式:虚拟机设置ip要改成自动获取,就可以上网 这样虚拟机跟物理机就不是同一个段的ip 虚拟机网络编辑器:桥接模式里面可以选择是桥接有限网卡连接还是桥接无线网卡连接 想要使用域名访问网站,需要安装DNS服务,域名解析为ip地址 Iis发布...

正确处理下载文件时HTTP头的编码问题(Content-Disposition)

正确处理下载文件时HTTP头的编码问题(Content-Disposition) 最近在做项目时遇到了一个 case :需要实现一个强制下载功能(即强制弹出下载对话框,阻止浏览器尝试解析显示某些文件格式),并且文件名必须保持和用户之前上传时相同(可能包含非 ASCII 字符)。 前一个需求很容易实现:使用 HTTP Header 的 Content-Di...

网站安全之ASP程序加密解密方法全面解析

  如今,用ASP技术构建的网站随处可见。由于ASP脚本是在服务器上解释执行的(无法编译),因此你辛苦开发出来的ASP代码,很容易被人拷去任意修改,如何保护ASP源代码呢?这是每个ASP站长都会遇到的难题,网上求解这类问题的帖子非常多,下面我们就来谈谈ASP程序的加密方法。   一、如何加密ASP程序?   目前对ASP程序的加密方法主要有三种:脚本编码器...

只需一行代码实现增删查改,微软已经让我们很简单。谈AccessDataSource的使用。

这是一个很简单的内容。日常我们总腻烦做增删查改这样的重复性的劳动,如果你的项目不是太大,如果你的团队很小,或许就是你一个人,那么就完全可以参考以下这样简单的方式。微软已经给我们做了。我们只要写一行代码,便实现了增删查改。以下以AccessDataSource为例,你只要写一行代码,便实现一个增删查改的页面。一、我们先建立这个解决方案,使用Access做数据...

DropDownList无刷新级联下拉(固定级联),Jquery获取JOSN数据

1.HTML页面 <td align="left">                                <asp:DropDownList ID="ddlOne" runat="server">                                </asp:DropDownList>      ...