Introdução

 

A importância dos sistemas multi-idiomas é algo que não precisa ser discutido, hoje em dia cada vez mais existem pessoas de todas as partes do globo trabalhando em qualquer parte, fico feliz em mostrar que o .Net Framework tem diversas facilidades para auxiliar na solução desta necessidade.

Em diversos projetos que eu participei foi importante ter tradução dos softwares para idiomas como espanhol, inglês ou alemão, porém estas traduções tanto para desenvolvimento de aplicações Windows Forms quanto para aplicações Web Forms, é facilitada com alguns conceitos e mecanismos básicos suportados pelo CLR. Os principais namespaces que iremos utilizar são System.Resources e System.Globalization.

 

Arquivos de Resources

 

Para conceituar os resource files, são arquivos que podem conter em sua estrutura imagens, informações como strings, inteiros e etc, ou seja, qualquer tipo de informação que poderá ser utilizada durante a execução do sistema.

 

Voltando aos aplicativos que atendem diversos idiomas, o suporte no .NET Framework sobre o multi-idiomas em geral é fácil, normalmente criamos arquivos de Resources para cada idioma que a aplicação irá suportar. Algumas vezes será apenas um arquivo para cada Web Forms ou Windows Forms, ou claro poderá ser um arquivo para cada idioma para atender todo o projeto.

 

Aplicando na prática (cenário)

 

Para ilustrar melhor o uso dos resources para fazer a tradução dos nossos forms, vamos criar um pequeno cenário.

Imagine que estamos trabalhando em uma grande companhia que possuí uma filial na Argentina e outra filial nos Estados Unidos da América, dentro deste cenário teremos colaboradores que não são nativos no idioma português e poderão ter dificuldades em aprender um idioma tão complexo quanto o nosso.

Seria interessante para esta companhia ter um software que disponibilizasse para os seus colaboradores a opção de idiomas em português, inglês ou espanhol.

Agora utilizando o Visual Studio 2008 vamos criar um pequeno aplicativo Web que possuí a opção de tradução dos componentes. Esta opção poderia estar relacionada ao perfil de usuário no cadastro dos colaboradores, porém para não perdermos o foco do artigo vamos o nosso aplicativo irá pegar o idioma padrão das configurações do browser.

 

Criando o aplicativo

Agora utilizando o Visual Studio 2008 vamos criar um pequeno aplicativo Web que possuí a opção de tradução dos componentes.

         Após criar um novo projeto, utilize o arquivo default.aspx para criar o nosso aplicativo, desenhe um form como a tela como a que segue na imagem abaixo:



Figura 1 - Exemplo da aplicação

 

         Ao montar a página acima utilize a nomenclatura dos objetos referenciados na tabela abaixo:


Tabela 1 - Propriedade dos objetos

 

Agora vamos adicionar um arquivo de recursos local para criar a referencia de cada idioma aos objetos que estão no Web Form. Para incluir o arquivo de recursos basta clicarmos no menu Tool e Generate Local Resource.



Figura 2 - Criando arquivo de resource

 

         Por padrão o Visual Studio adiciona na janela Solution Explorer uma pasta chamada App_LocalResources e dentro um arquivo nomeado Default.aspx.resx este arquivo irá conter o nome de todos os objetos e o seu respectivo valor para o campo Text.


Figura 3 - Os Resources

 

         Porém para trabalharmos com um novo idioma teremos que adicionar um novo arquivo de Resource para cada idioma, se seguirmos os mesmos passos para adicionar o Local Resource File não irá funcionar, pois o Visual Studio irá criticar perguntado se deseja sobrescrever o arquivo existente, por este motivo vamos copiar e colar o mesmo arquivo dentro da mesma pasta renomeado para Default.aspx.en-US.resx e o outro arquivo para Default.aspx.es-AR.resx. Para conhecer a lista de idiomas suportados e os prefixos a serem utilizados dentro da aplicação acesse o site MSDN.

         E quanto à tradução? As traduções estão por nossa conta basta abrir os arquivos e alterar os valores correspondentes a tradução de cada um dos objetos.

É importante perceber que temos um ganho nesse trabalho, em algumas empresas mesmo que o idioma seja o mesmo existe a necessidade de ter nomes diferentes. Vamos a tradução, abaixo segue as imagens da tradução em português, inglês e na seqüência em espanhol.


Figura 5 - Resources em Inglês [US]


Figura 6 - Resources em Espanhol - [AR]

 

Após traduzir, basta configurar para a nossa aplicação rodar.

 

Fazendo funcionar

Antes de fazer o “milagre da tradução” vamos rodar a nossa aplicação no Windows em Português teremos um retorno parecido com a imagem abaixo.


Figura 7 - O aplicativo em Português

 

Para rodarmos a nossa aplicação no idioma inglês americano vamos ter que alterar as permissões do browser, para isso o primeiro passo é acessar o menu Opções da Internet do site.


Figura 8 - Opções da Internet

 

Na tela que irá abrir vamos acessar a guia Geral e a opção Idiomas.


Figura 9 – Idiomas

 

Na tela de idiomas que irá aparecer (se estiver utilizando o Windows em português) irá aparecer uma tela como a que segue.


Figura 10 - Preferência de Idioma

 

Nesta tela teremos a oportunidade de adicionar o idioma de preferência, para isso basta acionar o botão Adicionar e escolher o idioma Inglês (Estados Unidos) – [en-US] agora basta selecionar o idioma Inglês como o primeiro da sua lista e confirmar.


Figura 11 - Selecionando o idioma Inglês [US]


Figura 12 - Definindo com o padrão

 

Após fazer as devidas confirmações basta recarregar a página, pressionando a tecla F5 que a “magia” está feita.


Figura 13 - Aplicação atualizada

 

         E para o idioma Espanhol da Argentina vamos utilizar o mesmo processo, porém o idioma a ser selecionado é Espanhol (Argentina) [es-AR].


Figura 14 - Idioma Espanhol [AR]

 

Conclusão

         Esse artigo demonstra como é fácil criar aplicativos multi-idiomas com o .NET Framework utilizando recursos básicos e poucos comandos. Existem diversos recursos que não abordei neste artigo, mas vale mencionar para futuras pesquisas como, por exemplo, o uso de Threads com CurrentCulture e CurrentUICulture.