2015-03-18 5 views
0

В приложении 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 - Испания/España

Но, поскольку Испания имеет несколько культур/языков (каталонский, Кастилии, Басков, Галицкая и т.д.), у меня есть, вместо:

ESP - Испания/Espainia

ESP - Испания/España (Это кастильский)

ESP - Испания/Espanya (Это каталонский)

т.д.

Итак, поскольку, кажется, нет приоритета, я хотел бы знать, как получить только страну и ее имя на первом языке страны.

В принципе, мне показалось странным получить список стран, начиная со всех культур в мире.

+0

Не забывайте, что некоторые страны (например, Швейцария) не имеют «первого» языка, но имеют несколько официальных языков с равным статусом. – Blackwood

ответ

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() 
+0

Это не решит проблему, но вы все еще показали мне другой способ закодировать ее, чтобы я ее взял :). Насколько я знаю, у меня все еще есть некоторые незнакомые языки: FRA - Франция/Frañs (бретонский язык) вместо FRA - Франция/Франция ESP - Испания/Espanya (Каталанский язык) вместо España –

+0

@ Marc-O : Я не понимаю. Если я тестирую его, я получаю 128 стран, но только «FRA - Франция/Франция» и «ESP - Испания/Эспана». –

+0

@Tim_Schmelter Возможно, это зависит от версии библиотеки, IDE или чего-то подобного ... Я попробую что-то другое, кроме AllCultures или SpecificCultures. Но это вызывает интересный момент. –

Смежные вопросы