[翻译]asp.net 2.0中的全球化与本地化
2007-04-15 14:20
399 查看
介绍
当每个开发者创建全球化的产品和程序时,全球化和本地化是两个重要的步骤.
全球化一个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 culture="auto" uiculture="auto" enableClientBasedCulture="true" />
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名字空间.这可以读取资源文件里面的内容.我们还可以用其他两个方法达到同样的目的:
1.隐式本地化 为控件指定meta标记,使asp.net从resourcekey属性中获取资源文件的值:
<asp:Label id=lblWelcome meta:resourcekey="lblWelcome" ext="Welcome" runat="server"></asp:Label>
为了使其工作,我们需要在/App_LocalDirectory文件夹里创建该页面的资源文件.
2.显式本地化 他能在我们拥有Global resource文件时工作 从资源文件读取的表达式如下:
<sp:Label id=lblWelcome Text="<%$Resources:TestSiteResources,Welcome %>" runat="server"></asp:Label>
3.用程序自动的获取强类型的资源文件类
lblWelcome.Text = Resources.TestSiteResources.Welcome;
整合本地化
我们要设置UICulture属性以便asp.net可以访问相应的资源文件.
如何能够在PostBack事件中改变语言区域呢?还好asp.net在Page类中提供了一个InitializeCulture()去重写.这个方法在页面的生命周期中很早的被执行,我们可以在这里设置当前线程的UICulture和Culture属性
如果想在所有的页面实现更换语言,我们可以创建一个BasePage页面,让其他页面继承.
但是InitializeCulture()事件执行的比初始化控件要早,如何获取控件的值呢?答案是用Form集合
为了本地化还需设置页面编码
<globalization responseEncoding"=utf-8"requestEncoding="utf-8" fileEncoding="utf-8" />
定义语言阅读方向
这是必须的因为有些语言的阅读顺序是从右到左的.我们可以设置dir属性达到目的.这个标记用在<html>或<body>中.属性值从资源文件中读取,RTL或LTR.
<body runat="server" dir="<%$ Resources: TestSiteResources, Direction %>">
用数据库实现本地化
总结
1.不要依赖浏览器的设置,给出一个切换语言的链接.
2.用资源文件分离表示层的数据.如果找不到指定的资源文件,asp.net将使用默认的资源文件.
3.当使用数据库表储存数据和内容时,你需要创建单独的表储存本地化内容.
4.如果你用sn.exe创建强名称的主程序程序集,你需要用相同密钥对的私钥签名附属程序集(资源).强名称的程序集要求附属程序集也是强名称的.
Created by jecray
当每个开发者创建全球化的产品和程序时,全球化和本地化是两个重要的步骤.
全球化一个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 culture="auto" uiculture="auto" enableClientBasedCulture="true" />
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名字空间.这可以读取资源文件里面的内容.我们还可以用其他两个方法达到同样的目的:
1.隐式本地化 为控件指定meta标记,使asp.net从resourcekey属性中获取资源文件的值:
<asp:Label id=lblWelcome meta:resourcekey="lblWelcome" ext="Welcome" runat="server"></asp:Label>
为了使其工作,我们需要在/App_LocalDirectory文件夹里创建该页面的资源文件.
2.显式本地化 他能在我们拥有Global resource文件时工作 从资源文件读取的表达式如下:
<sp:Label id=lblWelcome Text="<%$Resources:TestSiteResources,Welcome %>" runat="server"></asp:Label>
3.用程序自动的获取强类型的资源文件类
lblWelcome.Text = Resources.TestSiteResources.Welcome;
整合本地化
我们要设置UICulture属性以便asp.net可以访问相应的资源文件.
如何能够在PostBack事件中改变语言区域呢?还好asp.net在Page类中提供了一个InitializeCulture()去重写.这个方法在页面的生命周期中很早的被执行,我们可以在这里设置当前线程的UICulture和Culture属性
如果想在所有的页面实现更换语言,我们可以创建一个BasePage页面,让其他页面继承.
但是InitializeCulture()事件执行的比初始化控件要早,如何获取控件的值呢?答案是用Form集合
为了本地化还需设置页面编码
<globalization responseEncoding"=utf-8"requestEncoding="utf-8" fileEncoding="utf-8" />
定义语言阅读方向
这是必须的因为有些语言的阅读顺序是从右到左的.我们可以设置dir属性达到目的.这个标记用在<html>或<body>中.属性值从资源文件中读取,RTL或LTR.
<body runat="server" dir="<%$ Resources: TestSiteResources, Direction %>">
用数据库实现本地化
总结
1.不要依赖浏览器的设置,给出一个切换语言的链接.
2.用资源文件分离表示层的数据.如果找不到指定的资源文件,asp.net将使用默认的资源文件.
3.当使用数据库表储存数据和内容时,你需要创建单独的表储存本地化内容.
4.如果你用sn.exe创建强名称的主程序程序集,你需要用相同密钥对的私钥签名附属程序集(资源).强名称的程序集要求附属程序集也是强名称的.
Created by jecray
相关文章推荐
- asp.net 2.0中的全球化与本地化
- ASP.NET 2.0的全球化与本地化之全球化
- asp.net 2.0中的全球化与本地化
- ASP.NET 2.0的全球化与本地化之全球化
- .NET-全球化与本地化-深入研究系列(2) ASP.NET 2.0 本地化新特性
- ASP.NET 2.0的全球化与本地化之全球化
- ASP.NET Forums 2.0 本地化修改(三)
- asp.net 2.0 语言包 全球化
- ASP.NET 全球化和本地化
- [翻译]ASP.NET 2.0中的健康监测系统(Health Monitoring)(1) - 基本应用
- [翻译]asp.net 2.0中的url映射
- 使用ASP.NET 2.0 Profile存储用户信息[翻译]
- ASP.NET 2.0 本地化2
- 使用ASP.NET 2.0 Profile存储用户信息[翻译] Level 200
- 使用ASP.NET 2.0 Profile存储用户信息[翻译]
- ASP.NET 2.0 中的资源与本地化
- 一个完整的ASP.NET 2.0 URL重写方案[翻译]
- 在ASP.NET 2.0中实现本地化
- [翻译]你或许还未听说过的一些ASP.NET 2.0要诀
- 使用ASP.NET 2.0 Profile存储用户信息_2[翻译] Level 200