C# 获取本地化区域性中区域性名称的显示名称
我正在开发一个多语言asp.net MVC应用程序。在网格中,我试图显示一个区域性列表。这些数据必须以用户语言(当前线程语言)显示 例如,我得到一个语言代码列表: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
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");