首先要在頁面級別(<%@ Page UICulture="auto" Culture="auto" %>)或整個Portal級別(在Web.config中<globalization uiCulture="auto" culture="auto"/>)定義特定 UICulture
和 Culture
屬性。這兩個屬性的值均為 auto。這將指示 ASP.NET 基于客戶端瀏覽器的首選區(qū)域性為頁的執(zhí)行檢測并設(shè)置當(dāng)前線程區(qū)域性和 UI 區(qū)域性。如果不為auto則可以為其指定具體的語言。
如果需要從數(shù)據(jù)庫中讀取的信息作為選擇語言的標(biāo)準(zhǔn),需要對Thread.CurrentThread.CurrentCulture 和 Thread.CurrentThread.CurrentUICulture 進(jìn)行更改,并且需要在 InitializeCulture()
方法中進(jìn)行,因為對首選瀏覽器語言的自動檢測是在頁生存期的早期發(fā)生的。
可以通過后臺代碼或直接在頁面上調(diào)用資源文件中的內(nèi)容。
有兩種形式的資源表達(dá)式:顯式和隱式。
資源表達(dá)式形式 | 說明 |
---|---|
顯式 | <%$ Resources:[filename prefix,]resource-key %> 顯式表達(dá)式用于以聲明性語法定義控件屬性的值,resource-key(必需)用于映射到資源中的值。filename prefix 參數(shù)是可選的,filename 指定全局資源文件夾中的資源文件的名稱。 |
隱式 | <asp:Label ID="Label1" runat="server" meta:resourcekey="resource-key-prefix" /> 隱式表達(dá)式以聲明性語法用作控件或?qū)ο蟮膶傩?,并且定義 resource-key-prefix,用于為控件執(zhí)行許多屬性分配。資源文件包含許多具有常規(guī)形式 resource-key-prefix.Property 的潛在資源鍵,例如 Label1KeyPrefix.Text 和 Label1KeyPrefix.Font-name。所有資源都只能從本地資源獲取??梢詫⒈磉_(dá)式看作一個短格式表示法,用于在未顯式在頁中定義屬性的情況下映射一個到多個控件屬性。 |
可以使用聲明性語法將 ASP.NET 服務(wù)器控件屬性值設(shè)置為資源值,也可以以編程方式檢索資源值。如果在設(shè)計時資源值未知或者需要根據(jù)運行時條件設(shè)置資源值,可能會這樣做。
可以從本地資源文件和全局資源文件中獲取資源值,這些文件使用的方法返回一個可強制轉(zhuǎn)換為適當(dāng)類型的對象。由于 ASP.NET 使用強類型編譯全局資源,因此也可以使用強類型成員獲取全局資源。
調(diào)用 GetLocalResourceObject 或 GetGlobalResourceObject 方法以分別從全局資源文件或本地資源文件中讀取特定的資源。在 HttpContext 和 TemplateControl 類中提供了這些重載方法。
GetGlobalResourceObject 方法采用資源類名和資源 ID。該類名基于的是 .resx 文件名。例如,文件 WebResources.resx 和所有相關(guān)聯(lián)的本地化文件都由類名 WebResources 引用。
GetLocalResourceObject 方法采用表示 ResourceKey 屬性的資源名。
下面的代碼示例演示如何從本地資源文件和全局資源文件獲取資源值。這些方法返回一個對象;因此,必須將該資源強制轉(zhuǎn)換為適當(dāng)?shù)念愋汀?/p>
存儲在 App_LocalResources 特殊文件夾中的默認(rèn)本地資源文件根據(jù) ASP.NET 頁命名。例如,如果在 Default.aspx 頁中使用了下面的代碼,則必須將該資源文件命名為 Default.aspx.resx。在此示例中,向此文件添加了一個名為 Button1.Text 的字符串資源,并且該資源帶有 "Found Resources" 值。
此外,在此示例中,存儲在 App_GlobalResources 特殊文件夾中的默認(rèn)全局資源文件命名為 WebResourcesGlobal.resx。向此文件添加了一個名為 LogoUrl 的字符串資源,而且該資源帶有http://go.microsoft.com/fwlink/?LinkId=49295 值或其他圖像的 URL
按照下面的語法獲取資源:
Resources.Class.Resource
資源將編譯到命名空間 Resources 中,并且每個默認(rèn)資源都將成為 Resources 類的成員。例如,如果創(chuàng)建了默認(rèn)資源文件 WebResources.resx,并且該文件包含一個名為 WelcomeText 的資源,則可以在代碼中引用該資源,如下面的代碼示例所示: