Réponses:
Culture
affecte la façon dont les données dépendant de la culture (dates, devises, nombres, etc.) sont présentées. 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.ToString("C")); // 12.345,68 €
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA");
Console.WriteLine(date); // 2000-01-02 00:00:00
Console.WriteLine(number.ToString("C")); // 12 345,68 $
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Console.WriteLine(date); // 1/2/2000 12:00:00 AM
Console.WriteLine(number.ToString("C")); // $12,345.68
La culture affecte également l'analyse des entrées utilisateur de la même manière:
const string numberString = "12.345,68";
decimal money;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
money = decimal.Parse(numberString); // OK!
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
money = decimal.Parse(numberString); // FormatException is thrown, TryParse would return false
Méfiez-vous des cas où l'analyse réussit, mais le résultat n'est pas ce à quoi vous vous attendez.
const string numberString = "12.345";
decimal money;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
money = decimal.Parse(numberString); // 12345
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
money = decimal.Parse(numberString); // 12.345, where the . is a decimal point
UICulture
affecte le fichier de ressources (Resources. lang .resx) qui sera chargé par votre application.
Donc, pour charger des ressources allemandes (vraisemblablement du texte localisé), vous définiriez UICulture
la culture allemande et afficher le formatage allemand (sans aucun impact sur les ressources chargées) que vous définiriez Culture
.
CultureInfo
objet entier uniquement pour déterminer le fichier de ressources où un string
suffirait? (Par exemple, la Language
propriété du FrameworkElement
)
Culture and UICulture
Les valeurs sont des paires de chaînes de deux lettres, la première sert à définir la langue et la seconde à définir la région. Exemple:
en-GB
ici en
représente English
et GB
représenteGreat Briton
en-US
ici en
représente English
et US
représenteUnited States
Utilisez Culture
pour les fonctions dépendant de la culture comme la date, l'heure. et UICulture
est pour le chargement correct du fichier de ressources.
Juste une petite question à considérer 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).
Afin de les définir au niveau de l'application, ajoutez simplement une session de globalisation dans web.config
par exemple <globalization uiCulture="es" culture="es-MX" />
Et pour les définir au niveau de la page, ce qui est bon à ajouter sur une page (individuelle) spécifique, définissez les attributs 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 reste constante.
La valeur Culture peut être définie sur des cultures spécifiques uniquement, telles que en-US ou en-GB. Cela évite de devoir identifier le bon symbole de devise à utiliser pour en, où en-US et en-GB ont des symboles de devise différents. Les utilisateurs peuvent définir la culture et la culture de l'interface utilisateur dans leurs navigateurs.