C# 获取本地化区域性中区域性名称的显示名称

C# 获取本地化区域性中区域性名称的显示名称,c#,cultureinfo,C#,Cultureinfo,我正在开发一个多语言asp.net MVC应用程序。在网格中,我试图显示一个区域性列表。这些数据必须以用户语言(当前线程语言)显示 例如,我得到一个语言代码列表: fr-fr en-gb fr-ca 我正在这样做: var cultureOne = new CultureInfo("fr-fr").DisplayName var cultureTwo = new CultureInfo("en-gb").DisplayName var cultureThird = new CultureInf

我正在开发一个多语言asp.net MVC应用程序。在网格中,我试图显示一个区域性列表。这些数据必须以用户语言(当前线程语言)显示

例如,我得到一个语言代码列表:

fr-fr
en-gb
fr-ca
我正在这样做:

var cultureOne = new CultureInfo("fr-fr").DisplayName
var cultureTwo = new CultureInfo("en-gb").DisplayName
var cultureThird = new CultureInfo("fr-ca").DisplayName
代码的问题在于,displayname属性不是本地化的(它不取决于用户文化),而是取决于服务器文化

因此,由于我的机器是法语的,我总是得到相同的结果(无论我是英语、法语、意大利语……):

我的目标是获得以下结果:

  • 如果我是法语的:

    français (France)
    Anglais (Royaume-Uni)
    français (Canada)
    
  • 如果我使用英语:

    french (France)
    English (United Kingdom)
    french (Canada)
    
  • 如果我是意大利语:

    francese (Francia)
    inglese (Regno Unito)
    francese(Canada)
    

    • 我的意思是,DisplayName取决于这种文化:

      Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");
      

      使用NativeName而不是DisplayName。

      如何将Application.CurrentCulture设置为英语?或者将Thread.CurrentThread.CurrentCulture也转换为英语?这在我使用当前语言时已经完成。例如,如果我切换到斜体,我将执行以下操作:Thread.CurrentThread.CurrentCulture=new CultureInfo(“it”)本机名称仅提供一种本地化—语言本身的翻译,与用户文化无关。
      Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");