물론 국가 (귀하의 경우 "CH"
스위스 포함)가 많은 언어를 가질 수 있기 때문에 이것은 추한 일입니다.
아직도 두 가지 방법을 제안합니다. 먼저 하나
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 Method] (http://msdn.microsoft.com/en-us/library/yck8b540.aspx)를 찾으십니까? –
*** 미국 ***에 대해서는'chr-US en-US es-US and haw-US'을 얻습니다 : _Cheroqui, English, Spanish, Hawai_ – Kiquenet