Localizando sua Aplicação WPF utilizando Arquivos de Recursos - André Alves de Lima
Localizando sua Aplicação WPF utilizando Arquivos de Recursos
andrealveslima | Software Development, WPF | 7
A possibilidade de localizar aplicações de negócios em múltiplos idiomas é um requisito usual de aplicações no mundo globalizado. No escopo do WPF existem várias maneiras de possibilitar que sua aplicação rode em diferentes idiomas. Uma das maneiras de atingir esse objetivo é utilizarmos arquivos de recursos, que é o que veremos neste artigo. No exemplo abaixo, utilizei o Visual Studio 2010 com .NET Framework 4.0, mas, o mesmo exemplo é válido em qualquer edição do WPF.
Primeiramente, vamos criar um novo projeto Visual C# (ou Visual Basic, como preferir) WPF Application, selecionando essa opção na caixa de diálogo que se abre ao executar File -> New -> Project. Dê o nome de WPFLocalization para essa nova aplicação.
Na nossa nova aplicação, vamos utilizar a MainWindow que já é criada automaticamente para construirmos um layout bem simples para a nossa aplicação que será localizada. A ideia é montarmos uma tela de entrada de dados semelhante à imagem abaixo:
O código XAML correspondente à interface acima é o seguinte:
Feito isso, agora vamos começar a localizar essa nossa aplicação. Como disse no início do artigo, vamos utilizar arquivos de recursos para fazer a localização, então, vamos incluir um Resource File no nosso projeto. Para isso, na janela Solution Explorer, clique com o botão direito no projeto e escolha a opção Add -> New Item. Na caixa de diálogo exibida, escolha a opção Resource File e dê o nome de MainWindowMessages.resx.
Ao fazer isso, um arquivo de recursos é adicionado ao nosso projeto. O próximo passo é incluir as chaves que corresponderão aos textos que são exibidos na nossa aplicação, então, crie os seguintes itens nesse arquivo de recursos:
Agora é hora de alterarmos o nosso XAML para que nossa aplicação busque os textos dos nossos controles no nosso arquivo de recursos. Para isso, o primeiro passo é incluir um XML namespace no nosso XAML que aponte para no namespace da nossa aplicação. Portanto, nas declarações dos XML namespaces (na tag Window do nosso XAML), acrescente a seguinte entrada:
Dessa forma, podemos alterar os textos dos nossos labels e botão para que sejam buscados no nosso arquivo de recursos, utilizando a seguinte sintaxe na propriedade Text do nosso TextBlock, por exemplo:
Após alterar o XAML todo, o resultado deverá ser o seguinte:
Com isso, nossa aplicação já estará buscando as descrições do arquivo de recursos. Então, para que ela seja multi-idiomas, basta acrescentar outros arquivos de recursos com o mesmo nome e o código do idioma, como, por exemplo, MainWindowMessages.en-US.resx, com os seguintes itens:
Aproveite e crie também o arquivo MainWindowMessages.pt-BR.resx com o mesmo conteúdo do primeiro arquivo de recursos criado, para caso o idioma padrão do seu sistema operacional não seja o português.
Após isso, ao rodar a sua aplicação novamente, se o seu sistema operacional for em inglês, sua aplicação será exibida em inglês. Já se o seu sistema operacional for em português ou outro idioma, sua aplicação será exibida em português.
Para testarmos melhor as alterações, você pode forçar a cultura da sua aplicação para pt-BR no construtor da sua MainWindow, da seguinte forma:
Ou, caso queira forçar o idioma inglês, você pode alterar o "pt-BR" para "en-US":
Para tornar sua aplicação localizável em outros idiomas, é só criar outros arquivos de recursos com o mesmo nome, utilizando somente o código do idioma antes da extensão .resx.
É isso aí. Dessa forma a sua aplicação será exibida no idioma correspondente ao idioma do sistema operacional do seu cliente.
Espero que vocês tenham gostado. Deixem suas dúvidas, sugestões, etc. nos comentários desse post.
Este artigo / vídeo foi baseado no exemplo encontrado no site de Windows Client da Microsoft: http://windowsclient.net/learn/video.aspx?v=297139
Agrupamentos Simples no Report Viewer do VS 2010 Retrospectiva 2010
7 thoughts on "Localizando sua Aplicação WPF utilizando Arquivos de Recursos"
Localizando sua Aplicação WPF utilizando Arquivos de Recursos | Talking about Software Development, Technology and disse:
7 de novembro de 2010 às 10:25
Muito bom, para quem não sabia ficou bem claro como fazer aplicações inter-nacionalizadas!!!
Alberto, valeu pelo feedback! Abraço!
André, tentei reproduzir isto em uma aplicação que estava começando, e não funciona. poderia me ajudar?
Claro Christiano! O que exatamente está acontecendo? Você seguiu exatamente os mesmos passos do artigo?
1 de abril de 2011 às 18:43
sim. após usar definir o {x:Static …}, o designer não é capaz de exibir a tela. fiz com apenas um textblock p/ testes. tento executar, e a msg de erro informa não encontrar o recurso.
adicionei um resource file chamado recurso com o único
txtInicio | meu texto
O valor 'TesteLocalizacao.recurso.txtInicio' de StaticExtension não pode ser resolvido para uma enumeração, campo estático ou propriedade estática. Erro no objeto 'txtInicio' no arquivo de marcação 'TesteLocalizacao;component/window1.xaml', linha 7, posição 39.
puxa vida, descobri! é o modificador de acesso do arquivo resource. deve ser público! de qq forma, obrigado!