CultureAndRegionInfoBuilder クラス

この記事は、この API のリファレンス ドキュメントの補足説明です。

Note

この CultureAndRegionInfoBuilder クラスは、Windows オペレーティング システムでのみ役立ちます。 生成された .nlp ファイルは、Windows 以外のオペレーティング システムではサポートされていません。 また、Windows でも、生成された .nlp ファイルは .NET Framework (NLS グローバリゼーション モードを使用する場合は .NET Core) でのみサポートされます。

CultureInfo クラスは、関連する言語、サブ言語、国/地域、カレンダー、カルチャ規則など、カルチャ固有の情報を保持します。 このクラスには、大文字と小文字の区別、日付と数値の書式設定と解析、文字列の比較などのカルチャ固有の操作に必要な、DateTimeFormatInfoNumberFormatInfoCompareInfo、および TextInfo クラスのカルチャ固有のインスタンスも用意されています。

既定では、.NET は定義済みの一連のカルチャを表す CultureInfo オブジェクトをサポートしています。 Windows システムで使用できるこれらのカルチャの一覧については、Windows でサポートされている言語と地域の名前の一覧の「言語タグ」列をご覧ください。 カルチャ名は、BCP 47 によって定義されている標準に準拠します。 CultureAndRegionInfoBuilder クラスを使用すると、まったく新しい、または定義済みのカルチャをオーバーライドするカスタム カルチャを作成できます。 カスタム カルチャが特定のコンピューターにインストールおよび登録されると、定義済みの CultureInfo オブジェクトと区別できなくなります。これらのオブジェクトと同じようにインスタンス化して使用できます。

重要

クラスはCultureAndRegionInfoBuilder、sysglobl.dllという名前のアセンブリにあります。 この型を使用するコードを正常にコンパイルするには、sysglobl.dllへの参照を追加する必要があります。

カスタム カルチャは、そのコンピューターの管理者権限を持つユーザーのみがコンピューターに登録できます。 そのため、通常、アプリはカスタム カルチャを作成してインストールしません。 代わりに、CultureAndRegionInfoBuilder クラスを使用して、管理者がカスタム カルチャの作成、インストール、登録に使用できる特別な目的のツールを作成できます。 カスタム カルチャがコンピューターに登録されたら、定義済みのカルチャの場合と同様に、アプリの CultureInfo クラスを使用してカスタム カルチャのインスタンスを作成できます。

カスタム カルチャに対して生成された日付と時刻の文字列を解析する場合は、解析操作が成功する確率を向上させるために、DateTime.Parse または DateTime.TryParse メソッドの代わりに DateTime.ParseExact または DateTime.TryParseExact メソッドを使用する必要があります。 カスタム カルチャの日付と時刻の文字列は複雑であるため、解析が困難な場合があります。 Parse メソッドと TryParse メソッドは、いくつかの暗黙的な解析パターンを持つ文字列を解析しようとしますが、これらはすべて失敗する可能性があります。 これに対し、TryParseExact メソッドでは、成功する可能性が高い 1 つ以上の正確な解析パターンをアプリケーションで明示的に指定する必要があります。

カスタム カルチャを定義して作成する

CultureAndRegionInfoBuilder クラスを使用して、カスタム カルチャを定義し、名前を付けます。 カスタム カルチャには、まったく新しいカルチャ、既存のカルチャ (つまり補足カルチャ) に基づく新しいカルチャ、または既存の .NET カルチャを置き換えるカルチャを指定できます。 いずれの場合も、基本的な手順は同じです。

  1. CultureAndRegionInfoBuilder(String, CultureAndRegionModifiers) コンストラクターを呼び出して、CultureAndRegionInfoBuilder オブジェクトをインスタンス化します。 既存のカルチャを置き換えるには、そのカルチャの名前と CultureAndRegionModifiers.Replacement 列挙値をコンストラクターに渡します。 新しいカルチャまたは補足カルチャを作成するには、一意のカルチャ名と、CultureAndRegionModifiers.Neutral または CultureAndRegionModifiers.None 列挙値を渡します。

    Note

    CultureAndRegionModifiers.Replacement 列挙値を使用して CultureAndRegionInfoBuilder オブジェクトをインスタンス化すると、CultureAndRegionInfoBuilder オブジェクトのプロパティに、置き換えられる CultureInfo オブジェクトの値が自動的に設定されます。

  2. 新しいカルチャまたは補足カルチャを作成する場合:

  3. 必要に応じて、CultureAndRegionInfoBuilder オブジェクトのプロパティを変更します。

  4. カスタム カルチャを別のルーチンに登録する場合は、Save メソッドを呼び出します。 これにより、別のカスタム カルチャ インストール ルーチンに読み込んで登録できる XML ファイルが生成されます。

カスタム カルチャを登録する

カルチャを作成するアプリケーションとは別のカスタム カルチャの登録アプリケーションを開発する場合は、CreateFromLdml メソッドを呼び出して、カスタム カルチャの定義を含む XML ファイルを読み込み、CultureAndRegionInfoBuilder オブジェクトをインスタンス化します。 登録を処理するには、Register メソッドを呼び出します。 登録を成功させるには、カスタム カルチャを登録するアプリケーションがターゲット システムの管理特権で実行されている必要があります。それ以外の場合、Register の呼び出しは UnauthorizedAccessException 例外をスローします。

警告

カルチャ データは、システムによって異なる場合があります。 CultureAndRegionInfoBuilder クラスを使用して、複数のシステム間で統一されたカスタム カルチャを作成し、既存の CultureInfo オブジェクトと RegionInfo オブジェクトからデータを読み込んでカスタム カルチャを作成する場合は、2 つの異なるユーティリティを開発する必要があります。 1 つ目はカスタム カルチャを作成し、XML ファイルに保存します。 2 つ目は、CreateFromLdml メソッドを使用して XML ファイルからカスタム カルチャを読み込み、ターゲット コンピューターに登録します。

登録プロセスでは、次のタスクが実行されます。

  • オブジェクトで 定義されている情報を含む .nlp ファイルを CultureAndRegionInfoBuilder 作成します。
  • ターゲット コンピューターの %windir%\Globalization システム ディレクトリに .nlp ファイルを格納します。 これにより、カスタム カルチャの設定をセッション間で保持できます。 (.nlp ファイルは CultureAndRegionInfoBuilder システム ディレクトリに 格納されるため、このメソッドには管理特権が必要 です)。
  • 次に新しいカスタム カルチャを作成する要求があるときに、内部キャッシュの代わりに %windir%\Globalization システム ディレクトリを検索するように .NET を準備します。

カスタム カルチャが正常に登録された場合、これは .NET によって登録済みのカルチャとは区別できません。 カスタム カルチャは、メソッドのCultureAndRegionInfoBuilder呼び出しによってローカル コンピューターから .nlp ファイルが削除されるまで使用できます。

カスタム カルチャをインスタンス化する

カスタム カルチャのインスタンスは、次のいずれかの方法で作成できます。

さらに、CultureInfo.GetCultures メソッドによって返される CultureInfo オブジェクトの配列には、カスタム カルチャが含まれています。