2011-11-02 54 views
12

其他語言的國家名單,我可以使用下面的代碼獲得國家名稱的列表,(從什麼地方我不記得複製)獲取除英語

我的問題是,我可以在其他國家的名單泰語等語言?

/// <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; 
    } 

回答

11

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

DisplayName屬性顯示在.NET Framework的本地化版本的語言的國家/地區名稱。例如,DisplayName屬性在英文版的.NET Framework上以英文顯示國家/地區,,西班牙語版在.NET Framework上以西班牙語顯示。

因此,看起來在.NET Framework中每種語言都沒有國家名稱列表,只能使用安裝的.NET Framework所使用的語言。

+0

這是否意味着設置currentUiCulture爲'fr'將顯示國名「Allemagne」?這意味着德語用英語。 – Pascal

+0

@Pascal不,它將以.NET Framework的安裝語言。 – CodeCaster

5

可以使用DisplayName(在當前框架文化中給出您的名稱)或NativeName(在本地文化中給出您的名稱)而不是EnglishName

+0

這是一個更好的答案,然後被接受。這是一個恥辱,因爲接受的答案是不正確的。 –

+7

我的回答有什麼問題? NativeName爲您提供該文化中的名稱,而不是當前的文化。所以South Afrika的NativeName是「Suid Afrika」,而摩洛哥的NativeName是「المملكةالمغربية」。無法根據一種文化來獲取所有國家/地區名稱,除了英語或.NET Framework安裝的語言。 – CodeCaster

+0

@Ramhound接受的答案是正確的。 –