Quando estamos desenvolvendo algum aplicativo, temos a necessidade em expandir o acesso do aplicativo para outros mercados. Dessa forma, temos prover suporte a outros idiomas. Esse recurso é mais conhecido como String Resources.
Como então a aplicação define o idioma a ser utilizado? Ele irá utilizar o idioma escolhido no dispositivo pelo usuário. Caso o idioma escolhido não seja suportado pela aplicação, o mesmo irá utilizar o idioma definido como padrão nas propriedades do projeto.
Para demonstrar como o processo de internacionalização ocorre, vamos criar um novo projeto (Blank App (Universal Windows)) no Visual Studio:
Após o projeto ser criado, devemos selecionar o idioma padrão para cada plataforma. Clique com o botão direito sobre o projeto e selecione a opção "Properties". Agora selecione a aba "Application" e clique no botão "Assembly Information".
Propriedades do projeto
Com a janela "Assembly Information" aberta, selecione no campo "Neutral language" o idioma padrão do seu aplicativo. Neste artigo iremos utilizar como idioma padrão o Português do Brasil.
Selecionando idioma padrão
Iremos criar nossos arquivos de internacionalização, onde estarão definidos os textos a serem exibidos para o usuário. No projeto crie uma nova pasta chamada "Strings", clicando com o botão direito sobre o projeto > Add > New Folder. Agora iremos criar sub pastas para os idiomas que vamos utilizar, que para este exemplo será o Português (Brasil) e Inglês (Estados Unidos). Clique com botão direito sobre a pasta Strings > Add > New Folder e adicione pt-BR. Repita o processo de criar uma sub pasta dentro da pasta String e crie outra pasta denominada en-US.
Para acessar a todos os idiomas com seus respectivos nomes, acesse o seguinte link.
A seguinte estrutura de pastas para os idiomas deverá estar dessa forma:
Estrutura de pastas
Agora vamos criar os arquivos de "Resources" para cada idioma. Para isso, clique com o botão direito sobre a pasta en-US > Add > New Item... Será aberta uma janela com várias opções e dentre elas, selecione Resources File (.resw) e clique em Add.
Adicionando arquivo Resources File (.resw)
Repita o mesmo procedimento acima para a pasta pt-BR, mantendo o arquivo com mesmo nome Resources.resw.
O próximo passo é abrir os arquivos Resources.resw e acrescentar os seguintes valores:
Arquivo Resources.resw (en-US)
Arquivo Resources.resw (pt-BR)
Arquivos do tipo Resources.resw são compostos por três colunas:
Nesse momento os arquivos estão prontos. Agora utilizaremos para exibir para o usuário as strings correspondentes com o idioma do dispositivo. Para isso, abra o MainPage.xaml e adicione um TextBlock:
O atributo x:Uid="Greetings" faz com que o identificador (Greetings) seja automaticamente utilizado para procurar a correta tradução para esse texto. Por isso nos arquivos Resources.resw inserimos a chave "Greetings.Text" indicando que a propriedade Text desse TextBlock será atualizada.
Às vezes nem sempre é possível realizar a tradução dos elementos no arquivo XAML, sendo necessário fazer a tradução em tempo de execução de código.
Adicione mais um TextBlock como mostrado abaixo na MainPage.xaml, e veja como recuperar o texto identificado pela chave Farewell conforme definimos nos arquivos Resources.resw.
Agora acrescente o seguinte código no code behind da MainPage.xaml (MainPage.xaml.cs) conforme mostrado abaixo:
Feito esses procedimentos execute a aplicação e verá que será exibido o conteúdo para o idioma definido no dispositivo como Português do Brasil.
- Name: identifica a string do recurso (a chave Greeting.Text identifica um elemento dentro do XAML o qual recebe o texto da coluna "Value" automaticamente na propriedade Text);
- Value: representa o texto no respectivo idioma;
- Comment: representa uma descrição sobre o registro.
Nesse momento os arquivos estão prontos. Agora utilizaremos para exibir para o usuário as strings correspondentes com o idioma do dispositivo. Para isso, abra o MainPage.xaml e adicione um TextBlock:
- <TextBlock x:Uid="Greetings"/>
O atributo x:Uid="Greetings" faz com que o identificador (Greetings) seja automaticamente utilizado para procurar a correta tradução para esse texto. Por isso nos arquivos Resources.resw inserimos a chave "Greetings.Text" indicando que a propriedade Text desse TextBlock será atualizada.
Às vezes nem sempre é possível realizar a tradução dos elementos no arquivo XAML, sendo necessário fazer a tradução em tempo de execução de código.
Adicione mais um TextBlock como mostrado abaixo na MainPage.xaml, e veja como recuperar o texto identificado pela chave Farewell conforme definimos nos arquivos Resources.resw.
- <TextBlock x:Name="FarewellTxtBlock"/>
Agora acrescente o seguinte código no code behind da MainPage.xaml (MainPage.xaml.cs) conforme mostrado abaixo:
- var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
- this.FarewellTxtBlock.Text = loader.GetString("Farewell");
Feito esses procedimentos execute a aplicação e verá que será exibido o conteúdo para o idioma definido no dispositivo como Português do Brasil.
Aplicação executada
Portanto finalizamos nosso projeto de internacionalização. Continue acompanhando o blog por mais dicas e tutoriais!



