[转]利用.net2.0的资源文件实现多语言开发!

我个人觉得这个是比较重要的,所以想写清楚点,自己也一直在研究用xml实现!
但是还没投入实践,技术有限,我也才刚进入社会的学生而已!!
等做出来再写篇blog和大家分享
不过本人也是菜鸟,所以有什么地方写错了,希望大家能多多指教!
首先我在最后面贴了一篇很好的文章,希望大家先去看看那个再来实际操作我的例子!这样肯定ok,不然我估计大家看我例子到后面会傻掉,呵呵!~
首先我会讲自己如何实现的一步步讲给大家听



首先我做的项目里前台和后台都需要实现多语言!后台因为是用的母版,所以有点不一样!我先跟大家讲一下我前台是怎么实现的:

1.首先在配置文件里中添加一个名为LanguagePreference的基于字符串的配置文件属性来支持匿名识别用户区域性的功能。
  请注意anonymousIdentification元素的enabled属性必须为“true”,否则匿名识别功能就不可用。
  1. <!--此节是为了让系统自动为匿名用户生成唯一标识,另外的allowanonymous属性表示languagepreference属性可以被匿名用户访问-->
  2. <anonymousIdentification enabled="true"></anonymousIdentification>
  3. <profile>
  4. <properties>
  5. <add name="languagePreference" type="string" defaultValue="Auto" allowAnonymous="true"></add>
  6. </properties>
  7. </profile>


 

2.在主页面加上一个dropdownlist,记得打开他的autopostback属性
  1. <asp:DropDownList ID="drdlstLanguageList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drdlstLanguageList_SelectedIndexChanged" Width="65px">
  2. <asp:ListItem Value="Auto" Text="请选择语言"></asp:ListItem>
  3. <asp:ListItem Value="en-us" Text="英语"></asp:ListItem>
  4. <asp:ListItem Value="zh-cn" Text="简体中文"></asp:ListItem>
  5. </asp:DropDownList>



3.
  1. //通过下拉菜单选择页面显示语言
  2.  protected void drdlstLanguageList_SelectedIndexChanged(object sender, EventArgs e)
  3.  {
  4.  Profile.languagePreference = drdlstLanguageList.SelectedValue;
  5.  //这里会强制发生一次从浏览器到 Web 服务器的新往返程,从而在使用所需的语言首选项设置了配置文件属性后,重新启动页面的生命周期。
  6.  Response.Redirect(Request.Url.AbsolutePath);
  7.  }


4.编写一个PageBase类,也就一个cs文件,只不过它继承自System.Web.UI.Page,并作为站点中所有页面类的基类。
这么做的目的其实很简单,就是为了将各个页面中一些共同的处理过程提炼出来放到基类中,以减少代码重复,提高可维护性。
  1. using System;
  2.  using System.Data;
  3.  using System.Configuration;
  4.  using System.Web;
  5.  using System.Web.Security;
  6.  using System.Web.UI;
  7.  using System.Web.UI.WebControls;
  8.  using System.Web.UI.WebControls.WebParts;
  9.  using System.Web.UI.HtmlControls;
  10.  
  11.  using System.Threading;
  12.  using System.Globalization;
  13.  
  14.  /// <summary>
  15.  /// PageBases 的摘要说明
  16.  /// </summary>
  17.  public class PageBases:System.Web.UI.Page
  18.  {
  19.  public PageBases()
  20.  {
  21. //
  22.  // TODO: 在此处添加构造函数逻辑
  23. //
  24.  }
  25.  
  26.  protected override void InitializeCulture()
  27.  {
  28.  base.InitializeCulture();
  29.  
  30.  string language = (String)Context.Profile.GetPropertyValue("languagePreference");
  31.  
  32.  if (!String.IsNullOrEmpty(language) && (language != "Auto"))
  33.  {
  34.  Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
  35.  Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
  36.  }
  37.  
  38.  }
  39.  }


 

5.这样我们的多语言其实就差不多实现了,还差的就是利用资源文件开始大量的翻译!
我们随意选择一个页面,转到他的设计页面,然后工具/生成本地资源
这样就会多出一个文件夹App_LocalResources,里面还会多出一个和选择页面的名字项目的resx文件
例如刚选择的哪个页面是aa.aspx  那么生成的资源文件就是aa.aspx.resx
那么我们现在复制他,复制一个先,等大家明白了自己再加!
然后将他该成aa.aspx.en-us.resx,如果你需要其他语言就再复制文件,记得象aa.aspx.en-us.resx一样要做更改!
这里需要注意更改的部分必须象en-us一样是区域性标识!
最后就是进行翻译工作!

引用通告地址: 点击获取引用地址
标签: 编程 软件 CT2 汉化
评论: 0 | 引用: 0 | 阅读: 1128
 加入网摘
发表评论
昵 称(*): 密 码:
网 址: 邮 箱:
选 项:    
内 容(*):