使用CultureInfo实现多语言本地化理论课.ppt

上传人:sh****n 文档编号:2917737 上传时间:2019-12-04 格式:PPT 页数:41 大小:2.28MB
返回 下载 相关 举报
使用CultureInfo实现多语言本地化理论课.ppt_第1页
第1页 / 共41页
使用CultureInfo实现多语言本地化理论课.ppt_第2页
第2页 / 共41页
使用CultureInfo实现多语言本地化理论课.ppt_第3页
第3页 / 共41页
点击查看更多>>
资源描述
,使用CultureInfo实现多语言本地化,ASP.NET企业级应用编程第14章,北京奥运会官网-汉语,北京奥运会官网-英语,北京奥运会官网-法语,区域文化 在页面元素设置区域文化 在后台代码设置区域文化 资源文化 根据站点文化获取本地资源 根据站点文化获取全局资源,本章目标,(一)区域文化,设置当前文化,在Page指令中设置文化 以编程方式设置文化,在Page指令中设置Culture,Culture属性,常用的文化名称 zh-CN=Chinese(China) en-US=English(United States) en-GB=English(United Kingdom),protected void Page_Load(object sender, EventArgs e) this.lblToday.Text = DateTime.Now.ToString(“D“); this.lblPrice.Text = (11.5).ToString(“c“); ,在Page指令中自动检测文化,如果需要使用检测到的浏览器首部自动设置Culture,就可以通过设置页面指令的Culture来实现。 下面将Culture设置为“auto:zh-cn“,表示若不能从浏览器检测到默认的语言参数设置时,冒号后面的文化名称用来指定默认文化。,文化影响ASP.NET控件,Page指令中Culture属性值会自动影响Calendar控件的呈现行为。,在配置文件中设置文化,在web.config中添加如下配置,那么若不能从浏览器检测到默认的语言参数设置时,整个站点的文化就被设置称en-US,如果用户设置了语言,则采用用户选择的语言文化:,以编程方式设置文化,Page.Culture 通过该属性设置当前页面的文化 Request.UserLanguages 获取用户浏览器中设置的语言首选项集合 System.Globalization.CultureInfo.GetCultures 获取由指定CultureTypes参数筛选的区域列表,检测用户的习惯语言列表,Request.UserLanguages可以获取请求的用户的习惯语言列表,protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) string list = Request.UserLanguages; foreach (string s in list) string name = s.Split(;)0; bltAuto.Items.Add(name); protected void bltAuto_Click(object sender, BulletedListEventArgs e) Page.Culture= bltAuto.Itemse.Index.Value; this.lblToday.Text = DateTime.Now.ToString(“D“); this.lblPrice.Text = (11.5).ToString(“c“); ,获取特定文化的区域性列表,CultureInfo类的GetCultures方法获取由指定 CultureTypes 筛选的区域性列表。,protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) CultureInfo list=CultureInfo.GetCultures(CultureTypes.SpecificCultures); RadioButtonList1.DataSource = list; RadioButtonList1.DataTextField = “DisplayName“; RadioButtonList1.DataValueField = “Name“; RadioButtonList1.DataBind(); RadioButtonList1.AutoPostBack = true; RadioButtonList1.RepeatDirection = RepeatDirection.Horizontal; RadioButtonList1.RepeatColumns = 4; protected void RBL_SelectedIndexChanged(object sender, EventArgs e) Page.Culture = RadioButtonList1.SelectedItem.Value; this.lblToday.Text = DateTime.Now.ToString(“D“); this.lblPrice.Text = (11.5).ToString(“c“); ,获取特定文化的区域性列表,不同的文化中的字符串排序,在不同的文化中,字符串的排序结果也会受到影响,string names = “苹果“, “牛蛙“, “牛肉“ ;,上面的数组在中文文化和日文文化的排序结果就不相同,protected void Button1_Click(object sender, EventArgs e) SortStringByCulture(“zh-cn“); protected void Button2_Click(object sender, EventArgs e) SortStringByCulture(“ja-jp“); void SortStringByCulture(string c) string names = “苹果“, “牛蛙“, “牛肉“ ; CultureInfo ci = new CultureInfo(c); Page.Culture = ci.Name; lbCultrue.Text = ci.Name; Array.Sort(names); BulletedList1.DataSource = names; BulletedList1.DataBind(); ,(二)资源文化,创建本地资源,显式本地化表达式 隐式本地化表达式 将本地资源应用于页面属性 以编程方式获取本地资源 简化大块文本的本地化,创建本地资源,显式本地化表达式 资源文件必须保存在App_LocalResources文件夹中。 资源文件的添加 资源文件的命名规则:pageName.cultureName.resx test.aspx.resx 默认的Test.aspx资源文件,若没有其他资源文件符合用户的语言设置,则用此资源文件来应用 test.aspx.zh-CN.resx 特定文化,若符合用户特定文化语言设置,就应用此资源文件,显式本地化表达式,在页面中使用本地资源 1、指令中添加UICulture属性并设其值为auto 2、本地化资源表达式 ,隐式本地化表达式,隐式本地化表达式 显式资源表达式必须对控件的每一个属性在页面进行设置,隐式本地化表达式只需简单地添加一个meta:resourceKey属性到任意需要本地化的控件中,从而可以更简单地本地化一个已存在的网站。 配置控件属性,隐式本地化表达式,设置本地资源文件 模式:Key.Property Key:可以任意命名,一般采用控件名称 Property:必须与要本地化的控件的属性相匹配,Demo.aspx.resx,Demo.aspx.en-us.resx,将本地资源应用于页面属性,显式资源文件PageTitleExplicit.aspx.resx, “ runat=“server“ / ,使用资源表达式设置诸如页面标题这样的的页面属性,将本地资源应用于页面属性,隐式资源文件PageTitleImplicit.aspx.resx,以编程方式获取本地资源,调用Page对象的GetLocalResourceObject()方法可以获取本地资源文件的内容,protected void btLogin_Click(object sender, EventArgs e) string rs = this.GetLocalResourceObject(“welcome“).ToString(); lbMsg.Text = string.Format(rs, tbName.Text); ,简化大块文本的本地化,当您想在网页上的特定区域显示本地化文本时,可以使用 Localize 控件在网页上保留显示本地化文本的位置。 Localize 控件从 Literal 控件继承,与该控件完全相同。设计时使用 Localize 控件将可以将本地化的静态文本与其它静态文本区分开来。,简化大块文本的本地化,Localize 控件的 Mode 属性 Transform:添加到控件中的任何标记都将进行转换,以适合发出请求的浏览器的协议。如果向使用 HTML 以外的其他协议的移动设备呈现内容,此设置非常有用。 PassThrough:添加到控件中的任何标记都将按原样呈现在浏览器中 Encode:添加到控件中的任何标记都将使用 HtmlEncode 方法进行编码,该方法将把 HTML 编码转换为其文本表示形式。,简化大块文本的本地化,默认资源 LocalizeResource.aspx.resx:,英文资源LocalizeResource.aspx.en-us.resx,创建全局资源,以属性方式获取全局资源 以编程方式获取全局资源 使用强类型获取全局资源,以属性方式获取全局资源,获取表达式:,中文资源文件Site.resx:,英文资源文件Site.en-us.resx:,“ % “ /,以属性方式获取全局资源,以编程方式获取全局资源,指令:自动获得语言 CultureInfo.CurrentCulture.Name属性:获得IE语言 GetGlobalResourceObject()方法 :获得全局资源,以编程方式获取全局资源,string key=CultureInfo.CurrentCulture.Name.ToLower().Replace(“-“, “_“); imgCountry.ImageUrl = “CodeFileGlobalResource.ashx?key=“ + key;,string className = “ Country “; string key = context.Request.QueryString“key“.ToString(); Bitmap bmp = (Bitmap) HttpContext.GetGlobalResourceObject(className, key); MemoryStream ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); Response.BinaryWrite(ms.ToArray();,CodeFileGlobalResource.aspx,CreateImageByGlobalResource.ashx,创建全局资源,使用强类型获取全局资源 ASP.NET Framewormk自动把本地资源编译成程序集,而全局资源就编译成一个类,这样全局资源就可以用强类型表达式在代码中处理全局资源,当创建一个资源时,一个新类会自动添加到Resources命名空间。该类以属性的形式暴露了所有资源文件中的项目,使用强类型获取全局资源,全局资源文件App_GlobalResourcesCountry.resx:,string resources=Resources.Country.ImagePath; string culture=CultureInfo.CurrentCulture.Name.ToLower(); imgCountry.ImageUrl =string.Format(resources,culture);,总结,如何为页面设置文化? 如何改变客户端的文化? 如何为站点创建多个文化资源? 如何实现大块文本的本地化? 如何以编程方式访问本地资源?,练习,1.在指令中设置哪个属性可以影响本地化 () UICulture Culture Inherits AutoEventWireup,练习,2.要自动检测文化可用Request. 属性返回Accept-Language首部的值() A.UserInfo B. Languages C. AcceptLanguage D. UserLanguages,练习,3在配置文件中也可以通过设置()属性来设置文化 GlobalCulture ConfigSource UICulture Culture,练习,4. 对于CultureInfo类中的方法GetCultureInfo描述正确的是() A.创建表示与指定名称关联的特定区域性的 CultureInfo B.检索某个区域性的缓存的只读实例 C.检索高效只读的 CultureInfo 对象 D.获取由指定CultureTypes参数筛选的支持的区域性列表,练习,5.在 ASP.NET 页中,可以使用下列哪些方法检索 由 ASP.NET 编译并由 .NET Framework 资源管理 器管理的资源文件中的值() A.隐式本地化 B.显式本地化 C.以编程方式 D. 以上都是,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!