This article has been localized into Portuguese by the community.
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.