我可以用双字符语言代码创建一个新的CultureInfo吗?

Ale*_*psa 5 c# cultureinfo

我需要根据文化格式化一个数字,但我所拥有的只是Accept-Language来自HTTP请求,这是一个两个字母的代码,如fr(法语)

这足以创建一个可以处理数字的CultureInfo吗?

Jep*_*sen 5

这是说明中立文化和特定文化之间差异的评论:

var language = "fr";

var c1 = new CultureInfo(language);
Console.WriteLine(c1.EnglishName);              // "French"
Console.WriteLine(c1.IsNeutralCulture);         // "True"
Console.WriteLine((3.14m).ToString("C", c1));   // "3,14 €"

var c2 = CultureInfo.CreateSpecificCulture(language);
Console.WriteLine(c2.EnglishName);              // "French (France)"
Console.WriteLine(c2.IsNeutralCulture);         // "False"
Console.WriteLine((3.14m).ToString("C", c2));   // "3,14 €"

var languageAndCountry = "fr-CA";

var c3 = new CultureInfo(languageAndCountry);
Console.WriteLine(c3.EnglishName);              // "French (Canada)"
Console.WriteLine(c3.IsNeutralCulture);         // "False"
Console.WriteLine((3.14m).ToString("C", c3));   // "3,14 $"
Run Code Online (Sandbox Code Playgroud)

总之,如果你只有语言,你不能得到一切。您可以选择中立文化,或者选择一些“典型”国家的“规范”特定文化。

当您同时拥有语言和国家/地区时,如在 中"fr-CA",事情会表现得更好。


在我的系统上,"fr"存在以下特定文化:

fr-029、fr-BE、fr-BF、fr-BI、fr-BJ、fr-BL、fr-CA、fr-CD、fr-CF、fr-CG、fr-CH、fr-CI、fr- CM, fr-DJ, fr-DZ, fr-FR, fr-GA, fr-GF, fr-GN, fr-GP, fr-GQ, fr-HT, fr-KM, fr-LU, fr-MA, fr-MC、fr-MF、fr-MG、fr-ML、fr-MQ、fr-MR、fr-MU、fr-NC、fr-NE、fr-PF、fr-PM、fr-RE、fr- RW、fr-SC、fr-SN、fr-SY、fr-TD、fr-TG、fr-TN、fr-VU、fr-WF、fr-YT

(找到string.Join(", ", CultureInfo.GetCultures(CultureTypes.SpecificCultures).Where(x => x.TwoLetterISOLanguageName == "fr"))


Chr*_*ris 4

是的你可以。下面的代码:

var ci = new CultureInfo("fr");
Console.WriteLine(13.45.ToString(ci));
Run Code Online (Sandbox Code Playgroud)

输出“13,45”,它在数字中使用法国小数点分隔符。

CultureInfo 文档说:

中性区域性仅由两个字母的小写语言代码指定。例如,fr 指定法语的中性文化,de 指定德语的中性文化。