从MSDN中读取
CultureInfo.Name 属性
获取以语言代码2-国家/地区代码2格式表示的区域设置名称。
以下是示例:
Console.Write("{0,-7}", ci.Name);
[...]
/*
This code produces the following output. This output has been cropped for brevity.
CULTURE ISO ISO WIN DISPLAYNAME ENGLISHNAME
ar [...]
bg [...]
ca [...]
zh-Hans [...]
cs [...]
da da [...]
de de [...]
el el [...]
en en eng ENU English English
es es spa ESP Spanish Spanish
fi fi [...]
zh zh [...]
zh-Hant zh [...]
zh-CHS zh [...]
zh-CHT zh [...]
*/
能有人解释一下 两个 字母的 languagecode2-country/regioncode2
格式是什么,以及如何从 CultureInfo
获取 "en-US
" 字符串吗?
假设我有以下代码:
var culture = Context.Features.Get<IRequestCultureFeature>().RequestCulture.UICulture;
string lang2 = culture.TwoLetterISOLanguageName.ToLower();
string lang4 = culture.Name.ToLower();
最终lang2 == lang4
,有没有办法获得“正确”的lang4
?
此外,CultureInfo不会检查无效的语言环境名称,任何两个字母的组合都可以使用(这里是示例):
using System;
using System.Globalization;
public class Program {
public static void Main() {
Console.Write(new CultureInfo("xx").Name); // "xx"
Console.Write(new CultureInfo("xx-YY").Name); // "xx-YY"
}
}
new CultureInfo("en-US").Name
应该可以解决问题。如果返回 'en',那么它是一般的英语文化,而不是特定的美国文化。 - Caramiriel