CultureInfo.CurrentUICulture CultureInfo.CurrentUICulture CultureInfo.CurrentUICulture CultureInfo.CurrentUICulture Property

Definizione

Ottiene o imposta l'oggetto CultureInfo che rappresenta le impostazioni cultura correnti dell'interfaccia utente usate da Gestione risorse per cercare le risorse specifiche delle impostazioni cultura in fase di esecuzione.Gets or sets the CultureInfo object that represents the current user interface culture used by the Resource Manager to look up culture-specific resources at run time.

public:
 static property System::Globalization::CultureInfo ^ CurrentUICulture { System::Globalization::CultureInfo ^ get(); void set(System::Globalization::CultureInfo ^ value); };
public static System.Globalization.CultureInfo CurrentUICulture { get; set; }
member this.CurrentUICulture : System.Globalization.CultureInfo with get, set
Public Shared Property CurrentUICulture As CultureInfo

Valore della proprietà

Impostazioni cultura usate da Gestione risorse per cercare le risorse specifiche delle impostazioni cultura in fase di esecuzione.The culture used by the Resource Manager to look up culture-specific resources at run time.

Eccezioni

La proprietà è impostata su null.The property is set to null.

La proprietà è impostata su un nome delle impostazioni cultura che non può essere usato per individuare un file di risorse.The property is set to a culture name that cannot be used to locate a resource file. I nomi dei file di risorse possono includere solo lettere, numeri, trattini o caratteri di sottolineatura.Resource filenames can include only letters, numbers, hyphens, or underscores.

Esempi

Esempio di codice seguente viene illustrato come modificare la CurrentCulture e CurrentUICulture del thread corrente.The following code example demonstrates how to change the CurrentCulture and CurrentUICulture of the current thread.

using namespace System;
using namespace System::Globalization;
using namespace System::Threading;

int 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 = gcnew CultureInfo("th-TH",false);
   Console::WriteLine("CurrentCulture is now {0}.", CultureInfo::CurrentCulture->Name);
   
   // Displays the name of the CurrentUICulture of the current thread.
   Console::WriteLine("CurrentUICulture is {0}.", CultureInfo::CurrentCulture->Name);
   
   // Changes the CurrentUICulture of the current thread to ja-JP.
   CultureInfo::CurrentUICulture = gcnew CultureInfo("ja-JP",false);
   Console::WriteLine("CurrentUICulture is now {0}.", CultureInfo::CurrentCulture->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.
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.
Imports System.Globalization
Imports System.Threading

Public Module Example
   Public Sub 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)
   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

Le impostazioni cultura correnti dell'interfaccia utente sono una proprietà per ogni thread.The current UI culture is a per-thread property. Ovvero, ogni thread ha la propria cultura dell'interfaccia utente.That is, each thread has its own current UI culture. Questa proprietà è equivalente al recupero o, a partire dal .NET Framework 4.6.NET Framework 4.6, impostando il CultureInfo oggetto assegnato al System.Threading.Thread.CurrentThread.CurrentUICulture proprietà.This property is equivalent to retrieving or, starting with the .NET Framework 4.6.NET Framework 4.6, setting the CultureInfo object assigned to the System.Threading.Thread.CurrentThread.CurrentUICulture property. Quando viene avviato un thread, è possibile che le impostazioni cultura dell'interfaccia utente inizialmente vengano determinata come segue:When a thread is started, its UI culture is initially determined as follows:

  • Recuperando le impostazioni cultura specificato per il DefaultThreadCurrentUICulture proprietà nel dominio dell'applicazione in cui il thread è in esecuzione, se non è il valore della proprietà null.By retrieving the culture that is specified by the DefaultThreadCurrentUICulture property in the application domain in which the thread is executing, if the property value is not null.

  • Se il thread è un pool di thread che sta eseguendo un'operazione asincrona basata su attività e l'app è destinato il .NET Framework 4.6.NET Framework 4.6 o una versione successiva di .NET Framework, le impostazioni cultura dell'interfaccia utente è determinata dalle impostazioni cultura dell'interfaccia utente del thread chiamante.If the thread is a thread pool thread that is executing a task-based asynchronous operation and the app targets the .NET Framework 4.6.NET Framework 4.6 or a later version of the .NET Framework, its UI culture is determined by the UI culture of the calling thread. Nell'esempio seguente modifica le impostazioni cultura correnti dell'interfaccia utente per portoghese (Brasile) e avvia sei attività, ognuno dei quali consente di visualizzare il relativo ID thread, il relativo ID attività e le impostazioni cultura dell'interfaccia utente correnti.The following example changes the current UI culture to Portuguese (Brazil) and launches six tasks, each of which displays its thread ID, its task ID, and its current UI culture. Ognuna delle attività (e i thread) ha ereditato le impostazioni cultura dell'interfaccia utente del thread chiamante.Each of the tasks (and the threads) has inherited the UI culture of the calling thread.

    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 async Task Main()
       {
          var tasks = new List<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 (int ctr = 0; ctr <= 5; ctr++)
             tasks.Add(Task.Run( () => {
                                   Console.WriteLine("UI Culture of task {0} on thread {1} is {2}",
                                                     Task.CurrentId, 
                                                     Thread.CurrentThread.ManagedThreadId,
                                                     Thread.CurrentThread.CurrentUICulture.Name);
                                } ));                     
    
          await Task.WhenAll(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
    
    Imports System.Collections.Generic
    Imports System.Globalization
    Imports System.Runtime.Versioning
    Imports System.Threading
    Imports System.Threading.Tasks
    
    <assembly:TargetFramework(".NETFramework,Version=v4.6")>
    
    Module Example
       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 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 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
    

    Per altre informazioni, vedere la sezione "Impostazioni cultura e operazioni asincrone basate su attività" nel CultureInfo argomento.For more information, see the "Culture and task-based asynchronous operations" section in the CultureInfo topic.

  • Chiamando il Windows GetUserDefaultUILanguage (funzione).By calling the Windows GetUserDefaultUILanguage function.

Nota

Nel .NET Compact Framework.NET Compact Framework, il CurrentUICulture proprietà è di sola lettura.In the .NET Compact Framework.NET Compact Framework, the CurrentUICulture property is read-only. Le impostazioni cultura correnti dell'interfaccia utente sono determinata dalle impostazioni internazionali del sistema e non possono essere modificata a livello di codice.The current UI culture is determined by the system's regional settings and cannot be changed programmatically.

Inizia con la .NET Framework 4.6.NET Framework 4.6, per modificare le impostazioni cultura dell'interfaccia utente usata da un thread, impostare il Thread.CurrentUICulture proprietà per le nuove impostazioni cultura.Starting with the .NET Framework 4.6.NET Framework 4.6, to change the user interface culture used by a thread, set the Thread.CurrentUICulture property to the new culture. Se si modifica in modo esplicito le impostazioni cultura dell'interfaccia utente di un thread in questo modo, che modificano venga mantenuto in caso di thread supera i limiti del dominio applicazione.If you explicitly change a thread's UI culture in this way, that change persists if the thread crosses application domain boundaries.

Nota

In .NET Framework 4.5.2 e versioni precedenti, il CurrentUICulture proprietà è di sola lettura. vale a dire, è possibile recuperare il valore della proprietà, ma non è possibile impostare.In the .NET Framework 4.5.2 and earlier versions, the CurrentUICulture property is read-only; that is, you can retrieve the property value, but you cannot set it. Per modificare le impostazioni cultura correnti dell'interfaccia utente, si assegna il CultureInfo oggetto che rappresenta le nuove impostazioni cultura dell'interfaccia utente per il Thread.CurrentThread.CurrentUICulture proprietà.To change the current UI culture, you assign the CultureInfo object that represents the new UI culture to the Thread.CurrentThread.CurrentUICulture property. Inizia con la .NET Framework 4.6.NET Framework 4.6, il CultureInfo.CurrentUICulture proprietà è di lettura / scrittura, è possibile impostare e recuperare il valore della proprietà.Starting with the .NET Framework 4.6.NET Framework 4.6, the CultureInfo.CurrentUICulture property is read-write; you can both set and retrieve the property's value. Se si imposta il valore della proprietà un CultureInfo oggetto che rappresenta una nuova lingua, il valore della Thread.CurrentThread.CurrentCulture cambia anche proprietà.If you do set the property value to a CultureInfo object that represents a new culture, the value of the Thread.CurrentThread.CurrentCulture property also changes.

Contenuto della sezione:In this section:

Ottenere le impostazioni cultura correnti dell'interfaccia utente Getting the Current UI Culture
Impostare in modo esplicito le impostazioni cultura correnti dell'interfaccia utente Explicitly Setting the Current UI Culture
In modo implicito l'impostazione le impostazioni cultura correnti dell'interfaccia utente Implicitly Setting the Current UI Culture
Considerazioni sulla sicurezza Security Considerations
Le app di Windows e delle impostazioni cultura dell'interfaccia utente correnteThe Current UI Culture and Windows apps

Ottenere le impostazioni cultura correnti dell'interfaccia utenteGetting the Current UI Culture

Il CultureInfo.CurrentUICulture proprietà è un'impostazione di singoli thread; vale a dire, ogni thread può avere una proprio delle impostazioni cultura dell'interfaccia utente.The CultureInfo.CurrentUICulture property is a per-thread setting; that is, each thread can have its own UI culture. Ottenere le impostazioni cultura dell'interfaccia utente del thread corrente recuperando il valore della CultureInfo.CurrentUICulture proprietà, come illustrato nell'esempio seguente viene illustrato.You get the UI culture of the current thread by retrieving the value of the CultureInfo.CurrentUICulture property, as the following example illustrates.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo culture = CultureInfo.CurrentUICulture;
      Console.WriteLine("The current UI culture is {0} [{1}]",
                        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 Example
   Public Sub Main()
      Dim culture As CultureInfo = CultureInfo.CurrentCulture
      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 dal Thread.CurrentUICulture proprietà.You can also retrieve the value of the current thread's UI culture from the Thread.CurrentUICulture property.

Impostare in modo esplicito le impostazioni cultura correnti dell'interfaccia utenteExplicitly Setting the Current UI Culture

Inizia con la .NET Framework 4.6.NET Framework 4.6, è possibile modificare le impostazioni cultura correnti dell'interfaccia utente tramite l'assegnazione di un CultureInfo oggetto che rappresenta la nuova lingua per il CultureInfo.CurrentUICulture proprietà.Starting with the .NET Framework 4.6.NET Framework 4.6, you can change the current UI culture by assigning a CultureInfo object that represents the new culture to the CultureInfo.CurrentUICulture property. Le impostazioni cultura correnti dell'interfaccia utente possono essere impostata su entrambi una lingua specifica (ad esempio en-US o de-DE) o a una lingua (ad esempio en o de).The current UI culture can be set to either a specific culture (such as en-US or de-DE) or to a neutral culture (such as en or de). Nell'esempio seguente imposta le impostazioni cultura dell'interfaccia utente correnti su francese (Francia) o fr-FR.The following example sets the current UI culture to fr-FR or French (France).

using System;
using System.Globalization;

public class Example
{
   public static void 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);
   }
}
// The example displays output like the following:
//       The current UI culture: en-US
//       The current UI culture: fr-FR
Imports System.Globalization
Imports System.Threading

Module Example
   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 uno o più thread tramite l'assegnazione di un CultureInfo oggetto che rappresenta le impostazioni cultura del thread Thread.CurrentUICulture proprietà.In a multithreaded application, you can explicitly set the UI culture of any thread by assigning a CultureInfo object that represents that culture to the thread's Thread.CurrentUICulture property. Se il thread di cui si desidera impostare impostazioni cultura del thread corrente, è possibile assegnare le nuove impostazioni cultura per il CultureInfo.CurrentUICulture proprietà.If the thread whose culture you want to set is the current thread, you can assign the new culture to the CultureInfo.CurrentUICulture property. Quando le impostazioni cultura dell'interfaccia utente di un thread sono impostata in modo esplicito, che thread mantiene le stesse impostazioni cultura, anche se supera i limiti del dominio applicazione ed esegue codice in un altro dominio applicazione.When the UI culture of a thread is set explicitly, that thread retains the same culture even if it crosses application domain boundaries and executes code in another application domain.

In modo implicito l'impostazione le impostazioni cultura correnti dell'interfaccia utenteImplicitly Setting the Current UI Culture

Quando un thread, tra cui il thread principale dell'applicazione, viene prima creato, per impostazione predefinita che le impostazioni cultura dell'interfaccia utente corrente sia impostata come segue:When a thread, including the main application thread, is first created, by default its current UI culture is set as follows:

  • Utilizzando le impostazioni cultura definite per il DefaultThreadCurrentUICulture proprietà del dominio dell'applicazione corrente se il valore della proprietà non è null.By using the culture defined by the DefaultThreadCurrentUICulture property for the current application domain if the property value is not null.

  • Usando impostazioni cultura predefinite del sistema.By using the system's default culture. Nei sistemi che usano il sistema operativo Windows, common language runtime chiama il Windows GetUserDefaultUILanguage funzione per impostare le impostazioni cultura correnti dell'interfaccia utente.On systems that use the Windows operating system, the common language runtime calls the Windows GetUserDefaultUILanguage function to set the current UI culture. GetUserDefaultUILanguage Restituisce le impostazioni cultura dell'interfaccia utente predefinite impostate dall'utente.GetUserDefaultUILanguage returns the default UI culture set by the user. Se l'utente non ha impostato una lingua dell'interfaccia utente predefinita, restituisce le impostazioni cultura originariamente installate nel sistema.If the user has not set a default UI language, it returns the culture originally installed on the system.

Se il thread supera i limiti dell'applicazione e si esegue codice in un altro dominio applicazione, le impostazioni cultura sono determinata esattamente come quello di un thread appena creato.If the thread crosses application boundaries and executes code in another application domain, its culture is determined in the same way as that of a newly created thread.

Si noti che se si imposta impostazioni cultura dell'interfaccia utente specifiche che sono diversa dalla lingua dell'interfaccia utente di sistema installati o impostazioni cultura dell'interfaccia utente preferite dell'utente, e l'applicazione inizia a più thread, le impostazioni cultura correnti dell'interfaccia utente di questi thread saranno le impostazioni cultura restituite dai GetUserDefaultUILanguagefunzionare, a meno che non si assegna le impostazioni cultura per il DefaultThreadCurrentUICulture proprietà nel dominio dell'applicazione in cui è in esecuzione il thread.Note that if you set a specific UI culture that is different from the system-installed UI culture or the user's preferred UI culture, and your application starts multiple threads, the current UI culture of those threads will be the culture returned by the GetUserDefaultUILanguage function, unless you assign a culture to the DefaultThreadCurrentUICulture property in the application domain in which the thread is executing.

Considerazioni sulla sicurezzaSecurity Considerations

Modificare le impostazioni cultura del thread corrente, è necessario un SecurityPermission autorizzazione con il ControlThread impostata.Changing the culture of the current thread requires a SecurityPermission permission with the ControlThread value set.

Attenzione

La modifica dei thread è pericolosa a causa dello stato di sicurezza associato ai thread.Manipulating threads is dangerous because of the security state associated with threads. Di conseguenza, questa autorizzazione deve essere assegnata solo a codice attendibile e solo se necessario.Therefore, this permission should be given only to trustworthy code, and then only as necessary. Non è possibile modificare impostazioni cultura del thread nel codice parzialmente attendibile.You cannot change thread culture in semi-trusted code.

Le impostazioni cultura dell'interfaccia utente correnti e le app UWPThe current UI culture and UWP apps

Nelle App Universal Windows Platform (UWP), il CurrentUICulture proprietà è lettura / scrittura, proprio come accade nelle app .NET Framework e .NET Core, è possibile usarlo per ottenere e impostare le impostazioni cultura correnti.In Universal Windows Platform (UWP) apps, the CurrentUICulture property is read-write, just as it is in .NET Framework and .NET Core apps; you can use it both to get and to set the current culture. Tuttavia, le app UWP non viene fatta distinzione tra le impostazioni cultura correnti e le impostazioni cultura correnti dell'interfaccia utente.However, UWP apps do not distinguish between the current culture and the current UI culture. Il CurrentCulture e CurrentUICulture mappa le proprietà per il primo valore nel Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages raccolta.The CurrentCulture and CurrentUICulture properties map to the first value in the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages collection.

Nelle app .NET Framework e .NET Core, le impostazioni cultura correnti dell'interfaccia utente sono un'impostazione di singoli thread e il CurrentUICulture proprietà riflette le impostazioni cultura dell'interfaccia utente del thread corrente.In .NET Framework and .NET Core apps, the current UI culture is a per-thread setting, and the CurrentUICulture property reflects the UI culture of the current thread only. Nelle App UWP, esegue il mapping di impostazioni cultura correnti per il Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages proprietà, che è un'impostazione globale.In UWP apps, the current culture maps to the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages property, which is a global setting. L'impostazione di CurrentCulture proprietà modifica le impostazioni cultura dell'intera app; delle impostazioni cultura non può essere impostata su un singolo thread.Setting the CurrentCulture property changes the culture of the entire app; culture cannot be set on a per-thread basis.

Sicurezza

SecurityPermission
Per impostare le impostazioni cultura correnti dell'interfaccia utente.for setting the current UI culture. Enumerazione associata: ControlThreadAssociated enumeration: ControlThread

Si applica a

Vedi anche