2016-06-27 11 views
0

私は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の動作中の言語パック)を提案できますか?

+0

私は恐れがあります 'CultureInfo'' DisplayName'はデフォルトの.netフレームワークのdll言語を取得します。 [NativeName](https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.nativename(v = vs.110).aspx)を使用するとどうなりますか? – Pikoh

+0

NativeNameはドイツ語圏の国(オーストリア、ドイツ、スイス(?))のドイツ語のみです。 – Cleo

答えて

0

私は簡単な解決策を見つけることができなかったので、私はここからすべての国と自分の名前が含まれている*のcsvリストを使用:それに基づいてhttps://www.laenderdaten.info/downloads/

、私はAのためのリストを検索するヘルパークラスを作成しました指定された国名。

関連する問題