如何使用文化信息获取法语和英语的所有国家名称



我希望在我的下拉列表中用法语或英语显示所有国家/地区名称。这将取决于条件。

这是我的函数:

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() 中设置法语语言?

如果将

必要的语言包安装到系统中,则可以将其作为

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;

最新更新