Home :: Otros :: Productividad :: Manejando la Cultura en nuestras Aplicaciones
 
cultureinfo

Manejando la Cultura en nuestras Aplicaciones

jul 26, 2010 en Productividad por Victor Parasi

Sabias que puedes ejecutar tus aplicaciones en un idioma distinto al de tu Sistema Operativo, te dejo este post para que te enteres de que se trata.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

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.


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.


Comentarios (1)

Deja un comentario

   

copstone en Facebook

Otros artículos

Si estas cansado de que tu aplicación se “congele” cuando realizas una función determinada, aquí te dejo una solución para este problema.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Cansado de crear tus reportes en archivos de texto, o Crystal Report?. Pues es hora que hagas tus reportes en PDF haciendo uso de una librería muy poderosa y gratuita.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

.Net Framework nace sobre la base de la nueva generacion de software, en donde la tendencia es ofrecer y solictar servicios de forma que permita a distintas tecnologias interoperar entre sí. Ya no debemos pensar que nuestra aplicación es una isla en medio del océeano, sino buscar de interconectar diversos sistemas operativos, dispositivos y sobre todo fuentes de informacion. .Net Framework brinda a los desarrolladores las herramientas y tecnologías necesarias para desarrollar soluciones de negocios de manera rapida sin importar que involucren diversos medios y tecnologias, basándose en estándares de la industria de forma que llevar una adecuada interoperbilidad entre diversos medios.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Si en un post anterior vimos el beneficio de los punteros a funciones en C, debemos de conocer entoces que ofrece el lenguaje C# para cubrir este punto.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Quieres proteger la información que envías por la red o que guardas en tu base de datos? Este es el artículo correcto. Aquí te enseño como encriptar/desencriptar cadenas de texto con PHP.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Calendario

julio 2010
L M X J V S D
« may   nov »
 1234
567891011
12131415161718
19202122232425
262728293031  

Categorías

Comparte este artículo

  • Facebook
  • Google Bookmarks
  • Google Gmail
  • Twitter
  • Yahoo Mail
  • Hotmail
  • LinkedIn
  • Share
TIENES ALGO QUE PREGUNTAR? ESCRÍBENOS AQUÍ

Copyright © 2012 - Programando por diversion

Subir