วิธีรับ CultureInfo.DisplayName ตามวัฒนธรรมอื่นที่ไม่ใช่ของฉัน [ทำซ้ำ]

เมื่อพิจารณาจากรายชื่อวัฒนธรรม ฉันต้องการดึงชื่อที่แสดงตามวัฒนธรรมอื่นที่ไม่ใช่ของฉัน การใช้ "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 ภาษา และสามารถเพิ่มภาษาอื่นๆ ได้ตลอดเวลา


person Steve Crane    schedule 10.07.2017    source แหล่งที่มา
comment
ขึ้นอยู่กับว่าสิ่งนี้คืออะไร ให้พิจารณาว่าถ้าฉันพูดภาษาหนึ่ง ฉันก็ไม่จำเป็นต้องแปลชื่อภาษานั้น คือถ้าฉันพูดภาษาเยอรมัน ฉันจะรู้ว่า Deutsch แปลว่าภาษาเยอรมันโดยไม่จำเป็นต้องแปลเป็นภาษาอังกฤษ ถ้าฉันไม่รู้ว่ามันหมายถึงภาษาเยอรมัน ฉันก็คงไม่อยากเลือกมันอยู่ดี... มันจะขึ้นอยู่กับว่าคุณกำลังทำอะไรกับการแปลเป็นภาษาท้องถิ่น   -  person Chris    schedule 10.07.2017
comment
คริส คุณพูดถูก ขึ้นอยู่กับการใช้งาน การสร้างรายการชื่อภาษาท้องถิ่นเพื่อให้ผู้ใช้เลือกเองนั้นเป็นเรื่องง่าย และได้รับการดูแลโดย CultureInfo.NativeName แล้ว ในกรณีนี้ ฉันต้องการสร้างรายการชื่อภาษาเพื่อให้ผู้ดูแลระบบเลือกในภาษาของตนเอง ตัวอย่างเช่น NativeName สำหรับ zh-TW คือ 中文(台灣) และชื่อภาษาอังกฤษคือภาษาจีน (ตัวเต็ม ไต้หวัน) แต่ควรจะเป็นอย่างไรสำหรับผู้พูดภาษาเยอรมัน สเปน สวาฮีลี หรือภาษาอื่นๆ พวกเขาอาจไม่รู้จัก NativeName หรือ EnglishName   -  person Steve Crane    schedule 10.07.2017
comment
เย็น. ฉันคิดว่ามีโอกาสพอสมควรที่มันจะเป็นแบบนั้น แต่คิดว่าฉันจะแสดงความคิดเห็นเผื่อไว้เป็นอย่างอื่น! :)   -  person Chris    schedule 11.07.2017