Cuando me refiero al término Cultura dentro de una aplicación, me refiero entre otras cosas al sistema de escritura, formato de separación decimal, símbolo de la moneda, formato de las fechas; en fin, todo aquello que es propio de un idioma y que no es respetado, necesariamente, por los demás.
En esta oportunidad veremos, a partir de una aplicación Consola, como podemos acceder a la configuración regional y luego definir una para poder aplicarla dentro de nuestra aplicación, sin tener la necesidad de cambiar la de nuestro sistema operativo.
Comenzaremos diciendo que para poder utilizar las clases que indicaré, debes de asegurarte de tener referencia al siguiente namespace:
using System.Globalization;
Utilizar este namespace nos permite acceder, entre otras cosas, a la clase CultureInfo. Esta clase es la que nos va a permitir trabajar con la cultura actual y cambiarla dentro de nuestra aplicación.
Veamos como podemos acceder a la cultura actual de nuestra aplicación obtener sus principales características:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Namespace
using System.Globalization;
namespace CultureInfoConsoleApplication
{
class Program
{
static void Main(string[] args)
{
//Obtenemos la Cultura Actual
CultureInfo culturaactual = CultureInfo.CurrentCulture;
//CultureInfo culturaactual=CultureInfo.CurrentCulture;
//INFORMACION
Console.WriteLine("CompareInfo: {0}", culturaactual.CompareInfo);
Console.WriteLine("DisplayName : {0}", culturaactual.DisplayName);
Console.WriteLine("EnglishName: {0}", culturaactual.EnglishName);
Console.WriteLine("IsNeutralCulture: {0}", culturaactual.IsNeutralCulture);
Console.WriteLine("IsReadOnly: {0}", culturaactual.IsReadOnly);
Console.WriteLine("LCID: {0}", culturaactual.LCID);
Console.WriteLine("Name: {0}", culturaactual.Name);
Console.WriteLine("NativeName: {0}", culturaactual.NativeName);
Console.WriteLine("Parent: {0}", culturaactual.Parent);
Console.WriteLine("TextInfo: {0}", culturaactual.TextInfo);
//MONEDA
Console.WriteLine("CurrencySymbol: {0}", culturaactual.NumberFormat.CurrencySymbol);
Console.WriteLine("CurrencyDecimalSeparator: {0}", culturaactual.NumberFormat.CurrencyDecimalSeparator);
Console.WriteLine("CurrencyDecimalDigits: {0}", culturaactual.NumberFormat.CurrencyDecimalDigits);
//FECHA y HORA
Console.WriteLine("ShortDatePattern: {0}", culturaactual.DateTimeFormat.ShortDatePattern);
Console.WriteLine("DateSeparator: {0}", culturaactual.DateTimeFormat.DateSeparator);
Console.WriteLine("ShortTimePattern: {0}", culturaactual.DateTimeFormat.ShortTimePattern);
Console.WriteLine("TimeSeparator: {0}", culturaactual.DateTimeFormat.TimeSeparator);
Console.WriteLine("\nDias de la semana : ");
foreach (string s in culturaactual.DateTimeFormat.DayNames)
{ Console.Write("{0} " ,s.ToUpper() ); }
Console.WriteLine("\nMeses del año : ");
//MESES DEL AÑO
foreach (string s in culturaactual.DateTimeFormat.MonthNames )
{ Console.Write("{0} ",s.ToUpper()); }
Console.ReadLine();
}
}
}
En el código anterior, como puedes apreciar, he obtenido la cultura de nuestra aplicación a través de: CultureInfo.CurrentCulture, y a partir de esto podemos acceder a la características propia de la cultura.
En mi caso, mi cultura por defecto es "en-US", pero esto no es impedimento para que pueda cambiarla dentro de mi aplicación, mira el siguiente ejemplo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Namespace
using System.Globalization;
namespace CultureInfoConsoleApplication
{
class Program
{
static void Main(string[] args)
{
//Definimos una nueva cultura
CultureInfo nuevacultura = new System.Globalization.CultureInfo("es-PE", false);
//Asignamos la nueva cultura a nuestra aplicación
System.Threading.Thread.CurrentThread.CurrentCulture = nuevacultura;
//Obtenemos la Cultura Actual
CultureInfo culturaactual = CultureInfo.CurrentCulture;
//CultureInfo culturaactual=CultureInfo.CurrentCulture;
//INFORMACION
Console.WriteLine("CompareInfo: {0}", culturaactual.CompareInfo);
Console.WriteLine("DisplayName : {0}", culturaactual.DisplayName);
Console.WriteLine("EnglishName: {0}", culturaactual.EnglishName);
Console.WriteLine("IsNeutralCulture: {0}", culturaactual.IsNeutralCulture);
Console.WriteLine("IsReadOnly: {0}", culturaactual.IsReadOnly);
Console.WriteLine("LCID: {0}", culturaactual.LCID);
Console.WriteLine("Name: {0}", culturaactual.Name);
Console.WriteLine("NativeName: {0}", culturaactual.NativeName);
Console.WriteLine("Parent: {0}", culturaactual.Parent);
Console.WriteLine("TextInfo: {0}", culturaactual.TextInfo);
//MONEDA
Console.WriteLine("CurrencySymbol: {0}", culturaactual.NumberFormat.CurrencySymbol);
Console.WriteLine("CurrencyDecimalSeparator: {0}", culturaactual.NumberFormat.CurrencyDecimalSeparator);
Console.WriteLine("CurrencyDecimalDigits: {0}", culturaactual.NumberFormat.CurrencyDecimalDigits);
//FECHA y HORA
Console.WriteLine("ShortDatePattern: {0}", culturaactual.DateTimeFormat.ShortDatePattern);
Console.WriteLine("DateSeparator: {0}", culturaactual.DateTimeFormat.DateSeparator);
Console.WriteLine("ShortTimePattern: {0}", culturaactual.DateTimeFormat.ShortTimePattern);
Console.WriteLine("TimeSeparator: {0}", culturaactual.DateTimeFormat.TimeSeparator);
Console.WriteLine("\nDias de la semana : ");
foreach (string s in culturaactual.DateTimeFormat.DayNames)
{ Console.Write("{0} " ,s.ToUpper() ); }
Console.WriteLine("\nMeses del año : ");
//MESES DEL AÑO
foreach (string s in culturaactual.DateTimeFormat.MonthNames )
{ Console.Write("{0} ",s.ToUpper()); }
Console.ReadLine();
}
}
}
En la primera línea, dentro de Program, puedes apreciar que estoy definiendo una cultura "es-PE", español Perú, la cual la asigno como cultura actual de mi aplicación.
Hacer esto, entre otras cosas, me permite acceder a los nombres del día y mes en el idioma correcto y poder hacer algo con estas posteriormente.
Como puedes apreciar, manejar las culturas en nuestras aplicaciones, es bastante sencillo, permitiéndonos personalizar nuestra aplicación dependiendo del idioma que desees ejecutar. En un próximo post veremos como hacerlo con una aplicación Windows.
Artículos similares
Autor: Victor Parasi
Siempre es difícil escribir sobre uno mismo, qué contar, o por donde empezar, suele ser todo un dilema al momento de presentarse. Aquí vamos. Les diré que soy peruano, Ingeniero por vocación, dedicado a la docencia y siempre en la búsqueda de programar cada vez mejor. Aunque a veces algo terco, sé que no todo en la vida es blanco o negro. Existe el Open Source, y lo respeto pero me llevo mejor con el .Net. Si me hablas de preferencias, te digo que C#, C++, una buena película, colores oscuros, escribir, leer e investigar. Para terminar les diré que amo muchísimo a una mujer espectacular y que es la dueña de mi corazón.

Excelente