Utilisation de la propriété CurrentCulture

La propriété CultureInfo.CurrentCulture est un paramètre par thread qui détermine les formats par défaut des dates, des heures, des montants monétaires et des nombres, l'ordre de tri du texte, les comparaisons de chaîne et le choix de la casse. La propriété CurrentCulture n'est pas un paramètre linguistique. Elle contient uniquement des données liées aux paramètres standard en vigueur dans une région géographique. Par conséquent, seule une culture spécifique ou la valeur InvariantCulture peuvent être affectées à la propriété CurrentCulture. Vous pouvez utiliser la propriété Thread.CurrentThread pour définir CurrentCulture. Pour plus d'informations, consultez les exemples figurant plus loin dans cette rubrique.

Notes

La modification de la culture de Thread.CurrentThread requiert un SecurityPermission avec le jeu SecurityPermissionFlag,ControlThread. L'état de sécurité associé aux threads rend la manipulation de threads dangereuse. Par conséquent, cette autorisation ne doit être accordée qu'au code fiable et uniquement en cas de nécessité. Vous ne pouvez pas changer la culture d'un thread dans du code de niveau de confiance partiel.

Définition explicite de la propriété CurrentCulture

Vous pouvez définir la propriété CurrentCulture explicitement dans le code. L'exemple de code suivant affecte à la propriété CurrentCulture la valeur "de-DE" qui représente la culture spécifique pour l'allemand en Allemagne.

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE")
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");

Vous devez utiliser une culture spécifique pour initialiser la propriété CurrentCulture. La propriété CurrentCulture attend en effet une culture associée à une langue et une région, par exemple "en-US" pour l'anglais aux États-Unis. Comme une langue est souvent parlée dans plusieurs pays ou régions, il est nécessaire de préciser la région pour déterminer les conventions de mise en forme à utiliser. Par exemple, si vous spécifiez la culture "en" pour l'anglais neutre, il y a plusieurs paramètres corrects définissant le format de la date ou des montants monétaires. La date peut être au format américain ou britannique. La monnaie peut être au format néo-zélandais ou canadien. Compte tenu de ces ambiguïtés, il est nécessaire de spécifier une culture spécifique, telle que "en-US", "en-GB" ou "en-CA". Si vous essayez de définir la propriété CurrentCulture en spécifiant une culture neutre, une exception sera levée.

Si vous n'avez accès qu'à une culture neutre, vous pouvez créer un objet CultureInfo au format attendu par la propriété CurrentCulture à l'aide de la méthode CultureInfo.CreateSpecificCulture. Cette méthode mappe une culture neutre sur la culture spécifique par défaut à laquelle elle est associée, puis crée un objet CultureInfo qui représente cette culture spécifique. L'exemple de code suivant utilise la méthode CultureInfo.CreateSpecificCulture pour mapper la culture neutre "de" sur la culture spécifique "de-DE", puis crée un objet CultureInfo pour "de-DE" et s'en sert pour initialiser la valeur de la propriété CurrentCulture.

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de")
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de");

Notes

Cette méthode est facultative. Si le mappage qu'elle fournit ne convient pas pour votre application, vous pouvez lui substituer votre propre mappage.

Définition explicite de la propriété CurrentCulture dans une page .aspx

La méthode CultureInfo.CreateSpecificCulture vous permet également d'utiliser la langue actuelle d'un navigateur Web pour initialiser la propriété CurrentCulture dans une page .aspx.

Dans l'exemple de code suivant, la propriété Request.UserLanguages retourne sous forme de chaîne la langue actuelle du navigateur Web. La méthode CultureInfo.CreateSpecificCulture analyse cette chaîne et retourne un objet CultureInfo au format qui peut être utilisé pour initialiser la valeur de la propriété CurrentCulture.

' Sets the CurrentCulture property to the culture associated with the Web
' browser's current language setting.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0])
// Sets the CurrentCulture property to the culture associated with the Web
// browser's current language setting.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

Pour plus d'informations sur l'utilisation et la récupération de ressources dans les applications ASP.NET, consultez Ressources dans les applications ASP.NET.

Définition implicite de la propriété CurrentCulture

La propriété CurrentCulture est définie par la fonction GetUserDefaultLCID dans le système d'exploitation Windows. L'utilisateur peut modifier ce paramètre de propriété en modifiant les paramètres régionaux utilisateur dans la boîte de dialogue Options régionales du Panneau de configuration ou en modifiant les paramètres régionaux utilisateur, tels que les formats monétaires, de nombre, de date et d'heure.

Si vous voulez vous assurer que votre application utilise les formats par défaut fournis par le .NET Framework pour les montants monétaires, les nombres, la date et l'heure d'une culture spécifiée, vous pouvez substituer les valeurs par défaut des paramètres régionaux utilisateur dans le code de votre application. Créez un objet CultureInfo en utilisant l'une des surcharges de son constructeur qui accepte un paramètre useUserOverride et affectez à ce paramètre la valeur false. Ceci provoque la substitution des paramètres par défaut du .NET Framework aux paramètres par défaut en vigueur sur le système de l'utilisateur. Lorsque vous définissez le format de la monnaie pour les pays de l'Union européenne membres de la zone euro, il est recommandé d'affecter la valeur false au paramètre useUserOverride pour vous assurer que le symbole monétaire correct sera utilisé. Pour plus d'informations, consultez la sous-rubrique « Mise en forme des montants monétaires pour les nations de la zone euro » dans la rubrique Mise en forme des données numériques pour une culture spécifique.

Voir aussi

Référence

CultureInfo.CurrentCulture Property

Concepts

Utilisation de la propriété CurrentUICulture
Utilisation de la propriété InvariantCulture

Autres ressources

Codage et localisation