私は2つの方法があります:特定のISO3166コードをドイツ語で対応する国の名前に変換する方法があります(例えば、 "de-DE"から "Deutschland")。これは正常に動作します。 もう一方の方法で動作するメソッドが必要です。現在は次のようになっています:.Net:ドイツの国名のISO3166コードを取得
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の動作中の言語パック)を提案できますか?
私は恐れがあります 'CultureInfo'' DisplayName'はデフォルトの.netフレームワークのdll言語を取得します。 [NativeName](https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.nativename(v = vs.110).aspx)を使用するとどうなりますか? – Pikoh
NativeNameはドイツ語圏の国(オーストリア、ドイツ、スイス(?))のドイツ語のみです。 – Cleo