Bagaimana cara mendapatkan CultureInfo.DisplayName berdasarkan budaya selain budaya saya? [duplikat]

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.


person Steve Crane    schedule 10.07.2017    source sumber
comment
Bergantung pada tujuannya, pertimbangkan bahwa jika saya berbicara suatu bahasa maka saya tidak memerlukan nama bahasa tersebut diterjemahkan. yaitu jika saya berbicara bahasa Jerman saya akan tahu bahwa Deutsch berarti bahasa Jerman tanpa perlu diterjemahkan ke dalam bahasa Inggris. Jika saya tidak tahu artinya bahasa Jerman maka saya mungkin tidak ingin memilihnya... Itu akan tergantung pada apa yang Anda lakukan dengan pelokalan.   -  person Chris    schedule 10.07.2017
comment
Chris, Anda benar tentang hal itu tergantung penggunaannya. Membuat daftar nama bahasa asli agar pengguna dapat memilihnya sendiri adalah hal yang mudah dan sudah disediakan oleh CultureInfo.NativeName. Dalam hal ini saya ingin membuat daftar nama bahasa untuk dipilih oleh administrator, dalam bahasanya sendiri. Misalnya NativeName untuk zh-TW adalah 中文(台灣) dan EnglishName adalah China (Tradisional, Taiwan), tapi apa yang seharusnya untuk penutur bahasa Jerman, Spanyol, Swahili, atau bahasa lainnya? Mereka mungkin tidak mengenali NativeName atau EnglishName.   -  person Steve Crane    schedule 10.07.2017
comment
Dingin. Saya pikir ada kemungkinan yang masuk akal bahwa itu akan menjadi sesuatu seperti itu tetapi saya pikir saya akan berkomentar kalau-kalau itu adalah sesuatu yang lain! :)   -  person Chris    schedule 11.07.2017