Mengingat daftar budaya, saya ingin mengambil nama tampilan mereka berdasarkan budaya selain budaya saya. Menggunakan "en", "de" dan "fr" yang menanyakan CultureInfo untuk mereka di mesin saya (Windows 10 versi AS yang disetel ke budaya "en-ZA") memberikan hasil sebagai berikut.
de => { EnglishName="German", NativeName="Deutsch", DisplayName="German" }
en => { EnglishName="English", NativeName="English", DisplayName="English" }
fr => { EnglishName="French", NativeName="français", DisplayName="French" }
Saya ingin mengambil nama yang cocok dengan argumen dan daftar di bawah
de => { Deutsch, Englisch, Französisch }
en => { German, English, French }
fr => { allemand, Anglais, français }
Perhatikan bahwa ini mungkin sedikit salah karena saya mendapat bantuan dari Google Terjemahan, namun saya rasa Anda akan mengerti.
Saya berharap dapat mengatur budaya thread sebelum mengambil DisplayName sebagai berikut.
CultureInfo myCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("de");
string english = CultureInfo.GetCultureInfo("en").DisplayName; // hoped for "Englisch"
string french = CultureInfo.GetCultureInfo("fr").DisplayName; // hoped for "Französisch"
string german = CultureInfo.GetCultureInfo("de").DisplayName; // hoped for "Deutsch"
Thread.CurrentThread.CurrentCulture = myCulture;
Tapi ini tidak berhasil dan dalam setiap kasus DisplayName untuk budaya apa pun selalu sama dengan EnglishName.
Apakah ada sesuatu yang saya lewatkan di .NET (atau bahkan perpustakaan pihak ketiga) yang dapat membantu saya mendapatkan apa yang saya perlukan atau apakah saya harus membuat daftar hard-coded? Saya ingin menghindari hal itu karena saat ini saya memerlukan ini untuk sekitar 30 bahasa dan lebih banyak lagi yang dapat ditambahkan kapan saja.