从MSDN读取
CultureInfo.Name Property 以语言代码2-country/regioncode2 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"
}
}发布于 2017-08-30 15:10:52
MSDN提供的示例只返回languagecode2,因为它在CultureInfo.GetCultures(CultureTypes.NeutralCultures)上迭代。顾名思义,正在迭代的CultureInfo是与无关的,因此它们的名称只包含两个字母的小写语言代码。
更普遍地说,CultureInfo提供有关特定区域性的信息。当它不是中性的时候。
如果您的代码返回en,那么它只意味着向其传递了一个中性区域性。如果/当您传递特定的区域性(例如:en),则名称将相应匹配。
可以从CultureInfo MSDN页面的备注部分收集更多的信息。
A neutral culture is specified by only the two-letter lowercase language code. For example, fr specifies the neutral culture for French, and de specifies the neutral culture for German.
https://stackoverflow.com/questions/45963644
复制相似问题