CultureInfo.CurrentUICulture Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta l'oggetto CultureInfo che rappresenta le impostazioni cultura dell'interfaccia utente correnti utilizzate dal Resource Manager per cercare risorse specifiche delle impostazioni cultura in fase di esecuzione.
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
Valore della proprietà
Impostazioni cultura usate dal Resource Manager per cercare risorse specifiche delle impostazioni cultura in fase di esecuzione.
Eccezioni
La proprietà è impostata su null.
La proprietà è impostata su un nome delle impostazioni cultura che non può essere utilizzato per individuare un file di risorse. I nomi file di risorse possono includere solo lettere, numeri, trattini o caratteri di sottolineatura.
Esempio
Nell'esempio di codice seguente viene illustrato come modificare e CurrentCultureCurrentUICulture del thread corrente.
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.
Commenti
La CurrentUICulture proprietà è una proprietà per thread. Ovvero, ogni thread ha la propria cultura UI corrente. Questa proprietà equivale a recuperare o impostare l'oggetto CultureInfo assegnato alla System.Threading.Thread.CurrentThread.CurrentUICulture proprietà . All'avvio di un thread, la cultura dell'interfaccia utente viene inizialmente determinata come segue:
Recuperando le impostazioni culturali specificate dalla proprietà DefaultThreadCurrentUICulture nel dominio dell'applicazione in cui il thread viene eseguito, se il valore della proprietà non è
null.Se il thread è un thread del pool di thread che esegue un'operazione asincrona basata su attività, le impostazioni cultura dell'interfaccia utente sono determinate dalle impostazioni cultura dell'interfaccia utente del thread chiamante. L'esempio seguente modifica la cultura dell'interfaccia utente corrente in portoghese (Brasile) e avvia sei attività, ognuna delle quali visualizza il thread ID, il task ID e la cultura corrente dell'interfaccia utente. Ognuna delle attività (e dei thread) ha ereditato la cultura dell'interfaccia utente del thread chiamante.
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-BRPer ulteriori informazioni, vedere Cultura e operazioni asincrone basate su attività.
Chiamando la funzione Windows
GetUserDefaultUILanguage.
Per modificare la cultura dell'interfaccia utente utilizzata da un thread, impostare la proprietà Thread.CurrentUICulture sulla nuova cultura. Se si modificano in modo esplicito le impostazioni culturali dell'interfaccia utente di un thread, questa modifica persiste se il thread attraversa i confini del dominio dell'applicazione.
Note
Se si imposta il valore della proprietà su un oggetto CultureInfo che rappresenta una nuova cultura, anche il valore della proprietà Thread.CurrentThread.CurrentCulture cambia.
Ottieni la cultura corrente dell'interfaccia utente
La CultureInfo.CurrentUICulture proprietà è un'impostazione per thread, ovvero ogni thread può avere impostazioni cultura dell'interfaccia utente specifiche. Si ottiene l'impostazione cultura dell'interfaccia utente del thread corrente recuperando il valore della proprietà CultureInfo.CurrentUICulture, come illustrato nell'esempio seguente.
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]
È anche possibile recuperare il valore delle impostazioni cultura dell'interfaccia utente del thread corrente dalla Thread.CurrentUICulture proprietà .
Impostare esplicitamente la cultura corrente dell'interfaccia utente
È possibile modificare le impostazioni cultura correnti dell'interfaccia utente assegnando un CultureInfo oggetto che rappresenta le nuove impostazioni cultura alla CultureInfo.CurrentUICulture proprietà . La cultura attuale dell'interfaccia utente può essere impostata su una cultura specifica (ad esempio en-US o de-DE) o su una cultura neutrale (ad esempio en o de). L'esempio seguente imposta la cultura corrente dell'interfaccia utente su fr-FR o francese (Francia).
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
In un'applicazione multithreading è possibile impostare in modo esplicito le impostazioni cultura dell'interfaccia utente di qualsiasi thread assegnando un CultureInfo oggetto che rappresenta tali impostazioni cultura alla proprietà del Thread.CurrentUICulture thread. Se il thread le cui impostazioni cultura si desidera impostare è il thread corrente, è possibile assegnare le nuove impostazioni cultura alla CultureInfo.CurrentUICulture proprietà . Quando le impostazioni cultura dell'interfaccia utente di un thread vengono impostate in modo esplicito, tale thread mantiene le stesse impostazioni cultura anche se supera i limiti del dominio applicazione ed esegue il codice in un altro dominio applicazione.
Impostare in modo implicito la cultura corrente dell'interfaccia utente
Quando un thread, incluso il thread principale dell'applicazione, viene creato per la prima volta, per impostazione predefinita le impostazioni cultura correnti dell'interfaccia utente vengono impostate come segue:
- Utilizzando le impostazioni cultura definite dalla DefaultThreadCurrentUICulture proprietà per il dominio dell'applicazione corrente se il valore della proprietà non è
null. - Utilizzando le impostazioni predefinite della cultura del sistema. Nei sistemi che usano il sistema operativo Windows, il Common Language Runtime chiama la funzione Windows
GetUserDefaultUILanguageper impostare la cultura corrente dell'interfaccia utente.GetUserDefaultUILanguagerestituisce la cultura predefinita dell'interfaccia utente dall'utente. Se l'utente non ha impostato una lingua predefinita dell'interfaccia utente, restituisce la cultura originariamente installata nel sistema.
Se il thread supera i confini dell'applicazione ed esegue il codice in un altro dominio applicativo, la cultura del thread è determinata nello stesso modo di quella di un thread appena creato.
Si noti che se si impostano impostazioni cultura dell'interfaccia utente specifiche diverse dalle impostazioni cultura dell'interfaccia utente installate dal sistema o dalle impostazioni cultura preferite dell'interfaccia utente dell'utente e l'applicazione avvia più thread, le impostazioni cultura correnti di tali thread saranno le impostazioni cultura restituite dalla GetUserDefaultUILanguage funzione, a meno che non si assegnino impostazioni cultura alla DefaultThreadCurrentUICulture proprietà nel dominio applicazione in cui viene eseguito il thread.
Considerazioni relative alla sicurezza
Per modificare la cultura del thread corrente è necessaria un'autorizzazione SecurityPermission con valore ControlThread impostato.
Caution
La modifica dei thread è pericolosa a causa dello stato di sicurezza associato ai thread. Pertanto, questa autorizzazione deve essere concessa solo al codice attendibile e quindi solo in base alle esigenze. Non è possibile modificare la cultura dei thread nel codice semi-attendibile.