เมื่อพิจารณาจากรายชื่อวัฒนธรรม ฉันต้องการดึงชื่อที่แสดงตามวัฒนธรรมอื่นที่ไม่ใช่ของฉัน การใช้ "en", "de" และ "fr" เพื่อค้นหา CultureInfo บนเครื่องของฉัน (Windows 10 เวอร์ชันสหรัฐอเมริกาที่ตั้งค่าเป็น Culture "en-ZA") ให้ผลลัพธ์ดังต่อไปนี้
de => { EnglishName="German", NativeName="Deutsch", DisplayName="German" }
en => { EnglishName="English", NativeName="English", DisplayName="English" }
fr => { EnglishName="French", NativeName="français", DisplayName="French" }
ฉันต้องการดึงชื่อที่ตรงกับข้อโต้แย้งและรายการด้านล่าง
de => { Deutsch, Englisch, Französisch }
en => { German, English, French }
fr => { allemand, Anglais, français }
โปรดทราบว่าสิ่งเหล่านี้อาจไม่ถูกต้องเล็กน้อยเนื่องจากฉันได้รับความช่วยเหลือจาก Google แปลภาษา แต่ฉันคิดว่าคุณคงเข้าใจ
ฉันหวังว่าฉันจะสามารถตั้งค่าวัฒนธรรมสำหรับเธรดได้ก่อนที่จะดึง DisplayName ดังต่อไปนี้
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;
แต่วิธีนี้ใช้ไม่ได้ผล และในแต่ละกรณี DisplayName สำหรับวัฒนธรรมใดๆ จะเหมือนกับ EnglishName เสมอ
มีบางอย่างที่ฉันขาดหายไปใน .NET (หรือแม้แต่ไลบรารีของบริษัทอื่น) ที่สามารถช่วยฉันได้สิ่งที่ฉันต้องการ หรือฉันจะต้องสร้างรายการฮาร์ดโค้ดหรือไม่ ฉันต้องการหลีกเลี่ยงสิ่งนั้น เนื่องจากขณะนี้ฉันต้องการภาษานี้ประมาณ 30 ภาษา และสามารถเพิ่มภาษาอื่นๆ ได้ตลอดเวลา