Utilizar la propiedad CurrentCulture

La propiedad CultureInfo.CurrentCulture es una configuración de cada subproceso que determina los formatos predeterminados para la fecha, hora, moneda y números, el criterio de ordenación de texto, las comparaciones de cadenas y la distinción entre mayúsculas y minúsculas. La propiedad CurrentCulture no es una configuración de idioma. Sólo contiene datos relacionados con la configuración estándar para una región geográfica. Por lo tanto, la propiedad CurrentCulture únicamente se puede establecer para una referencia cultural específica o para InvariantCulture. Puede utilizar la propiedad Thread.CurrentThread para establecer CurrentCulture. Para obtener más información, vea los ejemplos proporcionados más adelante en este mismo tema.

Nota

Para cambiar la referencia cultural de Thread.CurrentThread, es necesaria una clase SecurityPermission que tenga establecido el indicador SecurityPermissionFlag,ControlThread. Es peligroso manipular subprocesos por el estado de seguridad asociado a los mismos. Por lo tanto, este permiso debería darse sólo a código confiable, y aun así sólo cuando sea necesario. No se puede cambiar la referencia cultural de un subproceso en un código de confianza parcial.

Configurar explícitamente la propiedad CurrentCulture

Puede configurar la propiedad CurrentCulture explícitamente en el código. En el ejemplo de código siguiente se establece la referencia cultural específica "de-DE" para alemán de Alemania como el valor de la propiedad CurrentCulture.

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE")
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");

Debe utilizar una referencia cultural específica para inicializar la propiedad CurrentCulture. La propiedad CurrentCulture espera encontrar una referencia cultural asociada con un idioma y una región, como ("en-US") para inglés de Estados Unidos. Debido a que a menudo un idioma se habla en más de un país o región, se necesita la información regional para determinar las convenciones de formato apropiadas que deben utilizarse. Por ejemplo, si especifica la referencia cultural "en" para inglés neutro, no hay una única configuración correcta para el formato de fecha o moneda. La fecha puede estar en el formato de Estados Unidos o en el formato británico. La moneda puede estar en el formato de Nueva Zelanda o en el formato canadiense. Debido a estas ambigüedades, es necesario indicar una referencia cultural específica, como "en-US", "en-GB" o "en-CA". Si intenta establecer la propiedad CurrentCulture con una referencia cultural neutra, se produce una excepción.

Si sólo tiene acceso a una referencia cultural neutra, puede crear un objeto CultureInfo con el formato que la propiedad CurrentCulture espera encontrar, mediante el método CultureInfo.CreateSpecificCulture. Este método asigna una referencia cultural neutra a la referencia cultural específica predeterminada con la que está asociada y, a continuación, crea un objeto CultureInfo que representa esa referencia cultural específica. En el ejemplo de código siguiente se utiliza el método CultureInfo.CreateSpecificCulture para asignar la referencia cultural neutra "de" a la referencia cultural específica "de-DE", después, se crea un objeto CultureInfo para "de-DE" y se utiliza para inicializar el valor de la propiedad CurrentCulture.

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de")
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de");

Nota

Este método es opcional. Si la asignación que proporciona no es apropiada para la aplicación, puede sustituirlo con su propia asignación.

Configurar explícitamente la propiedad CurrentCulture en una página .aspx

El método CultureInfo.CreateSpecificCulture también permite utilizar el idioma actual de un explorador Web para inicializar la propiedad CurrentCulture en una página .aspx.

En el ejemplo de código siguiente, la propiedad Request.UserLanguages devuelve el idioma actual del explorador Web en forma de cadena. El método CultureInfo.CreateSpecificCulture analiza esa cadena y devuelve un objeto CultureInfo en el formato que se puede utilizar para inicializar el valor de la propiedad CurrentCulture.

' Sets the CurrentCulture property to the culture associated with the Web
' browser's current language setting.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0])
// Sets the CurrentCulture property to the culture associated with the Web
// browser's current language setting.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

Para obtener más información sobre cómo utilizar y recuperar recursos en aplicaciones de ASP.NET, vea Recursos de aplicaciones de ASP.NET.

Configurar implícitamente la propiedad CurrentCulture

La función GetUserDefaultLCID del sistema operativo Windows establece la propiedad CurrentCulture. El usuario puede cambiar la configuración de esta propiedad cambiando la configuración regional de usuario en el cuadro de diálogo Configuración regional o cambiando la configuración relacionada con el usuario regional, como los formatos de moneda, números, fecha y hora.

Si desea asegurarse de que la aplicación utiliza los valores predeterminados de .NET Framework para moneda, números, fecha y hora de una referencia cultural específica, puede reemplazar los valores predeterminados de la configuración regional de usuario en el código de la aplicación. Cree un objeto CultureInfo mediante una de las sobrecargas del constructor que acepte un parámetro useUserOverride y establezca a false el valor de este parámetro. Esto hará que la configuración predeterminada del sistema del usuario sea reemplazada por la configuración predeterminada de .NET Framework. Al aplicar formato a la moneda para los países de la Unión Europea (UE) que operan en euros, se recomienda establecer el valor del parámetro useUserOverride a false para garantizar que se utilice el símbolo de moneda correcto. Para obtener más información, vea el subtema "Aplicar formato de moneda para los países de la zona del euro" en el tema Aplicar formato a datos numéricos para una referencia cultural específica.

Vea también

Referencia

CultureInfo.CurrentCulture Property

Conceptos

Utilizar la propiedad CurrentUICulture
Utilizar la propiedad InvariantCulture

Otros recursos

Codificación y localización