web-dev-qa-db-ja.com

CultureInfo名の定数

有効なカルチャ名を含む定数のセットまたは列挙型がC#システム/グローバリゼーション名前空間にありますか?

「en-GB」などを入力しなくてもいいものを探しています。

23
Annie B

いいえ、ありません。使用可能なカルチャのリストはシステム固有です。 CultureAndRegionInfoBuilder を使用して新しいカスタムカルチャを登録することもできます。

したがって、これが必要な場合は、関心のある一般的なカルチャのサブセットに対して独自の列挙型または定数を作成する必要があります。例:

public static class KnownCulture
{
    public readonly String EnglishUS = "en-US";
    public readonly String EnglishGB = "en-GB";
    ... etc ...
}

または

public enum KnownLCID
{
    EnglishUS = 0x409,
    EnglishGB = 0x809,
    ...
}

これはKnownColor列挙型に類似しています。可能なすべての色の列挙型を作成することはできませんが、頻繁に使用される色の列挙型を作成することは理にかなっています。

Microsoftが同等のKnownCulture列挙をすぐに提供することは期待していません。それはかなり敏感だからです(なぜ私の文化が含まれていないのですか?)。

10
Joe

はい、あります、 GetCultures

System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)

これはCultureInfoオブジェクトの配列を返すため、文字列名が必要な場合は、次のようなものを使用できます。

IEnumerable<CultureInfo> cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
string[] names = cultures.Select(c => c.Name).ToArray();

「CultureTypes」列挙型に注意してください(MSDNリンクから)。最も有用なものはNeutralCulturesSpecificCulturesだと思います。

  • NeutralCultures言語に関連付けられているが、国/地域に固有ではない文化。 .NET Frameworkカルチャの名前は、ISO639-1から派生した小文字の2文字のコードで構成されています。例:「en」(英語)は中立的な文化です。カスタムカルチャには、2文字のコードだけでなく、ユーザーが指定した任意の名前を付けることができます。不変のカルチャは、この値を指定するCultureInfo.GetCulturesメソッドによって返されるカルチャの配列に含まれています。
  • SpecificCultures国/地域に固有の文化。これらのカルチャの名前は、RFC 4646(Windows Vista以降)に従います。形式は「-」です。ここで、はISO 639-1から派生した小文字の2文字コードであり、はISO 3166から派生した大文字の2文字コードです。たとえば、英語(米国)の「en-US」は特定の文化。カスタムカルチャには、標準に準拠した名前だけでなく、ユーザーが指定した任意の名前を付けることができます。
  • InstalledWin32CulturesWindowsオペレーティングシステムにインストールされているすべてのカルチャ。 .NETFrameworkでサポートされているすべてのカルチャがオペレーティングシステムにインストールされているわけではないことに注意してください。
  • AllCulturesニュートラルおよび特定のカルチャ、Windowsオペレーティングシステムにインストールされているカルチャ、ユーザーが作成したカスタムカルチャなど、.NETFrameworkに付属するすべてのカルチャ。
  • UserCustomCultureユーザーが作成したカスタムカルチャ。
  • ReplacementCultures。NETFrameworkに付属のカルチャを置き換えるユーザーによって作成されたカスタムカルチャ。
23
McGarnagle