zoukankan      html  css  js  c++  java
  • 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 瑞典语
  • 相关阅读:
    位集合
    多线程进行http请求
    mysql--测试前缀索引能否用于order by 或者 group by
    用mysql触发器实现log记录
    源码安装mysql
    C语言:void指针
    C语言:枚举类型
    C语言:结构体与数组
    C语言:联合变量
    Linux 基础入门
  • 原文地址:https://www.cnblogs.com/sig556/p/1771357.html
Copyright © 2011-2022 走看看