使用.NET从区域设置字符串获取语言名称?例如:en_us => 英语

12

我如何找到给定区域设置的语言?

例如:输入:en_US 输出:英语

使用.NET库吗?我尝试了CultureInfo类,但我找不到有用的东西。

谢谢!


重复的问题? https://dev59.com/M3E95IYBdhLWcg3wKqok - mcw
4个回答

19
不要使用CultureInfo的构造函数。使用静态的GetCultureInfo方法速度更快,因为此方法会缓存并返回一个不可变(只读)的CultureInfo对象。
根据Facebook SDK关于本地化的文档,可以安全地假设您可以将下划线替换为破折号,以便.NET理解该区域设置。

Facebook语言环境遵循ISO语言和国家/地区代码,用下划线连接。

基本格式为“ll_CC”,其中“ll”是两个字母的语言代码,“CC”是两个字母的国家/地区代码。例如,'en_US'表示美式英语。

根据需要让名称出现在英语中而不管操作系统的语言是什么,请使用
CultureInfo.GetCultureInfo("en-US").EnglishName

如果您需要操作系统语言中的名称,请使用以下方法:

CultureInfo.GetCultureInfo("en-US").DisplayName

谢谢。但请注意,就像@ChrisSnowden所说的那样,这仅适用于en-US,而不是en_US。 - ThdK

10

你需要在代码中使用 en-US 而不是 en_US:

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
string name = culture.DisplayName;

输出结果:英语(美国)


我应该使用replace方法吗? "_" => "-" 因为我从Facebook获取区域设置字符串.. - ThdK
是的,这将是将区域设置字符串格式化为正确格式的最佳方法。 - Chris Snowden

2
System.Globalization.CultureInfo.GetCultureInfo("en-US").EnglishName;

0
您可以使用以下代码。
Dim culture1 As CultureInfo = New CultureInfo("en-US")
Dim t As Thread = Thread.CurrentThread
Dim currentCulture As CultureInfo = t.CurrentCulture
Dim currentUICulture As CultureInfo = t.CurrentUICulture

'*** display cultures in console
Console.WriteLine("Current Culture: " & currentCulture.Name)
Console.WriteLine("Current UI Culture: " & currentUICulture.Name)

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