TOC

This article is currently in the process of being translated into Spanish (~99% done).

Working with Culture & Regions:

Introduction

El tiempo cuando usted creaba una pieza de software para ser ejecutada solamente en un par de computadoras locales se ha ido. Gracias a la globalización y al Internet en particular, el software hoy es generalmente usado por todo el mundo, en un rango muy amplio de dispositivos. Esto significa que su código necesita manejar muchos casos de cultura-específica, como lidiar con números y fechas en otro formato que el que espera. Por ejemplo, ¿Sabía que en muchos países, un número con fracción (por ejemplo 4.2) no usa un punto sino una coma como separador decimal (por ejemplo 0,42)? ¿Y se dá cuenta que en muchos países, el día es escrito antes que el mes en la fecha, mientras que en otros se escribe primero el año?

Lidiar con todo esto puede ser muy molesto, afortunadamente para nosotros, .NET Framework tiene varios clases que pueden ayudarnos a controlar esta situación. La más comúnmente usada es la clase CultureInfo , la cual discutiremos en el próximo artículo, además .NET ofrece clases con regionalismos y hasta calendarios específicos(¿sabes que inclusive el calendario no es el mismo alrededor del mundo, verdad?).

El asunto es especialmente importante si trabajas en una aplicación que deberá soportar múltiples lenguajes, pero aunque no fuera el caso, todavía tienes que lidiar con el hecho de que podría ser usada en un dispositivo que no use la misma notación, como fechas y números. Para ilustrar que tan importante es esto, considera este ejemplo:

string inputNumber = "1.425";
double usNumber = double.Parse(inputNumber, CultureInfo.GetCultureInfo("en-US"));
double germanNumber = double.Parse(inputNumber, CultureInfo.GetCultureInfo("de-DE"));
Console.WriteLine(usNumber.ToString() + " is not the same as " + germanNumber);

Piensa en la variable inputNumber como algo que recibimos del usuario de la aplicación, la cual fue capturada en un campo de texto de un formulario en la red. Usamos el método double.Parse() para convertirlo en un decimal, además pasamos en un segundo parámetro tipo de información cultural, si no lo hubiéramos hecho, la configuración del sistema hubiera usado, ya sea inglés, alemán o algo completamente diferente. Ahora fíjate en el resultado:

1,425 is not the same as 1425

¡Muy cierto! El valor de nuestro número es mil veces mayor, porque en Alemania, usan la coma como separador decimal, mientras que el punto funciona como separador de miles. Esto sería un problema mayúsculo en muchas aplicaciones, pero la buena nueva es que mientras el ejemplo ilustra el problema, también ilustra la solución: Siempre tendrás el control de como recibes las entradas y luego lidiar con eso en consecuencia, porque como puedes ver, gracias a la clase CultureInfo, .NET es capaz de analizar un número(¡y fechas también!) en cualquiera de sus posibles formatos, a medida que le digas que esperar.

Resumen

Lidiar con diferencias culturales y regionales es quizás más importante cuando se programa que en la vida real. Afortunadamente para nosotros, el marco de trabajo de .NET puede ser una gran ayuda en estos aspectos, siempre y cuando sepas donde buscar. En el siguiente par de artículos, discutiremos la herramienta brindada por el marco de trabajo de .NET para lidiar con esas diferencias.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!