Le culture sono raggruppate in tre gruppi: la cultura invariante, le culture neutrali e le culture specifiche. La coltura en
è una coltura neutra mentre la coltura en-US
è una cultura specifica.
GetCultureInfo
ti darà la cultura che hai richiesto, quindi se richiedi una cultura neutra ottieni anche una cultura neutra come en
.
CreateSpecificCulture
creerà una cultura specifica da una cultura neutra, quindi se si chiama il CreateSpecificCulture("en")
CultureInfo
restituito viene per la cultura en-US
. Non sono sicuro di come le culture neutre siano mappate a culture specifiche ma ci deve essere una tabella all'interno del BCL o di Windows che contenga tali mappature e decide che è lo en-US
e non lo en-GB
che viene restituito. La specifica di una cultura specifica come argomento a CreateSpecificCulture
ti darà quella specifica CultureInfo
proprio come fa GetCultureInfo
.
Ma c'è una caratteristica un po 'sorprendente della cultura specifica creata:
Se l'identificativo della cultura della cultura specifica restituito da questo metodo corrisponde l'identificatore cultura della cultura corrente di Windows, questo metodo crea un CultureInfo oggetto che utilizza le sovrascritture della cultura di Windows. Le sostituzioni includono le impostazioni utente per le proprietà dell'oggetto DateTimeFormatInfo restituite dalla proprietà DateTimeFormat e dall'oggetto NumberFormatInfo restituito dalla proprietà NumberFormat.
Ciò significa che se la cultura specifica restituito dal CreateSpecificCulture
corrisponde alla cultura selezionata dall'utente in Regione e pannello di controllo Lingua in Windows, allora tutte le personalizzazioni utente a che la cultura è incluso nel CultureInfo
restituito. Per esempio. l'utente può modificare il modello di data lunga o il separatore decimale utilizzato nei numeri. Un altro modo di pensare a questo è che quando CreateSpecificCulture
restituisce una cultura che corrisponde al nome di CurrentCulture
, restituirà effettivamente questa cultura comprese eventuali personalizzazioni dell'utente.
Per quanto posso dire, GetCultureInfo
non ha questa proprietà e restituirà sempre un CultureInfo
non modificato.
E per verificare se una cultura è valida vorrei usare GetCultureInfo
.
fonte
2013-11-14 09:25:32