Généralités
Liste des cultures disponibles
Invariant, neutral, specific culture
Culture
|
Description
|
invariant |
culture english sans pays/region.
|
neutral |
langue mais sans pays/region.
|
specific |
langue associée avec un pays/region. La propriété Parent d'une culture specific donne la culture neutral.
|
Obtenir une culture prédéfinie
|
CultureInfo enUsCulturePure = CultureInfo.GetCultureInfo("en-US");
CultureInfo enUsCulture = CultureInfo.CreateSpecificCulture("en-US");
CultureInfo.InvariantCulture;
CultureInfo enCulture = new CultureInfo("en");
CultureInfo enUsCulture = new CultureInfo("en-US");
CultureInfo enUsCulturePure = new CultureInfo("en-US", false);
|
Obtenir la culture courante
|
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
CultureInfo.CurrentCulture
Application.CurrentCulture
|
Obtenir la culture depuis le code 3 caractères
|
var cultureInfo = CultureInfo.GetCultures(CultureTypes.NeutralCultures).
FirstOrDefault(ci => ci.ThreeLetterISOLanguageName.Equals("ENG", StringComparison.OrdinalIgnoreCase));
|
Changer le séparateur de décimal pour l'application courante
|
var currentCulture = Thread.CurrentThread.CurrentCulture;
var dotCulture = (CultureInfo)currentCulture.Clone();
dotCulture.NumberFormat.NumberDecimalSeparator = ".";
Thread.CurrentThread.CurrentCulture = dotCulture;
|
Nombres négatifs entre parenthèses
|
var cultureUS = new CultureInfo("en-US", false);
cultureUS.NumberFormat.NumberNegativePattern = 0;
double d = -12.3;
d.ToString("N", cultureUS);
d.ToString(cultureUS);
|
 |
Ne fonctionne qu'avec les formats N, N0, N1, ...
Et force le nombre de chiffres après la virgule. |
Autre solution qui permet de n'afficher que les nombres significatifs après la virgule:
|
double d = -12.3;
d.ToString("0.##;(0.##)", new CultureInfo("fr-FR", false)));
|
Séparateur de groupe
|
double d = 1234.56;
CultureInfo CultureUS = new CultureInfo("en-US", false);
string s1 = d.ToString("N", CultureUS);
CultureUS.NumberFormat.NumberGroupSeparator = "'";
string s2 = d.ToString("N", CultureUS);
|
Exemple
|
var cultureFR = new System.Globalization.CultureInfo("fr-FR", false);
CultureInfo cultureCourante = CultureInfo.CurrentCulture;
string séparateurDecimal = cultureFR.NumberFormat.NumberDecimalSeparator;
int nbChiffresApresVirgule = 2;
string zeros = new string('0', nbChiffresApresVirgule);
String.Format("0{0}{1}", séparateurDecimal , zeros);
|
 |
Le constructeur CultureInfo(string culture) appelle le constructeur CultureInfo(culture, true).
Si le second paramètre bool est à true et que la culture spécifiée correspond à celle de l'utilisateur local, alors les modifications de culture de l'utilisateur sont prises en compte.
Sinon c'est la culture spécifiée et non modifiée qui est utilisée. |