How to create a localize ASP.NET 2.0 web page in Visual Studio 2005

大家在瀏覽網頁時, 應該常會看到一個 link, 或 dropdown list 給 user 選擇網頁的語系或 user 所在的地區, 例如繁體中文, 英文, ...等等. 而利用 VS 2005, 我們現在可以在幾個簡單的步驟內做到不需要 user 多一個步驟去選擇, 即可依 user browser 的設定, 叫出我們存放在網站 resource file 裏的字串而達到 localize 網站的效果. 以下即為簡單設定網頁及建立資源檔的步驟:

1. 在 VS 2005 中開啟要 localize 的網站

2. 選取 Tools -> Generate Local Resource

3. 這時 Visual Studio 會在 Solution Explorer 的網站這個節點底下自動 generate 出一個 App_LocalResources 的資料夾, 並生成一個選取網頁的資源檔, 例如 Default.aspx.resx

4. 複製一個所需文化特性的資源檔並 localize 所有資源檔中的字串, 例如我要將網頁 localize 成繁體中文, 就可將上個步驟生成的資源檔複製成 Default.aspx.zh-tw.resx, 這裏要注意藍色的部分是依不同文化特性而定, 例如我如果要 localize 成西班牙文可能就要另外複製一個 Default.aspx.es-es.resx 資源檔.

5. 按 F5 測試你的網頁. 到這裏為止應該就完成所有 localize 的工作了, 依不同的 browser 顯示語言, 網頁即會自動顯示不同的 localized 頁面, 我們無需再另外寫 code 去呼叫或改變網頁的文化特性.

如果我們在 VS 2005 中打開 Default.aspx 的 html 程式碼頁面, 我們會發現在我們為此頁面的資源檔後, 我們會發現 Visual Studio 後自動幫我們把 meta:resourcekey 塞進我們的網頁控制項中, 例如:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %>

<asp:Button ID="Button1" runat="server" meta:resourcekey="Button1Resource1" />

當然我們在資源檔中亦必需 localize 所有相關的字串, 例如以上的例子如果要設定原來 Button1 的中文 Text , 就必需在 Default.aspx.zh-tw.resx 中找到 Button1Resource1.Text 將其值填入我們想要在中文環境顯示的中文.