惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
aimingoo的专栏
aimingoo的专栏
I
InfoQ
C
Check Point Blog
IT之家
IT之家
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
Last Week in AI
Last Week in AI
GbyAI
GbyAI
P
Proofpoint News Feed
量子位
Stack Overflow Blog
Stack Overflow Blog
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
B
Blog
T
The Blog of Author Tim Ferriss
H
Help Net Security
云风的 BLOG
云风的 BLOG

博客园 - Arishuang

数据类型 varchar 和 varchar 在 modulo 运算符中不兼容。 ASP.NET2.0_缓存 ASP.NET2.0_执行页面发送的强类型方法与弱类型方法 ASP.NET中的状态管理功能详解(转载) [ASP.NET] Session 详解(转载) ASP.NET页面下载功能程序(转载) vs2005中“密码最短长度为7,其中必须包含以下非字母数字字符: 1”错误 (转载) ASP.NET中实现页面间的参数传递 QueryString\Application\Session\Cookie (转载) - Arishuang ASP.NET页面跳转的几种方法(转载) 常用正则表达式(转载) C#_解决在控制台中输入Ctrl+Z的问题 C#格式化输出(转载) C#格式化输出 面试题之金山_函数练习3_数值转换并输出数值中各个数字的个数(从低位到高位,输出转换后数值的各个数字个数) 面试题之金山(函数练习2)_字符排序(字母、数字及其它字符)ParseString DS_汉诺塔 XML_(3)_用C#操作缓存中的XML即DOM 观书后感之"NET Web Services:架构与实现 (美)贝列哲 "2008-5-2 下定决心,认定了,就全力以赴.Web应用程序开发--跟你杠上了
ASP.NET2.0_多语言本地化应用程序
Arishuang · 2008-10-05 · via 博客园 - Arishuang

1.设置当前文化

     页面类有两个影响本地化的重要属性均在< % Page % >指令设置:

1).UICulture

     此属性用于指定载入到页面的资源文件,资源文件可以包含页面文本内容的特定语言的翻译版本.其属性值可为中立文化也可为特定文化(下面有介绍)

2).Culture

     此属性决定了诸如日期、数值、货币单位等的格式与排序。此属性值只能为特定文化.
     以上UICulture和Culture属性都接受标准的文化名称作为它们的值。(可在http://www.IETF.org查看标准文化名称)
注:UICulture属性决定了为页面载入哪个资源文件,而Culture是决定了日期,数字,货币数量如何格式化
常用的文化名称如下:
zh-CN=Chinese(China)
en-US=English(United States)
en-GB=English(United Kingdom)

注:每个文化名称有两个部分组成。第一部分代表语言代码,第二部分代表国家/区域代码
即文化名称=语言代码-代表国家/区域代码
若只有语言代码,而无国家/区域代码的文化名称则为中立文化(neutral culture)
若即有语言代码,又有国家/区域代码的文化名称则为特定文化(specific culture)

1.1手动设置文化

实例手动在Page指令中设置:

Code

实例以编程方式设置这些属性:

SelectCulture.aspx


实例用Profile记录用户的文化以便用户以后访问网站时自动进入记录的文化不必再设置(注意:有重写了InitializeCulture()此方法是为页的当前线程设置 Culture 和 UICulture):

SelectCultureProfile.aspx

1.2自动检测文化

即利用浏览器请求一个页面时,它会发送一个Accept-Language首部,其包含了用户习惯的语言列表. 可用Request.UserLanguages属性返回Accept-Language首部的值.

实例显示Accept-Language:

ShowAcceptLanguage.aspx

1.3在Web配置文件中设置文化

< system.web > < globalization culture="en-US" uiCulture="en-US" / > < / system.web >

1.4文化和ASP.NET控件

Culture属性的值会自动地影响诸如Calendar这样的ASP.NET控件的呈现行为。

实例:

ShowCalendar.aspx

2.使用CultureInfo类

     CultureInfo类包含了大约超过150个不同的文化的信息。可以在我们的代码中使用该类的方法返回特定的 区域。使用这些信息来格式化诸如日期、数字和货币数量的值。

2.1使用CultureInfo类格式化字符串值

即在ToString()方法中使用第二个参数。
实例:

3.创建本地资源

     使用资源文件可根据用户的语言修改页面的文本或其他内容。每一个资源文件可以包含页面文本的特定语言的翻译版本.
ASP.NET Framework支持两种类型的资源文件:本地资源和全局资源.
ASP.NET Framewormk自动把本地资源编译成程序集,而全局资源就编译成一个类,这样全局资源就可以用强类型表达式在代码中处理全局资源!
当创建一个资源时,一个新类会自动添加到Resource命名空间.该类以属性的形式暴露了所有资源文件中的项目.

在开始本地化一个页面之前,一定要创建一个默认本地化文件.即如test.aspx.resx

3.1显式本地化表达式(即用显式的< %$ Resources:[**ResourceFileName,] **ResourceKeyName % >为控件属性设置一个特定的资源项目的值)

  1. 先在要本地化页面的文件路径同一级别上建立特殊文件夹App_LocalResources.
  2. 再在App_LocalResources文件夹内添加资源文件其命名如下:
    pageName.[cultureName].resx
    即例如:为页面test.aspx页面关联资源文件那么资源文件的命名将如下:
    test.aspx.resx(默认,若没有其他资源文件符合用户的语言设置,则用此资源文件来应用)
    test.aspx.zh.resx(中立文化,若没有符合用户特定文化语言设置,而有中立文化符合,则用此资源文件)
    test.aspx.zh-CN.resx(特定文化,若符合用户特定文化语言设置,就应用此资源文件)
  3. 然后再完成页面部分.
    1. 在页面的< % Page % >指令中添加UICulture属性并设其值为auto.即< %@ Page Language="C#" UICulture="auto" % >
    2. 接着在相应的控件的属性上用上资源表达式< %$ Resources:[**ResourceFileName,] **ResourceKeyName % > (注:此资源表达式是一个显式的资源表达式,因属性被显式地设置为一个特定的资源项目的值)

      MSDN版资源表达式说明:

      该资源表达式采用以下形式,其中 Class 是可选的(除非资源是全局资源),而 ResourceID 是必需的:
      < %$ Resources: Class , ResourceID % >
      Class 值标识要在使用全局资源时使用的资源文件。在编译 .resx 文件时,将不带扩展名的基文件名显式用作所得程序集的类名。若要使用本地资源文件(与当前页名匹配的文件)中的资源,则不必提供类名,因为 ASP.NET 将该页类与资源类相匹配。
      ResourceID 值是要读取的资源的标识符。在前面的示例中,从全局资源文件 WebResources.resx(或相应的本地化版本)读取按钮的 Text 属性。在该文件中,ASP.NET 将该值用于带有标识符 Button1Caption 的资源及页本身。若要设置页属性,可以在 @ Page 指令中使用资源表达式。

实例之正常无本地资源版(即页面内容不会随着用户的语言文化而改变):

SimplePage.aspx

实例之显式本地资源版(即页面内容会随着用户的语言文化而改变)

(相应的资源文件在此略了,也就先建立App_LocalResources文件夹,再在其中添加相应的资源文件及资源键/值等):

LocalizablePage.aspx

3.2隐式本地化表达式

(即用一个资源键meta:resourceKey="ControlID"本地化控件的多个属性(这些属性在相应的资源文件中以Key(ControlID) . Property格式定义好了))
注:被隐式本地化的控件属性其被定义在资源文件中,则此控件属性在页面中可声明也可不用声明或只给出默认值

使用本地资源的隐式本地化
如果您已为特定页创建了本地资源文件,则可以使用隐式本地化从该资源文件中为控件填充属性值。使用隐式本地化时,ASP.NET 读取资源文件并将资源与属性值相匹配。
若要使用隐式本地化,必须对本地资源文件中的资源使用命名约定,命名约定采用以下模式:

Key . Property

例如,若要为名为 Button1 的 Button 控件创建资源,可以在本地资源文件中创建以下键/值对:
Button1.Text
Button1.BackColor
Label1.Text
可以对 Key 使用任意名称,但 Property 必须与要本地化的控件的属性相匹配。
在页上,对该控件的标记使用特殊的 meta 属性可指定隐式本地化。不必显式指定要本地化的属性。配置为使用隐式本地化的 Button 控件看起来可能类似于下面的形式:
resourcekey 值与相应资源文件中的键相匹配。在运行时,ASP.NET 通过将控件标签用作 resourcekey 将资源与控件属性相匹配。如果在资源文件中定义了某个属性值,则 ASP.NET 会用资源值替换该属性。

实例:

LocalizablePageImplicit.aspx

使用隐式的本地化表达式比显式资源表达式有两个好处.

  1. 隐式资源表达式可以使用一个资源键值重写控件的多个属性.即一个meta:resourceKey="Key"搞定,其他(键.属性)就交给相应的资源文件管理.
  2. 利用隐式本地化表达式,可以更简单地本地化一个已存在的网站,只需简单地添加一个meta:resourceKey属性到任意需要本地化的控件中.

3.3对页面属性使用本地化资源

可以使用资源表达设置诸如页面标题这样的的页面属性。
实例(显式本地化页面方式):

PageExplicit.aspx

实例(隐式本地化页面方式):

PageImplicit.aspx

3.3以编程方式获取本地化资源

在代码中访问本地资源,可以使用GetLocalResourceObject()由方法得到其值.
实例:

ProgramLocalResource.aspx

4.创建全局资源

     本地资源用于特定的页面.而全局资源就用于应用程序的任意页面.任意需要被多个页面共享的本地化内容应该被放在一个全局资源文件中

     可通过在根目录下添加特殊文件夹App_GlobalResources来实现全局资源文件夹,再创建相应的全局资源文件.

实例:

ShowGlobalPage.aspx

4.1以编程方式获取全局资源

利用GetGlobalResourceObject()

实例:

ProgramGlobalResource.aspx

4.2使用强类型本地化表达式

     ASP.NET Framewormk自动把本地资源编译成程序集,而全局资源就编译成一个类,这样全局资源就可以用强类型表达式在代码中处理全局资源! 
     当创建一个资源时,一个新类会自动添加到Resources命名空间.该类以属性的形式暴露了所有资源文件中的项目.

实例:

ProgramGlobalTyped.aspx

5使用Localize控件

Localize控件与控件Literal控件非常相似(它继承自Literal控件),也就Localize控件可直接在源码视图状态下直接编写

实例:

ShowLocalizeControl.aspx