Localizando o aplicativo Windows Phone 7
-
25-09-2019 - |
Pergunta
Estou tendo um pouco de problemas para obter arquivos de recursos localizados para trabalhar no Windows Phone 7. Aqui está o que estou fazendo:
- Crie um arquivo de recurso, diga "strings.resx" (Build Action: Compile)
- Crie uma chave, digamos "TestKey" com um valor padrão da string vazia
- Adicione um arquivo de recurso em inglês na mesma pasta com um valor de "alguma string em inglês": strings.en-us.resx (Build Ação: Recurso incorporado)
- Adicione um arquivo de recurso japonês na mesma pasta com um valor de "alguma string japonesa": strings.ja-jp.resx (Build Ação: Recurso incorporado)
No meu PC Silverlight, aplicativos WPF que funcionam bem quando eu troco o thread.CurrentThread.CurrentCulture. Mas no telefone eu sempre pareço estar obtendo o valor que está no arquivo strings.resx - uma string vazia.
Eu tentei usar o código gerado pelo designer e a fiação do gerente de recursos manualmente e isso não parece importar. Aqui está o meu código:
Type t = typeof(Strings);
_resourceManager = new ResourceManager(
t.Namespace + "." + t.Name,
t.Assembly);
_resourceManager.GetString("TestKey");
Diga -me que os recursos localizados são suportados no telefone ...;> O que estou fazendo de errado? Obrigado!
Atualizar: Obrigado Olivier por encaminhar o link. Eu vi isso também, mas perdi um passo importante. Não adicionei o nó "SuportedCultures" ao meu CSProj. Fez toda a diferença - esperando que alguém não perca duas horas tentando descobrir isso como eu.
<SupportedCultures>de-DE;es-ES;</SupportedCultures>
Solução
Eu escrevi um post de blog que fornece links para um monte de Guias de globalização / localização para WP7. Existe um Windows Phone 7 em 7 Vídeo de Treinamento Isso me ajudou a entender o básico. Depois disso, foi simplesmente uma questão de aprender a fazer o banco de dados:
O artigo do MSDN mostra como configurar os arquivos e criar a classe LocalizedStrings, mas eles assumem que você sabe como usar essa classe para ligação de dados. O Visual Studio 2010 e o Silverlight manipulam a ligação de dados de maneira diferente das Winforms, e fica ainda mais confuso, pois a XAML também possui sua própria definição de recursos diferentes do que os recursos .NET que acabamos de criar. O Silverlight também usa o termo recurso para se referir a arquivos que usam a ação de construção de "Conteúdo", pois esses arquivos são envolvidos no arquivo .xap semelhante à maneira como os arquivos com a ação de construção de "recurso" são incorporados ao conjunto .dll (Ex: carregando uma imagem de arquivos de conteúdo ou recurso). Descobri que, em vez de usar o texto = "{Caminho de ligação = ResourceFile.ResourceName, Source = {staticResource LocalizedResources}}" Xaml Sintaxe, era mais fácil usar as seguintes etapas:
Abra sua página XAML primária (geralmente mainpage.xaml) no designer do Visual Studio
Abra as propriedades para o PhoneApplicationPage e defina o DataContext como Application.Resources -> LocalizedStrings. NOTA: Se você já está usando um objeto DataContext, integrar a classe LocalizedStrings nesse objeto para que ele tenha suporte de localização.
Depois que o datacontext da página estiver definido, você pode alterar a ligação de dados para qualquer controle da página, simplesmente selecionando a propriedade (ex: texto, verificado etc.), selecionando “Aplicar a ligação de dados…” e definir o caminho para localizedResources.btntext ou qualquer que seja o nome do valor de recurso desejado.
Outras dicas
Obviamente, recursos localizados são suportados no telefone:
Como: construir um aplicativo localizado para o Windows Phone