Quelle est la différence entre Culture et UICulture?

Quelqu’un pourrait-il me donner un peu plus d’informations sur la différence entre Culture et UICulture dans le cadre de .NET? Qu’est-ce qu’ils font et quand utiliser quoi?

Culture affecte la présentation des données dépendantes de la culture (dates, devises, nombres, etc.). Voici quelques exemples:

 var date = new DateTime(2000, 1, 2); var number = 12345.6789; Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); Console.WriteLine(date); // 02.01.2000 00:00:00 Console.WriteLine(number.ToSsortingng("C")); // 12.345,68 € Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA"); Console.WriteLine(date); // 2000-01-02 00:00:00 Console.WriteLine(number.ToSsortingng("C")); // 12 345,68 $ Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); Console.WriteLine(date); // 1/2/2000 12:00:00 AM Console.WriteLine(number.ToSsortingng("C")); // $12,345.68 

La culture affecte également l’parsing syntaxique des entrées utilisateur de la même manière:

 const ssortingng numberSsortingng = "12.345,68"; decimal money; Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); money = decimal.Parse(numberSsortingng); // OK! Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); money = decimal.Parse(numberSsortingng); // FormatException is thrown, TryParse would return false 

Méfiez-vous des cas où l’parsing réussit, mais le résultat n’est pas celui auquel vous vous attendez.

 const ssortingng numberSsortingng = "12.345"; decimal money; Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); money = decimal.Parse(numberSsortingng); // 12345 Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); money = decimal.Parse(numberSsortingng); // 12.345, where the . is a decimal point 

UICulture affecte le fichier de ressources (Resources. Lang .resx) sur lequel votre application sera chargée.

Ainsi, pour charger des ressources allemandes (du texte présumé localisé), définissez UICulture sur la culture allemande et pour afficher la mise en forme allemande (sans aucun impact sur le chargement des ressources), vous UICulture Culture .

Culture and UICulture

Les valeurs sont des paires de chaînes de deux lettres, la première pour définir la langue et la seconde pour définir la région. Exemple:

en-GB ici en English et GB représente Great Briton

en-US ici en English et US United States représentent United States

Utilisez les fonctions dépendantes de Culture pour la culture comme la date et l’heure. et UICulture est pour le chargement correct du fichier de ressources.

Juste une petite question à prendre en compte en plus de l’explication géniale de @Vache: Vous pouvez définir à la fois UICulture et Culture à (niveau de la page et niveau de l’application).

Pour les définir au niveau de l’application, ajoutez simplement la session de globalisation dans web.config

ex.

Et pour les définir au niveau de la page, ce qui est bien d’append sur une page spécifique (individuelle), définissez les atsortingbuts Culture et UICulture dans la directive @ page.

par exemple <%@ Page UICulture="es" Culture="es-MX" %>

La propriété UICulture peut changer pour chaque navigateur Web, tandis que la culture rest constante.

La valeur Culture peut uniquement être définie pour des cultures spécifiques, telles que en-US ou en-GB. Cela évite d’avoir à identifier le symbole monétaire correct à utiliser pour en, où en-US et en-GB ont des symboles monétaires différents. Les utilisateurs peuvent définir la culture et la culture de l’interface utilisateur dans leurs navigateurs.