Introdução
No artigo “Globalização e Localização no Windows Phone - Parte 3” demonstramos como podemos implementar o conceito de Globalização, permitindo que nossas aplicações do Windows Phone trabalhem com diferentes culturas.
No entanto um ponto muito importante, é implementarmos também o conceito de Localização fazendo com que a aplicação exiba seus textos, mensagens e etc de acordo com a cultura desejada.
Criando a UI da aplicação
Para darmos sequência ao nosso exemplo, iremos utilizar como base o projeto criado em nosso artigo anterior. Para isso siga os seguintes passos:
- Abra o projeto Windows Phone criado na Parte 3 de nossa série de artigos;
- Abra o arquivo MainPage.xaml;
- Modifique o seu ContentPanel, de modo que ele fique dessa maneira:
<!--ContentPanel - place additional content here-->
<StackPanel Height="824" HorizontalAlignment="Left" Margin="9,6,0,0" Name="stackPanel2" VerticalAlignment="Top" Width="443" Background="{StaticResource PhoneBackgroundBrush}">
<TextBlock Height="30" Name="textBlock1" Text="Selecione uma localização" Width="443" Foreground="{StaticResource PhoneAccentBrush}" />
<ListBox Height="250" HorizontalAlignment="Left" Margin="9,6,0,10" Name="locList" VerticalAlignment="Top" Width="441" SelectedIndex="-1" SelectionChanged="LocList_SelectedIndexChanged">
<ListBoxItem Content="French, France" FontSize="22" />
<ListBoxItem Content="German, Germany" FontSize="22" />
<ListBoxItem Content="Italian, Spain" FontSize="22" />
<ListBoxItem Content="Spanish, Spain" FontSize="22" />
<ListBoxItem Content="English, United Kingdom" FontSize="22" />
<ListBoxItem Content="English, United States" FontSize="22"/>
<ListBoxItem Content="Danish, Denmark" FontSize="22" />
<ListBoxItem Content="Portuguese, Brazil" FontSize="22" />
</ListBox>
<TextBlock Height="30" Name="textBlock4" Text="Data" Width="443" Foreground="{StaticResource PhoneAccentBrush}"/>
<TextBlock Height="30" Name="txbData" Text=" " Width="443" />
<TextBlock Height="30" Name="textBlock7" Text="Monetário" Foreground="{StaticResource PhoneAccentBrush}"/>
<TextBlock Height="30" Name="txbMonetario" Text=" " Width="443" />
<TextBlock Height="30" Name="textBlock8" Text="Mensagem" Foreground="{StaticResource PhoneAccentBrush}"/>
<TextBlock Height="30" Name="txbMensagem" Text=" " Width="443" />
</StackPanel>
Criando os arquivos de localização
Uma vez que temos o layout de nossa aplicação pronta, podemos começar a implementar a localização. Basicamente o que precisaremos fazer será criar arquivos de resource (.resx) para cada cultura desejada e realizar as respectivas traduções, como podemos verificar a seguir:
- No Solution Explorer do Visual Studio, clique com o botão direito no seu projeto e clique em Add > New Item;
- Na janela que será exibida, selecione Resouce File, defina o nome do arquivo como traducao.resx e clique no botão Add;
- No arquivo que será adicionado ao seu projeto, crie uma entrada conforme apresentado:
- Feito isso, siga os seguintes passos para cada cultura que precise:
- No Solution Explorer, clique com o botão direito no arquivo traducao.resx e selecione Copy;
- Clique com o botão direito no seu projeto e clique em Paste;
- Renomeie o arquivo “Copy of traducao.resx” para o seguinte padrão traducao.cultura.resx. Ex: traducao.pt-BR.resx;
- Abra o arquivo e realize as devidas traduções:
Utilizando a localização
Agora que temos os arquivos de localização devidamente criados, basta utilizá-los em nosso aplicativo. O que é extremamente simples:
private void LocList_SelectedIndexChanged(object sender, SelectionChangedEventArgs e)
{
string culture;
switch (locList.SelectedIndex.ToString())
{
case "0":
culture = "fr-FR";
break;
case "1":
culture = "de-DE";
break;
case "2":
culture = "it-IT";
break;
case "3":
culture = "es-ES";
break;
case "4":
culture = "en-GB";
break;
case "5":
culture = "en-US";
break;
case "6":
culture = "da-DK";
break;
case "7":
culture = "pt-BR";
break;
default:
culture = "en-US";
break;
}
Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
txbData.Text = DateTime.Now.ToString();
double valor = 954371.52;
txbMonetario.Text = valor.ToString("C");
txbMensagem.Text = traducao.MensagemTeste;
}
Habilitando localização no projeto
Para finalizarmos, faltam dois passos muito importantes:
- Definirmos qual será a cultura padrão utilizada pela aplicação
- No Solution Explorer, clique com o botão direito no projeto e clique em Properties;
- Na janela de propriedades, selecione a aba Application e clique no botão Assembly Information;
- Na janela que será aberta, defina o Neutral Language para o idioma padrão de sua aplicação. No nosso exemplo definiremos para English (United States)
- Clique em OK, e salve o projeto.
- Definirmos quais as culturas suportadas pela aplicação
Feito isso, compile e execute seu aplicativo.
Como poderá perceber, ao clicarmos em algum item nosso ListBox que corresponda a um arquivo de resource criado, a mensagem será exibida no idioma correto, já se selecionarmos uma cultura inexistente entre os arquivos de localização, automaticamente é utilizada a cultura neutra/padrão.
Conclusão
Como podemos perceber implementar o conceito de localização em nossos aplicativos, é extremamente simples, sendo que esta é apenas uma das formas de ser realizada. Podemos dizer que a etapa mais difícil e trabalhosa de todos esse processo, será efetivamente criar os arquivos de localização. Até a próxima…