CultureAndRegionInfoBuilder 類別
本文提供此 API 參考文件的補充備註。
注意
類別 CultureAndRegionInfoBuilder 僅適用於 Windows 作業系統。 非 Windows 作業系統不支援產生的 .nlp 檔案。 此外,即使在 Windows 上,產生的 .nlp 檔案也只支援在 .NET Framework 上(或使用 NLS 全球化模式時在 .NET Core 中)。
類別 CultureInfo 會保存特定文化特性資訊,例如相關聯的語言、子語言、國家/地區、行事曆和文化慣例。 這個類別也提供、NumberFormatInfo、 CompareInfo和 TextInfo 類別的文化DateTimeFormatInfo特性特定實例,這些實例是特定文化特性作業的必要專案,例如大小寫、格式化和剖析日期和數位,以及比較字串。
根據預設,.NET 支援 CultureInfo 代表預先定義文化特性集的物件。 如需 Windows 系統上可用的這些文化特性清單,請參閱 Windows 支援的語言/區域名稱清單中的語言標籤數據行。 文化名稱遵循 BCP 47 定義的標準。 類別 CultureAndRegionInfoBuilder 可讓您建立全新的自定義文化特性,或覆寫預先定義的文化特性。 在特定計算機上安裝並註冊自定義文化特性時,它就變得與預先定義的 CultureInfo 物件不區分,而且可以像這些對象一樣具現化及使用。
重要
類別 CultureAndRegionInfoBuilder 位於名為 sysglobl.dll的元件中。 若要成功編譯使用此類型的程式代碼,您必須新增sysglobl.dll的參考。
只有在該計算機上具有系統管理許可權的使用者,才能在計算機上註冊自定義文化特性。 因此,應用程式通常不會建立及安裝自定義文化特性。 相反地,您可以使用 類別 CultureAndRegionInfoBuilder 來建立特殊用途工具,讓系統管理員可用來建立、安裝及註冊自定義文化特性。 在計算機上註冊自定義文化特性之後,您可以使用 CultureInfo 應用程式中的 類別來建立自定義文化特性的實例,就像您預先定義的文化特性一樣。
如果您剖析針對自定義文化特性產生的日期和時間字串,您應該使用 DateTime.ParseExact 或 DateTime.TryParseExact 方法,而不是 DateTime.Parse 或 DateTime.TryParse 方法來改善剖析作業成功的可能性。 自定義文化特性的日期和時間字串可能很複雜,因此難以剖析。 Parse和 TryParse 方法會嘗試剖析具有數個隱含剖析模式的字串,這一切可能會失敗。 相反地,方法 TryParseExact 需要應用程式明確指定一或多個可能成功的確切剖析模式。
定義和建立自定義文化特性
您可以使用 類別 CultureAndRegionInfoBuilder 來定義和命名自定義文化特性。 自定義文化特性可以是全新的文化特性、以現有文化為基礎的新文化特性(也就是補充文化特性),或取代現有 .NET 文化特性的文化特性。 在每個案例中,基本步驟都相同:
藉由呼叫 其CultureAndRegionInfoBuilder(String, CultureAndRegionModifiers)建構函式來具現化 CultureAndRegionInfoBuilder 物件。 若要取代現有的文化特性,請將該文化特性的名稱和 CultureAndRegionModifiers.Replacement 列舉值傳遞至建構函式。 若要建立新的文化特性或補充文化特性,請傳遞唯一的文化特性名稱和 CultureAndRegionModifiers.Neutral 或 CultureAndRegionModifiers.None 列舉值。
注意
如果您使用 CultureAndRegionModifiers.Replacement 列舉值來具現化 CultureAndRegionInfoBuilder 物件,則 CultureAndRegionInfoBuilder 對象的屬性會自動填入要取代之 CultureInfo 物件的值。
如果您要建立新的或補充文化特性:
- CultureAndRegionInfoBuilder藉由呼叫 LoadDataFromCultureInfo 方法並傳遞CultureInfo屬性值類似於新物件的物件,以填入物件的屬性。
- CultureAndRegionInfoBuilder呼叫 LoadDataFromRegionInfo 方法並傳遞RegionInfo代表您自定義文化特性區域的物件,以填入對象的區域屬性。
視需要修改 對象的屬性 CultureAndRegionInfoBuilder 。
如果您打算在個別例程中註冊自定義文化特性,請呼叫 Save 方法。 這會產生 XML 檔案,您可以在不同的自定義文化特性安裝例程中載入和註冊。
註冊自定義文化特性
如果您要為與建立文化特性的應用程式分開的自定義文化特性開發註冊應用程式,您可以呼叫 CreateFromLdml 方法來載入包含自定義文化特性定義的 XML 檔案,並具現化 CultureAndRegionInfoBuilder 物件。 若要處理註冊,請呼叫 Register 方法。 若要讓註冊成功,註冊自定義文化特性的應用程式必須在目標系統上以系統管理許可權執行;否則,呼叫 Register 會擲回例外狀況 UnauthorizedAccessException 。
警告
文化特性數據在系統之間可能會有所不同。 如果您使用 CultureAndRegionInfoBuilder 類別來建立跨多個系統統一的自定義文化特性,而且您正藉由從現有 CultureInfo 和 RegionInfo 物件載入數據並加以自定義來建立自定義文化特性,您應該開發兩個不同的公用程式。 第一個會建立自定義文化特性,並將它儲存至 XML 檔案。 第二個會 CreateFromLdml 使用 方法,從 XML 檔案載入自定義文化特性,並在目標電腦上註冊。
註冊程式會執行下列工作:
- 建立 .nlp 檔案,其中包含 物件中CultureAndRegionInfoBuilder定義的資訊。
- 將 .nlp 檔案儲存在目標計算機上的 %windir%\Globalization 系統目錄中。 這可讓自定義文化特性的設定在會話之間保存。 (方法 CultureAndRegionInfoBuilder 需要系統管理許可權, 因為 .nlp 檔案會儲存在系統目錄中。
- 準備 .NET 以在下次要求建立新的自定義文化特性時搜尋 %windir%\Globalization 系統目錄,而不是內部快取。
成功註冊自定義文化特性時,與 .NET 預先定義的文化特性不區分。 自定義文化特性可供使用,直到 CultureAndRegionInfoBuilder 呼叫 方法時,從本機計算機移除 .nlp 檔案為止。
具現化自定義文化特性
您可以使用下列其中一種方式來建立自訂文化特性的實例:
- CultureInfo.CultureInfo藉由叫用具有文化特性名稱的建構函式。
- 使用文化特性名稱呼叫 CultureInfo.CreateSpecificCulture 方法。
- 使用文化特性名稱呼叫 CultureInfo.GetCultureInfo 方法。
此外,方法傳CultureInfo.GetCultures回的物件陣列CultureInfo包含自定義文化特性。