我需要格式化一個數字,基於一種文化,但我已經是從HTTP請求,這就好比fr
(法國)我可以使用雙字符語言代碼創建新的CultureInfo嗎?
兩個字母的代碼Accept-Language
這是否足以創建的CultureInfo那可以處理數字?
我需要格式化一個數字,基於一種文化,但我已經是從HTTP請求,這就好比fr
(法國)我可以使用雙字符語言代碼創建新的CultureInfo嗎?
兩個字母的代碼Accept-Language
這是否足以創建的CultureInfo那可以處理數字?
是的,你可以。以下代碼:
var ci = new CultureInfo("fr");
Console.WriteLine(13.45.ToString(ci));
輸出在編號中使用法語小數點分隔符的「13,45」。
一個區域性僅由兩個字母小寫語言代碼指定。例如,fr指定法語的中立文化,de指定德語的中立文化。
請注意,在這種情況下'ci.CultureTypes'將具有標誌'NeutralCultures'。等效地,['ci.IsNeutralCulture'](https://msdn.microsoft.com/en-us/library/7tkwe67b.aspx)給出'true'。這不是真的推薦。最好使用像'New CultureInfo(「fr-CA」)''這樣的語言和國家的語言和國家,對應於'SpecificCultures'標誌。 –
@JeppeStigNielsen:你會推薦選擇一個任意的國家,而不是這樣做嗎?與選擇國家相比,它是中立文化有什麼缺點? – Chris
'var ci = CultureInfo.CreateSpecificCulture(「fr」)'爲您挑選特定的文化。在這個例子中,它選擇'「fr-FR」',即_French(法國)_。雖然我不是這裏的專家。 –
這說明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
(found with string.Join(", ", CultureInfo.GetCultures(CultureTypes.SpecificCultures).Where(x => x.TwoLetterISOLanguageName == "fr"))
)
當你嘗試過時發生了什麼? – Chris