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
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.