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

Definición

Obtiene o establece el objeto CultureInfo que representa la referencia cultural de la interfaz de usuario actual utilizada por el Administrador de recursos para buscar los recursos específicos de la referencia cultural en tiempo de ejecución.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

Valor de propiedad

Referencia cultural actual usada por el Administrador de recursos para buscar recursos específicos de la referencia cultural en tiempo de ejecución.The culture used by the Resource Manager to look up culture-specific resources at run time.

Excepciones

La propiedad se establece en null.The property is set to null.

La propiedad se establece en un nombre de referencia cultural que no se puede usar para buscar un archivo de recursos.The property is set to a culture name that cannot be used to locate a resource file. Los nombres de archivo de recursos pueden incluir solo letras, números, guiones o caracteres de subrayado.Resource filenames can include only letters, numbers, hyphens, or underscores.

Ejemplos

En el ejemplo de código siguiente se muestra cómo CurrentCulture cambiar CurrentUICulture y del subproceso actual.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.

Comentarios

La referencia cultural de la interfaz de usuario actual es una propiedad por subproceso.The current UI culture is a per-thread property. Es decir, cada subproceso tiene su propia referencia cultural de la interfaz de usuario actual.That is, each thread has its own current UI culture. Esta propiedad equivale a recuperar o, empezando por .NET Framework 4.6.NET Framework 4.6, estableciendo el CultureInfo objeto asignado a la System.Threading.Thread.CurrentThread.CurrentUICulture propiedad.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. Cuando se inicia un subproceso, su referencia cultural de la interfaz de usuario se determina inicialmente de la siguiente manera:When a thread is started, its UI culture is initially determined as follows:

  • Al recuperar la referencia cultural especificada por la DefaultThreadCurrentUICulture propiedad en el dominio de aplicación en el que se está ejecutando el subproceso, si el valor de la propiedad no nulles.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.

  • Si el subproceso es un subproceso de grupo de subprocesos que ejecuta una operación asincrónica basada en tareas y la .NET Framework 4.6.NET Framework 4.6 aplicación tiene como destino o una versión posterior del .NET Framework, su referencia cultural de la interfaz de usuario viene determinada por la referencia cultural de la interfaz de usuario del subproceso que realiza la llamada.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. En el ejemplo siguiente se cambia la referencia cultural de la interfaz de usuario actual a portugués (Brasil) y se inician seis tareas, cada una de las cuales muestra su identificador de subproceso, su identificador de tarea y su referencia cultural de interfaz de usuario actual.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. Cada una de las tareas (y los subprocesos) ha heredado la referencia cultural de la interfaz de usuario del subproceso que realiza la llamada.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
    

    Para obtener más información, consulte la sección "referencia cultural y operaciones asincrónicas basadas en tareas" CultureInfo del tema.For more information, see the "Culture and task-based asynchronous operations" section in the CultureInfo topic.

  • Llamando a la función GetUserDefaultUILanguage de Windows.By calling the Windows GetUserDefaultUILanguage function.

Nota

En, la CurrentUICulture propiedad es de solo lectura. .NET Compact Framework.NET Compact FrameworkIn the .NET Compact Framework.NET Compact Framework, the CurrentUICulture property is read-only. La referencia cultural de la interfaz de usuario actual viene determinada por la configuración regional del sistema y no se puede cambiar mediante programación.The current UI culture is determined by the system's regional settings and cannot be changed programmatically.

A partir Thread.CurrentUICulture de ,paracambiarlareferenciaculturaldelainterfazdeusuarioutilizadaporunsubproceso,establezcalapropiedadenla.NET Framework 4.6.NET Framework 4.6nueva referencia cultural.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. Si cambia explícitamente la referencia cultural de la interfaz de usuario de un subproceso de esta manera, ese cambio se conserva si el subproceso cruza los límites del dominio de aplicación.If you explicitly change a thread's UI culture in this way, that change persists if the thread crosses application domain boundaries.

Nota

En .NET Framework 4.5.2 y versiones anteriores, la CurrentUICulture propiedad es de solo lectura; es decir, puede recuperar el valor de la propiedad, pero no puede establecerlo.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. Para cambiar la referencia cultural de la interfaz de usuario CultureInfo actual, asigne el objeto que representa la nueva Thread.CurrentThread.CurrentUICulture referencia cultural de la interfaz de usuario a la propiedad.To change the current UI culture, you assign the CultureInfo object that represents the new UI culture to the Thread.CurrentThread.CurrentUICulture property. A .NET Framework 4.6.NET Framework 4.6partir de, la CultureInfo.CurrentUICulture propiedad es de lectura y escritura; puede establecer y recuperar el valor de la propiedad.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. Si establece el valor de la propiedad en un CultureInfo objeto que representa una nueva referencia cultural, el valor de Thread.CurrentThread.CurrentCulture la propiedad también cambia.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.

En esta sección:In this section:

Obtener la referencia cultural de la interfaz de usuario actual Getting the Current UI Culture
Establecer explícitamente la referencia cultural de la interfaz de usuario actual Explicitly Setting the Current UI Culture
Establecer implícitamente la referencia cultural de la interfaz de usuario actual Implicitly Setting the Current UI Culture
Consideraciones de seguridad Security Considerations
La referencia cultural actual de la interfaz de usuario y las aplicaciones de WindowsThe Current UI Culture and Windows apps

Obtener la referencia cultural de la interfaz de usuario actualGetting the Current UI Culture

La CultureInfo.CurrentUICulture propiedad es una configuración por subproceso; es decir, cada subproceso puede tener su propia referencia cultural de la interfaz de usuario.The CultureInfo.CurrentUICulture property is a per-thread setting; that is, each thread can have its own UI culture. Obtiene la referencia cultural de la interfaz de usuario del subproceso actual recuperando el CultureInfo.CurrentUICulture valor de la propiedad, como se muestra en el ejemplo siguiente.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]

También puede recuperar el valor de la referencia cultural de la interfaz de usuario del Thread.CurrentUICulture subproceso actual de la propiedad.You can also retrieve the value of the current thread's UI culture from the Thread.CurrentUICulture property.

Establecer explícitamente la referencia cultural de la interfaz de usuario actualExplicitly Setting the Current UI Culture

A partir de CultureInfo CultureInfo.CurrentUICulture , puede cambiar la referencia cultural de la interfaz de usuario actual asignando un objeto que representa la nueva referencia cultural a .NET Framework 4.6.NET Framework 4.6la propiedad.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. La referencia cultural de la interfaz de usuario actual se puede establecer en una referencia cultural concreta (como en-US o de-DE) o en una referencia cultural neutra (como 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). En el ejemplo siguiente se establece la referencia cultural de la interfaz de usuario actual en fr-FR o francés (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

En una aplicación multiproceso, puede establecer explícitamente la referencia cultural de la interfaz de usuario de cualquier subproceso CultureInfo asignando un objeto que representa esa referencia cultural Thread.CurrentUICulture a la propiedad del subproceso.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. Si el subproceso cuya referencia cultural desea establecer es el subproceso actual, puede asignar la nueva referencia cultural a CultureInfo.CurrentUICulture la propiedad.If the thread whose culture you want to set is the current thread, you can assign the new culture to the CultureInfo.CurrentUICulture property. Cuando se establece explícitamente la referencia cultural de la interfaz de usuario de un subproceso, ese subproceso conserva la misma referencia cultural aunque cruce los límites del dominio de aplicación y ejecute el código en otro dominio de aplicación.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.

Establecer implícitamente la referencia cultural de la interfaz de usuario actualImplicitly Setting the Current UI Culture

Cuando un subproceso, incluido el subproceso principal de la aplicación, se crea por primera vez, de forma predeterminada su referencia cultural de interfaz de usuario actual se establece de la manera siguiente:When a thread, including the main application thread, is first created, by default its current UI culture is set as follows:

  • Mediante el uso de la referencia cultural DefaultThreadCurrentUICulture definida por la propiedad para el dominio de aplicación actual si el nullvalor de la propiedad no es.By using the culture defined by the DefaultThreadCurrentUICulture property for the current application domain if the property value is not null.

  • Mediante el uso de la referencia cultural predeterminada del sistema.By using the system's default culture. En los sistemas que usan el sistema operativo Windows, el Common Language Runtime llama a GetUserDefaultUILanguage la función de Windows para establecer la referencia cultural de la interfaz de usuario actual.On systems that use the Windows operating system, the common language runtime calls the Windows GetUserDefaultUILanguage function to set the current UI culture. GetUserDefaultUILanguageDevuelve la referencia cultural de la interfaz de usuario predeterminada establecida por el usuario.GetUserDefaultUILanguage returns the default UI culture set by the user. Si el usuario no ha establecido un idioma de interfaz de usuario predeterminado, devuelve la referencia cultural instalada originalmente en el sistema.If the user has not set a default UI language, it returns the culture originally installed on the system.

Si el subproceso cruza los límites de la aplicación y ejecuta código en otro dominio de aplicación, su referencia cultural se determina de la misma manera que el de un subproceso recién creado.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.

Tenga en cuenta que si establece una referencia cultural de interfaz de usuario específica diferente de la referencia cultural de la interfaz de usuario instalada por el sistema o la referencia cultural de la interfaz de usuario preferida del usuario, y la aplicación inicia varios subprocesos, la referencia cultural de la interfaz de usuario actual de esos subprocesos será la referencia cultural GetUserDefaultUILanguage, a menos que se asigne una referencia cultural DefaultThreadCurrentUICulture a la propiedad en el dominio de aplicación en el que se está ejecutando el subproceso.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.

Consideraciones de seguridadSecurity Considerations

El cambio de la referencia cultural del subproceso SecurityPermission actual requiere un ControlThread permiso con el valor establecido.Changing the culture of the current thread requires a SecurityPermission permission with the ControlThread value set.

Precaución

La manipulación de subprocesos es peligrosa debido al estado de seguridad asociado a los subprocesos.Manipulating threads is dangerous because of the security state associated with threads. Por lo tanto, solo se debe conceder este permiso a código de confianza y solo cuando sea necesario.Therefore, this permission should be given only to trustworthy code, and then only as necessary. No se puede cambiar la referencia cultural de subprocesos en código de confianza parcial.You cannot change thread culture in semi-trusted code.

La referencia cultural actual de la interfaz de usuario y las aplicaciones UWPThe current UI culture and UWP apps

En las aplicaciones plataforma universal de Windows (UWP), CurrentUICulture la propiedad es de lectura y escritura, al igual que en las aplicaciones .NET Framework y .net Core; puede usarla para obtener y establecer la referencia cultural actual.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. Sin embargo, las aplicaciones UWP no distinguen entre la referencia cultural actual y la referencia cultural de la interfaz de usuario actual.However, UWP apps do not distinguish between the current culture and the current UI culture. Las CurrentCulture propiedades CurrentUICulture y se asignan al primer valor de la colección 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.

En .NET Framework y aplicaciones de .net Core, la referencia cultural de la interfaz de usuario actual es una configuración CurrentUICulture por subproceso y la propiedad refleja la referencia cultural de la interfaz de usuario solo del subproceso actual.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. En las aplicaciones para UWP, la referencia cultural actual se asigna a la propiedad Windows. ApplicationModel. Resources. Core. ResourceManager. DefaultContext. Languages , que es una configuración global.In UWP apps, the current culture maps to the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages property, which is a global setting. Al establecer CurrentCulture la propiedad, se cambia la referencia cultural de toda la aplicación; no se puede establecer la referencia cultural por subproceso.Setting the CurrentCulture property changes the culture of the entire app; culture cannot be set on a per-thread basis.

Seguridad

SecurityPermission
para establecer la referencia cultural de la interfaz de usuario actual.for setting the current UI culture. Enumeración asociada:ControlThreadAssociated enumeration: ControlThread

Se aplica a

Consulte también: