:
List<RegionInfo> allRegions = new List<RegionInfo>();
var specificCultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
foreach (CultureInfo culture in specificCultures)
{
var info = new RegionInfo(culture.LCID);
allRegions.Add(info);
}
これはあなたにそれらのいくつかの複数回のすべての国を、提供します(異なる言語なぜなら使用中)。
RegionInfoは、いくつかの興味深い性質がありますため、「ドイツ」を
NativeName
あなたの国の名の翻訳を与えるが、残念ながら与えられたロケール識別子(LCID)に対応するものだろう、それはポーランドのための「ポルスカ」でありますドイツなど。いくつかはいくつかの言語に翻訳されます(興味深いのは、アメリカ合衆国は米国と米国の両方で表示されているためです)
DisplayName
あなたが探しているはずのものは何ですか?残念ながらそうではありません - マイクロソフトでは翻訳を忘れています.Net framework(おそらくそれはプロパティであってはならないため、OKです)
- 名前とは違う名前が示す2文字の国コードです。
この情報でできることは何ですか?理論的には、翻訳された国名を使用することができます。この場合、辞書(Dictionary<int, string>
)を作成し、LCIDに対応するNativeName文字列を追加し、ドロップダウンメニューのソースとして使用します。
国で生まれた人のうち少なくとも1人はその言語の少なくとも1つを理解できなければなりません。
しかし現実には、あなたのアプリケーションが現時点で表示している言語に翻訳された国のユニークなリストを持つことをお勧めします。上記の方法を使用して国のリストを取得し、たとえばDisplayName
(またはEnglishName
)のように使用することができます。実行時に他の文字列と同じように翻訳された名前に解決されます。それはバックエンドで発生する必要があるので、別のリソースファイル(App_GlobalResourcesに置くことができ、重要ではない)を追加し、コードビハインドで読み込みます。これ以上の理論は、いくつかのサンプルコードは必要ありません:
const string RESOURCE_FILE = "Countries";
Dictionary<string, string> countryNames = new Dictionary<string, string>();
var specificCultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
foreach (CultureInfo culture in specificCultures)
{
var info = new RegionInfo(culture.LCID);
var name = info.EnglishName;
var translated = GetGlobalResourceObject(RESOURCE_FILE, name).ToString();
countryNames[name] = translated;
}
あなたは(CurrentUICulture
以外の)特定の言語での名前を読みたい場合は
は
GetGlobalResourceObject()
の三番目の引数として
CultureInfo
オブジェクトを渡します。
なぜあなたはこれをやりたいのですか?なぜこの情報が最初に必要なのですか?もう1つの質問は、(通常)ウェブブラウザから検出できる場合、ユーザーに国を選択させる必要がある理由です。 –
解説のために編集します – ignaciofuentes