App_GlobalResources、App_LocalResources (理论篇)(
資源文件
在.net開發中資源文件是 XML 文件,其中包含要轉換為不同語言或圖像路徑的字符串。資源文件包含鍵/值對,每一對都是一個單獨的資源。鍵名不區分大小寫。
?
?
NOTE: 雖然資源可以保護圖片、音頻等格式的文件,但需要注意的是在資源文件中只保存鍵/值對,由它指向特定的資源。
<data name="Image1" type="System.Resources.ResXFileRef, System.Windows.Forms">??? <value>..\Resources\Image1.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value></data>
<data name="URL" xml:space="preserve">??? <value>www.cnbooku.com</value> </data>????
??????? ASP.NET 中的資源文件具有 .resx 擴展名。在運行時,.resx 文件將編譯進一個程序集內,該程序集有時稱為附屬程序集。由于 .resx 文件是用與 ASP.NET 網頁相同的方式動態編譯的,因此不必創建資源程序集。編譯過程將多個語言類似的資源文件壓縮在同一程序集內。?您需要為每種語言(如英語和法語)或每種語言和區域性(如英語 [英國]、英語 [美國])分別創建一個資源文件。每個本地化資源文件都有相同的鍵/值對;
??? 本地化資源文件與默認資源文件的唯一區別就是前者所包含的資源可能少于后者。然后,語言回退處理非特定資源或默認資源的加載。?在創建資源文件時,首先開始創建基文件 .resx。對于要支持的每種語言,分別創建一個新文件,該文件具有同一基本文件名但包含語言或語言及區域性(區域性名稱)。?
AppFolder_labels.resx 基資源文件。該文件是默認或后備資源文件,也就是說如果找不到指定的區域文件則默認加載基資源文件。
AppFolder_labels.en-us.resx 美國英語的資源文件。
AppFolder_labels.zh-cn.resx 簡體中文的資源文件。
AppFolder_labels.de.resx 德語的資源文件。?
在運行時,ASP.NET 使用與 CurrentUICulture 屬性的設置最為匹配的資源文件。線程的 UI 區域性根據頁的 UI 區域性進行設置。例如,如果當前的 UI 區域性是德語,則 ASP.NET 使用 AppFolder_labels.de.resx 文件的已編譯版本。如果當前的 UI 區域性沒有匹配項,則 ASP.NET 會使用資源后備;首先用特定區域性的資源,接著用非特定區域性,最后用默認資源文件。在本例中,默認資源文件是 AppFolder_labels.resx。
?
?
?為 ASP.NET 網站創建資源文件???
?? 在 ASP.NET 中,可以創建具有不同范圍的資源文件。可以創建全局資源文件,這意味著可以從位于網站中的任意頁或代碼讀取這些資源文件。也可以創建本地資源文件,這些文件存儲單個 ASP.NET 網頁(.aspx 文件)的資源。?
全局資源文件
??? 將資源文件放入應用程序根目錄的保留文件夾 App_GlobalResources 中,即可創建全局資源文件。App_GlobalResources 文件夾中的任何 .resx 文件都具有全局范圍。此外,ASP.NET 還生成了一個強類型對象,這為開發人員提供了一種以編程方式訪問全局資源的簡單方法。如果在上面的資源文件中創建字符資源 key = URL_BAODR 則在代碼中可以如下法調用。
??????? Resources.AppFolder_labels.URL_BAODR 其中 Resources 是ASP.NET 資源文件的名稱空間, AppFolder_labels 是 ASP.NET 自動根據資源文件創建的類, URL_BAODR 是key名表現為類中的屬性。?
本地資源文件
??? 本地資源文件是只應用于一個 ASP.NET 頁的文件(帶有 .aspx、.ascx、.master 等擴展名的 ASP.NET 頁)。本地資源文件所放入的文件夾具有 App_LocalResources 保留名稱。App_LocalResources 文件夾可以存在于應用程序的任何文件夾中,這與 App_GlobalResources 根文件夾不同。通過資源文件名將一組資源文件與特定的網頁相關聯。 ?例如,如果在 App_LocalResources 文件夾中有一個名為 Default.aspx 的頁,則可以創建下列文件:?
Default.aspx.resx 默認的本地資源文件,如果找不到語言匹配項,則該文件為后備資源文件。
Default.aspx.es.resx 西班牙語的資源文件,不包含區域性信息。
Default.aspx.es-mx.resx專用于西班牙語(墨西哥)的資源文件。
??????? 文件的基名稱與頁文件名相同,后跟語言和區域性名稱,最后以擴展名 .resx 結尾。?
在全局和本地資源文件之間選擇
???在 Web 應用程序中,可以任意組合使用全局和本地資源文件。通常情況下,當您希望在各頁之間共享資源時,應向全局資源文件添加這些資源。全局資源文件中的資源還是強類型的,用于以編程方式訪問。
????缺點是:但如果將所有本地化資源都存儲在全局資源文件中,則這些文件會變得很大。此外,如果多個開發人員要處理不同的頁但在同一個資源文件中工作時,全局資源文件也會更難于管理。
???? 本地資源文件使得單個 ASP.NET 網頁的資源比較容易管理,但您不能在各頁之間共享資源。此外,如果有許多頁必須本地化為多種語言,則可能會創建大量本地資源文件。如果站點是具有許多文件夾和使用多種語言的大型站點,則使用本地資源可能快速地在應用程序域中擴展程序集的數量。
??? 在對默認資源文件進行更改時,無論它是本地資源文件還是全局資源文件,ASP.NET 都重新編譯資源并重新啟動 ASP.NET 應用程序,這可能會影響站點的整體性能。添加附屬資源文件將不會導致重新編譯資源,但 ASP.NET 應用程序仍將重新啟動。?
注意:只有全局資源文件支持鏈接資源。
轉載于:https://www.cnblogs.com/scgw/archive/2011/05/31/2065150.html
總結
以上是生活随笔為你收集整理的App_GlobalResources、App_LocalResources (理论篇)(的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】解决父容器高度不跟随子元素扩大的问
- 下一篇: Ajax Control Toolkit