如何根据我自己以外的文化获取CultureInfo.DisplayName?

时间:2017-07-10 15:02:45

标签: c# .net cultureinfo

鉴于文化列表,我想根据我自己的文化检索他们的显示名称。使用" 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 }

请注意,由于我获得了谷歌翻译的帮助,这些可能会略微不正确,但我认为你会明白这一点。

我希望在检索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种语言,并且可以随时添加更多语言。

0 个答案:

没有答案