WPF: Localização usando Recursos e a Localization Extension

Podem traduzir uma aplicação WPF usando ficheiros de recursos e a WPF Localization Extension.

Instalar a WPF Localization Extension

Comecem por instalar a extensão. Podem fazê-lo através do NuGet.

Instalar a WPF Localization Extension através do NuGet
Instalar a WPF Localization Extension através do NuGet

Criar ficheiros de recursos

Agora criem os ficheiros de recursos.

O ficheiro por omissão é o Resources.resx e podem criar versões localizadas criando uma cópia e adicionando a extensão da língua e da região, como por exemplo Resources.pt-PT.resx para Português de Portugal.

Recursos do projecto
Recursos do projecto

O ficheiro por omissão (Inglês):

Ficheiro de recursos Inglês
Ficheiro de recursos Inglês

O ficheiro Português:

Ficheiro de recursos Português
Ficheiro de recursos Português

Usar a Localization Extension

É necessário especificar no XAML o namespace da Localization Extension e também a assembly e o dicionário onde os recursos estão.

Podem chamar os recursos localizados com a extensão de markup Loc.

<Window x:Class="WpfApplication1.MainWindow"    
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
      xmlns:my="clr-namespace:WpfApplication1"    
      xmlns:lex="http://wpflocalizeextension.codeplex.com"    
      lex:LocalizeDictionary.DesignCulture="en"    
      lex:ResxLocalizationProvider.DefaultAssembly="WpfApplication1"    
      lex:ResxLocalizationProvider.DefaultDictionary="Resources"    
      Title="{lex:Loc Title}">    
      <Label Content="{lex:Loc Welcome}" />    
</Window>

Especificar a língua actual

Podem especificar a cultura com o singleton LocalizeDictionary.Instance.

LocalizeDictionary.Instance.SetCurrentThreadCulture = true;    
LocalizeDictionary.Instance.Culture = new CultureInfo("pt-PT");    

Ao usar a propriedade SetCurrentThreadCulture estamos a certificar que a cultura também é actualizada no thread actual.

Resultado final

Ao usar a língua por omissão:

Localização em Inglês
Localização em Inglês

Quando se altera para Português:

Localization em Português
Localization em Português
Nuno Freitas
Publicado por Nuno Freitas em 25 abril, 2014

Artigos relacionados