逐步解說:使用資源進行 ASP.NET 的當地語系化
更新:2007 年 11 月
建立當地語系化 Web 網頁的有效方法是,根據使用者的語言和文化特性使用網頁文字和控制項的資源。透過使用資源物件中的屬性,ASP.NET 可以根據使用者的語言和文化特性在執行階段選取正確的屬性。處理的方式相當直接:
資源檔 (.resx) 會儲存值。
在頁面中,您可以指示控制項應該為其屬性值使用資源。
在執行階段,控制項的屬性值衍生自資源檔。
注意事項:
在實際執行中,您可以在自訂資源物件 (如資料庫) 中儲存值。但是,在此逐步解說中,您將使用 .resx 檔案來儲存值。
Visual Web Developer 可讓您產生控制項的資源、控制項屬性和控制項的 HTML,而不需要撰寫任何程式碼。
逐步解說將說明的工作包括:
啟用 ASP.NET Web 網頁的當地語系化。
產生資源檔並隱含地將其值與您應用程式中的控制項相關聯。
使用宣告式運算式來建立當地語系化資源檔並在頁面中明確參考這些檔案。
必要條件
若要完成這個逐步解說,您必須要有:
Visual Web Developer (Visual Studio)。
.NET Framework。
建立網站
如果您已在 Visual Web Developer 中建立了網站 (請參閱逐步解說:在 Visual Web Developer 中建立基本 Web 網頁),則可以使用該網站,並繼續進行下一節的步驟「使用 ASP.NET 進行隱含當地語系化」。否則,請使用下列程序中的步驟建立新的網站和網頁。
若要建立檔案系統網站
開啟 Visual Web Developer。
在 [檔案] 功能表上,按一下 [新網站]。
[新網站] 對話方塊隨即出現。
請在 [Visual Studio 安裝的範本] 下方,按一下 [ASP.NET 網站]。
在 [位置] 方塊中,輸入您想要用來保存網站頁面的資料夾名稱。
例如,輸入資料夾名稱 C:\WebSites。
在 [語言] 清單中,請按一下您想要操作的程式語言。
按一下 [確定]。
Visual Web Developer 會建立資料夾和命名為 Default.aspx 的新頁面。
使用 ASP.NET 進行隱含當地語系化
在本章節中,您將使用隱含當地語系化。在隱含當地語系化中,您會指定應從資源檔自動讀取控制項屬性,不過,不需要明確指定要當地語系化哪個屬性。隨後,您可為特定屬性建立具有當地語系化值的資源檔。在執行階段,ASP.NET 會檢查頁面上的控制項。如果控制項已標記要使用隱含當地語系化,則 ASP.NET 將尋找該頁面的資源檔。如果找到了已標記控制項的屬性設定,ASP.NET 會以資源檔中的值替代控制項中的這些設定。
在這個隱含當地語系化的範例中,您會使用設計工具和「資源編輯器」的組合來產生預設資源檔,這些資源檔可用做在兩個語言中進行當地語系化的起點。Visual Web Developer 將僅根據頁面上的控制項來產生資源檔。因此,最好在您完成頁面的控制項配置後才產生資源檔,包括如按鈕、標籤和文字方塊之類的簡單控制項。
若要將控制項放置在頁面上
在 [方案總管] 中,以滑鼠右鍵按一下 [Default.aspx],然後按一下 [重新命名],再輸入 Sample.aspx。
這樣做可協助避免在逐步解說其餘有關預設資源檔之部分中的混淆,因為隱含資源檔名稱使用頁面名稱。
開啟 Sample.aspx,然後切換至 [設計] 檢視。
在 [工具箱] 中,從 [標準] 區段將 Button、Label 和 TextBox 控制項拖曳至頁面。
對於每個控制項,請分別將 [文字] 設定為 English Button、English Label 和 English TextBox。
建立頁面並加入控制項後,您才可以使用 Visual Web Developer 命令來產生此頁面的本機資源檔。本機資源檔將包含頁面上控制項的資源字串。Visual Web Developer 會為每個屬性產生資源字串,這些屬性做為可當地語系化的項目內部指定於控制項中。雖然大多數以文字為基礎的屬性都以該方式標記,但每個控制項仍可具有指定為可當地語系化的不同屬性。
若要自動產生資源檔
按一下設計工具介面或控制項。
在 [工具] 功能表上,按一下 [產生本機資源]。
Visual Web Developer 會建立一個名為 App_LocalResources 的新資料夾,並在 App_LocalResources 資料夾中建立一個名為 Sample.aspx.resx 的新檔案。如果您將頁面命名為除 Sample.aspx 以外的名稱,.resx 檔案將反映任何您選擇的名稱。當使用隱含當地語系化時,資源檔名稱會以個別頁面名稱為基礎。
切換至 [原始碼] 檢視以查看對控制項宣告的變更。
Visual Web Developer 已將屬性 (Attribute) 加入至您的控制項,用以從最新建立的資料檔中擷取它們的值。例如,Button 控制項的標記具有一個新的 meta:resourcekey 屬性。
<asp:Button ID="Button1" Runat="server" meta:resourcekey="ButtonResource1" Text="English Button" />
當瀏覽器將要求傳送至 Web 伺服器時,此要求可包含目前語言和文化特性的相關資訊。例如,瀏覽器可能會傳送 "en-us" 字串,指示其已被設定為使用美國英文;而其他瀏覽器可能會傳送 "en-gb" 字串,指示其已被設定為使用英國英文。
![]() |
---|
瀏覽器要求中的語言和文化特性設定並不是偵測使用者慣用語言之完全可靠的方法。設定只指示那些瀏覽器已設定要傳送的內容或自基礎作業系統繼承的內容。在此逐步解說中,您將依賴於語言和文化特性設定,但在實際執行應用程式中,您還應該為使用者加入一種方法以手動選取語言和文化特性。 |
資源檔用做所有要求的預設資源檔(其為後援文化特性的資源檔)。如果瀏覽器未指定文化特性,或瀏覽器要求含有您不支援的語言或文化特性,則會從此預設檔案提取資源值。
現在資源檔已建立,您可以使用「資源編輯器」將當地語系化的文字置於其中。
若要使用資源編輯器編輯資源檔
在 [方案總管] 中,開啟 Sample.aspx.resx。
在 [資源編輯器] 的 [值] 下方是您置於頁面上每個控制項的 [文字] 屬性。變更此處的值將導致預設文化特性值的變更。
將 [ButtonResource1.Text] 設定為 Edited English Text。
儲存檔案。
您現在可以測試網頁。
若要測試網頁
按 CTRL+F5 執行頁面。
您在「資源編輯器」中提供的文字會顯示為 Button1 的標籤。當使用隱含當地語系化時,資源檔中的語法屬性本身將覆寫頁面中指定的屬性。
加入其他文化特性
每個語言和文化特性的組合都需要唯一的資源檔。若要加入其他文化特性,您可以使用預設檔案做為起點。您可以透過建立新的資源檔來為不同的文化特性和地區設定建立資源檔,在所建立的資源檔中,ISO 語言代碼是檔案名稱的一部分 (例如,en-us、fr-ca 和 en-gb)。這些 ISO 代碼放置在頁面名稱和 .resx 副檔名之間,例如 Sample.aspx.en-us.resx。若要指定文化特性意義上的中性語言,您應排除國碼,例如針對法文的 Sample.aspx.fr.resx。
![]() |
---|
當使用隱含當地語系化語法時,您必須為每個頁面建立不同的資源檔系列。 |
若要建立文化特性意義上的中性法文檔案
在 [方案總管] 中,以滑鼠右鍵按一下 [Sample.aspx.resx] 檔案,然後按一下 [複製]。
以滑鼠右鍵按一下 [App_LocalResources]資料夾,然後按一下 [貼上]。
Visual Web Developer 會建立名為 [複製 - Sample.aspx.resx] 的檔案。
以滑鼠右鍵按一下 [複製 - Sample.aspx.resx] 檔案,然後按一下 [重新命名],再輸入 Sample.aspx.fr.resx。
Sample.aspx.fr.resx 表示文化特性意義上之中性法文文字的檔案。
開啟 Sample.aspx.fr.resx。
對於 Button、Label 和 TextBox 控制項,將 [文字] 分別設定為 French Button、French Label 和 French TextBox。
儲存檔案。
使用替代語言設定測試
您必須改變瀏覽器設定以要求所需的文化特性,才可以確認這個新的資源檔是否已由 ASP.NET 使用。
若要變更您瀏覽器的語言設定
在 Microsoft Internet Explorer 中,按一下 [工具] 功能表上的 [網際網路選項]。
按一下 [語言]。
在 [語言偏好設定] 對話方塊中,按一下 [加入]。
在 [加入語言] 對話方塊的 [語言] 下,按一下 [法文 (法國) [fr]],然後按一下 [確定]。
按一下 [加入] 並將 [西班牙文 (墨西哥) [es-mx]] 加入至語言清單。
按一下 [加入] 並將 [阿拉伯文 (埃及) [ar-eg]] 加入至語言清單。
您將在稍後的逐步解說中使用西班牙文和阿拉伯文進行測試。
在 [語言偏好設定] 對話方塊的 [語言] 下,按一下 [法文 (法國) [fr]],然後按一下 [上移],再按 [確定]。
現在 Internet Explorer 設定為將 fr 做為任何要求的語言設定傳送。利用在 Sample.aspx 頁面中將文化特性設定為 auto,ASP.NET 將嘗試尋找資源檔及其對應的值,以依據您的語言和文化特性偏好設定組成頁面。
若要測試網頁
在 Visual Web Developer 中,按 CTRL+F5 以執行頁面。
頁面會使用來自當地語系化之法文檔案 (而不是英文版本) 的值重新整理。
注意事項:
您可以在 Internet Explorer 中重設您的語言設定,方法是返回 [語言偏好設定] 對話方塊並將所選擇的語言移回清單頂端。
使用 ASP.NET 進行明確當地語系化
在此逐步解說的第一個部分,您已使用 ASP.NET 隱含當地語系化讓控制項顯示當地語系化的文字。您已產生具有屬性 (Property) 值的資源檔,並且在處理期間,您已將屬性 (Attribute) 加入至每個控制項,指示它從資源檔填入其屬性 (Property) 值 (如果有的話)。隱含當地語系化會自動工作,因此您不需要逐一指定屬性從資源檔讀取資訊的方式。
不過,此時,您想更直接地控制屬性的設定方式。因此,您可以使用明確當地語系化而不是隱含當地語系化。利用明確當地語系化,您可使用指向資源檔的運算式來設定屬性的值。當執行頁面時,會評估運算式、從指定的資源檔中讀取值,然後使用此值來設定屬性。
在您要當地語系化除控制項和標籤之外的大型文字主體或自訂訊息時,明確當地語系化會非常有用。例如,您可以為電子商務網站開發一系列當地語系化的歡迎使用和感謝訊息,並使用明確宣告式運算式將此文字放置在網頁上。此外,明確當地語系化允許您維護當地語系化資源檔的單一集合,而不會為每個頁面維護個別檔案集合。
在本章節中,您會手動建立資源檔,然後使用 ASP.NET 宣告式運算式語法來參考這些檔案。您將為簡單的感謝訊息建立一個資源檔。與使用設計工具不同,每個 ASP.NET Web 網頁不需要個別的資源檔。
您資源檔的主檔名 (Base Name) 會是 LocalizedText。對於要當地語系化的每個語言,您將建立具有適當語言代碼 (選擇性地,文化特性代碼) 的另一個檔案,做為檔案名稱的一部分。例如,對於美國英文,您會建立名為 LocalizedText.resx 的檔案。對於加拿大法文,您會建立名為 LocalizedText.fr-ca.resx 的檔案。兩個檔案都放置在 Web 應用程式的「資源」目錄下。與先前的隱含範例不同,您不需要維護每個 .aspx 頁面的資源檔,而是可以維護您支援之每種語言或文化特性的單一檔案系列。
若要建立資源檔
在 [方案總管] 中,以滑鼠右鍵按一下網站的根目錄,然後按一下 [加入 ASP.NET 資料夾],再按 [App_GlobalResources]。
以滑鼠右鍵按一下 [App_GlobalResources] 資料夾,然後按一下 [加入新項目]。
在 [Visual Studio 安裝的範本] 下方,按一下 [資源檔]。
在 [名稱] 方塊中,輸入 LocalizedText.resx,然後按一下 [加入]。
LocalizedText.resx 檔案將用做後援文化特性的資源。
建立第二個 .resx 檔案並將其命名為 LocalizedText.fr.resx。
當瀏覽器的語言設定為法文時 (不管文化特性為何),字串 "fr" 會將檔案識別為資源來使用。
建立第三個 .resx 檔案,並將其命名為 LocalizedText.es-mx.resx。
當瀏覽器的語言設定為西班牙文 (墨西哥) 時,字串 "es-mx" 會將檔案識別為資源來使用。
開啟 LocalizedText.resx 檔案。
在 [名稱] 資料行下方的第一個資料列中輸入 Msg1。
在 [值] 資料行下方的第一個資料列中輸入 Hello。
儲存並關閉檔案。
開啟 LocalizedText.fr.resx,建立名為 Msg1 的資源字串,並將值 Bon jour 指派給它。完成後,儲存並關閉該檔案。
開啟 LocalizedText.es-mx.resx,建立名為 Msg1 的資源字串,並將值 Buenos días 指派給它。完成後,儲存並關閉該檔案。
注意事項:
若要插入具有重音 (í) 的字母,請在啟用 Number Lock 的數字鍵台上輸入 ALT+0237。
您已為名為 Msg1 的資源建立了三個值。ASP.NET 將根據所設定的瀏覽器語言,顯示適當資源檔的值。
現在您的資源檔已建立,可返回頁面並加入會參考此資源的控制項。
若要將標籤控制項加入至頁面
切換至 Sample.aspx,然後切換至 [設計] 檢視。
將其他 Label 控制項拖曳至頁面。
以滑鼠右鍵按一下 Label 控制項,然後按一下 [屬性],再按 [運算式] 方塊中的省略號 (…) 按鈕。
[運算式] 對話方塊隨即出現。
在 [可繫結的屬性] 清單,按一下 [文字]。
在 [運算式類型] 清單中,選取 [資源]。
在 [運算式屬性] 下,將 [ClassKey] 設定為 [LocalizedText],並將 [ResourceKey] 設定為 [Msg1]。
按一下 [確定]。
切換至原始碼檢視。
您標籤的文字屬性現在具有明確運算式,陳述從中擷取資源的主檔和要選取的索引鍵。
<asp:Label ID="Label2" Runat="server" Text="<%$ Resources:LocalizedText, Msg1 %>">
注意事項:
因為 LocalizedText 屬性不是實際的檔案名稱,所以它沒有語言指示器、文化特性指示器或 .resx 副檔名,但是,LocalizedText 卻代表基底資源類別。根據由瀏覽器傳送的文化特性,ASP.NET 將使用適當的語言或其檔案名稱內的文化特性代碼,來選取檔案外部的資源,這些檔案名稱有 LocalizedText.fr.resx、LocalizedText.es-mx.resx 或 LocalizedText.resx (如果找不到符合的語言)。
完成資源檔並加入了宣告式運算式後,您就可以測試頁面。最後的測試完成之後,您的瀏覽器會設定成將法文報告為其語言的偏好設定。測試期間,您將數次變更瀏覽器的語言。
若要測試網頁
按 CTRL+F5 執行頁面。
您在「資源編輯器」中提供之文字的法文版本將顯示為 Label 控制項的文字。
在 Microsoft Internet Explorer 中,按一下 [工具] 功能表上的 [網際網路選項]。
按一下 [語言]。
在 [語言偏好設定] 對話方塊中,將 [西班牙文 (墨西哥) [es-mx]] 移至語言清單的頂端。完成後,請按一下 [確定] 並關閉 [網際網路選項] 對話方塊。
請按 F5 重新整理瀏覽器。
文字的西班牙文版本隨即出現。
將語言變更為阿拉伯文,然後按 F5 再次重新整理頁面。
此次,文字會以您在後援資源檔中使用的語言顯示。因為您先前並沒有建立一個 LocalizedText.ar-eg.resx 的檔案,所以 ASP.NET 無法找到符合瀏覽器所報告之語言和文化特性的文字,因此它使用了後援資源檔。
結束頁面測試後,請將語言設定回您的慣用語言。
後續步驟
當地語系化可以是一項複雜的任務。此逐步解說說明了 Visual Web Developer 中的某些功能,這些功能可排除一些工作。您可能想進一步瞭解當地語系化和 ASP.NET 的相關資訊。例如,您可能要:
進一步瞭解有關在應用程式中使用資源。如需詳細資訊,請參閱應用程式中的資源。
使用定義文化特性相關資訊的類別,包括語言、國家 (地區)、使用中的日曆、日期的格式模式、貨幣、數字以及字串排序次序。如需詳細資訊,請參閱 System.Globalization。
進一步瞭解有關為全球的使用者編碼時使用的最佳作法。如需詳細資訊,請參閱開發世界性的應用程式的最佳作法。