我可以使用以下代码获取国家/地区名称列表,(从某些我无法记住的地方复制)
我的问题是,我是否可以获得其他语言的国家/地区列表,例如泰语?
/// <summary>
/// method for generating a country list, say for populating
/// a ComboBox, with country options. We return the
/// values in a Generic List<T>
/// </summary>
/// <returns></returns>
public static List<string> GetCountryList()
{
//create a new Generic list to hold the country names returned
List<string> cultureList = new List<string>();
//create an array of CultureInfo to hold all the cultures found, these include the users local cluture, and all the
//cultures installed with the .Net Framework
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures);
//loop through all the cultures found
foreach (CultureInfo culture in cultures)
{
//pass the current culture's Locale ID (http://msdn.microsoft.com/en-us/library/0h88fahh.aspx)
//to the RegionInfo contructor to gain access to the information for that culture
RegionInfo region = new RegionInfo(culture.LCID);
//make sure out generic list doesnt already
//contain this country
if (!(cultureList.Contains(region.EnglishName)))
//not there so add the EnglishName (http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.englishname.aspx)
//value to our generic list
cultureList.Add(region.EnglishName);
}
return cultureList;
}
答案 0 :(得分:11)
http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.displayname.aspx
DisplayName属性以.NET Framework的本地化版本的语言显示国家/地区名称。例如,DisplayName属性在英文版的.NET Framework上显示英语的国家/地区,,在西班牙语版本的.NET Framework上显示西班牙语。
因此,.NET Framework中的每种语言都没有国家/地区名称列表,只有安装的.NET Framework所使用的语言。
答案 1 :(得分:5)
使用DisplayName
(在当前的框架文化中为您提供名称)或NativeName
(在原生文化中为您提供名称)而不是EnglishName
。
答案 2 :(得分:0)
很晚才回答:
在我的应用程序中,用户可以选择一种语言(应用程序支持的语言),并且在UI中,我需要以所选语言显示国家/地区名称。
我发现NuGet软件包IsoNames满足了这一目的。它提供了方法
IsoNames.CountryNames.GetName(CultureInfo culture, string countrycode);
从而克服了DisplayName
暗含的限制。