ASP.net国际化--页面可以选择输出语言

国际化(internationalization)是让我们所写的程序,有多语言显示,有点象见什么人说什么话的味

道,呵呵!
下面是一个例子:
第一步:
新建一个Website,在这个工程中添加一个类,继承 System.Web.UI.Page,主要代码如下:

  protected override void InitializeCulture()
    {
        if (Request.Cookies["Language"] != null && Request.Cookies["Language"].Value !=

null && Request.Cookies["Language"].Value != "")
        {
          setCulture();
        }
        else
        { //设置Cookie
          Response.Cookies["Language"].Value =
            (Request.Headers["accept-language"].Split(",".ToCharArray())[0]);
          Response.Cookies["Language"].Expires = DateTime.Now.AddDays(1000);
          setCulture();
        }
        base.InitializeCulture();
    }
    private void setCulture()
   {
       try
       {
         String selectedLanguage = Request.Cookies["Language"].Value;
         UICulture = selectedLanguage;
         Culture = selectedLanguage;

         System.Threading.Thread.CurrentThread.CurrentCulture =
           System.Globalization.CultureInfo.CreateSpecificCulture(selectedLanguage);
         System.Threading.Thread.CurrentThread.CurrentUICulture = new
           System.Globalization.CultureInfo(selectedLanguage);
       }
       catch
       {
         Response.Cookies.Clear();
       }
   }

第二步:添加一个WebPage 主要代码如下:

protected void Page_Load(object sender, EventArgs e)
   {  
       Response.Cookies["Language"].Value = Request["Language"];
       Response.Cookies["Language"].Expires = DateTime.Now.AddDays(1000);  
       Response.Redirect(Server.UrlDecode(Request["url"]));
   }
第三步:
添加要显示国际化的页面:
  注意:这个页面要继承我们第一步写的那个类
主要代码:

<asp: Label ID="Label1" runat="server" Text="<%$ Resources:ResourceGlobal,test%>"></asp:

Label>
另外我们还要在此页做国际化测试,所以还要添加一个DropdownList,做为选择显示语言

<asp: DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"

OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp: ListItem Text="English Version" Value="en-US"></asp: ListItem>
<asp: ListItem Text="中 文 版" Value="zh-CN"></asp: ListItem>
</asp: DropDownList>
同时在代码文件添加如下代码:

protected void Page_Load(object sender, EventArgs e)
   {

       if (!Page.IsPostBack)
       {
         if (Request.Cookies["Language"] == null || Request.Cookies["Language"].Value ==

"")
         {
           foreach (ListItem li in DropDownList1.Items)
           {
               if (li.Value == "")
                 li.Selected = true;
           }
         }
         else
         {
           foreach (ListItem li in DropDownList1.Items)
           {
               if (li.Value.ToLower() == Request.Cookies["Language"].Value.ToLower())
                 li.Selected = true;
           }
         }
       }

   }
   protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
   {
       Response.Redirect("~/ChangeLanguage.aspx?Language=" + DropDownList1.SelectedValue +

"&url=" + Server.UrlEncode(Request.Url.PathAndQuery), true);

   }
第四步:添加资源文件ResourceGlobal.resx和ResourceGlobal.en.resx呵呵,这里,只做中英文测试,

所以只做2个了,如果显示其它语言,请自行添加。
在资源文件里一定要添加一个test键值,这是个测试数据啊。
呵呵OK了,现在可以浏览测试了。

好东西,再给大家分享常用言语代号:
zh-cn 简体中文
zh-tw 繁体中文
da-dk 丹麦语
nl-nl 荷兰语
en-us 英语
fi-fi 芬兰语
fr-fr 法语
de-de 德语
it-it 意大利语
ja-jp 日语
ko-kr 朝鲜语
nb-no 挪威语
pt-br 葡萄牙语
es-es 西班牙语
es-us 西班牙语(美国)
sv-se 瑞典语

转载于:https://www.cnblogs.com/sig556/archive/2010/07/05/1771357.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
此文档是从实际项目中总结出来的,互联网上只有“在单一页面进行语言切换”的教程, 没有“一键切换”的解决方案,更没有同时把5种读取资源文件总结在一起的demo。 本文档重点 1.多种读取方式 2.一键全站切换 步骤 一:新建一个asp.net 空 web应用程序“Internationalization”(图1) 二:右键“Internationalization”--->添加--->添加ASP.NET文件夹--->App_GlobalResources 三:右键“App_GlobalResources”--->添加--->新建项--->资源文件--->GlobalLanguage.resx 四:在GlobalLanguage.resx里添加键值对.(图二) 五:连续复制“GlobalLanguage.resx”两次到“App_GlobalResources”下面,并修改名称为 GlobalLanguage.en-US.resx GlobalLanguage.zh-CN.resx 说明:(为什么会有三个文件呢?系统必须有一个默认文件“GlobalLanguage.resx”,两种语言两个文件.) 六:修改英文和中文资源文件里的键值对。 说明(网上大多做法都是把语言设置为浏览器自动识别语言, 这种方式在实际项目中一般不用,所以直接讲解用程序来控制) 七:添加language1.aspx (图3,4) 八:添加language2.aspx (图5),在设计模式下“工具”--->“生成本地资源”,会自动添加一个“App_LocalResources” 和第五步一样,添加再添加两个资源文件。 language2.aspx.zh-CN.resx language2.aspx.en-US.resx 说明(一键全站切换的实现方法有多种,这里只讲最有效的,编写一个基类,在里面设置一个全局变量lan,所有 页面都继承这个基类,再通过程序修改变量lan,用Session最简单,但是用户过多时对内存的消耗很大, 还可以用数据库和配置文件,但是最好用Cookie,所以下面以Cookie为例子) 九:新建一个母板页“language.Master”(图6,7) 十:添加language3.aspx (图8,9),必须继承Base类 十一:添加language4.aspx (图10),必须继承Base类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值