2016-03-10 61 views
0

我想在我的下拉列表中使用法語或英語顯示所有國家的名稱。這將取決於一個條件。如何用CultureInfo在法語和英語中獲得所有國家名稱?

這裏是我的功能:

private void PopulateDropDownList() 
{ 
    List<string> cultureList = new List<string>(); 
    CultureInfo[] getCultureInfo = CultureInfo.GetCultures(CultureTypes.SpecificCultures); 

    // I fill my list cultureList with countries 
    foreach (CultureInfo getCulture in getCultureInfo) 
    { 
     RegionInfo getRegionInfo = new RegionInfo(getCulture.LCID); 
     if (!(cultureList.Contains(getRegionInfo.EnglishName))) 
     { 
      cultureList.Add(getRegionInfo.EnglishName); 
     } 
    } 
    // Sort the list to get all the countries in order 
    cultureList.Sort(); 

    // Fill my DropDownList ddlCountry with my list of countries 
    ddlCountry.Items.Add(new ListItem("Select a country", "")); 
    foreach (string country in cultureList) 
    { 
     ddlCountry.Items.Add(new ListItem(country, country)); 
    } 
} 

我的ASP頁面:

<label class="control-label">Country</label> 
<asp:DropDownList runat="server" ID="ddlCountry" CssClass="form-control c-square c-theme"> 
</asp:DropDownList> 

現在,所有的國家都在英國。我的問題很簡單:如何在我的函數PopulateDropDownList()中直接用法語設置語言?

+0

請隨時糾正我的英語很差^^ – Andy

+0

的'RegionInfo'對象有一個'NativeName'屬性,以該地區的母語給出該名稱。除非安裝了法語版本的.NET,否則我沒有看到任何會以法語給你起名字的東西。有一個名爲「DisplayName」屬性的屬性,「以.NET Framework本地化版本的語言獲取國家/地區的全名」。 –

+0

我實際上需要兩種語言,不僅法語。 – Andy

回答

0

如果您安裝必要的語言包到你的系統,你可以把它作爲

var orgCulture = Thread.CurrentThread.CurrentUICulture; 
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("fr-FR"); //<-- ***** 
var countries = CultureInfo.GetCultures(CultureTypes.SpecificCultures) 
       .Select(x => new RegionInfo(x.LCID)) 
       .Select(x => x.DisplayName) 
       .Distinct() 
       .OrderBy(x=>x) 
       .ToList(); 
Thread.CurrentThread.CurrentUICulture = orgCulture; 
相關問題