Quelle est la différence entre les propriétés CurrentCulture et CurrentUICulture de CultureInfo dans .NET?

StackOverflow https://stackoverflow.com/questions/329033

  •  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?

Était-ce utile?

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:

  1. CurrentCulture est destiné au formatage des dates et de la devise tandis que CurrentUICulture va avec la langue / traductions. Il sera utilisé par ResourceManager rechercher des ressources par culture.
  2. Espace de noms de CurrentCulture classe est dans System.Globalization tandis que CurrentUICulture provient de System.Threading .
  3. CurrentCulture persiste dans différentes requêtes de la session alors que CurrentUICulture 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 de CutlureInfo.CurrentCulture sera probablement de-DE . Ainsi, la mise en forme par défaut .ToString () pour les types IFormattable 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ésenterait ru-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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top