入鄉隨俗:ASP.NET的本地化(Localization)簡介

來源:互聯網
上載者:User

在實際的開發過程中,經常遇到這種情況:同一個網站,在不同的國家需要顯示不同的語言。在美國顯示英語,在中國顯示中文。下面就用幾個簡單的例子來說明ASP.NET提供的本地化支援。

          楔子:

ASP.NET中的資源檔有兩種:一種是全域資源檔,放在App_GlobalResources目錄下,可以被網站中的任意頁面或者網站訪問;一種是局部資源檔,放在App_LocalResources目錄下,只能被一個特定的頁面訪問。
在下面的例子中會看到這兩種資源檔。

 

1. 對伺服器控制項應用本地化。

情境:

 頁面上有一個按鈕,在美國讓它顯示"Read Me",在中國讓它顯示"讀我"

實施:

1.1. 拖一個按鈕到頁面上,設定它的Text屬性。


        

    1.2. 選中按鈕,在菜單上選擇"Tools"->"Generate Local Resource".

    (由於我用的是英文系統,如果你用的是中文系統,也在相應位置找到中文菜單)

      點擊後,發現App_LocalResources檔案夾和Default.aspx.resx被建立了。

 

  這裡建立的Default.aspx.resx就是一個局部資源檔,只能在Default.aspx的代碼中訪問,其他地方訪問不到。

  

  開啟Default.aspx.resx,可以看到裡面已經自動建立了與我們這個按鈕相關的一些索引值對。

 

  將Default.aspx切換到代碼模式,發現與Resource相關的屬性已經被自動加上了。

  

  1.3. 現在將Default.aspx.resx複製一份,重新命名為Default.aspx.zh-CN.resx.

   
  

  1.4. 開啟Default.aspx.zh-CN.resx, 將裡面Button1Resource1.Text的值改成中文。

  
    

         運行結果:

在IE中瀏覽該頁面,由於我用的是英文系統,所以預設顯示是Read Me.

現在我來更改IE的語言,在IE菜單中,Tools->Internet Options->Languages, 將中文移動到第一位。

再次瀏覽這個網頁,發現按鈕的文字已經變成中文的了。

 

2. 本地化HTML內容。

情境:

在上面的例子中我們已經看到了如何對伺服器控制項進行本地化,那麼如果有一段靜態HTML內容,該如何對它進行本地化那?

比如,下面的一段HTML代碼,我點擊Tools->Generate Local Resource,沒有任何反應。


  

實施:

2.1. 將這段靜態HTML代碼用asp: Localize控制項包起來,注意asp: Localize控制項要有唯一的ID和runat="Server"屬性。


  

2.2. 現在在設計檢視中選擇該asp:Localize控制項,然後點擊菜單中的Tools->Generate Local Resource. 就會發現程式碼檢視中的標籤被改變了。


  

2.3 雙擊開啟Default.aspx.resx, 發現對應的索引值對已經對添加了。


  

2.4. 當然,對於Default.aspx.zh-CN.resx,我們需要手動添加一個同樣的索引值對。


  

運行結果:

以下分別是IE語言設定為英文和中文時的執行結果:


    


  

 

3. 格式化Site Map.

情境:

網站有一個網站導覽,用Site Map實現的,現在想要讓它也實現本地化。

以下是代碼結構:


 


   

 
 

實施:

3.1. 為Site Map建立兩個Resource檔案。

         

          由於Site Map是全域使用的,它對應的資源檔也是全域有效,所以這兩個資源檔一定要放在App_GlobalResources檔案夾下,而不是App_LocalResources,否則程式會報錯的。

3.2. 在兩個資源檔中分別添加英文和中文的索引值對。

    

   

3.3. 為Web.sitemap添加本地化相關的屬性。

   

 

 具體屬性有:

 3.3.1. 為siteMap根節點添加enableLocalization="true"

 3.3.2. 對於需要本地化輸出的字串,用$resources:ClassName,KeyName,DefaultValue的形式指向資源檔。我們的例子中沒有指定預設值,如果想指定預設值,加個逗號,後面寫值就可以。

         運行結果:

         以下分別是英文和中文下的顯示結果:

        

        

 

        4. 擷取資源檔索引值對的幾種方式;

        提問:

       我建立了資源檔,在裡面定義了一些索引值對,有哪幾種方式可以擷取到資源檔裡面的索引值對那?

      
  

      回答:

      有如下的幾種方式:

      4.1. 讀取全域資源

        4.1.1.

           
  

        4.1.2. 

           
  

       4.1.3.

          
  

    4.2 讀取局部資源。

       4.2.1.

           
  

      4.2.2.

          
  

      4.2.3.

         
  

 

      5. 動態更改當前語言。

    情境:

    在上面的幾個例子中,當我們測試頁面的時候,都是手動更改IE的設定來選擇語言。那麼通過程式怎麼來做這件事情那?

    實施:

    下面通過一個例子來示範。

    5.1. 首先建立一個ListBox和一個Button,用來向伺服器端傳遞使用者選擇的語言。


      

    5.2. 在伺服器端重寫InitializeCulture方法,擷取使用者選擇,並且設定當前顯示語言。


      

    運行結果:

    選擇中文時:


      

    選擇英文時:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.