2011-11-02 12 views
12

puedo obtener la lista de nombres de países mediante el siguiente código, (copiado de algún lugar no puedo recordar)Obtener la lista de países en otros idiomas además del Inglés

Mi pregunta es, ¿puedo obtener la lista de países en otra idiomas como el tailandés?

/// <summary> 
    /// method for generating a country list, say for populating 
    /// a ComboBox, with country options. We return the 
    /// values in a Generic List<T> 
    /// </summary> 
    /// <returns></returns> 
    public static List<string> GetCountryList() 
    { 
     //create a new Generic list to hold the country names returned 
     List<string> cultureList = new List<string>(); 

     //create an array of CultureInfo to hold all the cultures found, these include the users local cluture, and all the 
     //cultures installed with the .Net Framework 
     CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures); 

     //loop through all the cultures found 
     foreach (CultureInfo culture in cultures) 
     { 
      //pass the current culture's Locale ID (http://msdn.microsoft.com/en-us/library/0h88fahh.aspx) 
      //to the RegionInfo contructor to gain access to the information for that culture 
      RegionInfo region = new RegionInfo(culture.LCID); 

      //make sure out generic list doesnt already 
      //contain this country 
      if (!(cultureList.Contains(region.EnglishName))) 
       //not there so add the EnglishName (http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.englishname.aspx) 
       //value to our generic list 
       cultureList.Add(region.EnglishName); 
     } 
     return cultureList; 
    } 

Respuesta

11

http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.displayname.aspx

La propiedad DisplayName muestra el nombre del país/región en el idioma de la versión localizada de .NET Framework. Por ejemplo, la propiedad DisplayName muestra el país/región en inglés en la versión en inglés de .NET Framework, y en español en la versión en español de .NET Framework.

Parece que no hay una lista de nombres de países en cada idioma en .NET Framework, solo en el idioma que está instalado .NET Framework.

+0

¿Eso significa que un set currentUiCulture a 'fr' mostrará un nombre de país 'Allemagne'? que significa Alemania en inglés. – Pascal

+0

@Pascal no, estará en el idioma en el que se instaló .NET Framework. – CodeCaster

5

O utilice DisplayName (le da el nombre en la Cultura de marco actual) o NativeName (le da el nombre en la cultura nativa) en lugar de EnglishName.

+0

Esta es una respuesta mucho mejor que la que se aceptó. Es una pena, ya que la respuesta aceptada es algo incorrecta. –

+7

¿Qué pasa con mi respuesta? NativeName te da el nombre en esa cultura, no en la cultura actual. Así que NativeName de South Afrika es "Suid Afrika", y NativeName de Marruecos es "المملكة المغربية". No es posible obtener todos los nombres de países según una cultura, excepto el inglés o el idioma de la instalación de .NET Framework. – CodeCaster

+0

@Ramhound La respuesta aceptada es correcta. –

Cuestiones relacionadas