asp.net 2.0中的全球化与本地化

原创 2012年02月27日 12:33:57
介绍

当每个开发者创建全球化的产品和程序时,全球化和本地化是两个重要的步骤.

全球化一个asp.net 2.0站点

语言也决定于地理位置,比如法语同时在法国和加拿大使用.但是法国使用的法语和加拿大使用的法语有很大的区别.所以我们要同时指定语言和地区.比如fr代表法语,fr-FR指的是法国的法语.

.NET FCL中的CultureInfo有两个属性,我们可以重载改类的构造函数,用来改变当前执行线程的语言.

1.UICulture:这个属性帮助运行时从资源文件加载资源字符,可以设置成无确定地区的语言,如
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr");或
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA");

2.Culture:这个属性只能为制定区域的语言

UICulture和Culture的区别是:UICulture是用来加载资源文件,Culture是用来设置日期,数字货币格式的.

有时候我们需要一个与语言区域无关的语言,他可能是变化不定的.我们可以用CultureInfo.InvariantCulture属性.

UICulture和Culture属性都可以在web.config的globalization中定义.他们也可以在页面级设置.但是我们也能动态的设置这些值.如上面代码所示.

更改语言

1.用浏览器设置.我们需要设置Culture和UICulture的值为auto且enableClientBasedCulture=true:
GLOBALIZATION

2.用户设置.我们可以提供一个选项让用户来选定或改变语言区域.

如果要使我们的程序全球化就必须遵照以下几点:
1.所有的内容必须本地化 这意味着所有的字符串和文本根据语言和区域显示.
2.每个控件的标题和内容必须根据语言和区域显示.
3.时间日期须根据语言区域格式化
4.所有发送给用户消息须根据语言和区域显示

如果要本地化整个应用程序,我们要把资源文件添加到App_GlobalResources文件夹中,如TestSiteResource.resx,TestSiteResource.zh-CN.resx
如果仅仅本地化一些特定的页面,我们将资源文件添加到App_LocalDirectory文件夹,文件命名应该如下:
MyPage.aspx.resx:这是MyPage.aspx的默认资源文件
MyPage.aspx.zh-CN.resx:当语言区域设定到中文,仅程序中的MyPage.aspx页面被本地化.

String welcome = Resources.TestSiteResources.Welcome;
这行代码,我们用到了当资源文件被编译时asp.net自动创建的Resources名字空间.linux虚拟主机这可以读取资源文件里面的内容.我们还可以用其他两个方法达到同样的目的:

1.隐式本地化 为控件指定meta标记,使asp.net从resourcekey属性中获取资源文件的值:
aspasp
为了使其工作,我们需要在/App_LocalDirectory文件夹里创建该页面的资源文件.

2.显式本地化 他能在我们拥有Global resource文件时工作 从资源文件读取的表达式如下:
spasp

3.用程序自动的获取强类型的资源文件类
lblWelcome.Text = Resources.TestSiteResources.Welcome;

整合本地化

我们要设置UICulture属性以便asp.net可以访问相应的资源文件.

如何能够在PostBack事件中改变语言区域呢?还好asp.net在Page类中提供了一个InitializeCulture()去重写.这个方法在页面的生命周期中很早的被执行,我们可以在这里设置当前线程的UICulture和Culture属性

如果想在所有的页面实现更换语言,我们可以创建一个BasePage页面,让其他页面继承.

但是InitializeCulture()事件执行的比初始化控件要早,如何获取控件的值呢?答案是用Form集合

为了本地化还需设置页面编码
globalization

定义语言阅读方向

这是必须的因为有些语言的阅读顺序是从右到左的.我们可以设置dir属性达到目的.这个标记用在或中.华夏名网代理属性值从资源文件中读取,RTL或LTR.


用数据库实现本地化

总结

1.不要依赖浏览器的设置,给出一个切换语言的链接.

2.用资源文件分离表示层的数据.如果找不到指定的资源文件,asp.net将使用默认的资源文件.

3.当使用数据库表储存数据和内容时,你需要创建单独的表储存本地化内容.

4.如果你用sn.exe创建强名称的主程序程序集,你需要用相同密钥对的私钥签名附属程序集(资源).强名称的程序集要求附属程序集也是强名称的. 

相关文章推荐

asp.net本地化和全球化

  • 2013年06月14日 17:27
  • 271KB
  • 下载

asp.net 全球化和本地化揭秘Demo

  • 2010年07月16日 00:03
  • 606KB
  • 下载

ASP.NET全球化与本地化 c#多语言的支持

ASP.NET 2.0及以上的开发平台,为全球化本地化应用程序提供了工具,而且实现起来非常简单。以下内容是使用c#,按照帮助一步步做的,将为初学者提供详细的实现步骤。 一 几个必要概念  (一) ...

ASP.NET 2.0 实现伪静态网页方法

利用Mircosoft URLRewriter.dll实现页面伪静态昨天,转贴了一篇利用ISAPI筛选器来实现URL伪静态的文章,我按照文章上的内容做,可是没有做出来,目前看来,该方法没有使用Micr...

ASP.NET 2.0 实现伪静态网页方法 3种方法

方法一:利用Httphandler实现URL重写(伪URL及伪静态) 我们有时候会见到这样的地址:“http://www.huoho.com/show-12-34.html”,你或许认为在站点服...

使用windbg調試iis應用程序池崩溃的asp.net 2.0 bug.

使用windbg調試iis應用程序池崩溃的asp.net 2.0 bug. 新上線的asp.net 2.0 項目,不定時的報告以下錯誤: Fau...
  • jeffkxt
  • jeffkxt
  • 2015年06月24日 09:46
  • 987

ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载)

ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载) ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) ...

Asp.net 2.0 自定义伪静态源码

根据微软官方伪静态UrlRewrite.dll源码,自己改写应用进项目中。  1、首先,我们写个用于HttpModule请求的类 RolesProvider using System; us...
  • ysn1314
  • ysn1314
  • 2014年08月22日 17:08
  • 515

使用ASP.NET 2.0 Profile存储用户信息[翻译] Level 200

作者: Stephen Walther 原文地址:http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnvs05/...

ASP.NET 2.0服务器控件开发之复杂属性

ASP.NET 2.0服务器控件开发之复杂属性   1. 实现连字符形式复杂属性   连字符形式属性是比较常见的复杂属性。我们常用的Font属性就是一个复杂属性,其包括多个子属...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net 2.0中的全球化与本地化
举报原因:
原因补充:

(最多只允许输入30个字)