ASP.net國際化–頁面可以選擇輸出語言

來源:互聯網
上載者:User

國際化(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 瑞典語

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.