我需要根据文化格式化一个数字,但我所拥有的只是Accept-Language来自HTTP请求,这是一个两个字母的代码,如fr(法语)
这足以创建一个可以处理数字的CultureInfo吗?
这是说明中立文化和特定文化之间差异的评论:
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")))
是的你可以。下面的代码:
var ci = new CultureInfo("fr");
Console.WriteLine(13.45.ToString(ci));
Run Code Online (Sandbox Code Playgroud)
输出“13,45”,它在数字中使用法国小数点分隔符。
中性区域性仅由两个字母的小写语言代码指定。例如,fr 指定法语的中性文化,de 指定德语的中性文化。
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |