Windows Phone 7 localiser App
-
25-09-2019 - |
Question
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:
- Créer un fichier de ressources, dites "Strings.resx" (Build Action: Compile)
- Créez une clé, dites « TestKey » avec une valeur par défaut de chaîne vide
- Ajouter un fichier de ressources anglais dans le même dossier avec une valeur de « une chaîne de caractères anglais »: strings.en-us.resx (Build Action: Ressource incorporée)
- Ajouter un fichier de ressources japonais dans le même dossier avec une valeur de « une chaîne japonaise »: strings.ja-jp.resx (Build Action: Ressource incorporée)
Dans mon Silverlight PC, WPF Apps qui fonctionne très bien quand je change la Thread.CurrentThread.CurrentCulture. Mais dans le téléphone me semble toujours être d'obtenir la valeur qui est dans le fichier Strings.resx -. Une chaîne vide
Je l'ai essayé d'utiliser le concepteur du code généré et le câblage le gestionnaire des ressources en main et il ne semble pas à la matière. Voici mon code:
Type t = typeof(Strings);
_resourceManager = new ResourceManager(
t.Namespace + "." + t.Name,
t.Assembly);
_resourceManager.GetString("TestKey");
Dites-moi sont pris en charge des ressources localisées au téléphone ...;> Qu'est-ce que je fais mal? Merci!
Mise à jour : Merci Olivier pour transmettre le lien. J'ai vu cela aussi, mais a raté une étape importante. Je n'ai pas ajouté le nœud « SupportedCultures » à mon csproj. Fait toute la différence - en espérant que quelqu'un d'autre ne le deux heures en vrac essayant de comprendre cela comme je l'ai fait.
<SupportedCultures>de-DE;es-ES;</SupportedCultures>
La solution
J'ai écrit un billet de blog qui fournit des liens vers un groupe de vidéo de formation 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 LocalizedStrings classe, mais ils ont ensuite supposons que vous savez comment utiliser cette classe pour la liaison de données. Visual Studio 2010 et les données poignée Silverlight liaison différemment Winforms, et il devient encore plus confuse depuis XAML a également sa propre définition Les ressources qui sont différents, la ressources .NET nous venons de créer. Silverlight utilise également le terme Ressources pour désigner les fichiers qui utilisent l'Action Construire de « contenu », comme ces fichiers sont enveloppés dans la .Xap fichier similaire à la façon dont les fichiers avec Construire l'action de « ressources » get incorporé dans l'assemblage .Dll (ex: charger une image à partir du contenu ou fichiers de ressources). Je trouve que la place d'utiliser le texte = "{Binding Path = resourceFile.resourceName, Source = {StaticResource Localizedresources}} » de la syntaxe XAML il était plus facile à utiliser les étapes suivantes:
Ouvrez votre page XAML primaire (généralement MainPage.xaml) dans Visual Studio Designer
Ouvrez les propriétés du PhoneApplicationPage et définir la DataContext pour être Application.Resources -> LocalizedStrings. REMARQUE: si vous avez déjà utilisent un objet DataContext, puis vous devez intégrer les classe LocalizedStrings dans ce objet de telle sorte qu 'il présente la localisation soutien.
Une fois la page de DataContext vous a été défini pouvez modifier les données obligatoire pour tout contrôle sur la page par en sélectionnant simplement la propriété (ex: texte, vérifié, etc.), en sélectionnant « Appliquer Liaison de données ... », et la définition du chemin à Localizedresources.BtnText ou quel que soit le nom du produit souhaité valeur de la ressource est.
Autres conseils
Bien sûr, les ressources localisées sont pris en charge sur le téléphone:
Comment: construire une application pour Localisée windows Phone