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

时间:2017-01-30 15:26:23

标签: c# cultureinfo

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

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

2 个答案:

答案 0 :(得分:4)

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

type: 'time',
position: 'bottom',
gridLines: {
    display: false
},
time: {
    unit: 'day',
    unitStepSize: 1,
    displayFormats: {
        day: 'MMM DD',
        hour: 'h:mm A'
    }
}

输出" 13,45"这是在数字中使用法语小数分隔符。

CultureInfo documentation说:

  

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

答案 1 :(得分:4)

这是一条评论来说明neutral cultures and specific cultures

之间的区别
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 $"

总之,如果你只有语言,你就无法得到一切。你既可以获得中立的文化,也可以获得规范的文化。特定的文化,其中一些"典型的"国家被挑选。

当您同时拥有语言和国家/地区时,就像在"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"))