I'm currently facing an issue with my code related to the way CultureInfo.GetCultures method is sending me the list of countries.

I have this in my getCountries method:

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); 
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB"); 
var cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);

Which retrieves me a list of Cultures in associated to English Culture.

I was trying to do something like

public List<String> getCountriesNamesbyCountry(string countrycode){

    System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(countrycode); 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(countrycode); 
    var cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);

    var cultureList = new List<String>();

       foreach (CultureInfo cul in cultures)
            var country = new RegionInfo(cul.LCID);

            if (!cultureList.Contains(country.DisplayName))

        return cultureList;

If I try to do this

List<String> en = getCountriesNamesbyCountry("en");
List<String> es = getCountriesNamesbyCountry("es");

Both lists will give me a list of country names in english.
What am I doing wrong >.<?

Recommended Answers


See the Remarks section. The DisplayName is taken from your installed version of .NET, so even if you change the culture, your installed version probably does not have the correct resources installed.

Jump to Post

All 3 Replies

What should I do then in that case?

Build a resource yourself, which you can then include and use in your application. Perhaps you can find one online. There must've been more people facing this issue.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.20 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.