Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

CultureInfo.CurrentCulture propriété

 

Date de publication : novembre 2016

Obtient ou définit l'objet CultureInfo qui représente la culture utilisée par le thread actif.

Espace de noms:   System.Globalization
Assembly:  mscorlib (dans mscorlib.dll)

public static CultureInfo CurrentCulture { get; set; }

Valeur de propriété

Type: System.Globalization.CultureInfo

Objet qui représente la culture utilisée par le thread actif.

Exception Condition
ArgumentNullException

La propriété est définie sur null.

Le CultureInfo objet qui est retourné par cette propriété et ses objets associés déterminent le format par défaut pour les dates, heures, des nombres, les valeurs de devise, l’ordre de tri du texte, conventions de casse et les comparaisons de chaînes.

La culture actuelle est une propriété du thread en cours d’exécution, qui est retourné par la méthode statique Thread.CurrentThread propriété. La valeur de la CultureInfo.CurrentCulture propriété correspond à la valeur de la Thread.CurrentCulture propriété. La récupération de la valeur de la CultureInfo.CurrentCulture propriété est équivalente à la récupération de la CultureInfo objet retourné par la Thread.CurrentThread.CurrentCulture propriété. En commençant par le .NET Framework 4.6, définissant la valeur de la CultureInfo.CurrentCulture propriété modifie également la culture du thread actuel.

System_CAPS_noteRemarque

Dans le .NET Framework 4.5.2 et versions antérieures, le CurrentCulture propriété est en lecture seule ; Autrement dit, vous pouvez récupérer la valeur de propriété, mais vous ne pouvez pas la définir. Pour modifier la culture actuelle, vous assignez le CultureInfo objet qui représente la nouvelle culture pour le Thread.CurrentThread.CurrentCulture propriété. En commençant par le .NET Framework 4.6, le CurrentCulture propriété est en lecture-écriture ; vous pouvez définir et récupérer la valeur de propriété. Si vous définissez la valeur de propriété un CultureInfo objet qui représente une nouvelle culture, la valeur de la Thread.CurrentThread.CurrentCulture propriété change également.

Dans cette section :

Détermination de la Culture du Thread
Mise en route de la Culture en cours
Définir explicitement la propriété CurrentCulture
La Culture actuelle et les substitutions par l’utilisateur
Culture et les applications Windows

Lorsqu’un thread est démarré, sa culture est initialement déterminée comme suit :

  • En extrayant la culture spécifiée par le DefaultThreadCurrentCulture propriété dans le domaine d’application dans lequel le thread s’exécute, si la valeur de propriété n’est pas null.

  • Si le thread est un thread du pool qui exécute une opération asynchrone basé sur des tâches et l’application cible le .NET Framework 4.6 ou une version ultérieure du .NET Framework, sa culture est déterminée par la culture du thread appelant. L’exemple suivant modifie la culture actuelle en portugais (Brésil) et lance des six tâches, chacune d’elles affiche son ID de thread, de son ID de tâche et de la culture actuelle. Chacune des tâches (et les threads) a hérité de la culture du thread appelant.

    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Runtime.Versioning;
    using System.Threading;
    using System.Threading.Tasks;
    
    [assembly:TargetFramework(".NETFramework,Version=v4.6")]
    
    public class Example
    {
       public static void Main()
       {
          var tasks = new List<Task>();
          Console.WriteLine("The current culture is {0}", 
                            Thread.CurrentThread.CurrentCulture.Name);
          Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR");
          // Change the current culture to Portuguese (Brazil).
          Console.WriteLine("Current culture changed to {0}",
                            Thread.CurrentThread.CurrentCulture.Name);
          Console.WriteLine("Application thread is thread {0}",
                            Thread.CurrentThread.ManagedThreadId);
          // Launch six tasks and display their current culture.
          for (int ctr = 0; ctr <= 5; ctr++)
             tasks.Add(Task.Run( () => {
                                   Console.WriteLine("Culture of task {0} on thread {1} is {2}",
                                                     Task.CurrentId, 
                                                     Thread.CurrentThread.ManagedThreadId,
                                                     Thread.CurrentThread.CurrentCulture.Name);
                                } ));                     
    
          Task.WaitAll(tasks.ToArray());
       }
    }
    // The example displays output like the following:
    //     The current culture is en-US
    //     Current culture changed to pt-BR
    //     Application thread is thread 9
    //     Culture of task 2 on thread 11 is pt-BR
    //     Culture of task 1 on thread 10 is pt-BR
    //     Culture of task 3 on thread 11 is pt-BR
    //     Culture of task 5 on thread 11 is pt-BR
    //     Culture of task 6 on thread 11 is pt-BR
    //     Culture of task 4 on thread 10 is pt-BR
    

    Pour plus d’informations, consultez la section « Culture et opérations asynchrones basées sur une tâche » dans la CultureInfo rubrique.

  • En appelant les fenêtres GetUserDefaultLocaleName (fonction).

Notez que si vous définissez une culture spécifique qui est différente de la culture système installé ou la culture par défaut, et votre application démarre plusieurs threads, la culture en cours de ces threads sera la culture qui est retournée par la GetUserDefaultLocaleName de fonction, sauf si vous attribuez une culture à le DefaultThreadCurrentCulture propriété dans le domaine d’application dans lequel le thread s’exécute.

Pour plus d’informations sur la manière dont la culture d’un thread est déterminée, consultez la section « Culture et threads » dans le CultureInfo page de référence.

Le CultureInfo.CurrentCulture propriété est un paramètre par thread ; autrement dit, chaque thread peut avoir sa propre culture. Vous obtenez la culture du thread actuel en récupérant la valeur de la CultureInfo.CurrentCulture propriété, comme l’exemple suivant illustre.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo culture = CultureInfo.CurrentCulture;
      Console.WriteLine("The current culture is {0} [{1}]",
                        culture.NativeName, culture.Name);
   }
}
// The example displays output like the following:
//       The current culture is English (United States) [en-US]

Vous pouvez également récupérer la valeur de culture du thread actuel à partir de la Thread.CurrentThread propriété.

Commençant par le .NET Framework 4.6, pour modifier la culture utilisée par un thread existant, vous définissez le CultureInfo.CurrentCulture propriété à la nouvelle culture. Si vous modifiez explicitement la culture du thread de cette manière, ce qui change persiste si le thread dépasse les limites du domaine d’application. L’exemple suivant modifie la culture actuelle du thread néerlandais (pays-bas). Il montre également que, lorsque le thread actuel dépasse les limites du domaine d’application, la culture actuelle reste changée.

using System;
using System.Globalization;
using System.Threading;

public class Info : MarshalByRefObject
{
   public void ShowCurrentCulture()
   {
      Console.WriteLine("Culture of {0} in application domain {1}: {2}",
                        Thread.CurrentThread.Name,
                        AppDomain.CurrentDomain.FriendlyName,
                        CultureInfo.CurrentCulture.Name);
   }
}

public class Example
{
   public static void Main()
   {
      Info inf = new Info();
      // Set the current culture to Dutch (Netherlands).
      Thread.CurrentThread.Name = "MainThread";
      CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("nl-NL");
      inf.ShowCurrentCulture();

      // Create a new application domain.
       AppDomain ad = AppDomain.CreateDomain("Domain2");
       Info inf2 = (Info) ad.CreateInstanceAndUnwrap(typeof(Info).Assembly.FullName, "Info");
       inf2.ShowCurrentCulture();                       
   }
}
// The example displays the following output:
//       Culture of MainThread in application domain ChangeCulture1.exe: nl-NL
//       Culture of MainThread in application domain Domain2: nl-NL
System_CAPS_noteRemarque

Modification de la culture à l’aide de la CultureInfo.CurrentCulture propriété requiert une SecurityPermission autorisation avec le ControlThread ensemble de valeurs. Manipulation des threads est dangereuse en raison de l’état de sécurité associé aux threads. Par conséquent, cette autorisation doit être accordée uniquement au code digne de confiance et puis uniquement si nécessaire. Vous ne pouvez pas modifier la culture du thread dans le code de confiance partiel.

En commençant par le .NET Framework 4, vous pouvez modifier explicitement la culture du thread en cours pour une culture spécifique (par exemple, Français (Canada)) ou d’une culture neutre (par exemple, le Français). Lorsqu’un CultureInfo objet représente une culture neutre, les valeurs de CultureInfo propriétés, telles que Calendar, CompareInfo, DateTimeFormat, NumberFormat, et TextInfo refléter la culture spécifique associée à la culture neutre. Par exemple, la culture dominante pour la culture neutre est anglais (États-Unis) ; la culture dominante pour la culture allemande est allemand (Allemagne). L’exemple suivant illustre la différence dans la mise en forme lors de la culture actuelle est définie pour une culture spécifique, Français (Canada) et une culture neutre, Français.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      double value = 1634.92;
      CultureInfo.CurrentCulture = new CultureInfo("fr-CA");
      Console.WriteLine("Current Culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("{0:C2}\n", value);

      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr");
      Console.WriteLine("Current Culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("{0:C2}", value);
   }
}
// The example displays the following output:
//       Current Culture: fr-CA
//       1 634,92 $
//       
//       Current Culture: fr
//       1 634,92 €

Vous pouvez également utiliser le CultureInfo.CurrentCulture propriété avec le HttpRequest.UserLanguages propriété à définir le CurrentCulture propriété d’une application ASP.NET à l’utilisateur de culture par défaut, comme l’illustre l’exemple suivant.

CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

Windows permet aux utilisateurs de remplacer les valeurs de propriété standard le CultureInfo objet et ses objets associés à l’aide de Options régionales et linguistiques dans le panneau de configuration. Le CultureInfo objet retourné par la CurrentCulture propriété reflète ces utilisateur remplace dans les cas suivants :

  • Si la culture actuelle du thread est définie implicitement par Windows GetUserDefaultLocaleName (fonction).

  • Si la culture du thread actuel définie par le DefaultThreadCurrentCulture propriété correspond à la culture actuelle du système Windows.

  • Si la culture du thread actuel est définie explicitement à une culture retournée par la CreateSpecificCulture (méthode), et que la culture correspond à la culture actuelle du système Windows.

  • Si la culture du thread actuel est définie explicitement à une culture instanciée par le CultureInfo(String) constructeur, et que la culture correspond à la culture actuelle du système Windows.

Dans certains cas, en particulier pour les applications serveur, définition de la culture en cours un CultureInfo objet qui reflète les substitutions par l’utilisateur peut être indésirable. Au lieu de cela, vous pouvez définir la culture du thread en cours un CultureInfo objet qui ne reflète pas l’utilisateur remplace des manières suivantes :

Dans les applications Windows, le CurrentCulture propriété est en lecture seule. Vous pouvez définir la culture actuelle à l’aide de Windows ResourceContext.Languages propriété. L’exemple suivant utilise pour modifier la culture actuelle de l’application soit en anglais (États-Unis) ou, si la culture actuelle est déjà anglais (États-Unis), Français (France). La valeur de la CurrentCulture et CurrentUICulture propriétés sont ensuite affichées sur un TextBlock contrôle nommé block. Comme le montre la sortie de l’exemple, la culture actuelle change lorsque le ResourceContext.Languages de propriété est modifiée.


ResourceContext context = ResourceManager.Current.DefaultContext;
var list = new List<String>();
if (CultureInfo.CurrentCulture.Name == "en-US")
   list.Add("fr-FR");
else
   list.Add("en-US");

context.Languages = list;
block.Text += String.Format("\nThe current culture is {0}\n",
                            CultureInfo.CurrentCulture);
block.Text += String.Format("The current culture UI is {0}\n",
                            CultureInfo.CurrentUICulture);
// The example displays output like the following if run on a system
// whose current culture is English (United States):
// The current culture is fr-FR
// The current UI culture is fr-FR   


Dim context As ResourceContext = ResourceManager.Current.DefaultContext
Dim list As New List(Of String)()
If CultureInfo.CurrentCulture.Name = "en-US" Then
   list.Add("fr-FR")
Else
   list.Add("en-US")
End If
context.Languages = list
block.Text += String.Format("{1}The current culture is {0}{1}",
                            CultureInfo.CurrentCulture, vbCrLf)
block.Text += String.Format("The current culture UI is {0}\n",
                            CultureInfo.CurrentUICulture)
' The example displays output Like the following if run on a system
' whose current culture Is English (United States):
'    The current culture Is fr-FR
'    The current UI culture Is fr-FR   

L’exemple de code suivant montre comment modifier le CurrentCulture et CurrentUICulture du thread actuel.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()  
   {
      // Display the name of the current thread culture.
      Console.WriteLine("CurrentCulture is {0}.", CultureInfo.CurrentCulture.Name);

      // Change the current culture to th-TH.
      CultureInfo.CurrentCulture = new CultureInfo("th-TH", false);
      Console.WriteLine("CurrentCulture is now {0}.", CultureInfo.CurrentCulture.Name);

      // Display the name of the current UI culture.
      Console.WriteLine("CurrentUICulture is {0}.", CultureInfo.CurrentUICulture.Name);

      // Change the current UI culture to ja-JP.
      CultureInfo.CurrentUICulture = new CultureInfo( "ja-JP", false );
      Console.WriteLine("CurrentUICulture is now {0}.", CultureInfo.CurrentUICulture.Name);
   }
}
// The example displays the following output:
//       CurrentCulture is en-US.
//       CurrentCulture is now th-TH.
//       CurrentUICulture is en-US.
//       CurrentUICulture is now ja-JP.

SecurityPermission

for setting the current culture. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.ControlThread

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: