摘要:
由于越来越多的跨国公司需要跨语言的WEB应用,所以本地化工作变得尤其重要,在ASP.NET 1.1 中我们使用ResourceManager 类来实现这个工作,而2.0中提供了更加方便的方法和工具来实现
导言:
现在很多跨国的商务需求都需要实现多语言,对客户来说他们始终想看到网站是用他们所熟悉的语言来显示的,他们不会关注网站使用的是什么技术,而现在的开发工具或者开发技术并没有在本地化方面做的很好,我们还需要花大量的时间和精力去做本地化的工作。ASP.NET2.0的出现大大简化了这个过程,配合VS.NET2005新的特性,我们可以很方便得来自动剥离网站的语言元素,很容易去实现多版本网站,而且许多针对本地化的API同样也可以方便得帮助我们完成这个过程
.NET 1.1中的本地化:
在1.1中我们使用
ResourceManager来实现这个过程,或许对于WINFORM来说这个过程还比较简单,但是VS.NET2003并没有给我们WEBFORM下的本地化工作带来什么自动化,我们还需要花很多精力在重复复制代码上,点击这里查看1.1的实现方法。
.NET 2.0 中的本地化:
2.0中的本地化还是基于1.1的,但是却提供了很多自动化工作:
1、自动生成页面资源文件
2、方便的编程实现资源文件的访问
3、自动为页面装载合适的语言
4、控件和资源文件自动匹配
5、强类型的资源文件
6、资源文件编辑器
7、资源文件使用表达式
8、资源Provider模型
本地资源文件实现:
VS.NET 2005 菜单-Tools-Generate Local Resource,所产生的资源文件将会放在\App_LocalResources下面
可以看到,只有TEST和TOOLTIP这些涉及到语言的属性被加入了资源文件
再切换回视图状态可以看到一些属性右边有红色标记,这表明这个属性绑定的是本地资源,通常这些都是IDE自动为你做的,再看看上面的AlternateText后面有一个蓝色标记,这表示这个资源是全局的资源
全局资源的实现:
在我们的项目中通常有很多重复的东西,比如MasterPage,用户控件,菜单,甚至还有一些提示信息等这些东西如果包含在多个页面,我们每次都需要重复制作他们的资源文件,这非常不科学,所以我们要手动的来制定全局资源。这个时候先要建立一个
\App_GlobalResources目录然后在下面添加资源文件,先看看IDE提供给我们的资源文件编辑器
非常多种的类型,我们访问全局资源不需要考虑太多,比如说一个资源文件是
Flags.resx,试试在编译器内输入Resources.Flags,当再次按下.的时候,智能感应出来了
可见这些资源文件都被编译成了强类型的类,比如说图片资源我们得到的类型是System.Drawing.Bitmap
本地资源访问:
通常我们使用meta:resourcekey来指定控件的资源,如果说一个控件的资源前缀是LinkButtonResource1的话,那么它的Text属性的资源就是LinkButtonResource1.Text,这个是生成资源文件的时候IDE自动做的,如果我们需要在程序中访问本地资源可以按照下面的例子:
LinkButton button1 = new LinkButton();
this.lnkSelectCulture = button1;
button1.ID = "lnkSelectCulture";
button1.PostBackUrl = "selectculture.aspx";
button1.Text = ((string)
base.GetLocalResourceObject("LinkButtonResource1.Text"));
button1.ToolTip = ((string)
base.GetLocalResourceObject("LinkButtonResource1.ToolTip"));
当然,如果你不想你的控件使用资源文件可以按照下面的例子修改:
<asp:LinkButton id=lnkSelectCulture PostBackUrl="selectculture.aspx"
runat="server" meta:localize="false">Change Culture
Settings</asp:LinkButton>
全局资源访问:
使用下面的格式来定位全局资源
<%$ resources: [applicationkey], resourcekey%>
比如从Glossary.resx读取资源例子如下
<asp:ImageButton ID="btnIDesign" Runat="server"
ImageUrl="~/Images/idesignlogo.jpg"
AlternateText='<%$ Resources:Glossary, MissionSatatement%>'
PostBackUrl="http://www.idesign.net"
meta:resourcekey="ImageButtonResource1" />
当然你也可以直接用IDE的表达式对话框直接来选择
用程序读取方式如下:
ImageButton button1 = new ImageButton();
// other initialization code
button1.ID = "btnIDesign";
button1.AccessKey = (string)
base.GetLocalResourceObject("ImageButtonResource1.AccessKey");
button1.AlternateText = (string) base.GetGlobalResourceObject("Glossary",
"MissionStatement");
button1.ImageUrl = (string)
base.GetLocalResourceObject("ImageButtonResource1.ImageUrl");
button1.ToolTip = (string)
base.GetLocalResourceObject("ImageButtonResource1.ToolTip");
button1.Visible = (bool)
base.GetLocalResourceObject("ImageButtonResource1.Visible",
typeof(Control), "Visible");
本地化HTML控件和文本:
Html控件:html控件不能用前面说的两种表达式来指定资源,除非是让它runat=server,不过对于页面的title比较特殊,它也会作为页面的一个对象自动生成本地资源
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" meta:resourcekey="PageResource1" %>
不过,我们也可以为它制定全局资源
<head runat="server">
<title><asp:Literal Text='<% $ Resources: Glossary, DefaultPageTitle %>' runat="server"></asp:Literal></title>
</head>
本地化文本:
对于项目中很多静态的文本,我们可以使用Localize控件来包含这些文字,其实这个控件和Literal相似,但是它能在设计模式下随意修改里面的文字内容,看下怎么访问本地资源和全局资源
<asp:Localize id="welcomeContent" runat="server"
meta:resourcekey="welcome">Welcome!</asp:Localize>
<asp:Localize id="welcomeContent" runat="server" text='<%$ resources: Glossary,
welcomeText%>'>Welcome!</asp:Localize>
多语言实现:
从默认的资源文件复制一个新的的资源文件,只要在resx前面加上地区代号,逐项编辑即可,如下设置后浏览器会自动根据设置(工具-选项-语言)调用新的资源文件
<%@ Page UICulture="auto" Culture="auto">
当然你也可以通过web.config文件指定一种语言
<system.web>
<globalization culture="es-ES" uiCulture="es">
</system.web>
分享到:
相关推荐
在.NET框架中,ASP.NET提供了丰富的支持来实现这一功能,使得网站内容可以根据用户的地域和语言偏好进行本地化。 首先,我们要理解"国际化"(Internationalization)和"本地化"(Localization)的区别。国际化是指...
ASP.NET 本地化是构建多语言网站的关键技术,它允许开发者创建能够适应不同语言环境的Web应用程序。本篇文章将深入探讨如何在ASP.NET中实现本地化,包括自动生成本地化资源、理解`Localizable`属性以及手动添加本地...
微型Asp.net服务器是一款专为开发者设计的轻量级应用程序,它允许你在没有安装完整版IIS(Internet Information Services)和Microsoft .NET Framework的环境中,进行Asp.net程序的本地测试和调试工作。这对于开发...
【ASP.NET与ASP的差异】ASP.NET是微软推出的一种基于.NET Framework的Web开发平台,相比传统的ASP,它引入了更多的特性和复杂性。在ASP.NET中,编程语言增加了C#,提供了VB.NET、C#、ACCESS和SQL的四种组合。ASP.NET...
总结,ASP.NET国际化涉及到资源文件管理、CultureInfo对象的使用、Web.config的配置以及页面和控件的本地化等多个方面。通过这些技术,开发者可以构建能够适应全球用户需求的多语言应用。TestPro项目中的源码应该...
ASP.NET AJAX的国际化与本地化支持是Web开发中的重要一环,它允许应用程序根据用户的地域和语言偏好提供相应的用户界面和服务。在这个深入浅出的系列课程第18集中,我们将探讨如何在ASP.NET AJAX框架中实现这一功能...
在【压缩包子文件的文件名称列表】中,"miniASPNETServer"可能是一个定制的、小型化的ASP.NET服务器实现。它可能包含以下几个部分: 1. **服务器核心**:实现HTTP协议,接收并处理HTTP请求,将请求转发给ASP.NET引擎...
1. 直接打印:FastReport ASP.NET支持直接从网页中打印报表,无需下载到本地,用户可以设置打印机、纸张大小、方向等参数。 2. 打印预览:在打印前,用户可以通过预览确认报表的布局和内容,避免打印错误。 3. ...
与ASP.NET结合使用,可以方便地实现数据持久化和业务逻辑。 七、Web API ASP.NET Web API是用于构建RESTful服务的框架,它支持JSON和XML格式的数据交换,适用于构建Web服务供其他应用或客户端调用。 八、Azure集成...
C#是ASP.NET开发的主要编程语言之一,以其面向对象的特性、丰富的类库和现代化的语法结构深受开发者喜爱。本教程“ASP.NET动态网页设计案例教程PPT,C#版”显然是为了帮助学习者掌握如何使用C#在ASP.NET平台上创建...
Asp.Net Forums 的官方中文版可能包含了本地化支持,这涉及到了ASP.NET的资源文件和 globalization 特性,使得界面文本可以根据用户的语言设置自动调整。此外,考虑到中文字符的编码问题,可能还涉及到Unicode和UTF-...
综上所述,微软新推出的ASP.NET专用编程工具很可能是为了增强开发者在以上这些ASP.NET特性和工作流程中的体验,提供更高效、更流畅的开发环境。然而,由于具体的文件名称“syzf.net.lyf.31522”并未给出更多信息,...
ASP.NET提供了本地化特性,允许开发者为不同语言创建资源文件(resx)。这些资源文件存储字符串和文本,根据用户的区域设置加载相应的文件。通过使用 globalization 标签和 culture 属性,可以在web.config中配置这...
在这个“asp.net制作中英文网站”的资源中,我们聚焦于如何利用ASP.NET实现网站的多语言支持,特别是通过本地资源文件实现国际化。 在ASP.NET中,国际化(Internationalization)是指使软件能够在不同的地区和语言...
ASP.NET提供了多种特性,包括但不限于:页面生命周期管理、内置的安全性、状态管理、缓存机制、自动页面更新以及对多种数据库的支持等。 在【压缩包子文件的文件名称列表】中,有两个关键文件: 1. **web.config**...
10. **国际化和本地化**:ASP.NET支持多语言环境,允许开发者创建支持不同区域设置的应用程序。 在翻译文档中,你可能会发现有关ASP.NET如何处理HTTP请求、如何使用ADO.NET与数据库交互、如何实现状态管理以及如何...
此外,本教程还会涉及.NET中的全球化和本地化支持,安全性,序列化等高级主题。 为了方便初学者理解,教程中还提供了关于生成控制台应用程序、应用程序要点、托管执行过程、元数据和自描述组件的基础知识。并且,...
而国际化和本地化则能让应用适应全球市场。 标签中的“servlet”和“spring”涉及到Java Web开发。Servlet是Java中用于处理HTTP请求的服务端组件,Spring则是Java企业级应用的主流框架,提供了依赖注入、AOP(面向...
7. **本地化与国际化**:支持多语言,满足全球化需求。 8. **权限与角色管理**:强大的RBAC(Role-Based Access Control)机制,确保数据安全性。 对于SQL Server的支持,ASP.NET Zero Core 11.1.0提供了一套完整的...