当前文化信息对象

时间:2015-06-03 13:30:16

标签: c# localization globalization

我想在下拉列表中显示语言列表。

用户必须以自己的语言查看国家/地区。

作为德国人,我想要“de-DE”的“ Deutschland ”和“fr-FR”的“ Frankreich ” 作为一个英国人,我希望“德国”代表“de-DE”,“法语”代表“fr-FR”

我在文化信息对象上尝试了.EnglishName,NativeName和DisplayName属性,但是这些属性似乎不正确。

1 个答案:

答案 0 :(得分:0)

foreach (var item in from e in new string[] { "en-US", "en-GB", "de-DE", "ru-RU", "fr-FR" }
                     select CultureInfo.GetCultureInfo(e))
{
    Console.WriteLine("{0} => {1} (in current culture (russian): {2})", item.Name, item.NativeName, item.DisplayName);
}

结果:

en-US => English (United States) (in current culture (russian): Английский (США))
en-GB => English (United Kingdom) (in current culture (russian): Английский (Великобритания))
de-DE => Deutsch (Deutschland) (in current culture (russian): Немецкий (Германия))
ru-RU => русский (Россия) (in current culture (russian): Русский (Россия))
fr-FR => français (France) (in current culture (russian): Французский (Франция))

我认为,DisplayName取决于当前的UI文化,但NativeName是独立的。对于我的文化(俄语)所有其他文化DisplayNames用俄语显示,如果我将改变当前的文化,DisplayName也将改变。但是我不知道如何在没有更改Windows设置的情况下在文化A中获取文化名称B