TOC

This article has been localized into Portuguese by the community.

Trabalhando com Culture & Regions:

Introdução

Aquele tempo onde você fazia uma parte do software para ser executado em apenas alguns coputadores locais é coisa do passado. Graças à globalização e à Internet em particular, atualmente o software é geralmente usado em todo o mundo, em uma ampla varidade de dispositivos. Isso significa que seu código precisa lidar com muito casos específicos à cultura, por exemplo, como lidar com números e datas em outro formato diferente do que você imagina. Por exemplo, você sabia que em muitos países, um numero com frações (ex: 1.42) não usa um ponto mas sim uma vírgula para separar um decimal (ex: 1,42)? E você está ciente que em muitos países, o dia é escrito antes do mês em uma data, enquanto em outros o ano é escrito primeiro?

Lidar com isto pode ser uma confusão enorme, mas felizmente para nós, a .NET framework tem várias aulas que nos podem ajudar com estas situações. O mais comum usado é a aula de CultureInfo, que vamos discutir no próximo articulo, mas .NET também oferece aulas para trabalhar com regiões e calendários específico (tu sabes que nem o calendário é o mesmo em todo o mundo, certo?).

Este tópico é especialmente importante se estiveres a trabalhar numa aplicação que deve suportar várias linguagens, mas mesmo que não seja esse o caso, ainda tens que lidar com o facto de que ela possa ser usada num aparelho que não suporta as mesmas anotações para por exemplo: datas e números. Para ilustrar o quanto importanto isso é, considera este exemplo:

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);

Pense da variável inputName como algo que acabamos de receber do usuário da aplicação, (ex.: Algo digitado em um campo de texto num formulário web). Nós usamos o método double.Parse() para torná-lo em um float, mas nós passamos um segundo parâmetro do tipo CultureInfo - se nós não tivéssemos passado este parâmetro, as configurações do sistema não seriam usadas, o que poderia ser Inglês, Alemão ou algo completamente diferente. Agora preste atenção na saída:

1,425 is not the same as 1425

É verdade! O valor do nosso número acabou de aumentar centenas de vezes, porque na Alemanha, eles usam uma vírgula como separador decimal, enquanto que um ponto final atua com o separador das centenas. Isto também seria um grande problema em maior parte das aplicações, mas as boas notícias é que enquanto o exemplo ilustra o problema, também ilustra a solução: Tens de estar sempre a controlar a forma como recebes input e lidar com ele adequadamente, porque tal como podes ver, graças à classe CultureInfo, .NET é capaz de analisar um número (e datas também!) em qualquer um dos formatos possíveis, desde que lhe digas o que esperar.

Resumo

Lidar com diferenças culturais e regionais é talvez até mais importante quando estás a programar do que na vida real. Felizmente para nós, a .NET framework pode ser uma ajuda enorme em relação a isto, desde que saibas onde procurar. Nós próximos articulos, vamos discutir as ferramentas oferecidas pela .NET framework para lidar com estas diferenças.


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!