Compartilhar via


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