Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

CultureInfo (Clase)

Proporciona información sobre una referencia cultural concreta (lo que se denomina configuración regional en desarrollo de código no administrado). Esta información incluye los nombres de la referencia cultural, el sistema de escritura, el calendario utilizado y el formato de las fechas y de la ordenación de cadenas.

System.Object
  System.Globalization.CultureInfo

Espacio de nombres:  System.Globalization
Ensamblado:  mscorlib (en mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class CultureInfo : ICloneable, 
	IFormatProvider

El tipo CultureInfo expone los siguientes miembros.

  NombreDescripción
Método públicoCompatible con XNA FrameworkCultureInfo(Int32)Inicializa una nueva instancia de la clase CultureInfo de acuerdo con la referencia cultural especificada por el identificador de la misma.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCultureInfo(String)Inicializa una nueva instancia de la clase CultureInfo de acuerdo con la referencia cultural especificada mediante un nombre.
Método públicoCompatible con XNA FrameworkCultureInfo(Int32, Boolean)Inicializa una nueva instancia de la clase CultureInfo de acuerdo con la referencia cultural especificada por el identificador y con el valor booleano que especifica si se va a utilizar la configuración de referencia cultural del sistema seleccionada por el usuario.
Método públicoCompatible con XNA FrameworkCultureInfo(String, Boolean)Inicializa una nueva instancia de la clase CultureInfo de acuerdo con la referencia cultural especificada mediante un nombre y con el valor booleano que indica si se va a utilizar la configuración de referencia cultural del sistema seleccionada por el usuario.
Arriba

  NombreDescripción
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCalendarObtiene el calendario predeterminado utilizado por la referencia cultural.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCompareInfoObtiene el CompareInfo que define el modo en que se comparan las cadenas para la referencia cultural.
Propiedad públicaCultureTypesObtiene los tipos de referencia cultural que pertenecen al objeto CultureInfo actual.
Propiedad públicaMiembro estáticoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCurrentCultureObtiene el objeto CultureInfo que representa la referencia cultural utilizada por el subproceso actual.
Propiedad públicaMiembro estáticoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCurrentUICultureObtiene 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.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsDateTimeFormatObtiene o establece un DateTimeFormatInfo que define el formato de presentación de fechas y horas culturalmente apropiado.
Propiedad públicaMiembro estáticoCompatible con .NET para aplicaciones de la Tienda WindowsDefaultThreadCurrentCultureObtiene o establece la referencia cultural predeterminada para los subprocesos del dominio de aplicación actual.
Propiedad públicaMiembro estáticoCompatible con .NET para aplicaciones de la Tienda WindowsDefaultThreadCurrentUICultureObtiene o establece la referencia cultural predeterminada de la interfaz de usuario para los subprocesos del dominio de aplicación actual.
Propiedad públicaCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsDisplayNameObtiene el nombre de referencia cultural localizado completo.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsEnglishNameObtiene el nombre de la referencia cultural en el formato idiomacompleto [país/regióncompletos] en inglés.
Propiedad públicaIetfLanguageTagObsoleto. Obtiene la identificación del estándar RFC 4646 de un idioma.
Propiedad públicaMiembro estáticoInstalledUICultureObtiene el CultureInfo que representa la referencia cultural instalada con el sistema operativo.
Propiedad públicaMiembro estáticoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsInvariantCultureObtiene el objeto CultureInfo que es independiente de la referencia cultural (invariable).
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsIsNeutralCultureObtiene un valor que indica si el CultureInfo actual representa una referencia cultural neutra.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsIsReadOnlyObtiene un valor que indica si el CultureInfo actual es de sólo lectura.
Propiedad públicaKeyboardLayoutIdObtiene el identificador de configuración regional de entrada activo.
Propiedad públicaCompatible con XNA FrameworkLCIDObtiene el identificador de referencia cultural del CultureInfo actual.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsNameObtiene el nombre de la referencia cultural en el formato códigoidioma2-códigopaís/región2.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsNativeNameObtiene el nombre de la referencia cultural que consta del idioma, país o región y alfabeto opcional establecidos para que los muestre la referencia cultural.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsNumberFormatObtiene o establece un NumberFormatInfo que define el formato de presentación de números, moneda y porcentaje culturalmente apropiado.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsOptionalCalendarsObtiene la lista de calendarios que puede utilizar la referencia cultural.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsParentObtiene el CultureInfo que representa la referencia cultural principal del CultureInfo actual.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsTextInfoObtiene el TextInfo que define el sistema de escritura asociado a la referencia cultural.
Propiedad públicaCompatible con XNA FrameworkThreeLetterISOLanguageNameObtiene el código de tres letras ISO 639-2 del idioma del CultureInfo actual.
Propiedad públicaCompatible con XNA FrameworkThreeLetterWindowsLanguageNameObtiene el código de tres letras del idioma tal como se ha definido en la API de Windows.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsTwoLetterISOLanguageNameObtiene el código de dos letras ISO 639-1 del idioma del CultureInfo actual.
Propiedad públicaCompatible con XNA FrameworkUseUserOverrideObtiene un valor que indica si el CultureInfo actual utiliza la configuración de referencia cultural seleccionada por el usuario.
Arriba

  NombreDescripción
Método públicoCompatible con XNA FrameworkClearCachedDataActualiza la información relativa a la referencia cultural almacenada en caché.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCloneCrea una copia de la clase CultureInfo actual.
Método públicoMiembro estáticoCompatible con XNA FrameworkCreateSpecificCultureCrea un CultureInfo que representa la referencia cultural específica asociada al nombre especificado.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsEqualsDetermina si el objeto especificado es la misma referencia cultural que el CultureInfo actual. (Invalida a Object.Equals(Object)).
Método protegidoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoGetConsoleFallbackUICultureObtiene una referencia cultural de la interfaz de usuario alternativa apta para las aplicaciones de consola cuando la referencia cultural de la interfaz gráfica de usuario predeterminada no es apropiada.
Método públicoMiembro estáticoCompatible con XNA FrameworkGetCultureInfo(Int32)Recupera una instancia almacenada en memoria caché, de solo lectura, de una referencia cultural usando el identificador de referencia cultural especificado.
Método públicoMiembro estáticoCompatible con XNA FrameworkGetCultureInfo(String)Recupera una instancia almacenada en memoria caché, de sólo lectura, de una referencia cultural utilizando el nombre de referencia cultural especificado.
Método públicoMiembro estáticoGetCultureInfo(String, String)Recupera una instancia almacenada en memoria caché, de sólo lectura, de una referencia cultural. Los parámetros especifican una referencia cultural que se inicializa con los objetos TextInfo y CompareInfo especificados por otra referencia cultural.
Método públicoMiembro estáticoGetCultureInfoByIetfLanguageTagObsoleto. Recupera un objeto CultureInfo de sólo lectura cuyas características lingüísticas se identifican por la etiqueta de idioma RFC 4646 especificada.
Método públicoMiembro estáticoGetCulturesObtiene la lista de referencias culturales admitidas filtradas por el parámetro CultureTypes especificado.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetFormatObtiene un objeto que define cómo se aplica el formato al tipo especificado.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetHashCodeSirve como función hash para el objeto CultureInfo actual, que se puede utilizar en algoritmos hash y estructuras de datos, como una tabla hash. (Invalida a Object.GetHashCode()).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetType Obtiene el Typede la instancia actual. (Se hereda de Object).
Método protegidoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método públicoMiembro estáticoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsReadOnlyDevuelve un contenedor de sólo lectura en torno al CultureInfo especificado.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsToStringDevuelve una cadena que contiene el nombre del CultureInfo actual en el formato languagecode2-country/regioncode2. (Invalida a Object.ToString()).
Arriba

La clase de CultureInfo proporciona información cultura- concreta, como el idioma, el sublenguaje, el país o región, el calendario, y las convenciones asociadas a una referencia cultural determinada. Esta clase también proporciona acceso a las instancias cultura- específicas de DateTimeFormatInfo, de NumberFormatInfo, de CompareInfo, y objetos de TextInfo . Estos objetos contienen la información necesaria para las operaciones específicas de la referencia cultural, como la distinción entre mayúsculas y minúsculas, la aplicación de formato a fechas y números y la comparación de cadenas. La clase de CultureInfo utiliza directa o indirectamente por clases que dan formato, analizan, o manipulan los datos cultura- específicos, como String, DateTime, DateTimeOffset, y los tipos numéricos.

En esta sección:

Nombres e identificadores
Invariable, neutro, y referencias culturales específicas
Las referencias culturales personalizadas
Los datos dinámicos de la referencia cultural
Referencia cultural y subprocesos
Referencia cultural y dominios de aplicación
Serialización de objetos CultureInfo
El Panel de control reemplaza
Criterios de ordenación alternativos

Nombres e identificadores

La clase CultureInfo especifica un nombre único para cada referencia cultural basada en RFC 4646. Este nombre está formado por un código ISO 639 para la referencia cultural que está asociado a un idioma y se compone de dos letras minúsculas y por un código ISO 3166 para la referencia cultural secundaria que está asociado a un país o región y está compuesto de dos letras.

NotaNota

Cuando un nombre de referencia cultural se pasa a un constructor de clase o un método como CreateSpecificCulture o CultureInfo, el caso no es significativo.

El formato del nombre de referencia cultural es languagecode2>país o regioncode2, donde es el código de idioma languagecode2 de la dos- letra y país o regioncode2 es el código de subreferencia cultural de la dos- letra. Algunos ejemplos son ja-JP para japonés (Japón) y en-US para inglés (Estados Unidos). En los casos en que no hay disponible un código de idioma de dos letras, se utiliza un código de tres letras basado en el estándar ISO 639-2.

Conviene tener en cuenta que algunos nombres de referencia cultural también especifican un alfabeto de ISO 15924. Por ejemplo, Cyrl especifica el script cirílico y Latn especifica el alfabeto latino. Un nombre de referencia cultural que incluye un script utiliza el modelo languagecode2-scripttag-país o regioncode2. Un ejemplo de este tipo de nombre de referencia cultural es uz-Cyrl-UZ para uzbeco (cirílico, Uzbekistán). En los sistemas operativos Windows anteriores de Windows Vista, un nombre de referencia cultural que incluye un script utiliza el modelo languagecode2-país o regioncode2-scripttag, por ejemplo, uz-UZ-Cyrl para el Uzbek (cirílico, Uzbekistán).

Una referencia cultural neutra se especifica únicamente mediante un código de idioma formado por dos letras minúsculas. Por ejemplo, fr especifica la referencia cultural neutra para francés, y de especifica la referencia cultural neutra para alemán.

NotaNota

Hay dos referencias culturales que contradicen esta regla. Las referencias culturales "zh-Hans" (chino simplificado) y "zh-Hant" (chino tradicional) son referencias culturales neutras. Los nombres de referencia cultural representan el estándar actual y se deben utilizar a menos que tenga una razón para utilizar el más antiguos zh-CHS y zh-CHT names.

Un identificador de referencia cultural es una abreviatura numérica internacional estándar y tiene los componentes necesarios para identificar una de las referencias culturales instaladas singularmente. La aplicación puede utilizar identificadores de referencia cultural predefinidos o definir identificadores personalizados.

Esta y otras clases en el espacio de nombres System.Globalization utilizan determinados nombres e identificadores de las referencias culturales predefinidas. Información detallada sobre la referencia cultural aparece en National Language Support (NLS) API Reference en el Centro de desarrolladores Go Global.

Recuerde que los nombres de la referencia cultural e identificadores representan sólo un subconjunto de referencias culturales que se pueden buscar en un equipo determinado. Las versiones o los service pack de Windows pueden cambiar las referencias culturales disponibles. Las aplicaciones agregan referencias culturales personalizadas mediante la clase CultureAndRegionInfoBuilder. Los usuarios agregan sus propias referencias culturales personalizadas mediante la herramienta Microsoft Locale Builder. Microsoft Locale Builder está escrito en código administrado mediante la clase CultureAndRegionInfoBuilder.

Algunos nombres están estrechamente asociados a una referencia cultural, en particular los nombres asociados con los miembros de clase siguientes:

Invariable, neutro, y referencias culturales específicas

Las referencias culturales se han dividido en tres grupos: referencias culturales de todos los idiomas, referencias culturales neutras y referencias culturales específicas.

La referencia cultural de todos los idiomas no tiene en cuenta la referencia cultural. La aplicación especifica la referencia cultural de todos los idiomas por nombre mediante una cadena vacía ("") o por su identificador. InvariantCulture define una instancia de la referencia cultural de todos los idiomas. Se encuentra asociada al idioma inglés pero a ningún país o región. Se puede utilizar en casi todos los métodos del espacio de nombres de Globalization que requieran una referencia cultural.

Una referencia cultural neutra es aquélla asociada a un idioma pero no a un país o región. Una referencia cultural específica es la que está asociada a un idioma y a un país o región. Por ejemplo, fr es la referencia cultural neutra para francés y fr-FR es el nombre del francés especifico. Tenga en cuenta que chino (simplificado) y chino (tradicional) son referencias culturales neutras.

No se recomienda la creación de instancias de una clase CompareInfo para una referencia cultural neutra porque los datos que contiene son arbitrarios. Para mostrar y ordenar los datos, especifique el lenguaje y región. Además, la propiedad Name de un objeto CompareInfo creada para una referencia cultural neutra devuelve sólo el país y no incluye la región.

Las referencias culturales definidas tienen una jerarquía en que la referencia principal de una referencia cultural específica es una referencia cultural neutra, y la referencia cultural principal de una neutra es la referencia cultural de todos los idiomas. La propiedad Parent contiene la referencia cultural neutra asociada a una referencia cultural específica. Las referencias culturales personalizadas deben establecer la propiedad Parent con arreglo a este modelo.

Si los recursos de una referencia cultural concreta no están disponibles en el sistema operativo, se usan los recursos de la referencia cultural neutra asociada. Si los recursos de la referencia cultural neutra no están disponibles, se usan los recursos incrustados en el ensamblado principal. Para obtener más información sobre el proceso de reserva de recursos, vea Empaquetar e implementar recursos en aplicaciones de escritorio.

La lista de referencias culturales de la API de Windows es ligeramente diferente de la lista de referencias culturales que admite .NET Framework. Si es necesaria la interoperabilidad con Windows (por ejemplo, mediante el mecanismo p/invoke), la aplicación debe usar una referencia cultural específica definida en el sistema operativo. El uso de referencias culturales específicas garantiza la coherencia con la configuración regional de Windows equivalente, que se establece mediante un identificador de configuración regional que es el mismo que el de la propiedad LCID.

DateTimeFormatInfo o NumberFormatInfo sólo se pueden crear para la referencia cultural invariable o para referencias culturales específicas, pero no para referencias culturales neutras.

Si DateTimeFormatInfo.Calendar es TaiwanCalendar pero Thread.CurrentCulture no se establece en zh- TW, a continuación DateTimeFormatInfo.NativeCalendarName, a DateTimeFormatInfo.GetEraName, y retorno de DateTimeFormatInfo.GetAbbreviatedEraName una cadena vacía ("").

Las referencias culturales personalizadas

Además de las referencias culturales predefinidas admitidas por el sistema operativo Windows y .NET Framework, .NET Framework admite tres tipos de referencias culturales personalizadas:

  • Nuevas referencias culturales que complementan las referencias culturales disponibles en Windows o .NET Framework. Por ejemplo, una aplicación puede instalar un objeto de CultureInfo que representa FJ- FJ (o Fijan (Fiji)) referencia cultural en un sistema.

  • Las referencias culturales de reemplazo cuyas propiedades son diferentes de las propiedades de las referencias culturales estándar admitidos por Windows y .NET Framework.

  • Las referencias culturales estándar con el usuario overrides. El usuario puede utilizar la aplicación de Región y lenguaje en Panel de control para personalizar los valores de propiedad de una referencia cultural existente.

NotaNota

Puede utilizar la clase de CultureAndRegionInfoBuilder para definir, guardar, y registrar las referencias culturales personalizadas que complemente o reemplazar las existentes. El método de CultureAndRegionInfoBuilder.Save crea un archivo de (LDML) de lenguaje de marcado de datos de la configuración regional que se puede usar para instalar una referencia cultural personalizada en sistemas objetivos.

Dado que .NET Framework admite referencias culturales personalizadas, debe tener en cuenta lo siguiente al trabajar con datos cultura- concretos:

  • Las referencias culturales personalizadas pueden tener valores que superen los intervalos de las referencias culturales predefinidas. Por ejemplo, algunas referencias culturales tienen nombres de mes largos, formatos de fecha o de hora inesperados u otros datos no habituales.

  • Cuando muestra datos cultura- específicos en la interfaz de usuario, debe respetar las personalizaciones del usuario; por ejemplo, el usuario puede desear un reloj de 24 horas o un formato de fecha de yyyyMMdd.

  • Recuerde que las referencias culturales personalizadas invalidan los valores predeterminados. Por consiguiente, no puede considerar que los datos de las referencias culturales sean estables. Los nombres, el número y los formatos de fecha, y las ortografías de país pueden cambiar en el futuro. Si desea serializar datos cultura- confidenciales como cadenas de fecha y hora que se pasarán a las funciones de análisis de fecha y hora, debe utilizar la referencia cultural invariable o cadena de formato personalizadoconcreto.

Los datos dinámicos de la referencia cultural

Excepto en la referencia cultural de todos los idiomas, los datos de la referencia cultural son dinámicos. Esto es así incluso en las referencias culturales predefinidas. Por ejemplo, los países o regiones adoptan nuevas monedas, cambian la ortografía de sus palabras o modifican su modelos de calendario preferidos y las definiciones de las referencias culturales varían para dar cuenta de ello. Las referencias culturales personalizadas pueden cambiar sin previo aviso y cualquier referencia cultural específica podría reemplazarse por una referencia cultural personalizada. Además, tal y como veremos después, un usuario individual podría reemplazar las preferencias culturales. Las aplicaciones siempre deben obtener los datos de la referencia cultural en tiempo de ejecución.

Nota de precauciónPrecaución

Al guardar datos, la aplicación debe utilizar la referencia cultural invariable, un formato binario, o un formato específico de la cultura- independiente. Los datos que se guardan conforme a los valores actuales asociados a una referencia cultural determinada, que no sea la referencia cultural de todos los idiomas, podrían ser ilegibles o variar su significado si cambia esa referencia cultural.

Referencia cultural y subprocesos

Cuando se inicia un subproceso de aplicación, la referencia cultural de la interfaz de usuario de la referencia cultural actual y de la actual está definida por la referencia cultural del sistema actual, y no por la referencia cultural del subproceso actual. En el siguiente ejemplo se ilustra la diferencia. Establece la referencia cultural actual y la referencia cultural de la interfaz de usuario de la ejecución de un subproceso de la aplicación a la referencia cultural francés (Francia) (franco- fr). Si la referencia cultural actual es ya franco- fr, en el ejemplo se establece la referencia cultural inglés (Estados Unidos) (en-us). Muestra tres números aleatorios mientras que los valores de divisa y crea un nuevo subproceso, que, a su vez, muestra tres más números aleatorios como valores de divisa. Pero como el resultado del ejemplo, los valores de divisa mostrados por el nuevo subproceso no reflejan las convenciones de formato de la referencia cultural francés (Francia), a diferencia de la salida del subproceso principal de la aplicación.


using System;
using System.Globalization;
using System.Threading;

public class Example
{
   static Random rnd = new Random();

   public static void Main()
   {
      if (Thread.CurrentThread.CurrentCulture.Name != "fr-FR") {
         // If current culture is not fr-FR, set culture to fr-FR.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      }
      else {
         // Set culture to en-US.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
      }
      ThreadProc();

      Thread worker = new Thread(ThreadProc);
      worker.Name = "WorkerThread";
      worker.Start();
   }

   private static void DisplayThreadInfo()
   {
      Console.WriteLine("\nCurrent Thread Name: '{0}'", 
                        Thread.CurrentThread.Name);
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name);                        
   }

   private static void DisplayValues()
   {
      // Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:");
      for (int ctr = 0; ctr <= 3; ctr++)
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10);                        
   }

   private static void ThreadProc()
   {
      DisplayThreadInfo();
      DisplayValues();
   }
}
// The example displays output similar to the following:
//       Current Thread Name: ''
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          8,11 €
//          1,48 €
//          8,99 €
//          9,04 €
//       
//       Current Thread Name: 'WorkerThread'
//       Current Thread Culture/UI Culture: en-US/en-US
//       Some currency values:
//          $6.72
//          $6.35
//          $2.90
//          $7.72


En las versiones de .NET Framework antes de .NET Framework 4.5, la manera más común de garantizar que el subproceso de aplicación principal comparten la misma referencia cultural con el resto de los subprocesos de trabajo es pasar el nombre de la referencia cultural aplicación- ancho o un objeto de CultureInfo que representa la referencia cultural aplicación- elevado a un delegado de System.Threading.ParameterizedThreadStart . El ejemplo siguiente se utiliza este enfoque para asegurarse de que los valores de divisa mostrados por dos subprocesos reflejan las convenciones de formato de la misma referencia cultural.


using System;
using System.Globalization;
using System.Threading;

public class Example
{
   static Random rnd = new Random();

   public static void Main()
   {
      if (Thread.CurrentThread.CurrentCulture.Name != "fr-FR") {
         // If current culture is not fr-FR, set culture to fr-FR.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      }   
      else {
         // Set culture to en-US.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
      }
      DisplayThreadInfo();
      DisplayValues();

       Thread worker = new Thread(Example.ThreadProc);
       worker.Name = "WorkerThread";
       worker.Start(Thread.CurrentThread.CurrentCulture);
   }

   private static void DisplayThreadInfo()
   {
      Console.WriteLine("\nCurrent Thread Name: '{0}'", 
                        Thread.CurrentThread.Name);
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name);                        
   }

   private static void DisplayValues()
   {
      // Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:");
      for (int ctr = 0; ctr <= 3; ctr++)
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10);                        
   }

   private static void ThreadProc(Object obj) 
   {
      Thread.CurrentThread.CurrentCulture = (CultureInfo) obj;
      Thread.CurrentThread.CurrentUICulture = (CultureInfo) obj;
      DisplayThreadInfo();
      DisplayValues();
   }
}
// The example displays output similar to the following:
//       Current Thread Name: ''
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          6,83 €
//          3,47 €
//          6,07 €
//          1,70 €
//       
//       Current Thread Name: 'WorkerThread'
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          9,54 €
//          9,50 €
//          0,58 €
//          6,91 €


Puede establecer la referencia cultural y la referencia cultural de la interfaz de usuario de subprocesos threadpool de la misma manera llamando al método de ThreadPool.QueueUserWorkItem(WaitCallback, Object) .

A partir de .NET Framework 4.5, puede establecer la referencia cultural y la referencia cultural de la interfaz de usuario de todos los subprocesos en un dominio de aplicación más directamente asignando un objeto de CultureInfo que representa esa referencia cultural a las propiedades de DefaultThreadCurrentCulture y de DefaultThreadCurrentUICulture . El ejemplo siguiente utiliza estas propiedades para garantizar que todos los subprocesos en el dominio de aplicación predeterminado comparten la misma referencia cultural.


using System;
using System.Globalization;
using System.Threading;

public class Example
{
   static Random rnd = new Random();

   public static void Main()
   {
      if (Thread.CurrentThread.CurrentCulture.Name != "fr-FR") {
         // If current culture is not fr-FR, set culture to fr-FR.
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      }   
      else {
         // Set culture to en-US.
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
      }
      ThreadProc();

      Thread worker = new Thread(Example.ThreadProc);
      worker.Name = "WorkerThread";
      worker.Start();
   }

   private static void DisplayThreadInfo()
   {
      Console.WriteLine("\nCurrent Thread Name: '{0}'", 
                        Thread.CurrentThread.Name);
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name);                        
   }

   private static void DisplayValues()
   {
      // Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:");
      for (int ctr = 0; ctr <= 3; ctr++)
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10);                        
   }

   private static void ThreadProc() 
   {
      DisplayThreadInfo();
      DisplayValues();
   }
}
// The example displays output similar to the following:
//       Current Thread Name: ''
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          6,83 €
//          3,47 €
//          6,07 €
//          1,70 €
//       
//       Current Thread Name: 'WorkerThread'
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          9,54 €
//          9,50 €
//          0,58 €
//          6,91 €


Nota de precauciónPrecaución

Aunque las propiedades de DefaultThreadCurrentCulture y de DefaultThreadCurrentUICulture son miembros estáticos, definen la referencia cultural predeterminada y la referencia cultural de la interfaz de usuario predeterminada solo para el dominio de aplicación que es actual en el momento estos valores de propiedad se establece. Para obtener más información, vea la siguiente sección, Referencia cultural y dominios de aplicación.

Al asignar valores a las propiedades de DefaultThreadCurrentCulture y de DefaultThreadCurrentUICulture , la referencia cultural y la referencia cultural de la interfaz de usuario de los subprocesos en el dominio de aplicación también cambian si ellos no se han asignado una referencia cultural. Sin embargo, estos subprocesos reflejan las nuevas configuraciones de referencia cultural solo mientras se ejecutan en el dominio de aplicación actual. Si estos subprocesos se ejecutan en otro dominio de aplicación, su referencia cultural se convierte en la referencia cultural predeterminada definida para ese dominio de aplicación. Como resultado, se recomienda que establezca siempre la referencia cultural del subproceso de aplicación principal, y no depender de las propiedades de DefaultThreadCurrentCulture y de DefaultThreadCurrentUICulture para cambiarlo.

Referencia cultural y dominios de aplicación

DefaultThreadCurrentCulture y DefaultThreadCurrentUICulture son propiedades estáticas que definan explícitamente una referencia cultural predeterminada solo para el dominio de aplicación que es actual cuando se establece o se recupera el valor de la propiedad. El ejemplo siguiente se establece la referencia cultural predeterminada y la referencia cultural de la interfaz de usuario predeterminada en el dominio de aplicación predeterminado en francés (Francia), y utilice la clase de AppDomainSetup y el delegado de AppDomainInitializer para establecer la referencia cultural predeterminada y la referencia cultural de la interfaz de usuario en un nuevo dominio de aplicación al ruso (Rusia). Un subproceso a continuación ejecuta dos métodos en cada dominio de aplicación. Observe que la referencia cultural y la referencia cultural de la interfaz de usuario del subproceso no se establecen; se derivan de la referencia cultural predeterminada de la referencia cultural de la interfaz de usuario de dominio de aplicación en el que se está ejecutando el subproceso. Observe también que las propiedades de DefaultThreadCurrentCulture y de DefaultThreadCurrentUICulture devuelven los valores predeterminados de CultureInfo de dominio de aplicación que es actual cuando se realiza la llamada al método.


using System;
using System.Globalization;
using System.Reflection;
using System.Threading;

public class Example
{
   public static void Main()
   {
      // Set the default culture and display the current date in the current application domain.
      Info info1 = new Info();
      SetAppDomainCultures("fr-FR");

      // Create a second application domain.
      AppDomainSetup setup = new AppDomainSetup();
      setup.AppDomainInitializer = SetAppDomainCultures;
      setup.AppDomainInitializerArguments = new string[] { "ru-RU" };
      AppDomain domain = AppDomain.CreateDomain("Domain2", null, setup);
      // Create an Info object in the new application domain.
      Info info2 = (Info) domain.CreateInstanceAndUnwrap(typeof(Example).Assembly.FullName, 
                                                         "Info"); 

      // Execute methods in the two application domains.
      info2.DisplayDate();
      info2.DisplayCultures();

      info1.DisplayDate();
      info1.DisplayCultures();            
   }

   public static void SetAppDomainCultures(string[] names)
   {
      SetAppDomainCultures(names[0]);
   }

   public static void SetAppDomainCultures(string name)
   {
       try {
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture(name);
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture(name);
      }
      // If an exception occurs, we'll just fall back to the system default.
      catch (CultureNotFoundException) {
         return;
      }   
      catch (ArgumentException) {
         return;
      } 
   }
}

public class Info : MarshalByRefObject
{
   public void DisplayDate()
   {
      Console.WriteLine("Today is {0:D}", DateTime.Now);
   }

   public void DisplayCultures()
   {
      Console.WriteLine("Application domain is {0}", AppDomain.CurrentDomain.Id);
      Console.WriteLine("Default Culture: {0}", CultureInfo.DefaultThreadCurrentCulture);
      Console.WriteLine("Default UI Culture: {0}", CultureInfo.DefaultThreadCurrentUICulture);
   }
}
// The example displays the following output:
//       Today is 14 октября 2011 г.
//       Application domain is 2
//       Default Culture: ru-RU
//       Default UI Culture: ru-RU
//       Today is vendredi 14 octobre 2011
//       Application domain is 1
//       Default Culture: fr-FR
//       Default UI Culture: fr-FR


Para obtener más información sobre las referencias culturales y dominios de aplicación, vea Dominios de aplicación y subprocesos.

Serialización de objetos CultureInfo

Cuando se serializa un objeto CultureInfo, lo que realmente se guarda es Name y UseUserOverride. La serialización sólo se puede anular correctamente en un entorno en el que Name tenga el mismo significado. En los tres ejemplos siguientes se muestra por qué no siempre ocurre esto.

  • Si el valor de propiedad CultureTypes es CultureTypes.WindowsOnlyCultures, y si esa referencia cultural primero se introdujo en Windows Vista o una versión posterior del sistema operativo Windows, no es posible deserializarlo en Windows XP. De igual forma, si la referencia cultural se incluyó primero en Windows XP Service Pack 2, no es posible anular su serialización en un sistema Windows XP en el que no se haya instalado la referencia cultural.

  • Si el valor de CultureTypes es CultureTypes.UserCustomCulture, y el equipo en el que se deserializa no tiene esta referencia cultural personalizada de usuario instalada, no es posible deserializarla.

  • Si el valor de CultureTypes es CultureTypes.ReplacementCultures, y el equipo en el que se deserializa no tiene esta referencia cultural de reemplazo, deserializa el mismo nombre, pero a no las mismas características. Por ejemplo, si en-us es una referencia cultural de reemplazo en el equipo A, pero no en el equipo b, y si un objeto de CultureInfo que hace referencia a esta referencia cultural se serializa en el equipo A y se deserializa en el equipo b, a ninguna de las características de la referencia cultural se transmiten. La referencia cultural se deserializará correctamente, pero con un significado distinto.

El Panel de control reemplaza

El usuario puede optar por invalidar algunos de los valores asociados a la referencia cultural actual de Windows a través de de la configuración referente a las opciones de configuración regional y de idioma del Panel de control. Por ejemplo, el usuario puede mostrar la fecha en un formato diferente o utilizar una moneda diferente a la predeterminada para la referencia cultural. En general, las aplicaciones deben respetar estas invalidaciones del usuario.

Si UseUserOverride es true y la referencia cultural especificada coincide con la referencia cultural actual de Windows, CultureInfo utiliza estos nuevos valores, incluida la configuración del usuario para las propiedades de la instancia de DateTimeFormatInfo devuelta por la propiedad DateTimeFormat, y las propiedades de la instancia de NumberFormatInfo devueltas por la propiedad NumberFormat. Si la configuración del usuario no es compatible con la referencia cultural asociada a CultureInfo (por ejemplo, si el calendario seleccionado no es uno de OptionalCalendars), no se definen los resultados de los métodos y los valores de las propiedades.

Criterios de ordenación alternativos

Algunas referencias culturales admiten más de un criterio de ordenación. Por ejemplo:

  • La referencia cultural en español (España) tiene dos criterios de ordenación: el criterio de ordenación internacional predeterminado, y el criterio de ordenación tradicional. Cuando crea instancias de un objeto de CultureInfo con el nombre de referencia cultural es- ES, se utiliza el criterio de ordenación internacional. Cuando crea instancias de un objeto de CultureInfo con el nombre de referencia cultural es- ES - tradnl, se usa el criterio de ordenación tradicional.

  • El zh- NC (chino (Simplificado, PRC)) la referencia cultural admite dos criterios de ordenación: por pronunciación (valor predeterminado) y por número de trazos. Cuando crea instancias de un objeto de CultureInfo con el nombre de referencia cultural zh- NC, se usa el criterio de ordenación predeterminado. Cuando crea instancias de un objeto de CultureInfo con un controlador de 0x00020804, las cadenas se ordenan por número de trazos.

En la tabla siguiente se enumeran las referencias culturales que admiten criterios de ordenación alternativos, y los identificadores para los criterios de ordenación predeterminados y alternativos.

Nombre de referencia cultural

Referencia cultural

Nombre e identificador de ordenación predeterminada

Nombre e identificador de ordenación alternativa

es-ES

Español (España)

Internacional: 0x00000C0A

Tradicional: 0x0000040A

zh-TW

Chino (Taiwán)

Número de trazos: 0x00000404

Bopomofo: 0x00030404

zh-CN

Chino (RPC)

Pronunciación: 0x00000804

Número de trazos: 0x00020804

zh-HK

Chino (Zona administrativa especial de Hong Kong)

Número de trazos: 0x00000c04

Número de trazos: 0x00020c04

zh-SG

Chino (Singapur)

Pronunciación: 0x00001004

Número de trazos: 0x00021004

zh-MO

Chino (Macao RAE)

Pronunciación: 0x00001404

Número de trazos: 0x00021404

ja-JP

Japonés (Japón)

Predeterminada: 0x00000411

Unicode: 0x00010411

ko-KR

Coreano (Corea)

Predeterminada: 0x00000412

Xwansung coreano - Unicode: 0x00010412

de-DE

Alemán (Alemania)

Diccionario: 0x00000407

Ordenación de libreta de teléfonos DIN: 0x00010407

hu-HU

Húngaro (Hungría)

Predeterminada: 0x0000040e

Ordenación técnica: 0x0001040e

ka-GE

Georgiano (Georgia)

Tradicional: 0x00000437

Alfabetización internacional: 0x00010437

El ejemplo siguiente se muestra cómo crear un objeto de CultureInfo para español (España) con ordenación internacional y otro objeto de CultureInfo con ordenación tradicional.


using System;
using System.Collections;
using System.Globalization;

public class SamplesCultureInfo
{

   public static void Main()
   {

      // Creates and initializes the CultureInfo which uses the international sort.
      CultureInfo myCIintl = new CultureInfo("es-ES", false);

      // Creates and initializes the CultureInfo which uses the traditional sort.
      CultureInfo myCItrad = new CultureInfo(0x040A, false);

      // Displays the properties of each culture.
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "PROPERTY", "INTERNATIONAL", "TRADITIONAL");
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "CompareInfo", myCIintl.CompareInfo, myCItrad.CompareInfo);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "DisplayName", myCIintl.DisplayName, myCItrad.DisplayName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "EnglishName", myCIintl.EnglishName, myCItrad.EnglishName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "IsNeutralCulture", myCIintl.IsNeutralCulture, myCItrad.IsNeutralCulture);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "IsReadOnly", myCIintl.IsReadOnly, myCItrad.IsReadOnly);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "LCID", myCIintl.LCID, myCItrad.LCID);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "Name", myCIintl.Name, myCItrad.Name);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "NativeName", myCIintl.NativeName, myCItrad.NativeName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "Parent", myCIintl.Parent, myCItrad.Parent);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "TextInfo", myCIintl.TextInfo, myCItrad.TextInfo);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "ThreeLetterISOLanguageName", myCIintl.ThreeLetterISOLanguageName, myCItrad.ThreeLetterISOLanguageName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "ThreeLetterWindowsLanguageName", myCIintl.ThreeLetterWindowsLanguageName, myCItrad.ThreeLetterWindowsLanguageName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "TwoLetterISOLanguageName", myCIintl.TwoLetterISOLanguageName, myCItrad.TwoLetterISOLanguageName);
      Console.WriteLine();

      // Compare two strings using myCIintl.
      Console.WriteLine("Comparing \"llegar\" and \"lugar\"");
      Console.WriteLine("   With myCIintl.CompareInfo.Compare: {0}", myCIintl.CompareInfo.Compare("llegar", "lugar"));
      Console.WriteLine("   With myCItrad.CompareInfo.Compare: {0}", myCItrad.CompareInfo.Compare("llegar", "lugar"));

   }

}

/*
This code produces the following output.

PROPERTY                       INTERNATIONAL                                  TRADITIONAL              
CompareInfo                    CompareInfo - es-ES                            CompareInfo - es-ES_tradnl
DisplayName                    Spanish (Spain)                                Spanish (Spain)          
EnglishName                    Spanish (Spain, International Sort)            Spanish (Spain, Traditional Sort)
IsNeutralCulture               False                                          False                    
IsReadOnly                     False                                          False                    
LCID                           3082                                           1034                     
Name                           es-ES                                          es-ES                    
NativeName                     Español (España, alfabetización internacional) Español (España, alfabetización tradicional)
Parent                         es                                             es                       
TextInfo                       TextInfo - es-ES                               TextInfo - es-ES_tradnl  
ThreeLetterISOLanguageName     spa                                            spa                      
ThreeLetterWindowsLanguageName ESN                                            ESP                      
TwoLetterISOLanguageName       es                                             es                       

Comparing "llegar" and "lugar"
   With myCIintl.CompareInfo.Compare: -1
   With myCItrad.CompareInfo.Compare: 1

*/


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft