【问题标题】:Get all Regional CultureInfos form a Standard CultureInfo从标准 CultureInfo 获取所有区域 CultureInfo
【发布时间】:2012-09-06 08:22:36
【问题描述】:

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

我有两个组合框:

  • 在第一个中,我拥有所有标准语言(en、de、fr、...)
  • 在第二个中,我想从第一个组合框中选择的语言中获取区域语言(如果我选择“en”,那么应该列出“en-US”、“en-GB”、.. .)

谁能帮我解决这个问题? :D

格力兹 阿里昂

【问题讨论】:

    标签: c# cultureinfo


    【解决方案1】:

    你可以用这个:

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

    【讨论】:

    • 嗯...如果我的 selectedLanguage 为“en”,则区域语言为 Count = 0。我认为那是不正确的。^^
    • 请使用当前代码重试。我发布的第一个版本不正确,因为它使用的不是Equals,而是==。另外,请注意selectedLanguage 应该是包含语言的字符串,例如“恩”。除此之外,我没有什么问题,因为我已经测试了代码并且它可以工作。
    【解决方案2】:

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

    1. 创建一个Dictionary<CultureInfo, HashSet<CultureInfo>>,将中立文化映射到特定国家/地区的文化。
    2. 致电CultureInfo.GetCultures() 获取所有已安装的培养物。
    3. 对于每个 CultureInfo 返回的调用 IsNeutral 来查看它是否是中性区域性。如果是这样,请将其添加到字典中,并将空哈希集作为值。如果没有,请致电 CultureInfo.Parent 直到找到中立文化,然后将中立文化作为键并将国家特定文化添加到 HashSet。

    请注意,某些国家/地区中立文化似乎是特定于国家/地区的,例如 zh-Hans(简体中文)和 zh-Hant(繁体中文)。您还将获得一些传统文化,例如 zh-CHS 和 zh-CHT(又是简体中文和繁体)也可能会获得一些带有变音符号的文化。

    【讨论】:

    • 这绝对可以更容易。但它也有效。 :D 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多