我怎样才能获得正确的母语?

时间:2015-03-18 15:57:05

标签: .net vb.net localization

在vb.net应用程序中,我有一个组合框,我想填写世界上所有国家。

我用这段代码填充组合框:

For each ci In CultureInfo.GetCultures(CultureTypes.AllCultures)
    Dim ri as RegionInfo
    'Avoid null exception
    Try
        ri = New RegionInfo(ci.LCID)
    Catch
        Continue For
    End Try
    ri = New RegionInfo(ci.LCID)
    Me.ComboBoxCountries.Add(ri.ThreeLetterISORegionName + " - " + ri.EnglishName + " / " + ri.NativeName)
Next

所以基本上,目标是在我的列表中有:

ESP - 西班牙/西班牙

但是,由于西班牙有多种文化/语言(加泰罗尼亚语,卡斯蒂利亚语,巴斯克语,加利西亚语等),我有:

ESP - 西班牙/ Espainia

ESP - 西班牙/西班牙(这是卡斯蒂利亚人)

ESP - 西班牙/ Espanya (这是加泰罗尼亚语)

所以,由于似乎没有优先权,我想知道如何只用这个国家的第一语言来获得国家和它的名字。

基本上,我觉得从世界上所有文化开始获取国家列表很奇怪。

1 个答案:

答案 0 :(得分:0)

首先,不要使用AllCultures而是使用SpecificCultures,然后您不需要处理异常。这个LINQ查询应该有效:

Dim countries = From ci In CultureInfo.GetCultures(CultureTypes.SpecificCultures)
                Let ri = New RegionInfo(ci.Name)
                Let engCountry = ri.EnglishName
                Group ri By engCountry Into CountryGroup = Group
                Let first = CountryGroup.First()
                Order By first.ThreeLetterISORegionName
                Select String.Format("{0} - {1} / {2}",
                                     first.ThreeLetterISORegionName,
                                     first.EnglishName,
                                     first.NativeName)
Dim countryList As List(Of String) = countries.ToList()