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.
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.
O ficheiro por omissão (Inglês):
O ficheiro 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:
Quando se altera para Português: