2010-09-27 5 views
10

Je vais avoir un peu de mal à obtenir des fichiers de ressources localisées pour fonctionner sur Windows Phone 7. Voici ce que je fais:Windows Phone 7 activités locales App

  1. Créer un fichier de ressources, dites « Strings.resx » (Build Action: Compile)
  2. Créez une clé, dites "TestKey" avec une valeur par défaut de chaîne vide
  3. Ajoutez un fichier de ressources anglais dans le même dossier avec la valeur "some English string": Strings.en- us.resx (Build Action: Embedded Resource)
  4. Ajoutez un fichier de ressources japonais dans le même dossier avec la valeur "som e chaîne japonaise ": strings.ja-jp.resx (Build Action: Ressource incorporée)

Dans mon PC Silverlight, WPF Apps qui fonctionne très bien quand je change la Thread.CurrentThread.CurrentCulture. Mais dans le téléphone, je semble toujours obtenir la valeur qui est dans le fichier Strings.resx - une chaîne vide.

J'ai essayé d'utiliser le code généré par le concepteur et de câbler le gestionnaire de ressources à la main et cela ne semble pas important. Voici mon code:

  Type t = typeof(Strings); 

      _resourceManager = new ResourceManager(
       t.Namespace + "." + t.Name, 
       t.Assembly); 

      _resourceManager.GetString("TestKey"); 

Dites-moi que les ressources localisées sont supportées sur le téléphone ...;> Qu'est-ce que je fais de mal? Merci!

Mise à jour: Merci Olivier pour la transmission du lien. J'ai vu cela aussi mais j'ai manqué un pas important. Je n'ai pas ajouté le noeud "SupportedCultures" à mon csproj. Fait toute la différence - en espérant que quelqu'un d'autre ne perd pas deux heures en essayant de comprendre cela comme je l'ai fait.

<SupportedCultures>de-DE;es-ES;</SupportedCultures> 
+1

+1 pour la propriété 'SupportedCultures'. Surprenant qui n'est pas exposé dans Visual Studio via les propriétés de l'application. – si618

Répondre

4

J'ai écrit un billet de blog qui fournit des liens vers un groupe de Globalization/Localization guides for WP7. Il y a un Windows Phone 7 in 7 Training video qui m'a aidé à comprendre les bases . Après cela, il était tout simplement une question d'apprendre à faire la liaison de données:

L'article MSDN vous montre comment configurer les fichiers et créer la classe de LocalizedStrings, mais ils ont ensuite supposer que vous savez comment utiliser cette classe pour la liaison de données. Visual Studio 2010 et les données poignée Silverlight de liaison différemment Winforms, et il devient encore plus confuse depuis XAML a aussi sa propre définition de ressources qui sont différentes, les ressources .NET nous venons de créer. Silverlight utilise également le terme ressources pour se référer à des fichiers qui utilisent l'Action Construire de « contenu », comme ces fichiers sont enveloppés dans le fichier .xap similaire à la façon dont les fichiers avec Build Action de « ressources » get intégré dans l'assembly .Dll (ex: chargement d'une image à partir du contenu ou fichiers de ressources). J'ai trouvé qu'à la place d'utiliser le Text = "{Binding Path = resourceFile.resourceName, Source = {StaticResource Localizedresources}} » syntaxe XAML il était plus facile d'utiliser les étapes suivantes:

  1. Ouvrez votre page XAML primaire (généralement MainPage.xaml) dans le de Visual Designer Studio

  2. Ouvrir les propriétés du PhoneApplicationPage et définissez les DataContext être Application.Resources -> LocalizedStrings REMARQUE: si vous avez déjà utilisez un objet DataContext, puis.vous devez intégrer la classe LocalizedStrings dans cet objet afin qu'il dispose de la prise en charge de la localisation .

  3. Une fois la page de DataContext a été défini, vous pouvez modifier les données obligatoire pour tout contrôle sur la page en sélectionnant simplement la propriété (ex: texte, vérifié, etc.), en sélectionnant « Appliquer Liaison de données ... » et définissant le chemin à Localizedresources.BtnText ou quel que soit le nom de la valeur de ressource souhaitée.

+0

Ceci est une excellente réponse, merci beaucoup de prendre le temps! – will