sexta-feira, maio 01, 2009

Como dinamicamente traduzir uma Página Web em ASP.NET

Com a globalização, nossas aplicações, além de fazerem o usual impossível, devem estar preparadas para serem multi-linguagem. Isso significa, que um cliente deve acessar sua aplicação na língua familiar. Como muitos de nós, várias soluções a esses problemas foram dadas. Poderíamos, simplesmente, colocar diversos campos no banco de dados e consumir de acordo com a língua, mas sabemos que isso, além de uma solução não muito simples (leia MANUTENÇÃO) não é a mais agradável.

No ASP.NET, temos o conceito de LocalResources, que são arquivos em formatação XML, que armazenam valores-chaves. Dessa forma, podemos sem muito esforço, abstrair a interface de usuário dos textos exibidos. Isso nos dá flexibilidade linguistica, uma vez que podemos ter uma aplicação que suporte mais de uma língua, sem criar diretamente um único trecho de código.

Para exemplificar, criei uma aplicação com as seguintes itens:


Neste momento com a página renderizada, eu tenho duas formas de criar o LocalResource. A primeira forma, é criar o elemento XML , ou utilizando o notepad, ou a interface do VS para criação de LocalResources. A segunda é deixar que a IDE faça o trabalho. Naturalmente, preferi a segunda opção. Na página, vá em Tools -> Generate Local Resource.


Com isso, temos um dicionário de chave/valor. Neste momento, nossa página ASPX possui a referência a este arquivo XML. Agora, nossa aplicação web possui uma lingua-padrão porém independe da camada de interface para textos. Estamos no caminho certo. Para suportar mais de uma língua, copie o arquivo gerado e entitule-o como "(nomedaPagina).aspx.en-US.resx". Altere os valores que estão em português para o idioma.



Provavelmente, sua aplicação está em português. Isso deve-se a personalização do seu navegador. Para alterar o idioma de preferência, vá Languages e adicione a linguagem "English-en-US". E mude a posição de modo que o idioma inglês fique como prioridade. Salve, e execute a página novamente.



Agora, sua página está preparada para falar em outras línguas e dar boas vindas (mesmo que atrasadas) ao mundo globalizado.

Nenhum comentário: