Rendre votre application localisable

Une application localisée est une application qui peut être localisée pour d’autres marchés, langues ou régions sans révéler de défauts fonctionnels dans l’application. La propriété la plus essentielle d’une application localisable est que son code exécutable a été proprement séparé de ses ressources localisables. Vous devez donc déterminer quelles ressources de votre application doivent être localisées. Demandez-vous ce qui doit changer si votre application doit être localisée pour d’autres marchés.

Nous vous recommandons également de vous familiariser avec les directives pour la mondialisation.

Placer vos chaînes dans des fichiers de ressources (.resw)

Ne codez pas en dur les littéraux de chaîne dans votre code impératif, le balisage XAML, ni dans le manifeste de votre package d’application. Au lieu de cela, placez vos chaînes dans Des fichiers de ressources (.resw) afin qu’elles puissent être adaptées à différents marchés locaux, indépendamment des fichiers binaires générés de votre application. Pour plus d’informations, consultez Localiser des chaînes dans votre manifeste de package d’interface utilisateur et d’application.

Cette rubrique vous montre également comment ajouter des commentaires à votre fichier de ressources par défaut (.resw). Par exemple, si vous adoptez une voix ou un ton informel, veillez à l’expliquer dans les commentaires. En outre, pour réduire les dépenses, vérifiez que seules les chaînes qui doivent être traduites sont fournies aux traducteurs.

Définissez la langue par défaut de votre application de manière appropriée dans le fichier source du manifeste de votre package d’application (le Package.appxmanifest fichier). La langue par défaut détermine la langue utilisée lorsque les langues préférées de l’utilisateur ne correspondent à aucune des langues prises en charge de votre application. Marquez toutes vos ressources avec leur langue (même celles de votre langue par défaut, par exemple \Assets\en-us\Logo.png) afin que le système puisse indiquer la langue dans laquelle la ressource se trouve et comment elle est utilisée dans des situations particulières.

Personnaliser vos images et d’autres ressources de fichiers pour la langue

Dans l’idéal, vous serez en mesure de globaliser vos images, c’est-à-dire de les rendre indépendantes de la culture. Pour toutes les images et autres ressources de fichier où ce n’est pas possible, créez autant de variantes différentes d’entre elles que vous en avez besoin et placez les qualificateurs de langue appropriés dans leur nom de fichier ou de dossier. Pour plus d’informations, consultez Personnaliser vos ressources pour la langue, l’échelle, le contraste élevé et d’autres qualificateurs.

Pour réduire les coûts de localisation, ne placez pas de texte ou de matériel sensible à la culture dans des images pour commencer. Une image appropriée dans votre propre culture peut être offensante ou mal interprétée dans d’autres cultures. Évitez d’utiliser des images spécifiques à la culture, telles que des boîtes aux lettres, qui ne sont pas courantes dans le monde entier. Évitez les symboles religieux, les animaux, les images politiques ou de genre. L’affichage de la chair, des parties du corps ou des mouvements de la main peut également être un sujet sensible. Si vous ne pouvez pas éviter tout cela, vos images devront être localisées de manière réfléchie. Si vous localisez du texte vers une langue dotée d’un sens de lecture différent du vôtre, l’utilisation d’images et d’effets symétriques facilite la prise en charge de la mise en miroir.

Évitez également l’utilisation de texte dans les images et de la parole dans les fichiers audio/vidéo.

Utilisation de la couleur dans votre application

Soyez attentif lors de l’utilisation de la couleur. L’utilisation de combinaisons de couleurs associées à des drapeaux nationaux ou à des mouvements politiques peut être problématique. Les choix de couleurs peuvent devoir être examinés par des experts de la culture. Il existe également des problèmes d’accessibilité liés à l’utilisation de la couleur. Si vous utilisez la couleur pour transmettre un sens, vous devez également transmettre ces mêmes informations par d’autres moyens, tels que la taille, la forme ou une étiquette.

Envisagez de factoriser vos chaînes en phrases

Utilisez des chaînes de taille appropriée. Les chaînes courtes sont plus faciles à traduire et elles permettent le recyclage de la traduction (ce qui permet d’économiser les dépenses, car la même chaîne n’est pas envoyée au localiseur plusieurs fois). En outre, les chaînes extrêmement longues peuvent ne pas être prises en charge par les outils de localisation.

Mais en tension avec cette ligne directrice est le risque de réutiliser une chaîne dans différents contextes. Même les mots simples tels que « on » et « off » peuvent être traduits différemment, selon le contexte. En anglais, « on » et « off » peuvent être utilisés pour activer et désactiver le mode Avion, la fonctionnalité Bluetooth et des appareils. En revanche, en italien, la traduction dépend du contexte de ce qui est activé et désactivé. Vous devez créer une paire de chaînes pour chaque contexte. Vous pouvez réutiliser des chaînes si les deux contextes sont identiques. Par exemple, vous pouvez réutiliser la chaîne « Volume » pour le volume des effets sonores et le volume de la musique, car les deux font référence à l’intensité sonore. Vous ne devez pas réutiliser la même chaîne pour faire référence au volume du disque dur, car le contexte et la signification sont différents, et le mot peut être traduit différemment.

De plus, une chaîne comme « text » ou « fax » peut être utilisée en tant que verbe ou substantif en anglais, ce qui peut compliquer le processus de traduction. Créez plutôt deux chaînes distinctes pour la forme verbale et la forme nominale. Lorsque vous n’êtes pas certain que les contextes sont les mêmes, ne prenez pas de risque et utilisez deux chaînes distinctes.

En bref, factoriser vos chaînes en morceaux qui fonctionnent dans tous les contextes. Dans certains cas, une chaîne doit être une phrase entière.

Considérez la chaîne suivante : « Impossible de {0} synchroniser le ».

Divers mots peuvent remplacer {0}, tels que « rendez-vous », « tâche » ou « document ». Bien que cet exemple fonctionne pour la langue anglaise, il ne fonctionnera pas dans tous les cas pour la phrase correspondante en allemand, par exemple. Remarquez que dans les phrases allemandes suivantes, certains mots dans la chaîne de modèle (« Der », « Die », « Das ») doivent correspondre au mot paramétré :

Anglais Allemand
The appointment could not be synchronized. Der Termin konnte nicht synchronisiert werden.
The task could not be synchronized. Die Aufgabe konnte nicht synchronisiert werden.
The document could not be synchronized. Das Dokument konnte nicht synchronisiert werden.

Comme autre exemple, considérez la phrase « Rappelez-moi en {0} minute(s) ». L’utilisation de « minute(s) » fonctionne pour la langue anglaise, mais d’autres langues peuvent utiliser des termes différents. Par exemple, le polonais utilise « minuta », « minuty » ou « minut » selon le contexte.

Pour résoudre ce problème, localisez la phrase entière, plutôt qu’un mot individuel. Cela peut paraître comme une charge de travail supplémentaire et une solution dépourvue d’élégance, mais il s’agit de la solution optimale pour les raisons suivantes :

  • Un message correct sur le plan grammatical s’affiche pour toutes les langues.
  • Votre traducteur n’aura pas besoin de vous demander par quoi les chaînes seront remplacées.
  • Vous n’aurez pas besoin d’implémenter un correctif de code onéreux lorsqu’un problème de ce type se révélera une fois votre application terminée.

Autres considérations pour les chaînes

Évitez les langages familiers et les métaphores dans les chaînes que vous créez dans votre langue par défaut. Une langue spécifique à un groupe démographique, comme la culture et l’âge, peut être difficile à comprendre ou à traduire, car seules les personnes de ce groupe démographique utilisent cette langue. De la même façon, les métaphores peuvent avoir un sens pour une personne, mais ne rien évoquer pour une autre. Par exemple, un « bluebird » signifie quelque chose de spécifique à ceux qui font partie de la culture du ski, mais ceux qui ne font pas partie de cette culture ne comprennent pas la référence.

N’utilisez pas de jargon, d’abréviations ni d’acronymes. Un langage technique aura moins de chances d’être compris d’un public non initié ou de personnes issues d’autres cultures ou régions et il sera difficile à traduire. Ce vocabulaire n’est pas utilisé dans les conversations de tous les jours. Le langage technique apparaît souvent dans les messages d’erreur pour identifier les problèmes matériels et logiciels, mais les chaînes doivent être techniques uniquement si l’utilisateur a besoin de ce niveau d’informations et peut l’action ou trouver quelqu’un qui le peut.

L’utilisation d’une voix ou d’un ton informel dans vos chaînes est un choix valide. Vous pouvez utiliser des commentaires dans votre fichier de ressources par défaut (.resw) pour indiquer cette intention.

Pseudo-localisation

Pseudo-localisez votre application pour découvrir les problèmes de localisation. La pseudo-localisation est une sorte de test de localisation à sec, ou de test de divulgation. Vous produisez un ensemble de ressources qui ne sont pas vraiment traduites; ils ne regardent que comme ça. Vos chaînes sont environ 40 % plus longues que dans la langue par défaut, par exemple, et elles contiennent des délimiteurs afin que vous puissiez voir en un coup d’œil si elles ont été tronquées dans l’interface utilisateur.

Points à prendre en considération pour le déploiement

Lorsque vous installez une application qui contient des données de langue localisées, vous pouvez constater que seule la langue par défaut est disponible pour l’application, même si vous avez initialement inclus des ressources pour plusieurs langues. En effet, le processus d’installation est optimisé pour installer uniquement les ressources linguistiques qui correspondent à la langue et à la culture actuelles de l’appareil. Par conséquent, si votre appareil est configuré pour en-US, seules les ressources linguistiques en-US sont installées avec votre application.

Notes

Il n’est pas possible d’installer une prise en charge linguistique supplémentaire pour votre application après l’installation initiale. Si vous modifiez la langue par défaut après l’installation d’une application, l’application continue d’utiliser uniquement les ressources de langue d’origine.

Si vous souhaitez vous assurer que toutes les ressources linguistiques sont disponibles après l’installation, créez un fichier de configuration pour le package d’application qui spécifie que certaines ressources sont requises pendant l’installation (y compris les ressources linguistiques). Cette fonctionnalité d’installation optimisée est automatiquement activée lorsque le fichier .appxbundle de votre application est généré pendant l’empaquetage. Pour plus d’informations, consultez Vérifier que les ressources sont installées sur un appareil, qu’un appareil en ait besoin ou non.

Si vous le souhaitez, pour vous assurer que toutes les ressources sont installées (pas seulement un sous-ensemble), vous pouvez désactiver la génération .appxbundle lorsque vous empaquetez votre application. Toutefois, cela n’est pas recommandé, car cela peut augmenter le temps d’installation de votre application.

Désactivez la génération automatique de .appxbundle en définissant l’attribut « Generate App Bundle » sur « never » :

  1. Dans Visual Studio, cliquez avec le bouton droit sur le nom du projet
  2. Sélectionnez Store ->Créer des packages d’application...
  3. Dans la boîte de dialogue Créer vos packages , sélectionnez Je souhaite créer des packages à charger dans le Microsoft Store à l’aide d’un nouveau nom d’application , puis cliquez sur Suivant.
  4. Dans la boîte de dialogue Sélectionner un nom d’application , sélectionnez/créez un nom d’application pour votre package.
  5. Dans la boîte de dialogue Sélectionner et configurer des packages , définissez Générer un bundle d’application sur Jamais.

Conscience géopolitique

Évitez toute infraction politique dans les cartes ou en faisant référence à des régions. Les cartes peuvent inclure des limites régionales ou nationales controversées, et elles sont une source fréquente d’offense politique. Veillez à ce que toute interface utilisateur utilisée pour sélectionner une nation la désigne comme un « pays/région ». L’inscription d’un territoire contesté dans une liste étiquetée « pays », par exemple dans un formulaire d’adresse, peut offenser certains utilisateurs.

Événements de modification de langue et de région

Abonnez-vous aux événements déclenchés lorsque les paramètres de langue et de région du système changent. Effectuez cette opération afin de pouvoir recharger des ressources, le cas échéant. Pour plus d’informations, consultez Mise à jour des chaînes en réponse aux événements de modification de valeur du qualificateur et Mise à jour des images en réponse aux événements de changement de valeur du qualificateur.

Assurez-vous que l’ordre des paramètres est correct lors de la mise en forme des chaînes

Ne partez pas du principe que toutes les langues expriment des paramètres dans le même ordre. Par exemple, considérez ce format.

    string.Format("Every {0} {1}", monthName, dayNumber); // For example, "Every April 1".

La chaîne de format de cet exemple fonctionne pour l’anglais (États-Unis). Mais il n’est pas approprié pour l’allemand (Allemagne), par exemple, où le jour et le mois sont affichés dans l’ordre inverse. Assurez-vous que le traducteur connaît l’intention de chacun des paramètres afin qu’il puisse inverser l’ordre des éléments de format dans la chaîne de format (par exemple, «{1}{0} ») en fonction de la langue cible.

Ne pas trop localiser

Soumettre uniquement le langage naturel aux traducteurs; ni le langage de programmation ni le balisage. Une <link> balise n’est pas un langage naturel. Considérez ces exemples.

Ne localisez pas cela Localisez-le
<conditions d’utilisation</lien de lien>> conditions d’utilisation
<lier>la politique de< confidentialité/lien> politique de confidentialité

L’inclusion de la <link> balise dans votre fichier de ressources (.resw) signifie qu’elle est également susceptible d’être traduite. Cela rend la balise non valide. Si vous avez de longues chaînes qui doivent inclure du balisage afin de conserver le contexte et de garantir l’ordre, indiquez clairement dans les commentaires ce qu’il ne faut pas traduire.

Choisir une approche de traduction appropriée

Une fois que les chaînes ont été séparées en fichiers de ressources, elles peuvent être traduites. Le moment idéal pour traduire des chaînes est après la finalisation de ces chaînes dans le projet, laquelle survient habituellement vers la fin d’un projet. Vous pouvez adopter des approches différentes du processus de traduction. Cela peut dépendre du volume des chaînes à traduire, le nombre de langues cibles et la manière dont la traduction sera réalisée (par exemple, en interne ou en faisant appel à un prestataire externe).

Envisagez ces options.

  • Les fichiers de ressources peuvent être traduits en étant ouverts directement dans le projet. Cette approche fonctionne bien pour un projet qui a un petit volume de chaînes qui doivent être traduites en deux ou trois langues. Elle est adaptée pour un scénario dans lequel un développeur parlerait plusieurs langues et accepterait de traiter le processus de traduction. Cette approche bénéficie d’être rapide, ne nécessite aucun outil et réduit le risque d’erreurs de traduction. Mais il n’est pas évolutif. En particulier, les ressources dans les différentes langues peuvent aisément se désynchroniser, ce qui peut entraîner de mauvaises expériences utilisateur et des difficultés de maintenance.
  • Les fichiers de ressources de type chaîne sont au format texte XML ou ResJSON et peuvent être confiés pour traduction à l’aide d’un éditeur de texte. Les fichiers traduits pourront alors être copiés en retour dans le projet. Cette approche présente un risque, car les traducteurs pourraient modifier accidentellement les balises XML. Cependant, elle permet le déroulement de la traduction en dehors du projet Microsoft Visual Studio. Cette approche pourrait bien fonctionner pour les projets devant être traduits vers un nombre réduit de langues. Le format XLIFF est un format XML spécifiquement conçu pour être utilisé en localisation et devrait être bien pris en charge par les prestataires de localisation et les outils de localisation. Vous pouvez utiliser le Kit de ressources pour application multilingue pour générer des fichiers XLIFF à partir d’autres fichiers de ressources, tels que les fichiers .resw ou .resjson.

Notes

La localisation peut également être nécessaire pour d’autres ressources, notamment les images et les fichiers audio.

Vous devez également tenir compte des éléments suivants :

  • Outils de localisation Un certain nombre d’outils de localisation sont disponibles pour analyser les fichiers de ressources et permettre aux traducteurs de modifier uniquement les chaînes pouvant être traduites. Cette approche réduit le risque qu’un traducteur modifie accidentellement les balises XML. Elle présente cependant l’inconvénient d’introduire un nouvel outil et un nouveau processus dans le processus de localisation. Un outil de localisation est utile pour les projets avec un grand volume de chaînes, mais un petit nombre de langues. Pour en savoir plus, voir Comment utiliser le Kit de ressources pour application multilingue.
  • Fournisseurs de localisation Envisagez d’utiliser un fournisseur de localisation si votre application contient des chaînes étendues qui doivent être traduites dans un grand nombre de langues. Un prestataire de localisation peut conseiller des outils et des processus, ainsi que traduire vos fichiers de ressources. Il s’agit d’une solution idéale, mais c’est aussi l’option la plus coûteuse et elle peut augmenter le délai de traitement de votre contenu traduit.

Maintenir la cohérence des clés d’accès et des étiquettes

La « synchronisation » des touches d’accès rapide utilisées dans les options d’accessibilité avec l’affichage des touches d’accès rapide localisées relève du défi, car les deux ressources de type chaîne sont classées dans deux sections distinctes. Veillez à fournir des commentaires pour la chaîne d’étiquette, par exemple : Make sure that the emphasized shortcut key is synchronized with the access key.

Prise en charge des furigana pour les chaînes japonaises qui peuvent être triées

Les caractères kanji japonais ont la propriété d’avoir plusieurs lectures (prononciation) selon le mot dans lequel ils sont utilisés. Cela génère des problèmes lorsque vous tentez de trier des objets nommés en japonais, tels que des noms d’applications, de fichiers, de chansons, etc. Les kanjis japonais ont, dans le passé, généralement été triés dans un ordre compréhensible par la machine appelé XJIS. Malheureusement, comme cet ordre de tri n’est pas phonétique, il n’est pas très utile pour les hommes.

Furigana contournait ce problème en permettant à l’utilisateur ou au créateur de spécifier la phonétique des caractères qu’il utilise. Si vous utilisez la procédure suivante pour ajouter furigana au nom de votre application, vous pouvez vous assurer qu’il est trié à l’emplacement approprié dans la liste des applications. Si le nom de votre application contient des caractères kanji et que furigana n’est pas fourni lorsque la langue de l’interface utilisateur ou l’ordre de tri est défini sur le japonais, Windows s’efforce de générer la prononciation appropriée. Toutefois, il est possible de classer les noms d’applications contenant des prononciations rares ou uniques sous une prononciation plus courante. Par conséquent, la meilleure pratique pour les applications japonaises (en particulier celles qui contiennent des caractères kanji dans leur nom) consiste à fournir une version furigana de leur nom d’application dans le cadre du processus de localisation japonais.

  1. Ajoutez « ms-resource:Appname » comme nom complet du package et nom complet de l’application.

  2. Créez un dossier ja-JP sous le dossier « strings » et ajoutez deux fichiers de ressources comme suit :

    strings\
        en-us\
        ja-jp\
            Resources.altform-msft-phonetic.resw
            Resources.resw
    
  3. Dans Resources.resw pour le dossier général ja-JP : ajoutez une ressource de type chaîne pour le nom d’application « 希蒼 ».

  4. Dans Resources.altform-msft-phonetic.resw pour les ressources furigana japonaises : Ajouter la valeur furigana pour AppName « のあ »

L’utilisateur peut rechercher le nom de l’application « 希蒼 » à l’aide de la valeur furigana « のあ » (noa) et de la valeur phonétique (à l’aide de la fonction GetPhonetic de l’éditeur de méthode d’entrée (IME)) « まれあお » (mare-ao).

Le classement suit le format de l’application Région du Panneau de configuration :

  • Sous les paramètres régionaux d’un utilisateur japonais,
    • Si furigana est activé, « 希蒼 » est trié sous « の ».
    • S’il manque furigana, « 希蒼 » est trié sous « ま ».
  • Sous les paramètres régionaux d’un utilisateur non japonais,
    • Si furigana est activé, « 希蒼 » est trié sous « の ».
    • S’il manque furigana, « 希蒼 » est trié sous « 漢字 ».

Exemples