Quand utiliser CultureInfo.GetCultureInfo (String) ou CultureInfo.CreateSpecificCulture (String)
Quand dois-je appeler CultureInfo? CreateSpecificCulture(String) plutôt que CultureInfo.GetCultureInfo (String). La documentation du MSDN n'est pas très claire.
y a-t-il aussi un moyen de vérifier moins cher si le nom d'une culture est valide?
I penser si vous passez " en "plutôt que" en-GB " à CultureInfo.CreateSpecificCulture (String) vous obtiendrez une erreur, mais cette CultureInfo.GetCultureInfo (String) ne s'en soucie pas. E. g. CultureInfo.GetCultureInfo (String) peut faire face si vous passez seulement une langue. cependant, je ne suis pas encore très clair à ce sujet.
2 réponses
cela dépend un peu de ce pour quoi vous avez besoin de la culture. Les noms abrégés ("en"," fr", etc.) sont utilisés pour les cultures neutres, ce qui est suffisant pour la gestion des ressources linguistiques. Mais pour le formatage numérique et de date, vous avez besoin d'une culture spécifique, comme "en-GB".
Et CultureInfo.CreateSpecificCulture("en");
fonctionne très bien ici. Il est particulièrement destiné à obtenir " une " culture spécifique pour une neutre.
les Cultures sont regroupées en trois groupes: la culture invariante, les cultures neutres et les cultures spécifiques. La culture en
est une culture neutre alors que la culture en-US
est une culture spécifique.
GetCultureInfo
vous donnera la culture que vous avez demandé donc si vous demandez une culture neutre vous obtenez aussi une culture neutre comme en
.
CreateSpecificCulture
va créer une culture spécifique à partir d'une culture neutre donc, si vous appelez CreateSpecificCulture("en")
CultureInfo
retourné est pour l' en-US
la culture. Je ne suis pas sûr de la façon dont les cultures neutres sont mappées à des cultures spécifiques, mais il doit y avoir une table à l'intérieur de la BCL ou des fenêtres qui contient ces mappages et décide que c'est le en-US
et non en-GB
qui est retourné. Spécifier une culture spécifique comme argument pour CreateSpecificCulture
vous donnera spécifique CultureInfo
GetCultureInfo
ne.
mais il y a une caractéristique un peu surprenante de la culture spécifique créée:
si la l'Identificateur de culture de la culture particulière retournée par cette méthode correspond à l'Identificateur de culture de la culture Windows actuelle, cette méthode crée un objet CultureInfo qui utilise la culture Windows qui l'emporte. Les dérogations comprennent les paramètres d'utilisateur pour les propriétés de L'objet DateTimeFormatInfo retourné par la propriété DateTimeFormat et L'objet NumberFormatInfo retourné par la propriété NumberFormat.
ce Que cela signifie est que, si la culture est retourné par CreateSpecificCulture
correspond à la culture sélectionné par l'utilisateur dans Région et Langue panneau de contrôle dans Windows puis toute personnalisation de l'utilisateur à cette culture est inclus dans le CultureInfo
retourné. Par exemple: l'utilisateur peut modifier le motif de la date longue ou le séparateur décimal utilisé dans les nombres. Une autre façon de penser, c'est que lorsque CreateSpecificCulture
renvoie une culture qui correspond au nom de CurrentCulture
il va en fait retourner cette culture, y compris toute personnalisation de l'utilisateur.
aussi loin que Je peux dire GetCultureInfo
n'a pas cette propriété et retournera toujours un non modifié CultureInfo
.
Et pour vérifier si une culture est valide je voudrais utiliser GetCultureInfo
.