Thread.CurrentUICulture Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece la referencia cultural actual que usa Resource Manager para buscar recursos específicos de la referencia cultural en tiempo de ejecución.
public:
property System::Globalization::CultureInfo ^ CurrentUICulture { System::Globalization::CultureInfo ^ get(); void set(System::Globalization::CultureInfo ^ value); };
public System.Globalization.CultureInfo CurrentUICulture { get; set; }
member this.CurrentUICulture : System.Globalization.CultureInfo with get, set
Public Property CurrentUICulture As CultureInfo
Valor de propiedad
Objeto que representa la referencia cultural actual.
Excepciones
La propiedad se establece en null.
La propiedad se establece en un nombre de referencia cultural que no se puede usar para buscar un archivo de recursos. Los nombres de archivo de recursos solo deben incluir letras, números, guiones o caracteres de subrayado.
Solo .NET Core y .NET 5+: no se admite la lectura o escritura de la referencia cultural de un subproceso desde otro subproceso.
Ejemplos
En el ejemplo siguiente se determina si el idioma de la referencia cultural de la interfaz de usuario del subproceso actual es francés. Si no es así, establece la referencia cultural de la interfaz de usuario del subproceso actual en inglés (Estados Unidos).
using System;
using System.Globalization;
using System.Threading;
public class Example
{
public static void Main()
{
// Change the current culture if the language is not French.
CultureInfo current = Thread.CurrentThread.CurrentUICulture;
if (current.TwoLetterISOLanguageName != "fr") {
CultureInfo newCulture = CultureInfo.CreateSpecificCulture("en-US");
Thread.CurrentThread.CurrentUICulture = newCulture;
// Make current UI culture consistent with current culture.
Thread.CurrentThread.CurrentCulture = newCulture;
}
Console.WriteLine("The current UI culture is {0} [{1}]",
Thread.CurrentThread.CurrentUICulture.NativeName,
Thread.CurrentThread.CurrentUICulture.Name);
Console.WriteLine("The current culture is {0} [{1}]",
Thread.CurrentThread.CurrentUICulture.NativeName,
Thread.CurrentThread.CurrentUICulture.Name);
}
}
// The example displays the following output:
// The current UI culture is English (United States) [en-US]
// The current culture is English (United States) [en-US]
open System.Globalization
open System.Threading
// Change the current culture if the language is not French.
let current = Thread.CurrentThread.CurrentUICulture
if current.TwoLetterISOLanguageName <> "fr" then
let newCulture = CultureInfo.CreateSpecificCulture "en-US"
Thread.CurrentThread.CurrentUICulture <- newCulture
// Make current UI culture consistent with current culture.
Thread.CurrentThread.CurrentCulture <- newCulture
printfn
$"The current UI culture is {Thread.CurrentThread.CurrentUICulture.NativeName} [{Thread.CurrentThread.CurrentUICulture.Name}]"
printfn
$"The current culture is {Thread.CurrentThread.CurrentUICulture.NativeName} [{Thread.CurrentThread.CurrentUICulture.Name}]"
// The example displays the following output:
// The current UI culture is English (United States) [en-US]
// The current culture is English (United States) [en-US]
Imports System.Globalization
Imports System.Threading
Module Example
Public Sub Main()
' Change the current culture if the language is not French.
Dim current As CultureInfo = Thread.CurrentThread.CurrentUICulture
If current.TwoLetterISOLanguageName <> "fr" Then
Dim newCulture As CultureInfo = CultureInfo.CreateSpecificCulture("en-US")
Thread.CurrentThread.CurrentUICulture = newCulture
' Make current UI culture consistent with current culture.
Thread.CurrentThread.CurrentCulture = newCulture
End If
Console.WriteLine("The current UI culture is {0} [{1}]",
Thread.CurrentThread.CurrentUICulture.NativeName,
Thread.CurrentThread.CurrentUICulture.Name)
Console.WriteLine("The current culture is {0} [{1}]",
Thread.CurrentThread.CurrentUICulture.NativeName,
Thread.CurrentThread.CurrentUICulture.Name)
End Sub
End Module
' The example displays output like the following:
' The current UI culture is English (United States) [en-US]
' The current culture is English (United States) [en-US]
En el ejemplo de código siguiente se muestra la instrucción de subproceso que permite que la interfaz de usuario de un formulario Windows Forms se muestre en la referencia cultural establecida en el Panel de control. Se necesita código adicional.
using System;
using System.Threading;
using System.Windows.Forms;
class UICulture : Form
{
public UICulture()
{
// Set the user interface to display in the
// same culture as that set in Control Panel.
Thread.CurrentThread.CurrentUICulture =
Thread.CurrentThread.CurrentCulture;
// Add additional code.
}
static void Main()
{
Application.Run(new UICulture());
}
}
open System.Threading
open System.Windows.Forms
type UICulture() =
inherit Form()
do
// Set the user interface to display in the
// same culture as that set in Control Panel.
Thread.CurrentThread.CurrentUICulture <- Thread.CurrentThread.CurrentCulture
// Add additional code.
new UICulture() |> Application.Run
Imports System.Threading
Imports System.Windows.Forms
Public Class UICulture : Inherits Form
Sub New()
' Set the user interface to display in the
' same culture as that set in Control Panel.
Thread.CurrentThread.CurrentUICulture = _
Thread.CurrentThread.CurrentCulture
' Add additional code.
End Sub
Shared Sub Main()
Application.Run(New UICulture())
End Sub
End Class
Comentarios
La referencia cultural de la interfaz de usuario especifica los recursos que una aplicación necesita para admitir la entrada y salida del usuario, y de forma predeterminada es la misma que la referencia cultural del sistema operativo. Consulte la CultureInfo clase para obtener información sobre los nombres e identificadores de referencia cultural, las diferencias entre las referencias culturales invariables, neutrales y específicas, y la forma en que la información de referencia cultural afecta a los subprocesos y los dominios de aplicación. Consulte la propiedad para obtener información sobre cómo se determina la CultureInfo.CurrentUICulture referencia cultural de interfaz de usuario predeterminada de un subproceso.
Importante
La CurrentUICulture propiedad no funciona de forma confiable cuando se usa con ningún subproceso distinto del subproceso actual. En .NET Framework, leer la propiedad es confiable, aunque establecerla para un subproceso distinto del subproceso actual no es . En .NET Core, se produce una InvalidOperationException excepción si un subproceso intenta leer o escribir la CurrentUICulture propiedad en otro subproceso. Se recomienda usar la CultureInfo.CurrentUICulture propiedad para recuperar y establecer la referencia cultural actual.
El CultureInfo devuelto por esta propiedad puede ser una referencia cultural neutra. Las referencias culturales neutras no deben usarse con métodos de formato como String.Format(IFormatProvider, String, Object[]), DateTime.ToString(String, IFormatProvider)y Convert.ToString(Char, IFormatProvider). Use el CultureInfo.CreateSpecificCulture método para obtener una referencia cultural específica o use la CurrentCulture propiedad .