我有两种方法:一种将给定的ISO3166代码转换为德语中相应国家/地区的名称(例如" de-DE"至" Deutschland")。这很好用。 现在我需要一种相反的方法。目前它看起来像这样:
public static string GetISO3166CodeForGermanCountryName(string countryName)
{
if (string.IsNullOrEmpty(countryName) || countryName.Length == 2)
return countryName;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-AT");
CultureInfo cInfo = cultures.FirstOrDefault(culture => new RegionInfo(culture.LCID).DisplayName == countryName);
if (cInfo != null && cInfo.Name.Contains("-"))
return cInfo.Name.Split('-')[1]; //take the 2nd part of the culture info name (e.g. "de-AT" --> "AT")
else
return null;
}
这在我的开发机上工作正常,因为安装的.Net框架是德语版。但是,在我们的实时服务器(Windows Server 2012)上,该方法为所有输入返回null。发生这种情况是因为安装的.Net框架有英文版。我尝试通过安装.Net framework 4.5的德语语言包来解决这个问题,但这并没有帮助。 任何人都可以建议一个不同的解决方案(或4.6的工作语言包)?
答案 0 :(得分:0)
由于我找不到更简单的解决方案,因此我使用了* csv列表,其中包含所有国家/地区及其名称:https://www.laenderdaten.info/downloads/
基于此,我创建了一个帮助程序类,在列表中搜索给定的国家/地区名称。