.Net: получить код ISO3166 для немецкого названия страны
Я получил 2 метода: один, который преобразует данный код 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 Framework на немецком языке. Однако на нашем работающем сервере (Windows Server 2012) метод возвращает значение NULL для всех входных данных. Это происходит потому, что установленный.Net framework есть на английском. Я попытался исправить это, установив пакет немецкого языка для.Net Framework 4.5, но это не помогло. Кто-нибудь может предложить другое решение (или рабочий языковой пакет для 4.6)?
1 ответ
Поскольку я не мог найти более простое решение, я использовал список *csv, который содержит все страны и их названия отсюда: https://www.laenderdaten.info/downloads/
Исходя из этого, я создал вспомогательный класс, который просматривает список по заданному названию страны.