public CultureInfo (
string name,
bool useUserOverride // ユーザーが選択したカルチャ設定を用いるならばtrue、既定のカルチャ設定ならばfalse
);
CultureInfo(String, Boolean) - CultureInfo Constructor (System.Globalization) | Microsoft Learn
nameに指定できる文字列は、[MS-LCID]: Appendix A: Product Behavior | Microsoft LearnのLanguage tag列にあります。またWindows 10以降ならば、BCP 47 (RFC 4646) の文字列も利用できます。大文字/小文字は区別されません。
CultureInfo c1 = new CultureInfo("en"); // "English" CultureInfo c2 = new CultureInfo("en-GB"); // "English (United Kingdom)" CultureInfo c3 = new CultureInfo("ja"); // "日本語" CultureInfo c4 = new CultureInfo("zh-CN"); // "中文(中国)"
nameが無効なカルチャ識別子だったとき、.NET Framework 3.5以前ならばArgumentException、それより後ならばCultureNotFoundExceptionが投げられます。例外を独自に処理しないならば、CreateSpecificCulture()で生成するようにします。
型 | プロパティ | 内容 |
---|---|---|
CultureInfo | CurrentCulture | 現在のスレッドとタスクベースの非同期操作で使用されているカルチャ |
CultureInfo | CurrentUICulture | 現在のスレッドのResource Managerで使用されている、UI (ユーザーインターフェイス) のカルチャ |
CultureInfo | DefaultThreadCurrentCulture | 現在のアプリケーション ドメインのスレッドの、既定のカルチャ。既定はnull |
CultureInfo | DefaultThreadCurrentUICulture | 現在のアプリケーション ドメインのスレッドの、既定のUI (ユーザーインターフェイス) のカルチャ。既定はnull |
CultureInfo | InvariantCulture | 文化 (culture/カルチャ) に依存しない (independent)、つまりインバリアント (invariant) なカルチャ
(英語に関連付けられているが、国、地域には関連付けられていない) |
型 | プロパティ | 内容 |
---|---|---|
string | Name | languagecode2-country/regioncode2の形式のカルチャ名 |
int | LCID | カルチャ識別子 (culture identifier)。LCID (LoCale IDentifier) |
string | TwoLetterISOLanguageName | カルチャの言語のISO 639-1の2文字のコード。それが存在しないならばISO 639-3の3文字のコード |
string | ThreeLetterISOLanguageName | カルチャの言語のISO 639-2の3文字のコード |
CultureInfo | Parent | 現在のカルチャの親カルチャ |
CompareInfo | CompareInfo | カルチャの文字列を比較する方法を定義するCompareInfoを得られる |
bool | IsNeutralCulture | trueならば、現在のカルチャがニュートラル カルチャ (neutral culture) を表している |
現在のスレッドのカルチャです。そのためこのプロパティへの設定は、現在のスレッドのカルチャにのみ作用します。
string name1 = CultureInfo.CurrentCulture.Name; // "ja-JP" CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("en"); string name2 = CultureInfo.CurrentCulture.Name; // "en" Task.Run(() => { string name3 = CultureInfo.CurrentCulture.Name; // "ja-JP" CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("es"); string name4 = CultureInfo.CurrentCulture.Name; // "es" }).Wait(); Task.Run(() => { string name5 = CultureInfo.CurrentCulture.Name; // "ja-JP" CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("zh"); string name6 = CultureInfo.CurrentCulture.Name; // "zh" }).Wait(); string name7 = CultureInfo.CurrentCulture.Name; // "en"
これをアプリケーション全体に適用させるには、DefaultThreadCurrentCultureに設定します。
.NET Framework 4.6以降、このプロパティに設定するのはSystem.Threading.Thread.CurrentThread.CurrentUICultureに設定するのと同じです。Remarks - CultureInfo.CurrentUICulture Property (System.Globalization) | Microsoft Learn
このプロパティへの設定はCurrentCulture同様に現在のスレッドにのみ適用されるため、アプリケーション全体とするにはDefaultThreadCurrentUICultureを用います。
CultureInfo.CurrentUICulture = CultureInfo.CreateSpecificCulture("ja"); string s1 = new Exception().Message; // 種類 'System.Exception' の例外がスローされました。 CultureInfo.CurrentUICulture = CultureInfo.CreateSpecificCulture("en"); string s2 = new Exception().Message; // Exception of type 'System.Exception' was thrown.
ニュートラル カルチャの親はInvariantCultureであり、InvariantCultureの親はInvariantCulture自身です。
CultureInfo c1 = new CultureInfo("en-US"); // "英語 (米国)" CultureInfo c2 = c1.Parent; // "英語" CultureInfo c3 = c2.Parent; // "ロケールに依存しない言語 (ロケールに依存しない国) CultureInfo c4 = c3.Parent; // "ロケールに依存しない言語 (ロケールに依存しない国) bool r1 = c2 == c3; // false bool r2 = c3 == c4; // true (InvariantCultureの親は、それ自身と同じ)
メソッド | 機能 |
---|---|
指定の名前に関連付けられたカルチャを表すCultureInfoを作成できます。
public static System.Globalization.CultureInfo CreateSpecificCulture (string name);CultureInfo.CreateSpecificCulture(String) Method (System.Globalization) | Microsoft Learn
通常はコンストラクタの呼び出しと同じですが、nameが無効なためArgumentExceptionが投げられたときにはニュートラル カルチャ (neutral culture) の取得が試みられます。CreateSpecificCulture - cultureinfo.cs
2つのCultureInfoインスタンスが同一のカルチャであるかは、Equals()で比較します。このメソッドはNameとCompareInfoプロパティが等しいことで評価します。Remarks - CultureInfo.Equals(Object) Method (System.Globalization) | Microsoft Learn
一方で等値演算子で比較した場合は、インスタンスが同一であるかで評価されます。
CultureInfo c1 = new CultureInfo("ja"); CultureInfo c2 = new CultureInfo("ja"); CultureInfo c3 = c2; bool r1 = c1.Equals(c2); // true bool r2 = c3.Equals(c2); // true bool r3 = c1 == c2; // false bool r4 = c3 == c2; // true