CultureInfo.CurrentUICulture Proprietà

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(); };
public static System.Globalization.CultureInfo CurrentUICulture { get; }
member this.CurrentUICulture : System.Globalization.CultureInfo
Public Shared ReadOnly 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

Nell'esempio di codice riportato di seguito viene illustrato come modificare il 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 thread.The current UI culture is a per-thread property. Ovvero ogni thread ha le proprie impostazioni cultura correnti dell'interfaccia utente.That is, each thread has its own current UI culture. Questa proprietà equivale a recuperare o, a partire dalla .NET Framework 4.6.NET Framework 4.6, impostando l'oggetto CultureInfo assegnato alla proprietà System.Threading.Thread.CurrentThread.CurrentUICulture.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 un thread viene avviato, le relative impostazioni cultura dell'interfaccia utente vengono inizialmente determinate come segue:When a thread is started, its UI culture is initially determined as follows:

  • Recuperando le impostazioni cultura specificate dalla proprietà DefaultThreadCurrentUICulture nel dominio applicazione in cui è in esecuzione il thread, se il valore della proprietà non è 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 thread del pool di thread che esegue un'operazione asincrona basata su attività e l'app è destinata all'.NET Framework 4.6.NET Framework 4.6 o a una versione successiva del .NET Framework, le impostazioni cultura dell'interfaccia utente vengono determinate 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 vengono modificate le impostazioni cultura dell'interfaccia utente correnti in Portoghese (Brasile) e vengono avviate sei attività, ognuna delle quali Visualizza l'ID del thread, l'ID attività e le impostazioni cultura correnti dell'interfaccia utente.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. Ogni 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 ulteriori informazioni, vedere la sezione "impostazioni cultura e operazioni asincrone basate su attività" nell'argomento CultureInfo.For more information, see the "Culture and task-based asynchronous operations" section in the CultureInfo topic.

  • Chiamando la funzione GetUserDefaultUILanguage di Windows.By calling the Windows GetUserDefaultUILanguage function.

Nota

Nella .NET Compact Framework.NET Compact Frameworkla proprietà CurrentUICulture è 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 determinate dalle impostazioni internazionali del sistema e non possono essere modificate a livello di codice.The current UI culture is determined by the system's regional settings and cannot be changed programmatically.

A partire dalla .NET Framework 4.6.NET Framework 4.6, per modificare le impostazioni cultura dell'interfaccia utente utilizzate da un thread, impostare la proprietà Thread.CurrentUICulture sulle 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 le impostazioni cultura dell'interfaccia utente di un thread vengono modificate in modo esplicito in questo modo, la modifica viene mantenute se il 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

Nel .NET Framework 4.5.2 e nelle versioni precedenti, la proprietà CurrentUICulture è di sola lettura. ovvero, è possibile recuperare il valore della proprietà, ma non è possibile impostarlo.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 dell'interfaccia utente correnti, assegnare l'oggetto CultureInfo che rappresenta le nuove impostazioni cultura dell'interfaccia utente alla proprietà Thread.CurrentThread.CurrentUICulture.To change the current UI culture, you assign the CultureInfo object that represents the new UI culture to the Thread.CurrentThread.CurrentUICulture property. A partire dal .NET Framework 4.6.NET Framework 4.6, la proprietà CultureInfo.CurrentUICulture è 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 il valore della proprietà viene impostato su un oggetto CultureInfo che rappresenta nuove impostazioni cultura, viene modificato anche il valore della proprietà Thread.CurrentThread.CurrentCulture.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:

Recupero delle impostazioni cultura dell'interfaccia utente correnti Getting the Current UI Culture
Impostazione esplicita delle impostazioni cultura dell'interfaccia utente correnti Explicitly Setting the Current UI Culture
Impostazione implicita delle impostazioni cultura dell'interfaccia utente correnti Implicitly Setting the Current UI Culture
Considerazioni sulla sicurezza Security Considerations
Impostazioni cultura correnti dell'interfaccia utente e app di WindowsThe Current UI Culture and Windows apps

Recupero delle impostazioni cultura correnti dell'interfaccia utenteGetting the Current UI Culture

La proprietà CultureInfo.CurrentUICulture è un'impostazione per thread. ovvero ogni thread può avere le proprie impostazioni cultura dell'interfaccia utente.The CultureInfo.CurrentUICulture property is a per-thread setting; that is, each thread can have its own UI culture. È possibile ottenere le impostazioni cultura dell'interfaccia utente del thread corrente recuperando il valore della proprietà CultureInfo.CurrentUICulture, come illustrato nell'esempio seguente.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 dalla proprietà Thread.CurrentUICulture.You can also retrieve the value of the current thread's UI culture from the Thread.CurrentUICulture property.

Impostazione esplicita delle impostazioni cultura correnti dell'interfaccia utenteExplicitly Setting the Current UI Culture

A partire dalla .NET Framework 4.6.NET Framework 4.6, è possibile modificare le impostazioni cultura dell'interfaccia utente correnti assegnando un oggetto CultureInfo che rappresenta le nuove impostazioni cultura alla proprietà CultureInfo.CurrentUICulture.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 impostate su impostazioni cultura specifiche, ad esempio en-US o de-DE, oppure su impostazioni cultura non associate ad alcun paese, 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 vengono impostate le impostazioni cultura dell'interfaccia utente correnti su fr-FR o francese (Francia).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 multithread è possibile impostare in modo esplicito le impostazioni cultura dell'interfaccia utente di qualsiasi thread assegnando un CultureInfo oggetto che rappresenta le impostazioni cultura alla proprietà Thread.CurrentUICulture del thread.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 le impostazioni cultura è il thread corrente, è possibile assegnare le nuove impostazioni cultura alla proprietà CultureInfo.CurrentUICulture.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 vengono impostate in modo esplicito, il thread mantiene le stesse impostazioni cultura anche se attraversa i limiti del dominio applicazione ed esegue il 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.

Impostazione implicita delle impostazioni cultura correnti dell'interfaccia utenteImplicitly Setting the Current UI Culture

Quando viene creato per la prima volta un thread, incluso il thread principale dell'applicazione, per impostazione predefinita le impostazioni cultura correnti dell'interfaccia utente vengono impostate nel modo seguente: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 dalla proprietà DefaultThreadCurrentUICulture per il 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.

  • Utilizzando le impostazioni cultura predefinite del sistema.By using the system's default culture. Nei sistemi che usano il sistema operativo Windows, il Common Language Runtime chiama la funzione di Windows GetUserDefaultUILanguage per impostare le impostazioni cultura dell'interfaccia utente correnti.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 predefinita dell'interfaccia utente, 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 ed esegue codice in un altro dominio applicazione, le relative impostazioni cultura vengono determinate in modo analogo a 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 impostano impostazioni cultura dell'interfaccia utente diverse dalle impostazioni cultura dell'interfaccia utente installate dal sistema o dalle impostazioni cultura dell'interfaccia utente preferite dell'utente e l'applicazione avvia più thread, le impostazioni cultura correnti dell'interfaccia utente di tali thread saranno quelle restituite dal GetUserDefaultUILanguage , a meno che non vengano assegnate impostazioni cultura alla proprietà DefaultThreadCurrentUICulture nel dominio 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

Per modificare le impostazioni cultura del thread corrente è necessario disporre di un'autorizzazione SecurityPermission con il set di valori ControlThread.Changing the culture of the current thread requires a SecurityPermission permission with the ControlThread value set.

Attenzione

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

Impostazioni cultura correnti dell'interfaccia utente e app UWPThe current UI culture and UWP apps

Nelle app piattaforma UWP (Universal Windows Platform) (UWP) la proprietà CurrentUICulture è di lettura/scrittura, così come si trova 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 fanno 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. Le proprietà CurrentCulture e CurrentUICulture sono mappate al primo valore nella raccolta Windows. ApplicationModel. resources. Core. ResourceManager. DefaultContext. languages .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 per thread e la proprietà CurrentUICulture 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, le impostazioni cultura correnti sono mappate alla proprietà Windows. ApplicationModel. resources. Core. ResourceManager. DefaultContext. languages , 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. Impostando la proprietà CurrentCulture vengono modificate le impostazioni cultura dell'intera app; Impossibile impostare le impostazioni cultura per 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 l'impostazione delle impostazioni cultura correnti dell'interfaccia utente.for setting the current UI culture. Enumerazione associata: ControlThreadAssociated enumeration: ControlThread

Si applica a

Vedi anche