鉴于文化列表,我想根据我自己的文化检索他们的显示名称。使用" 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种语言,并且可以随时添加更多语言。