もちろん、国(あなたの例を含めて"CH"
スイス)は多くの言語を持つことができるので、これは醜いことです。
まだ、私はあなたに2つの醜い方法を提供します。まず1:
static IEnumerable<CultureInfo> FindCandidateCultures(RegionInfo region)
{
return CultureInfo.GetCultures(CultureTypes.SpecificCultures)
.Where(x => (new RegionInfo(x.Name)).GeoId == region.GeoId);
}
あなたの特定の例、new RegionInfo("CH")
で使用される、それは、.NET Frameworkの私のバージョンに、与え、私のWindows版:
de-CH: German (Switzerland)
fr-CH: French (Switzerland)
gsw-CH: Alsatian (Switzerland)
it-CH: Italian (Switzerland)
rm-CH: Romansh (Switzerland)
wae-CH: Walser (Switzerland)
第二の方法は、私はあなたを提供します:
// ugly reflection, this can break any day!
static CultureInfo ConvertToCulture(RegionInfo region)
{
var data = typeof(RegionInfo).GetField("m_cultureData", BindingFlags.NonPublic | BindingFlags.Instance)
.GetValue(region);
var name = (string)(data.GetType().GetProperty("SNAME", BindingFlags.NonPublic | BindingFlags.Instance)
.GetValue(data));
return CultureInfo.GetCultureInfo(name);
}
明らかなように、それはmscorlib.dll
の内部表現を使用し、それが将来のバージョンで解除されます場合は、私たちは知っていることはありません。しかし、それはあなたに特定の文化を選ぶ方法を与えます。私のマシンでは、new RegionInfo("CH")
からit-CH: Italian (Switzerland)
が得られます。
カナダやベルギーではどのような文化がありますか? –
[CultureInfo.GetCultureInfoメソッド](http://msdn.microsoft.com/en-us/library/yck8b540.aspx)をお探しですか? –
*** US ***の場合は、 'chr-US en-US es-USとhaw-US'を取得します:_Cheroqui、English、Spanish、Hawai_ – Kiquenet