从标准CultureInfo获取所有Regional CultureInfo

时间:2012-09-06 08:22:36

标签: c# cultureinfo

我是C#的新手。我想要的是以下内容:

我有两个组合框:

  • 在第一个我有所有标准语言(en,de,fr,...)
  • 在第二个我希望区域语言在第一个组合框中形成所选语言(如果我选择“en”那么应该列出“en-US”,“en-GB”,... 。)

任何人都可以帮助我吗? :d

Greez 联发

2 个答案:

答案 0 :(得分:4)

您可以使用:

var parent = CultureInfo.GetCultureInfo(selectedLanguage);
var regionalLanguages = CultureInfo.GetCultures(CultureTypes.AllCultures)
                                   .Where(x => x.Parent.Equals(parent));

答案 1 :(得分:0)

可能有一种更简单的方法,但这有效:

  1. 创建一个Dictionary<CultureInfo, HashSet<CultureInfo>>,将中性文化映射到特定国家/地区的文化。
  2. 致电CultureInfo.GetCultures()以获取所有已安装的文化。
  3. 对于每个CultureInfo返回的电话IsNeutral,看看它是否是一个中性文化。如果是这样,请将其添加到字典中,并将空哈希值作为值。如果没有,请致电CultureInfo.Parent,直到获得中性文化,然后将中性文化作为关键字和国家特定文化添加到HashSet。
  4. 请注意,某些国家/地区的中性文化似乎是针对特定国家/地区的,例如zh-Hans(简体中文)和zh-Hant(繁体中文)。你也会得到一些遗留的文化,比如zh-CHS和zh-CHT(又一个简体中文版和繁体版)也可能会有一些变音符号。