超级简单:ASP.NET Localization (本地化,多语言)

有很多讨论ASP.NET localization(本地化,多语言)的文章,这篇文章是不会的深入讨论ASP.NET Localization (本地化,多语言)。相反,它将给你有关asp.net页面中通常使用的内容的localization的一个快速参考,这些内容包括:ASP.NET服务端控件,html内容,SiteMap,一些其他资源。

这篇文章包括以下内容:

1、 如何本地化的ASP.NET服务器控件?

2、如何本地化HTML内容?

3、如何本地化站点地图?

4、如何动态改变文化环境?

如何本地化的ASP.NET服务器控件?

ASP.NET服务器控件的localization是所有类型中最简单的一种。一旦你添加一个服务器控件到你的页面上,您可以简单地切换网页到“Design”,然后进入菜单 “Tools”->“Generate Local Resource”。

它将会为页面上的每个asp.net服务器控件产生一段字符串资源。在这个例子中,创建一个名字为Default.aspx.resx 的文件。它包含了Default.aspx页面所有的资源的name/value对。

切换回"Source",你将看到在你的html里面添加了如下的代码:

<asp:Button ID="Button1" runat="server" Text="Hello" 

    meta:resourcekey="Button1Resource1" />

然后,您可以复制/粘贴,为了创建另一个文化资源文件。例如,您可以为法国用户创建一个Default.aspx.fr.resx。

下面的截图是当Internet Explorer的语言设置为英语。

通过Internet Explorer->Tools->Internet Options->Languages更改语言为法语.

下面是为法语版本的页面:

如何本地化HTML内容?

为了本地化普通的HTML内容,您可以使用控件。让我们用一个例子来解释。

在您的网页,你有一个标题和段落。

<h1>Localization 
Page Headerh1>

<p>This is a demo page to show you how to do localization in ASP.NETp>

为了本地化,您需要给他们添加。

代码<h1><asp:Localize ID="Header" runat="server">Localization Page Headerasp:Localize>h1>

<p><asp:Localize ID="Localize1" runat="server">This is a demo 

   page to show you how to do localization in ASP.NETasp:Localize>p>

然后,您可以手动创建一个资源文件并添加meta:resourcekey =“HeaderResource1”到您的网页。您可以利用Visual Studio,它自动生成。切换页面到“Design”,进入菜单“Tools”->“Generate Local Resource”。

它将为您生成以下代码和资源文件(例如:yourfile.aspx.resx)。

下面是它更改的代码:

代码<h1><asp:Localize ID="Header" runat="server" 

   meta:resourcekey="HeaderResource1" 

   Text="Localization Page Header">asp:Localize>h1>

<p><asp:Localize ID="Localize1" runat="server" 

   meta:resourcekey="Localize1Resource1" Text="This is a demo page to show you 

      how to do localization in ASP.NET">asp:Localize>p>

在其余步骤是与如何本地化ASP.NET服务器控件相同。

如何本地化SiteMap?

本文将给你关于SiteMap的本地化更多的细节。

1、通过加入enableLocalization =“true”,启用站点地图文件网站地图本地化。例如:在Web.sitemap文件。

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"

    enableLocalization="true">

2、 在SiteMapNode中使用这种格式: “$resources:ClassName,KeyName,DefaultValue”,更改你要本地化的资源字符串的属性的值。

<siteMapNode url="Default.aspx" 

  title="$resources:SiteMapLocalizations,HomePageTitle" 

  description="$resources:SiteMapLocalizations,HomePageDescription">

3、 添加 global resource 文件夹和文件。右键单击在解决方案资源管理器的web site 。点击“添加ASP.NET文件夹”。从子菜单点击“添App_GlobalResources文件”。这将增加一个“App_GlobalResources文件”文件夹到根目录。

然后,添加一个资源文件,例如,SiteMapLocalizations.resx。在文件中,您将有资源字符串的 name/value 对。例如:

Name             Value

HomePageTitle    Home

4、为每一种你需要的文化,添加资源文件。例如,您可能有一个名字为SiteMapLocalizations.fr.resx法语版的文件。下面是英文和法文的菜单屏幕截图:

如何编程本地化字符串?

有时您可能需要显示一个字符串,例如,在运行时错误信息。您需要编程将它本地化。下面是如何做到这一点:

1、在App_GlobalResources 文件夹下面添加一个资源文件。例如,我们能添加一个名字为“CommonResource.resx”文件和一个法语版的“CommonResource.fr.resx”。

2、有很多其他很好的方法来获取资源字符串。

你能从 ~\App_GlobalResources\MyMessages.resx 得到的资源通过:

1、产生的封装代码 :

string message = Resources.MyMessages.Hello;

2、资源表达式

<asp:Label Text="<%$ Resources: MyMessages, Hello %>" />

3、GetGlobalResourceObject方法

string message = GetGlobalResourceObject("MyMessages", "Hello");

你能从 ~\App_LocalResources\default.aspx.resx 得到的资源通过:

1、资源表达式:

<asp:Label Text="<%$ Resources: Hello %>" />

2、meta:resourceKey :

<asp:Label meta:resourceKey="labelResourceKey" />

3、GetLocalResourceObject方法:

string message = GetLocalResourceObject("Hello"); "

这有个截图:

如何动态改变文化?

在示例代码中,我们增加了两个LinkButtons控件。当您点击“English”,该网页将切换到英语文化,点击 “Français”, 将切换到法国文化。为了检测的哪个LinkButtons被点击,我们使用Request.Form [“__EventTarget”]。它能实现,但可能不是最好的方式。

我们覆盖页面InitializeCulture方法,这样就会对我们作出的选择显示正确的文化。

<asp:LinkButton ID="LanguageEnglish" Text="English" runat="server">asp:LinkButton>

<asp:LinkButton ID="LanguageFrench" Text="Français" runat="server">asp:LinkButton>
代码protected override void InitializeCulture()

{

    string language = Request.Form["__EventTarget"];

    string languageId = "";

if (!string.IsNullOrEmpty(language))

    {

        if (language.EndsWith("French"))

            languageId = "fr-FR";

        else languageId = "en-US";

        Thread.CurrentThread.CurrentCulture = 

        CultureInfo.CreateSpecificCulture(languageId);

Thread.CurrentThread.CurrentUICulture = new CultureInfo(languageId);

    }

    base.InitializeCulture(); 

}

除了menu之外,其它一切控件都有效。如果在网页中你有一个menu使用Sitemap,您可能需要在Page_Load事件调用menu.DataBind()或设置的EnableViewState为false。否则,但其他内容更改为新的文化,你的menu上仍会显示以前的文化字符串。

当我们动态改变文化,最有可能的是我们需要将它存储在某个地方,当我们从页面到页面跳转时,这样就不会丢失。在示例应用程序,我们使用了Session。

源代码:

/Files/zhuqil/Localization.zip

原文:http://www.codeproject.com/KB/aspnet/AspNetLocalization.aspx

时间: 2024-10-31 03:52:32

超级简单:ASP.NET Localization (本地化,多语言)的相关文章

ASP.NET MVC的Localization本地化多语言支持_自学过程

一.ASP.NET MVC的本地化支持 ASP.NET MVC的是基于ASP.NET运行,所以由ASP.NET提供的所有功能,都可以在MVC里使用,例如缓存,会话状态和本地化. 在传统的ASP.NET Web窗体时代我们使用资源文件存储不同语言中的内容和使用由Visual Studio自动生成的ResourceManager类来检索它们.在ASP.NET MVC他们一样有效的. 让我创建一个标准的ASP.NET MVC的一个示例应用程序.该网站是中文的,我们可以看到所有的内容都是在视图和控制器类

艾伟_转载:超级简单:ASP.NET Localization (本地化,多语言)

      有很多讨论ASP.NET localization(本地化,多语言)的文章,这篇文章是不会的深入讨论ASP.NET Localization (本地化,多语言).相反,它将给你有关asp.net页面中通常使用的内容的localization的一个快速参考,这些内容包括:ASP.NET服务端控件,html内容,SiteMap,一些其他资源.       这篇文章包括以下内容:       1. 如何本地化的ASP.NET服务器控件?       2.如何本地化HTML内容?      

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(30)-本地化(多语言)

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(30)-本地化(多语言) 我们的系统有时要扩展到其他国家,或者地区,需要更多的语言环境,微软提供了一些解决方案,原始我们是用js来控制的,现在不需要了. 我们只要创建简单的资源文件,通过MVC的路由设置就可以轻松的进行语言中的切换. 本节受益于:Asp.net MVC3 高级编程第121页.大家可以自行百度这本书,这应该是国内第一本中文版的MVC3.0教程 现在从项目入手吧(本节也适合其他MVC程序),

Windows 8 本地化多语言支持

在Win8平台处理本地化多语言的支持相对比较容易的,但比WP8稍微复杂一点,并不像WP8平台那样大部分工作都有VS IDE处理,Win8平台的操作基本需要开发者处理.并且在xaml中的使用也稍有不同. 同样需要强调的是无论您目前的应用是否需要支持多语言,将您的代码从可本地化的资源中分离出来统一放到资源文件中是一个很好的编码习惯. 本地化多语言配置 参考下图中目录结构,创建Strings文件夹以及子目录和Resources.resw资源文件. 为应用所支持的每一个区域性都创建一个资源文件夹,并为此

Windows Phone 8的本地化多语言支持

在WP8平台处理本地化多语言的支持还是比较容易的,大部分工作都有VS IDE处理,开发者只需简单操作,并翻译本地资源即可实现. 无论您目前的应用是否需要支持多语言,将您的代码从可本地化的资源中分离出来很重要.本地化应用的 UI 文本字符串的常见做法是,将每一个字符串复制到资源文件的字符串表的行中.然后用指向表中相应资源的绑定语句 (XAML) 或资源引用(代码隐藏)替换每一个原始字符串.这是一个很好的编码习惯. 本地化多语言配置 当创建一个应用后,会默认在应用中添加资源文件夹Resources和

91-关于背景图片(超级简单).........

问题描述 关于背景图片(超级简单)......... 问题描述:有一张图片1300 x 200px的图片用做网页背景,怎么样让图片铺满网页?而不是这样呢? 补充:比方网页像素是1366px 要让1300图片的长度变成1366px,而不是自动填,那样图片就不美了 解决方案 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml

暑期缤纷巨献之~-----超级简单/方便--不刷新页面---刷新数据之--幕后黑手---XMLHTT

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++    超级简单/方便--不刷新页面---刷新数据之--幕后黑手---XMLHTTP---介绍/用法++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------就是下面这个很简单的JAVASCRIPT函数SEND(STR,URL)--------

网页CSS技巧:闭合浮动元素超级简单的方法

css|浮动|技巧|网页 关于闭合浮动元素(clearing float)的方法现在已经很多了,你还不了解的话去old9的blog看看,有一篇闭合浮动元素. 这些方法我最喜欢就是 使用:after 伪类动态的嵌入一个用于清除浮动的元素,可惜代码量太大了,看着不够简洁.现在我看到有个方法超级简单.赶紧介绍一下. 原理是这样的,外围元素之所以不能很好的延伸,问题出在了overflow上,因为overflow不可见.见W3C的解释:In addition, if the element has any

PHP实例:实现超级简单的MVC结构

下面是一个超级简单的MVC结构实现,甚至连数据源都用了一个内置的固定数组,虽然简单,但其实众多的PHP Framework核心实现的思想应该和这个是差不多的 只不过一些framework提供了更多的方便开发者使用的工具,我也想自己来实现一个PHP的 框架,目前正在着手策划中,也希望自己能够从框架的开发中学习到更多的PHP设计思想和方法. Controller.php include 'Model.php'; include 'View.php'; class Controller {     p