[Globalization] 在 .aspx 畫面中嵌入多語系文字

如果你希望在畫面中有某一個 Label 控制項,當瀏覽器切換到中文時,讓控制項顯示中文,切換到英文時顯示英文,切換到日文時顯示日文... 這時候你可以有兩種做法。第一種,是從 VS2005 選擇「工具」、「建立本機資源」以產生一個 Local Resource 檔案,你再複製這個 .resx 檔案去產生其它種語言的相關檔案...

 

如果你希望在畫面中有某一個 Label 控制項,當瀏覽器切換到中文時,讓控制項顯示中文,切換到英文時顯示英文,切換到日文時顯示日文... 這時候你可以有兩種做法。第一種,是從 VS2005 選擇「工具」、「建立本機資源」以產生一個 Local Resource 檔案,你再複製這個 .resx 檔案去產生其它種語言的相關檔案(請參考「[Globalization] 多語系網站建置計畫」)。

第二種方法,則是從 App_GlobalResources 資料夾產生各個相關的 Global Resource 檔案,例如:

  • App.resx (預設的檔案;當找不到指定語系的檔案時,會自動使用此檔)
     
  • App.zh-CHT.resx (中文正體)
     
  • App.zh-CHS.resx (中文簡體)
  • App.en.resx (英文)
  • App.ja (日文)
  • ... (依此類推)

這幾個檔案的 Key 應該維持一致。例如每一個檔案都有一個叫做 Wait 的 Key,它的值在 App.zh-CHT.resx 中為「網頁處理中,請稍候...」,在 App.en.resx 中為「Please wait while your request is in progress...」等等。

接著,你就可以在任何網頁中使用以下的 Label 控制項:

<asp:Label ID="lbProgressing" runat="server" Text="<%$ Resources:App, Wait %>" /> 

請注意這裡的「App」和 App.*.resx 檔名對應,「Wait」與各 .resx  檔中的 Key 名稱對應。
 

使用這種做法,這個 Label 控制項(不管在哪一個畫面中)就會隨網頁的語系而顯示不同的文字了。

如果你使用 Local Resource(如第一種做法),你所建立的資源檔只能使用於指定的網頁。如果你使用 Global Resource(如第二種做法),你所建立的資源檔可以使用在任何一個網頁。因此,如果你有什麼文字是經常會跨網頁出現的,才需要使用第二種做法;在平常的狀況中,還是應該採用第一種做法。


Dev 2Share @ 點部落