Visual Studio.NET
Suporte a Internacionalização
Por Mauro Sant'Anna (santanna@mas.com.br). Mauro é um "MSDN Regional Director", consultor e instrutor da MAS Informática (www.mas.com.br), tendo ministrado treinamentos na arquitetura .NET desde outubro de 2000.
Quem desenvolve programas para o mercado americano normalmente não precisa preocupar-se muito com questões como formatações de datas e números. Já quem desenvolve para outros mercados, muitas vezes se vê a volta com problemas relacionados ao suporte de outros idiomas e culturas.
Este suporte é tradicionalmente disponibilizado pelas "bibliotecas de runtime" dos compiladores, com alguma integração com o suporte do próprio Windows. Esta integração às vezes deixa a desejar.
Em todas as linguagens de programação disponíveis para a arquitetura Microsoft .NET®, as questões relacionadas à internacionalização não são mais ligadas à nenhum compilador e sim à biblioteca .NET Framework®. Isto é muito bom, pois a .NET Framework possui um excelente suporte de internacionalização. A Microsoft® é uma empresa que sofre na própria pele este tipo de problema, pois comercializa seus produtos no mundo todo.
Neste artigo não pretendo cobrir todos os problemas que envolvem adaptar um software a outros idiomas, mas me concentrarei em permitir facilmente o uso de um outro idioma com o Visual Studio .NET Beta 2®.
Namespace Globalization
As principais rotinas de internacionalização encontram-se concentradas no namespace "Globalization". Este "namespace" inclui rotinas dos seguintes tipos:
Formatação de datas, números e valores monetários;
Rotinas de calendário (Juliano, gregoriano, japonês, árabe etc) e conversões entre os diferentes calendários;
Conjunto de caracteres utilizados, conversões (maiúsculas e minúsculas), ordenações e conversões entre os diferentes conjuntos de caracteres;
Constantes com nomes de dias da semana, meses, etc;
Informações sobre horário de verão.
O .NET Framework define uma Culture (cultura) como um conjunto de características associadas a uma cultura. Uma cultura não é exatamente nem um país nem um idioma, pois tanto podem existir vários países que usam a mesma cultura, como um país que tenha várias culturas. O padrão de culturas usado no Microsoft .NET segue a recomendação Internet "RFC 1766", para a formação dos identificadores, disponível em http://www.ietf.org/rfc/rfc1766.txt?number=1766.
A quantidade total de culturas no Visual Studio Beta 2 é de aproximadamente 230. A lista completa pode ser obtida no auxílio on-line da classe CultureInfo. Veja uma lista parcial das culturas disponíveis:
Identificador como string |
Identificador numérico |
Idioma/Região |
---|---|---|
iv |
0x007F |
invariant culture |
af |
0x0036 |
Afrikaans |
af-ZA |
0x0436 |
Afrikaans - South Africa |
sq |
0x001C |
Albanian |
sq-AL |
0x041C |
Albanian - Albania |
ar |
0x0001 |
Arabic |
ar-DZ |
0x1401 |
Arabic - Algeria |
(muitas retiradas) |
||
en |
0x0009 |
English |
en-AU |
0x0C09 |
English - Australia |
en-BZ |
0x2809 |
English - Belize |
en-CA |
0x1009 |
English - Canada |
en-CB |
0x2409 |
English - Caribbean |
en-IE |
0x1809 |
English - Ireland |
en-JM |
0x2009 |
English - Jamaica |
en-NZ |
0x1409 |
English - New Zealand |
en-PH |
0x3409 |
English - Philippines |
en-ZA |
0x1C09 |
English - South Africa |
en-TT |
0x2C09 |
English - Trinidad and Tobago |
en-GB |
0x0809 |
English - United Kingdom |
en-US |
0x0409 |
English - United States |
en-ZW |
0x3009 |
English - Zimbabwe |
(muitas retiradas) |
||
Pt |
0x0016 |
Portuguese |
pt-BR |
0x0416 |
Portuguese - Brazil |
pt-PT |
0x0816 |
Portuguese - Portugal |
(muitas retiradas) |
||
es |
0x000A |
Spanish |
es-AR |
0x2C0A |
Spanish - Argentina |
es-BO |
0x400A |
Spanish - Bolivia |
es-CL |
0x340A |
Spanish - Chile |
es-CO |
0x240A |
Spanish - Colombia |
es-CR |
0x140A |
Spanish - Costa Rica |
es-DO |
0x1C0A |
Spanish - Dominican Republic |
es-EC |
0x300A |
Spanish - Ecuador |
es-SV |
0x440A |
Spanish - El Salvador |
es-GT |
0x100A |
Spanish - Guatemala |
es-HN |
0x480A |
Spanish - Honduras |
es-MX |
0x080A |
Spanish - Mexico |
es-NI |
0x4C0A |
Spanish - Nicaragua |
es-PA |
0x180A |
Spanish - Panama |
es-PY |
0x3C0A |
Spanish - Paraguay |
es-PE |
0x280A |
Spanish - Peru |
es-PR |
0x500A |
Spanish - Puerto Rico |
es-ES |
0x0C0A |
Spanish - Spain |
es-UY |
0x380A |
Spanish - Uruguay |
es-VE |
0x200A |
Spanish – Venezuela |
(muitas retiradas) |
||
Uz |
0x0043 |
Uzbek |
Cy-uz-UZ |
0x0843 |
Uzbek (Cyrillic) - Uzbekistan |
Lt-uz-UZ |
0x0443 |
Uzbek (Latin) - Uzbekistan |
vi |
0x002A |
Vietnamese |
vi-VN |
0x042A |
Vietnamese - Viet Nam |
Note que a Culture pode ser identificada tanto por um número como por uma string. Por exemplo, "Português do Brasil" é "0416" hexadecimal ou "pt-BR". Este valor é importante se desejarmos alterar a cultura, conforme mostrado a seguir.
Existe também uma Culture chamada InvariantCulture que nunca muda. A InvariantCulture é a mais indicada para armazenar dados internos dos programas, "arquivos de log" e informações que devem ser sempre as mesmas independente do idioma.
Alterando a Cultura
A princípio a cultura corrente é obtida dos "Ajustes regionais" do Windows. Existem várias maneiras de alterar a cultura usada nas conversões. Uma delas é alterar a cultura da thread principal com o seguinte comando em C#:
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt-BR");
O comando acima deve ser colocado uma vez, logo no início do programa ou em um evento chamado na carga inicial como "Load" do formulário em aplicativos com janelas:
private void Form1_Load(object sender, System.EventArgs e) { System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt-BR"); }
Aplicativos ASP.NET
Alterar a cultura em aplicativos ASP.NET (Web) é ainda mais fácil. Basta colocar uma linha identificando a cultura na seção "globalization" do arquivo web.Config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="pt-BR" />
Veja a saída de uma página com componente de calendário sem ajuste de cultura no Windows em inglês:
Veja agora com a cultura alterada para "pt-BR". Não é necessário nem reiniciar o aplicativo para a modificação ser aceita; basta pedir para recarregar a página:
A cultura usada é determinada para cada "aplicativo Web" e cada aplicativo pode ter uma cultura diferente sem que seja necessário mudar ajustes do próprio servidor.
Conclusão
A arquitetura Microsoft .NET tem um excelente suporte para internacionalização, tornando muito simples a tarefa de suportar diferentes culturas e idiomas.
Faça o download deste documento:
· Suporte a Internacionalização
formato Word, compactado - 70 Kb