none
Multilanguage não funcionando no WP8 RRS feed

  • Pergunta

  • Pessoal,

    Depois que migrei todo o ambiente de desenvolvimento para W8 e VS2012, não consigo mais publicar atualizações para meus aplicativos em mais idiomas. Vou postar abaixo um projeto novo para facilitar o estudo.

    Criando um novo projeto e inserindo o seguinte StackPanel:

                <StackPanel>
                    <TextBlock x:Name="tblNome" Text="xxxxx"></TextBlock>
                    <TextBox></TextBox>
                    <TextBlock x:Name="tblEndereco" Text="wwwww"></TextBlock>
                    <TextBox></TextBox>
                    
                    <TextBlock Text="Cultura atual" FontSize="36" Margin="0,30,0,0"></TextBlock>
                    <TextBlock x:Name="tblCulture" Foreground="{StaticResource PhoneAccentBrush}" FontSize="36"></TextBlock>
                </StackPanel>
    

    O código em C# é bem simples:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;
    using System.Globalization;
    using System.Threading;
    
    namespace MultiLangTest
    {
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                InitializeComponent();
    
                Loaded += MainPage_Loaded;
            }
    
    
    
            void MainPage_Loaded(object sender, RoutedEventArgs e)
            {
                this.AtualizaDicionario();
            }
    
    
    
            private void AtualizaDicionario()
            {
                CultureInfo cultura = Thread.CurrentThread.CurrentCulture;
                
                this.tblNome.Text = dicionario.tblNome;
                this.tblEndereco.Text = dicionario.tblEndereco;
    
                this.tblCulture.Text = cultura.ToString();
            }
        }
    }

    Me certifiquei de configurar corretamente os idiomas a serem considerados, conforme imagem abaixo:

    Quando executo o projeto, estou com o emulador configurado para o idioma espanhol mas veja o resultado:

    Os TextBlocks deveriam receber os valores no idioma espanhol, mas são preenchidos como se não encontrasse o Resource es-ES.

    Se puderem me ajudar, ficarei muito agradecido, pois todos meus aplicativos estão impedidos de serem atualizados porque não passam nos testes da Microsoft com este problema.


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    quinta-feira, 3 de outubro de 2013 04:10

Respostas

  • Bom pessoal,

    Acabei resolvendo sozinho.

    Para que os idiomas sejam reconhecidos tanto pelo AppHub, quanto no emulador, é necessário marcar, nas propriedades do projeto, as opções de idioma com país entre parênteses.

    Segue a imagem abaixo para que não fiquem dúvidas. FUNCIONA.


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sábado, 5 de outubro de 2013 01:44

Todas as Respostas

  • Pessoal,

    Depois que migrei todo o ambiente de desenvolvimento para W8 e VS2012, não consigo mais publicar atualizações para meus aplicativos em mais idiomas. Vou postar abaixo um projeto novo para facilitar o estudo.

    Criando um novo projeto e inserindo o seguinte StackPanel:

                <StackPanel>
                    <TextBlock x:Name="tblNome" Text="xxxxx"></TextBlock>
                    <TextBox></TextBox>
                    <TextBlock x:Name="tblEndereco" Text="wwwww"></TextBlock>
                    <TextBox></TextBox>
                    
                    <TextBlock Text="Cultura atual" FontSize="36" Margin="0,30,0,0"></TextBlock>
                    <TextBlock x:Name="tblCulture" Foreground="{StaticResource PhoneAccentBrush}" FontSize="36"></TextBlock>
                </StackPanel>

    O código em C# é bem simples:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;
    using System.Globalization;
    using System.Threading;
    
    namespace MultiLangTest
    {
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                InitializeComponent();
    
                Loaded += MainPage_Loaded;
            }
    
    
    
            void MainPage_Loaded(object sender, RoutedEventArgs e)
            {
                this.AtualizaDicionario();
            }
    
    
    
            private void AtualizaDicionario()
            {
                CultureInfo cultura = Thread.CurrentThread.CurrentCulture;
                
                this.tblNome.Text = dicionario.tblNome;
                this.tblEndereco.Text = dicionario.tblEndereco;
    
                this.tblCulture.Text = cultura.ToString();
            }
        }
    }

    Me certifiquei de configurar corretamente os idiomas a serem considerados, conforme imagem abaixo:

    Quando executo o projeto, estou com o emulador configurado para o idioma espanhol mas veja o resultado:

    Os TextBlocks deveriam receber os valores no idioma espanhol, mas são preenchidos como se não encontrasse o Resource es-ES.

    Se puderem me ajudar, ficarei muito agradecido, pois todos meus aplicativos estão impedidos de serem atualizados porque não passam nos testes da Microsoft com este problema.


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    Segue também a imagem dos Resources devidamente criados para que não haja dúvida.


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    quinta-feira, 3 de outubro de 2013 04:14
  • Bom pessoal,

    Acabei resolvendo sozinho.

    Para que os idiomas sejam reconhecidos tanto pelo AppHub, quanto no emulador, é necessário marcar, nas propriedades do projeto, as opções de idioma com país entre parênteses.

    Segue a imagem abaixo para que não fiquem dúvidas. FUNCIONA.


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sábado, 5 de outubro de 2013 01:44