[转]利用.net2.0的资源文件实现多语言开发!
作者: 实验小白鼠 日期: 2007-09-22 00:08
我个人觉得这个是比较重要的,所以想写清楚点,自己也一直在研究用xml实现!
但是还没投入实践,技术有限,我也才刚进入社会的学生而已!!
等做出来再写篇blog和大家分享
不过本人也是菜鸟,所以有什么地方写错了,希望大家能多多指教!
首先我在最后面贴了一篇很好的文章,希望大家先去看看那个再来实际操作我的例子!这样肯定ok,不然我估计大家看我例子到后面会傻掉,呵呵!~
首先我会讲自己如何实现的一步步讲给大家听
首先我做的项目里前台和后台都需要实现多语言!后台因为是用的母版,所以有点不一样!我先跟大家讲一下我前台是怎么实现的:
1.首先在配置文件里中添加一个名为LanguagePreference的基于字符串的配置文件属性来支持匿名识别用户区域性的功能。
请注意anonymousIdentification元素的enabled属性必须为“true”,否则匿名识别功能就不可用。
2.在主页面加上一个dropdownlist,记得打开他的autopostback属性
3.
4.编写一个PageBase类,也就一个cs文件,只不过它继承自System.Web.UI.Page,并作为站点中所有页面类的基类。
这么做的目的其实很简单,就是为了将各个页面中一些共同的处理过程提炼出来放到基类中,以减少代码重复,提高可维护性。
5.这样我们的多语言其实就差不多实现了,还差的就是利用资源文件开始大量的翻译!
我们随意选择一个页面,转到他的设计页面,然后工具/生成本地资源
这样就会多出一个文件夹App_LocalResources,里面还会多出一个和选择页面的名字项目的resx文件
例如刚选择的哪个页面是aa.aspx 那么生成的资源文件就是aa.aspx.resx
那么我们现在复制他,复制一个先,等大家明白了自己再加!
然后将他该成aa.aspx.en-us.resx,如果你需要其他语言就再复制文件,记得象aa.aspx.en-us.resx一样要做更改!
这里需要注意更改的部分必须象en-us一样是区域性标识!
最后就是进行翻译工作!
但是还没投入实践,技术有限,我也才刚进入社会的学生而已!!
等做出来再写篇blog和大家分享
不过本人也是菜鸟,所以有什么地方写错了,希望大家能多多指教!
首先我在最后面贴了一篇很好的文章,希望大家先去看看那个再来实际操作我的例子!这样肯定ok,不然我估计大家看我例子到后面会傻掉,呵呵!~
首先我会讲自己如何实现的一步步讲给大家听
首先我做的项目里前台和后台都需要实现多语言!后台因为是用的母版,所以有点不一样!我先跟大家讲一下我前台是怎么实现的:
1.首先在配置文件里中添加一个名为LanguagePreference的基于字符串的配置文件属性来支持匿名识别用户区域性的功能。
请注意anonymousIdentification元素的enabled属性必须为“true”,否则匿名识别功能就不可用。
- <!--此节是为了让系统自动为匿名用户生成唯一标识,另外的allowanonymous属性表示languagepreference属性可以被匿名用户访问-->
- <anonymousIdentification enabled="true"></anonymousIdentification>
- <profile>
- <properties>
- <add name="languagePreference" type="string" defaultValue="Auto" allowAnonymous="true"></add>
- </properties>
- </profile>
2.在主页面加上一个dropdownlist,记得打开他的autopostback属性
- <asp:DropDownList ID="drdlstLanguageList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drdlstLanguageList_SelectedIndexChanged" Width="65px">
- <asp:ListItem Value="Auto" Text="请选择语言"></asp:ListItem>
- <asp:ListItem Value="en-us" Text="英语"></asp:ListItem>
- <asp:ListItem Value="zh-cn" Text="简体中文"></asp:ListItem>
- </asp:DropDownList>
3.
- //通过下拉菜单选择页面显示语言
- protected void drdlstLanguageList_SelectedIndexChanged(object sender, EventArgs e)
- {
- Profile.languagePreference = drdlstLanguageList.SelectedValue;
- //这里会强制发生一次从浏览器到 Web 服务器的新往返程,从而在使用所需的语言首选项设置了配置文件属性后,重新启动页面的生命周期。
- Response.Redirect(Request.Url.AbsolutePath);
- }
4.编写一个PageBase类,也就一个cs文件,只不过它继承自System.Web.UI.Page,并作为站点中所有页面类的基类。
这么做的目的其实很简单,就是为了将各个页面中一些共同的处理过程提炼出来放到基类中,以减少代码重复,提高可维护性。
- using System;
- using System.Data;
- using System.Configuration;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- using System.Threading;
- using System.Globalization;
- /// <summary>
- /// PageBases 的摘要说明
- /// </summary>
- public class PageBases:System.Web.UI.Page
- {
- public PageBases()
- {
- //
- // TODO: 在此处添加构造函数逻辑
- //
- }
- protected override void InitializeCulture()
- {
- base.InitializeCulture();
- string language = (String)Context.Profile.GetPropertyValue("languagePreference");
- if (!String.IsNullOrEmpty(language) && (language != "Auto"))
- {
- Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
- Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
- }
- }
- }
5.这样我们的多语言其实就差不多实现了,还差的就是利用资源文件开始大量的翻译!
我们随意选择一个页面,转到他的设计页面,然后工具/生成本地资源
这样就会多出一个文件夹App_LocalResources,里面还会多出一个和选择页面的名字项目的resx文件
例如刚选择的哪个页面是aa.aspx 那么生成的资源文件就是aa.aspx.resx
那么我们现在复制他,复制一个先,等大家明白了自己再加!
然后将他该成aa.aspx.en-us.resx,如果你需要其他语言就再复制文件,记得象aa.aspx.en-us.resx一样要做更改!
这里需要注意更改的部分必须象en-us一样是区域性标识!
最后就是进行翻译工作!
评论: 0 |
引用: 0 |
阅读: 1128
加入网摘
显示Tag关联文章
[下载]Moonshell 2.0 beta2 中文尝鲜版 (2009-01-05 09:02)
为了Moonshell 2.0,下载Delphi (2009-01-01 13:07)
直接支持中文编码最简单 (2008-10-07 23:16)
首个完整的汉化工具 (2008-09-24 23:15)
手上的几项活 (2008-09-13 19:34)
炸弹人大陆2的文本真那个啥 (2008-09-08 11:56)
我喜爱的《炸弹人大陆》 (2008-09-03 11:31)
这几天的成功与失败 (2008-08-29 18:01)
手痒写F2blog转Wordpress程序 (2008-08-06 21:20)
GBA0642-入侵者汉化版 发布 (2008-08-01 08:53)
为了Moonshell 2.0,下载Delphi (2009-01-01 13:07)
直接支持中文编码最简单 (2008-10-07 23:16)
首个完整的汉化工具 (2008-09-24 23:15)
手上的几项活 (2008-09-13 19:34)
炸弹人大陆2的文本真那个啥 (2008-09-08 11:56)
我喜爱的《炸弹人大陆》 (2008-09-03 11:31)
这几天的成功与失败 (2008-08-29 18:01)
手痒写F2blog转Wordpress程序 (2008-08-06 21:20)
GBA0642-入侵者汉化版 发布 (2008-08-01 08:53)
发表评论
订阅
上一篇
返回
下一篇
