Quelle est la différence entre les propriétés CurrentCulture et CurrentUICulture de CultureInfo dans .NET?
-
11-07-2019 - |
Question
Dans .NET, la classe CultureInfo
est située dans l'espace de noms System.Globalization
. Il possède deux propriétés similaires renvoyant des valeurs du type CultureInfo
: CurrentCulture
et CurrentUICulture
.
Quelle est la différence entre eux?
Lequel devrais-je utiliser quand et pourquoi?
La solution
CurrentCulture
est la représentation .NET des paramètres régionaux utilisateur par défaut du système. Ceci contrôle le format par défaut du nombre et de la date, etc.>
CurrentUICulture
fait référence à la langue par défaut de l'interface utilisateur, paramètre défini dans Windows 2000. Elle concerne principalement la partie traduction / traduction de l'interface utilisateur de votre application.
Quelles que soient les options régionales configurées par le système, elles seront les "Actuelles". valeurs dans votre application .NET.
Souvent, ils sont les mêmes. Mais sur mon système, ils seraient différents: je préfère mes chiffres et mes dates au format allemand. Le CurrentCulture
serait donc allemand, mais je préfère également toutes mes applications en anglais, donc le CurrentUICulture
serait l'anglais.
Il existe un bel article sur le sujet: Tout classer: pourquoi nous avoir à la fois CurrentCulture et CurrentUICulture
Autres conseils
C’est un truc simple que j’utilise pour me rappeler lequel utiliser:
(date, currency, double).tostring = CurrentCulture
resource.fr-CA.resx file = currentUICulture
Différences:
-
CurrentCulture
est destiné au formatage des dates et de la devise tandis queCurrentUICulture
va avec la langue / traductions. Il sera utilisé parResourceManager
rechercher des ressources par culture. - Espace de noms de
CurrentCulture
classe est dansSystem.Globalization
tandis queCurrentUICulture
provient deSystem.Threading
. -
CurrentCulture
persiste dans différentes requêtes de la session alors queCurrentUICulture
doit être défini à chaque demande.
Ressemblance:
Les deux sont System.Globalization.CultureInfo
instances.
Un bon moyen de faire la différence, en plus des explications intéressantes fournies par les autres utilisateurs, est un des aspects importants du développement d’applications Web:
-
CurrentCulture
représente la configuration du serveur Web. Par exemple, si votre application Web ASP.NET est hébergée en Allemagne, la valeur deCutlureInfo.CurrentCulture
sera probablementde-DE
. Ainsi, la mise en forme par défaut.ToString ()
pour les typesIFormattable
utiliserait la mise en forme allemande par défaut, ou celles qui ont été configurées par défaut sur le système d'exploitation du serveur. -
CurrentUICulture
peut être capturé à partir de l'agent utilisateur et peut représenter la culture d'interface utilisateur du client se connectant au site Web. Par exemple, si vous chargez ce site Web depuis la Russie, vos paramètres locaux sont définis pour utiliser la langue russe et votre agent utilisateur envoie vos paramètres régionaux au serveur (Opera et IE le font automatiquement, sans certitude pour Chrome et FireFox), le < code> CurrenUICulture représenteraitru-RU
. Ainsi, les ressources telles que les chaînes localisées extraites via ResourceManager ou les expressions de localisation contenues dans les fichiers ASP.NET aspx / ascx seront en russe (si des traductions sont disponibles).
Il est à noter que CurrentUICulture
prend en charge des paramètres régionaux non spécifiques à un pays, tels que 'en' (cultures neutres), tandis que CurrentCulture
prend uniquement en charge des paramètres régionaux spécifiques à un pays, tels que 'en -GB '. Si vous définissez CurrentCulture
sur une culture neutre, une ArgumentException
sera générée.
Je suppose que cela tient au fait que les formats tels que les dates et les devises sont plus étroitement liés au pays lui-même, mais la langue affichée est souvent interchangeable entre les pays.