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;
    SNAGHTML7dbd86_thumb[19]
  • No arquivo que será adicionado ao seu projeto, crie uma entrada conforme apresentado:
    image_thumb[1]
  • 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:
      image_thumb[3]

Utilizando a localização
Agora que temos os arquivos de localização devidamente criados, basta utilizá-los em nosso aplicativo. O que é extremamente simples:

  • Abra o arquivo MainPage.xaml.cs;
  • No final no método LocList_SelectedIndexChanged, adicione o seguinte código:
    txbMensagem.Text = traducao.MensagemTeste;
  • Seu método deve estar da seguinte maneira:
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:

  1. 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;
      image_thumb[9]
    • 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)
      SNAGHTML9045f7_thumb
    • Clique em OK, e salve o projeto.
  2. Definirmos quais as culturas suportadas pela aplicação
    • No Solution Explorer clique com o botão direito em seu projeto e selecione Unload Project;
    • Clique novamente com o botão direito no projeto e dessa vez selecione “Edit Global01.csproj”, onde Global01 será o nome do seu projeto;
    • No arquivo xml que será aberto, localize o elemento SupportedCultures;
    • Adicione como valor desse elemento todas as culturas suportadas pelo seu aplicativo, sempre separadas por “;”
      <SupportedCultures>   pt-BR;es-ES
      </SupportedCultures>
    • Salve o arquivo;
    • Clique novamente com o botão direito no projeto e selecione Reload Project;

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…

Categorias: artigos
Tags: ,