介紹
聲明性資源運算式可使您的應用程式使用多種語言,而不必手動編寫代碼來檢索資源並在頁中進行替換。您只需使用 ASP.NET 2.0 中新提供的運算式文法即可對資源替換進行定義。ASP.NET 2.0 支援標準的 resx 檔案格式自動進行運行時資源檢索。
關鍵
1、Culture - 決定各種資料類型是如何組織,如數字與日期;UICulture - 決定了採用哪一種本地化資源,也就是使用哪種語言。在頁的@Page指令中或者設定檔的<system.web><globalization>元素中設定(另外該元素內還可以設定屬性requestEncoding,responseEncoding,fileEncoding)。Culture="en-us"和Culture="auto:en-us"的區別在於,後者會先自動匹配,無法自動匹配則用en-us
2、HTTP 允許瀏覽器使用“接受語言”(Accept-Language) HTTP 要求標題欄位將一個慣用語言列表發送到 Web 服務器。在IE中選擇工具 - Internet 選項 - 語言
3、web.sitemap應用本地化的時候設定<siteMap>的屬性enableLocalization="true"。訪問全域資源:$Resources: 全域資源名, 資源內的key, 預設值;或者resourceKey="web.sitemap.resx檔案中的key"
4、編程方式處理用GetGlobalResourceObject() 和 GetLocalResourceObject()
5、編程設定Culture 和 UICulture請重寫InitializeCulture(),對 Thread.CurrentThread.CurrentCulture 和 Thread.CurrentThread.CurrentUICulture進行設定
6、訪問全域資源:$ Resources:全域資源名,資源內的key;顯式訪問本地資源:$ Resources:key.屬性;隱式訪問本地資源:meta:resourcekey="key"。
樣本
本地化測試
Localization/Test.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Localization_Test" Title="本地化測試" Culture="en-us" UICulture="en-us" meta:resourcekey="Title" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <p> 目前語言: <asp:Label ID="lblCurrentCulture" runat="Server" /> </p> <p> 目前時間: <%=DateTime.Now %> </p> <p> 隱式: <asp:Label ID="lbl" runat="server" meta:resourcekey="lbl" /></p> <p> 顯式: <asp:Label ID="lbl2" runat="server" Text="<%$ Resources:lbl.Text %>" ToolTip="<%$ Resources:lbl.ToolTip %>" /> </p> <p> 全域: <asp:Label ID="lbl3" runat="Server" Text="<%$ Resources:MyGlobal,GlobalText %>" /> </p> <p> 編碼方式(全域資源): <asp:Label ID="lbl4" runat="server" /> </p> <p> 編碼方式(本地資源): <asp:Label ID="lbl5" runat="server" /> </p> <p> Localize控制項方式(Label控制項到用戶端會解析成<span>,而Localize到用戶端後就是解析成其所包含的文字): <asp:Localize ID="AboutUs" runat="server" meta:resourcekey="AboutUs"></asp:Localize> </p> <p> <a href="?currentculture=zh-cn">中文</a> <a href="?currentculture=en-us">英文</a> </p> <p> 註:<br /> Culture - 決定各種資料類型是如何組織,如數字與日期<br /> UICulture - 決定了採用哪一種本地化資源,也就是使用哪種語言 </p></asp:Content>