Les tendances récentes des magasins montrent que proposer votre application en anglais ne couvrira qu'environ 25% des clients Windows Phone. L'ajout d'espagnol, de français, de mandarin, de russe et d'allemand peut augmenter la couverture de plus de 75% des clients Windows Phone..
Dans ce didacticiel, je vais vous apprendre à localiser une application Windows Phone 8 pour atteindre davantage de clients potentiels. Je vais vous montrer comment configurer votre projet Windows Phone 8 afin que toute l'interface utilisateur, y compris les messages d'erreur, puisse être localisée. À la fin du didacticiel, vous aurez appris comment préparer votre application de sorte qu'elle puisse être traduite dans plusieurs langues..
Considérez les meilleures pratiques suivantes pour créer une application facile à localiser:
Nous allons d'abord discuter de la prise en charge culturelle et linguistique de Windows Phone 8, puis des étapes nécessaires à la préparation d'une application pour la localisation. Après cela, nous verrons comment construire une barre d’application localisée. Nous allons enfin discuter de la façon de tester une application localisée.
Les chiffres, les devises, la date et l'heure sont formatés différemment selon les cultures. Toutes les cultures prises en charge sont répertoriées dans le CultureInfo
classe. le CultureInfo
La classe expose les propriétés à accéder aux données de format de région pour une culture spécifique. Vous pouvez également utiliser le CultureInfo
classe avec un code de culture pour accéder aux règles de formatage et de tri intégrées pour cette culture.
La langue d'affichage détermine la police d'interface utilisateur par défaut. L'interface utilisateur de Windows Phone 8.1 est localisée dans 50 langues, mais votre application peut afficher une plus grande sélection de langues. Lorsque vous ajoutez un support à votre application pour des langues supplémentaires, Visual Studio génère un .resx fichier pour chaque langue.
le InitializeLanguage
fonctionner dans le App.xaml.cs fichier définit l'application RootFrame.Language
basé sur la valeur de la AppResources.ResourceLanguage
Ressource.
Nouveaux projets et modèles pour Windows Phone 8 Les applications XAML fournissent plusieurs nouvelles fonctionnalités utiles:
LocalizedStrings
La classe d'assistance est déjà configurée pour fournir un accès facile aux ressources qui correspondent à la culture actuelle d'une application..Voyons comment tout cela fonctionne en créant un exemple d'application, avec l'anglais comme langue de base..
Nous lions d’abord les éléments de texte XAML aux ressources de chaîne.
Copiez chaque chaîne codée en dur dans le XAML de l'application qui doit être localisée sur une nouvelle ligne de la table des chaînes de votre AppResources.resx fichier.
Ensuite, référez les éléments XAML à cette ressource chaîne en ajoutant le nom unique et une clause de liaison standard à la place de la valeur codée en dur.
le TextBlock
ci-dessous est lié en utilisant la chaîne ressource à la place du texte codé en dur.
Recherchez dans le code-behind du projet les endroits où le code modifie un attribut de texte d'un élément d'interface utilisateur. Remplacer la valeur codée en dur par une référence à la ressource chaîne pour chaque élément.
ApplicationBarMenuItem about_appBarMenuItem = new ApplicationBarMenuItem (AppResources.AppBarAboutMenuItem);
L'ajout de langues à un projet Windows Phone 8 dans Visual Studio est simple. Accédez à la page de propriétés du projet et sélectionnez les langues que vous souhaitez prendre en charge dans la liste. Cultures soutenues liste.
Dans l'exemple de projet, j'ai ajouté Chinois simplifié) et Espagnol (Espagne), dont les codes de localisation sont Zh-Hans et es-ES, respectivement. Sélectionnez les langues que vous souhaitez que votre application prenne en charge dans Cultures soutenues case sur le projet Propriétés page.
Lorsque vous enregistrez le projet, Visual Studio crée un AppResources.resx fichier pour chaque locale. Le fichier de ressources nouvellement créé est pré-rempli avec les ressources existantes du répertoire principal. AppResources.resx fichier.
Chaque fichier de ressources comprend deux ressources spéciales nommées Langage de ressources
et ResourceFlowDirection
. Ces deux ressources sont utilisées lorsque le InitializeLanguage
la méthode est appelée de la App.xaml.cs constructeur. Leurs valeurs sont vérifiées automatiquement pour s'assurer qu'elles correspondent à la culture du fichier de ressources chargé au moment de l'exécution..
le Langage de ressources
la valeur est initialisée avec le nom de paramètres régionaux du fichier de ressources et est utilisée pour définir la RootFrame.Language
valeur. le ResourceFlowDirection
la valeur est définie sur la direction traditionnelle de la langue de la ressource.
Notez que Langage de ressources
et ResourceFlowDirection
peut être modifié pour s'aligner sur le style de conception de votre application.
le Boîte à outils pour applications multilingues (MAT), intégré à Visual Studio, prend en charge la traduction, la gestion des fichiers de traduction et des outils de localisation pour créer des applications Windows Phone et Windows Store. Voici quelques avantages de l’utilisation de la boîte à outils des applications multilingues:
Pour commencer à utiliser le Toolkit multilingue des applications pour votre projet Windows Phone, téléchargez et installez l'extension Visual Studio à partir de MSDN. Avec la boîte à outils installée, sélectionnez le projet et sélectionnez Activer la boîte à outils des applications multilingues du Outils menu comme ci-dessous.
Notez que les ressources localisées sont définies par projet et non par solution. Cela signifie que l'objectif de Visual Studio doit être au sein du projet pour la Activer la boîte à outils des applications multilingues possibilité d'être disponible à partir du Outils menu.
Après avoir activé le Toolkit multilingue des applications, Visual Studio ajoute des fichiers au Ressource dossier de votre projet, l'un d'entre eux ayant un nouveau type et nom, AppResources.qps.ploc.xlf. le .xlf extension fait référence au format de fichier standard XLIFF que j'ai mentionné précédemment.
Des langues supplémentaires peuvent être ajoutées via le Toolkit de l'application multilingue. Cela se traduit par l'ajout d'une nouvelle culture prise en charge à votre projet. Cela provoque également l’ajout d’une langue prise en charge dans le projet. WMAppManifest.xml.
Traduire les ressources pour Chinois simplifié) et Espagnol (Espagne), clic droit sur le .xlf déposer et sélectionner Générer des traductions automatiques dans le menu contextuel. Appliquez les traductions et reconstruisez le projet pour voir les modifications reflétées dans le .resx fichiers pour les deux langues supplémentaires.
Vous pouvez ajouter une barre d'application à une page de votre application, soit dans la page XAML, soit en utilisant C # dans la page code-behind.. Barre d'application
n'est pas un DependencyObject
et ne supporte pas les fixations. Cela signifie que si vous avez besoin de le localiser, construisez le Barre d'application
depuis code-behind C #.
Lorsqu'un nouveau projet Windows Phone 8 ou Windows Phone 8.1 Silverlight est créé, un code commenté pour la localisation de la barre d'application est ajouté. MainPage.xaml.cs par défaut. Ne commentez pas la méthode BuildLocalizedApplicationBar
et ajoutez les boutons, les éléments de menu et les ressources associées que vous souhaitez utiliser dans votre application..
private void BuildLocalizedApplicationBar () // Définit le champ ApplicationBar de la page sur une nouvelle instance de ApplicationBar. ApplicationBar = new ApplicationBar (); // Crée un nouveau bouton et définit la valeur du texte sur la chaîne localisée à partir de AppResources. ApplicationBarIconButton appBarButton = new ApplicationBarIconButton (new Uri ("/ Assets / Check.png", UriKind.Relative)); appBarButton.Text = AppResources.AppBarButtonText; appBarButton.Click + = appBarButton_Click; ApplicationBar.Buttons.Add (appBarButton); // Crée un nouvel élément de menu avec la chaîne localisée à partir de AppResources. ApplicationBarMenuItem zh_appBarMenuItem = new ApplicationBarMenuItem ("中文"); ApplicationBar.MenuItems.Add (zh_appBarMenuItem); zh_appBarMenuItem.Click + = new EventHandler (zh_appBarMenuItem_Click); ApplicationBarMenuItem en_appBarMenuItem = new ApplicationBarMenuItem ("anglais"); ApplicationBar.MenuItems.Add (en_appBarMenuItem); en_appBarMenuItem.Click + = new EventHandler (en_appBarMenuItem_Click); ApplicationBarMenuItem es_appBarMenuItem = new ApplicationBarMenuItem ("español"); ApplicationBar.MenuItems.Add (es_appBarMenuItem); es_appBarMenuItem.Click + = new EventHandler (es_appBarMenuItem_Click);
le BuildLocalizedApplicationBar
méthode crée une nouvelle instance de Barre d'application
. Des boutons et des éléments de menu y sont ajoutés et la valeur du texte est définie sur la chaîne localisée de AppResources
. Le bouton de la barre d’application a une obligation de AppBarButtonText
, qui est défini dans le AppResouces.resx fichier. Appeler le BuildLocalizedApplicationBar
méthode du constructeur de la page pour charger le Barre d'application
.
Dans l’exemple d’application, les utilisateurs peuvent sélectionner leur langue d’affichage via le Barre d'application
menu. Comme illustré dans la capture d'écran ci-dessous, les éléments de menu restent cohérents dans toutes les langues d'affichage, tandis que le bouton de la barre d'applications est localisé..
Lorsqu'un utilisateur appuie sur une langue d'affichage dans le Barre d'application
menu, le SetUILanguage
méthode est appelée. le SetUILanguage
La méthode, avec le nom de la langue cible passé en paramètre, est utilisée pour définir la langue d'affichage.
private void SetUILanguage (chaîne locale) CultureInfo newCulture = new CultureInfo (locale); Thread.CurrentThread.CurrentCulture = newCulture; Thread.CurrentThread.CurrentUICulture = newCulture; FlowDirection flow = (FlowDirection) Enum.Parse (typeof (FlowDirection), AppResources.ResourceFlowDirection); App.RootFrame.FlowDirection = flow; // Définit la langue du RootFrame pour correspondre à la nouvelle culture. App.RootFrame.Language = XmlLanguage.GetLanguage (AppResources.ResourceLanguage);
le SetUILanguage
La méthode réinitialise d'abord le CurrentUICulture
de l'application aux paramètres régionaux fournis dans l'appel. Tout texte lié aux ressources rendu par l'application utilisera les ressources des paramètres régionaux spécifiés après cet appel..
Ensuite, réglez le Sens de l'écoulement
et La langue
du RootFrame
, ce qui entraînera l'interface utilisateur rendue par l'application à suivre les nouveaux paramètres.
le BuildLocalizedApplicationBar
La méthode est appelée à partir du constructeur de la page après l'appel de InitializeComponent
localiser le Barre d'application
.
public MainPage () InitializeComponent (); // code pour localiser le ApplicationBar BuildLocalizedApplicationBar ();
L'émulateur Windows Phone peut être utilisé pour tester l'application localisée. Changez la langue d'affichage en langue que cible l'application pour vérifier que le contenu est restitué correctement.
Voici comment le texte change lorsque la langue d'affichage est modifiée. Notez que les éléments de menu restent cohérents même si la langue d'affichage change.
Pour changer dynamiquement de langue, appelez le SetUILanguage
méthode avec le nom de la langue cible passé en paramètre.
Dans l'exemple d'application, chaque élément d'interface utilisateur du MainPage.xaml a déjà été rendu, de sorte que les éléments affichés doivent être actualisés après le changement de langue. le updateUI
méthode rafraîchit les éléments de l'interface utilisateur de MainPage.xaml.
void privé updateUI () apptitle.Text = AppResources.ApplicationTitle; pagetitle.Text = AppResources.mainpagetitle; usermessage.Text = AppResources.displayMessage; checkbutton.Content = AppResources.checkEligibility; enterage.Text = AppResources.userMessage;
Notez que l'emplacement de chaque élément de l'interface utilisateur à l'écran reste inchangé, quelle que soit la langue d'affichage..
Dans ce didacticiel, vous avez appris à préparer votre application pour la localisation. Les chaînes XAML codées en dur et code-behind qui doivent être localisées sont placées dans une table de chaînes de fichiers de ressources et reçoivent une clé unique..
Chaque valeur codée en dur est remplacée par une clause de liaison dans XAML ou une référence de ressource dans un code utilisant la clé pour la ressource chaîne associée..
Vous pouvez ajouter des langues d'affichage supplémentaires et utiliser Multilingual App Toolkit pour faciliter considérablement le processus de traduction de votre application de bout en bout. N'hésitez pas à télécharger les fichiers sources du didacticiel à utiliser comme référence.