CultureInfo.CurrentUICulture Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit l’objet CultureInfo qui représente la culture de l’interface utilisateur actuelle utilisée par le Resource Manager pour rechercher des ressources spécifiques à la culture au moment de l’exécution.
public:
static property System::Globalization::CultureInfo ^ CurrentUICulture { System::Globalization::CultureInfo ^ get(); void set(System::Globalization::CultureInfo ^ value); };
public:
static property System::Globalization::CultureInfo ^ CurrentUICulture { System::Globalization::CultureInfo ^ get(); };
public static System.Globalization.CultureInfo CurrentUICulture { get; set; }
public static System.Globalization.CultureInfo CurrentUICulture { get; }
static member CurrentUICulture : System.Globalization.CultureInfo with get, set
static member CurrentUICulture : System.Globalization.CultureInfo
Public Shared Property CurrentUICulture As CultureInfo
Public Shared ReadOnly Property CurrentUICulture As CultureInfo
Valeur de propriété
Culture utilisée par l’Resource Manager pour rechercher des ressources spécifiques à la culture au moment de l’exécution.
Exceptions
La propriété est définie sur null.
La propriété est définie sur un nom de culture qui ne peut pas être utilisé pour localiser un fichier de ressources. Les noms de fichiers de ressources peuvent inclure uniquement des lettres, des chiffres, des traits d’union ou des traits de soulignement.
Exemples
L’exemple de code suivant montre comment modifier le CurrentCulture thread et CurrentUICulture le thread actuel.
using System;
using System.Globalization;
public class Example0
{
public static void Main()
{
// Display the name of the current 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.
Imports System.Globalization
Imports System.Threading
Public Module Example2
Public Sub Run()
' Display the name of the current 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)
End Sub
End Module
' The example displays the following output:
' CurrentCulture is en-US.
' CurrentCulture is now th-TH.
' CurrentUICulture is en-US.
' CurrentUICulture is now ja-JP.
Remarques
La CurrentUICulture propriété est une propriété par thread. Autrement dit, chaque thread a sa propre culture actuelle de l’interface utilisateur. Cette propriété équivaut à récupérer ou à définir l’objet CultureInfo affecté à la System.Threading.Thread.CurrentThread.CurrentUICulture propriété. Lorsqu’un thread est démarré, sa culture d’interface utilisateur est initialement déterminée comme suit :
En récupérant la culture spécifiée par la DefaultThreadCurrentUICulture propriété dans le domaine d’application dans lequel le thread s’exécute, si la valeur de la propriété n’est pas
null.Si le thread est un thread de pool de threads qui exécute une opération asynchrone basée sur des tâches, sa culture d’interface utilisateur est déterminée par la culture de l’interface utilisateur du thread appelant. L’exemple suivant modifie la culture actuelle de l’interface utilisateur en portugais (Brésil) et lance six tâches, chacune affichant son ID de thread, son ID de tâche et sa culture actuelle de l’interface utilisateur. Chacune des tâches (et les threads) a hérité de la culture d'interface utilisateur du thread appelant.
using System; using System.Collections.Generic; using System.Globalization; using System.Runtime.Versioning; using System.Threading; using System.Threading.Tasks; public class Example { public static async Task Main() { var tasks = new List<Task>(); Console.WriteLine($"The current UI culture is {Thread.CurrentThread.CurrentUICulture.Name}"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("pt-BR"); // Change the current UI culture to Portuguese (Brazil). Console.WriteLine($"Current UI culture changed to {Thread.CurrentThread.CurrentUICulture.Name}"); Console.WriteLine($"Application thread is thread {Thread.CurrentThread.ManagedThreadId}"); // Launch six tasks and display their current culture. for (int ctr = 0; ctr <= 5; ctr++) tasks.Add(Task.Run(() => { Console.WriteLine($"UI Culture of task {Task.CurrentId} on thread {Thread.CurrentThread.ManagedThreadId} is {Thread.CurrentThread.CurrentUICulture.Name}"); })); await Task.WhenAll(tasks.ToArray()); } } // The example displays output like the following: // The current UI culture is en-US // Current UI culture changed to pt-BR // Application thread is thread 9 // UI Culture of task 2 on thread 11 is pt-BR // UI Culture of task 1 on thread 10 is pt-BR // UI Culture of task 3 on thread 11 is pt-BR // UI Culture of task 5 on thread 11 is pt-BR // UI Culture of task 6 on thread 11 is pt-BR // UI Culture of task 4 on thread 10 is pt-BRImports System.Globalization Imports System.Threading Module Example1 Public Sub Main() Dim tasks As New List(Of Task) Console.WriteLine("The current UI culture is {0}", Thread.CurrentThread.CurrentUICulture.Name) Thread.CurrentThread.CurrentUICulture = New CultureInfo("pt-BR") ' Change the current UI culture to Portuguese (Brazil). Console.WriteLine("Current UI culture changed to {0}", Thread.CurrentThread.CurrentUICulture.Name) Console.WriteLine("Application thread is thread {0}", Thread.CurrentThread.ManagedThreadId) ' Launch six tasks and display their current culture. For ctr As Integer = 0 To 5 tasks.Add(Task.Run(Sub() Console.WriteLine("Culture of task {0} on thread {1} is {2}", Task.CurrentId, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.CurrentUICulture.Name) End Sub)) Next Task.WaitAll(tasks.ToArray()) End Sub End Module ' The example displays output like the following: ' The current UI culture is en-US ' Current UI 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-BRPour plus d’informations, consultez Les opérations asynchrones basées sur la culture et les tâches.
En appelant la fonction Windows
GetUserDefaultUILanguage.
Pour modifier la culture de l’interface utilisateur utilisée par un thread, définissez la Thread.CurrentUICulture propriété sur la nouvelle culture. Si vous modifiez explicitement la culture de l’interface utilisateur d’un thread de cette façon, cette modification persiste si le thread traverse les limites du domaine d’application.
Note
Si vous définissez la valeur de la propriété sur un CultureInfo objet qui représente une nouvelle culture, la valeur de la Thread.CurrentThread.CurrentCulture propriété change également.
Obtenir la culture d'interface utilisateur actuelle
La CultureInfo.CurrentUICulture propriété est un paramètre par thread ; autrement dit, chaque thread peut avoir sa propre culture d’interface utilisateur. Vous obtenez la culture de l’interface utilisateur du thread actuel en récupérant la valeur de la CultureInfo.CurrentUICulture propriété, comme l’illustre l’exemple suivant.
using System;
using System.Globalization;
public class Example2
{
public static void Main()
{
CultureInfo culture = CultureInfo.CurrentUICulture;
Console.WriteLine($"The current UI culture is {culture.NativeName} [{culture.Name}]");
}
}
// The example displays output like the following:
// The current UI culture is English (United States) [en-US]
Imports System.Globalization
Module Example3
Public Sub Main()
Dim culture As CultureInfo = CultureInfo.CurrentUICulture
Console.WriteLine("The current UI culture is {0} [{1}]",
culture.NativeName, culture.Name)
End Sub
End Module
' The example displays output like the following:
' The current UI culture is English (United States) [en-US]
Vous pouvez également récupérer la valeur de la culture de l’interface utilisateur du thread actuel à partir de la Thread.CurrentUICulture propriété.
Définir explicitement la culture actuelle de l’interface utilisateur
Vous pouvez modifier la culture actuelle de l’interface utilisateur en affectant un CultureInfo objet qui représente la nouvelle culture à la CultureInfo.CurrentUICulture propriété. La culture actuelle de l’interface utilisateur peut être définie sur une culture spécifique (par exemple, en-US ou de-DE) ou sur une culture neutre (par exemple, en ou de). L’exemple suivant définit la culture actuelle de l’interface utilisateur sur fr-FR ou en français (France).
using System;
using System.Globalization;
public class Example1
{
public static void Main()
{
Console.WriteLine($"The current UI culture: {CultureInfo.CurrentUICulture.Name}");
CultureInfo.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
Console.WriteLine($"The current UI culture: {CultureInfo.CurrentUICulture.Name}");
}
}
// The example displays output like the following:
// The current UI culture: en-US
// The current UI culture: fr-FR
Imports System.Globalization
Module Example2
Public Sub Main()
Console.WriteLine("The current UI culture: {0}",
CultureInfo.CurrentUICulture.Name)
CultureInfo.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR")
Console.WriteLine("The current UI culture: {0}",
CultureInfo.CurrentUICulture.Name)
End Sub
End Module
' The example displays output like the following:
' The current UI culture: en-US
' The current UI culture: fr-FR
Dans une application multithread, vous pouvez définir explicitement la culture de l’interface utilisateur d’un thread en affectant à la propriété CultureInfo de ce thread un objet Thread.CurrentUICulture qui représente cette culture. Si le thread dont vous souhaitez définir la culture est le thread actuel, vous pouvez affecter la nouvelle culture à la propriété CultureInfo.CurrentUICulture. Lorsque la culture de l’interface utilisateur d’un thread est définie explicitement, ce thread conserve la même culture même si elle franchit les limites du domaine d’application et exécute du code dans un autre domaine d’application.
Définir implicitement la culture actuelle de l’interface utilisateur
Lorsqu’un thread, y compris le thread d’application principal, est créé en premier, par défaut, sa culture actuelle de l’interface utilisateur est définie comme suit :
- En utilisant la culture définie par la propriété DefaultThreadCurrentUICulture pour le domaine d'application actuel si la valeur de la propriété n'est pas
null. - En utilisant la culture par défaut du système. Sur les systèmes qui utilisent le système d’exploitation Windows, le Common Language Runtime appelle la fonction Windows
GetUserDefaultUILanguagepour définir la culture actuelle de l’interface utilisateur.GetUserDefaultUILanguageretourne la culture de l’interface utilisateur par défaut définie par l’utilisateur. Si l’utilisateur n’a pas défini de langue d’interface utilisateur par défaut, il retourne la culture installée à l’origine sur le système.
Si le thread franchit les limites de l’application et exécute du code dans un autre domaine d’application, sa culture est déterminée de la même façon que celle d’un thread nouvellement créé.
Notez que si vous définissez une culture d’interface utilisateur spécifique différente de la culture de l’interface utilisateur installée par le système ou de la culture d’interface utilisateur préférée de l’utilisateur, et que votre application démarre plusieurs threads, la culture actuelle de ces threads est la culture retournée par la GetUserDefaultUILanguage fonction, sauf si vous attribuez une culture à la DefaultThreadCurrentUICulture propriété dans le domaine d’application dans lequel le thread s’exécute.
Considérations relatives à la sécurité
La modification de la culture du thread actuel nécessite une SecurityPermission autorisation avec la valeur ControlThread définie.
Avertissement
La manipulation de 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 fiable, puis uniquement si nécessaire. Vous ne pouvez pas changer la culture du thread dans du code semi-approuvé.