获取本地化文化名称的显示名称

3

我正在开发一款多语言的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

这段代码的问题在于,显示名称属性没有本地化(它不依赖于用户文化),而是取决于服务器文化。

因此,由于我的计算机语言设置为法语,我无论使用英语、法语或意大利语等语言,始终得到相同的结果:

français (France)
Anglais (Royaume-Uni)
français (Canada)

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

  • If I am in french :

    français (France)
    Anglais (Royaume-Uni)
    français (Canada)
    
  • If I am in English:

    french (France)
    English (United Kingdom)
    french (Canada)
    
  • If I am in italian:

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

2
将Application.CurrentCulture设置为英语怎么样?或者将Thread.CurrentThread.CurrentCulture也设置为英语呢? - user6522773
当我切换当前语言时,这已经完成了。例如,如果我切换到意大利语,我会执行以下操作:Thread.CurrentThread.CurrentCulture = new CultureInfo("it-it") - user2443476
1
https://dev59.com/M3E95IYBdhLWcg3wKqok - filhit
2个回答

0

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

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

0
使用 NativeName 而不是 DisplayName。

本地名称仅提供一种本地化——语言的自我翻译,与用户文化无关。 - GeorgiG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接