ASP.NET MVC – Criando uma aplicação multi-idiomas (pt-BR)
Quando “publicamos” uma aplicação ou, mais especificamente, um site na web, automaticamente o tornamos visíveis ao Mundo e o Mundo pode torna-se instantaneamente usuários de nosso site.
Por este motivo, diversas vezes necessitamos fornecer suporte a diversas línguas dependendo da cultura de nosso usuário, e para resolver esta questão o .NET nos possibilita a utilização de arquivos de recursos ou *resource files *(.resx) que podem armazenar traduções de textos ou imagens para serem exibidas na tela.
Para tanto você apenas criaria uma versão local desse arquivo de recurso para a cultura desejada e, com isso, automaticamente a localização já controlaria a exibição de números, datas, se o texto é lido da direita para a esquerda (ou da esquerda para a direita).
Entendendo rapidamente o conceito de Cultura ou Culture
Cultura nada mais é do que a combinação do idioma que é falado referente a sua localização geográfica. Isso inclui a forma de exibir as horas, datas e valores monetários. Os exemplo abaixo demonstrar como uma cultura é representada:
en-US - Inglês falado nos Estados Unidos
en-GB - Inglês falado na Inglaterra
en-AU - Inglês falado na Austrália
pt-BR - Português falado no Brasil
Entendendo Recursos Globais e Recursos Locais
O .NET nos permite utilizar dois tipos de recursos, os Globais e os Locais:
**Recursos Globais: **São as informações do seu site como um todo, como por exemplo, o título da página.
Recursos Locais: Se referem ao conteúdo específico de uma página do site.
No ASP.NET MVC isso ocorre da seguinte forma, suas Views serão capazes de referenciar e utilizar os recursos locais, porém, seus Controllers terão acesso apenas aos recursos globais.
Iniciando nossa aplicação
Utilizando Recursos Globais
Vamos criar uma aplicação em ASP.NET MVC e adicionar um pasta de recursos globais, para tanto clique com o botão direto, Add ASP.NET folder e em seguida escolha App_Global_Resources. Dentro do diretório criado vamos adicionar um arquivo de recurso chamado Site.resx, a figura 1.0 demonstra a estrutura do projeto. E adicionaremos o seguinte conteúdo de recurso no arquivo criado conforme a figura 2.0.
http://rafaelzaccanini.files.wordpress.com/2011/01/figura-1-0.pngFigura 1.0
http://rafaelzaccanini.files.wordpress.com/2011/01/figura-2-0.pngFigura 2.0
Agora, em nosso Controller podemos criar o seguinte método, afim de retornar o valor definido no arquivo de recurso de acordo com o idioma e cultura utilizado:
http://rafaelzaccanini.files.wordpress.com/2011/01/texto-1.png
Neste exemplo criamos um método auxiliar simples, onde facilita o retorno de strings do arquivo de recurso. Até o momento foi criado apenas um arquivo de recurso, que no caso é o recurso padrão de nossa aplicação. Agora vamos criar outro arquivo, porém, este possuirá uma string de cultura juntamente com o nome do mesmo, será chamado de “Site.en-US.resx”.
O intuito é de manter neste arquivo as mesmas chaves criadas no arquivo anterior, porém com a tradução para o Inglês falado nos EUA. A figura 3.0 demonstra o arquivo e a estrutura do projeto:
http://rafaelzaccanini.files.wordpress.com/2011/01/figura-3-0.pngFigura 3.0
Neste momento, basta alterarmos nosso arquivo Web.config para que nossa aplicação multi-idioma funcione, para isso inclua o seguinte bloco em seu Web.config:
<system.web> <globalization enableClientBasedCulture="true" uiCulture="auto"/></system.web>
Agora se executarmos nossa aplicação note que o idioma utilizado é o padrão (pt-BR). Isso ocorre pois nosso navegador esta configurado com esse idioma como padrão. As figuras 4.0 e 5.0 ilustram o caso:
http://rafaelzaccanini.files.wordpress.com/2011/01/figura-4-0.pngFigura 4.0
http://rafaelzaccanini.files.wordpress.com/2011/01/figura-5-0.pngFigura 5.0
Note que, se alterarmos o idioma padrão para o “Inglês (Estados Unidos) [en-US]” salvar e recarregar a página, a mesma será carregada utilizando o arquivo de recurso referente ao idioma padrão de nosso Browser.
Porém é muito comum permitir que o usuário escolha qual a língua/cultura deseja utilizar no site, independente do idioma do Browser. Para tanto basta modificar o método criado no Controller para que fique da seguinte forma:
http://rafaelzaccanini.files.wordpress.com/2011/01/texto-2.png
Note agora que, nossa página é carregada de acordo com a cultura definida pelo Controller na variável cultura. Se a alterarmos para “en-US” a página será carregada com a mesma cultura independente do idioma padrão do Browser.
Utilizando Recursos Locais
Como os recursos locais são utilizados pelas Views, no diretório que a View esta mantida vamos criar um diretório de recursos locais, para tanto clique com o botão direto, Add ASP.NET folder e em seguida escolha App_Local_Resources. Dentro do mesmo vamos criar um arquivo de recurso com o mesmo nome de nossa View que irá utilizá-lo e um segundo arquivo para a tradução em inglês.
A figura 6.0 demonstra os arquivos criados e a estrutura de nosso projeto:
http://rafaelzaccanini.files.wordpress.com/2011/01/figura-6-0.pngFigura 6.0
Agora nossa View já pode utilizar os recursos disponíveis, veja abaixo como utilizar os recursos da View Index:
http://rafaelzaccanini.files.wordpress.com/2011/01/texto-3.png
Rafael Zaccanini
MTAC – Microsoft Technical Audience Contributor
Blog: http://www.rafaelzaccanini.net
**Twitter: **@rafaelzaccanini
Facebook: http://www.facebook.com/RafaelZaccaniniNet