Usuário com melhor resposta
Multilanguage não funcionando no WP8

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
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
- Marcado como Resposta Andrey Gonçalves dos Santos sábado, 5 de outubro de 2013 01:45
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
-
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
- Marcado como Resposta Andrey Gonçalves dos Santos sábado, 5 de outubro de 2013 01:45