Asp.net
在 ASP.NET 中創建自定義文化
我想在 App_GlobalResources 文件夾中為新加坡英語 (en-sg) 創建一個名為“shopping.en-sg.resx”的資源文件。
我在編譯過程中出錯。
錯誤 1 命名空間“資源”已包含“購物”的定義 c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\web\2cd6afe9\737b0a13\App_GlobalResources.vomuzavz.1.cs 26
搜尋Google后,我發現“en-sg”不是預設文化,我必須為它創建自定義文化。我不知道這個的詳細步驟。
我應該怎麼做才能創建文化並消除編譯錯誤?
我按照 MSDN 中的範例,創建一個名為“shopping.x-en-US-sample.resx”的文件,並將以下程式碼放入 BasePage 的函式中(受保護的覆蓋 void InitializeCulture()):
CultureAndRegionInfoBuilder cib = null; cib = new CultureAndRegionInfoBuilder( "x-en-US-sample", CultureAndRegionModifiers.None); CultureInfo ci = new CultureInfo("en-US"); cib.LoadDataFromCultureInfo(ci); RegionInfo ri = new RegionInfo("US"); cib.LoadDataFromRegionInfo(ri); cib.Register(); ci = new CultureInfo("x-en-US-sample");但是,編譯錯誤仍然存在。
更新:
您可以通過在 app_globalresources 文件夾中創建一個空網站和兩個文件“shopping.en-sg.resx”和“shopping.resx”來輕鬆重現該問題。
您可以基於現有文化創建新文化:
string culture = "en-sg"; string name = "Singaporean English"; CultureInfo cultureInfo = new CultureInfo("en-GB"); RegionInfo regionInfo = new RegionInfo(cultureInfo.Name); CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = new CultureAndRegionInfoBuilder(culture, CultureAndRegionModifiers.None); cultureAndRegionInfoBuilder.LoadDataFromCultureInfo(cultureInfo); cultureAndRegionInfoBuilder.LoadDataFromRegionInfo(regionInfo); // Custom Changes cultureAndRegionInfoBuilder.CultureEnglishName = name; cultureAndRegionInfoBuilder.CultureNativeName = name; cultureAndRegionInfoBuilder.Register();補充: 剛剛檢查了參考資料:我有:
using System; using System.Collections.Generic; using System.Text; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.CompilerServices;添加(更新,基於評論):
關於錯誤資訊:
您看到的錯誤是某些資源命名衝突的結果。檢查資源名稱,這些會被編譯成 dll,您需要檢查命名空間名稱是否衝突。您可以使用反射器工具進行檢查:http ://www.red-gate.com/products/reflector/