Pour effectuer l’aller-retour des traductions d’une app Mac, exportez un catalogue de localisation Xcode, préservez sa structure plurielle et ses associations d’arguments, puis importez et testez le package retourné. Ce guide utilise un libellé de sélection fictif pour montrer précisément quoi transmettre et quoi vérifier.
Cette tâche s’adresse à une personne qui prépare les éléments à remettre aux traducteurs dans Xcode sur un Mac : envoyer un message dépendant d’un décompte à traduire et le récupérer en préservant son comportement. Le libellé d’exemple est Selected 3 tiles in 2 groups. Les deux décomptes peuvent varier indépendamment ; les éléments remis doivent donc préserver plus que le texte lisible.
Définir le contrat du message avant l’exportation
Considérez le contrat du message comme une courte spécification : quelle entrée l’app recherche, quelles valeurs d’exécution elle fournit et quelles valeurs déterminent les variations grammaticales. Apple indique que String.LocalizationValue prend en charge les chaînes localisables avec interpolation, y compris les valeurs fournies à l’exécution. Sa documentation décrit également l’utilisation d’une clé statique et d’une valeur par défaut distincte lorsque l’identifiant doit différer du texte source affiché. String.LocalizationValue
Pour cet exemple détaillé, consignez le contrat suivant avec la demande de traduction. Il s’agit d’exigences illustratives pour le libellé fictif, et non d’un format de fichier Apple.
| Élément du contrat | Exigence pour cet exemple |
|---|---|
| Fonction du message | Résumer la sélection actuelle |
| Texte source anglais | Selected 3 tiles in 2 groups. avec les deux nombres fournis à l’exécution |
| Argument 1 | Nombre de tuiles ; détermine la forme de tile |
| Argument 2 | Nombre de groupes ; détermine la forme de group |
| Représentation numérique | Conserver le type et le spécificateur de format enregistrés par Xcode pour chaque argument |
| Liberté de traduction | Réorganiser la phrase tout en préservant le sens de chaque argument |
| Comportement requis | Chaque nom s’accorde avec son propre décompte |
Consignez aussi le catalogue, la table et la clé réels du projet. N’inventez pas de clé de remplacement pendant la traduction. Le guide de préparation d’Apple explique que les API localisables alimentent les catalogues lors d’une compilation et que le paramètre table ou tableName sélectionne le catalogue. Il prend également en charge les commentaires qui précisent le contexte de la chaîne. Preparing your app’s text for translation
Un commentaire fictif utile serait : Résumé de la sélection. L’argument 1 correspond au nombre de tuiles sélectionnées. L’argument 2 correspond au nombre de groupes contenant ces tuiles. Les deux décomptes varient indépendamment. Associez chaque décompte au nom correspondant. Cela donne au traducteur assez d’informations pour distinguer deux arguments, même s’ils ont le même type numérique.
Préparer des variations plurielles indépendantes dans le catalogue
Commencez par le message dans la source localisable de l’app, puis compilez le projet. Dans l’éditeur de catalogue de chaînes, faites un clic droit sur la clé concernée et choisissez Vary by Plural. Apple indique que Xcode détermine le spécificateur de format de l’interpolation, ajoute les formes plurielles de la langue et remplit initialement les champs des variantes avec la valeur existante. Ces valeurs préremplies doivent tout de même être modifiées. Localizing and varying text with a string catalog
Pour le texte source anglais, les résultats affichés attendus comprennent Selected 1 tile in 1 group., Selected 3 tiles in 1 group. et Selected 1 tile in 2 groups. Un seul choix fondé uniquement sur le nombre de tuiles ne peut pas produire correctement toutes les combinaisons.
La démonstration des catalogues de chaînes d’Apple montre qu’il est possible de faire varier plusieurs arguments au moyen de substitutions. Chaque substitution contient des cas pluriels, et son inspecteur indique la position de l’argument ainsi que le spécificateur de format C. À l’exécution, les substitutions sélectionnées sont combinées au message qui les entoure. Discover String Catalogs
Utilisez ce mécanisme pour les deux décomptes indépendants. Placez les mots qui doivent s’accorder avec un décompte dans la variation correspondante, au lieu de laisser un nom au pluriel fixe dans le reste de la phrase. Donnez des noms explicites aux substitutions si l’éditeur le permet, puis vérifiez leurs associations : la substitution des tuiles doit toujours utiliser l’argument 1, et celle des groupes l’argument 2.
N’exigez pas que chaque localisation cible reproduise l’inventaire des formes anglaises. Apple indique que Xcode ajoute des variations plurielles propres à chaque langue. Ajouter une variation dans la localisation source la propage aux traductions ; l’ajouter uniquement dans une autre localisation ne modifie que celle-ci. Examinez les branches cibles réelles avant l’exportation. Localizing and varying text with a string catalog
Préserver l’identité des arguments quand l’ordre des mots change
La position d’un espace réservé dans la phrase et son numéro d’argument ont des fonctions différentes. Le traducteur peut avoir besoin de placer le décompte des groupes avant celui des tuiles, sans changer l’ordre dans lequel l’app fournit ces valeurs.
La référence d’Apple aux spécificateurs de format décrit la notation positionnelle utilisant n$. Par exemple, %1$lld désigne l’argument 1 avec une conversion d’entier long long, tandis que %2$lld désigne l’argument 2 avec cette conversion. %d indique une représentation entière différente ; ce n’est pas une forme abrégée de %lld. Cette référence est une documentation archivée : utilisez-la pour ces règles de formatage établies, en complément du flux de travail actuel des catalogues. String Format Specifiers
Considérez le fragment de format illustratif Groups: %2$lld; tiles: %1$lld. Avec l’argument 1 égal à 3 et l’argument 2 égal à 2, le résultat attendu est Groups: 2; tiles: 3. Ce fragment illustre uniquement l’ordre des arguments ; il ne gère pas la sélection grammaticale du pluriel et ne doit pas remplacer les substitutions du catalogue.
Vérifiez les espaces réservés selon leur sens, leur indice et leur type. Vérifier uniquement que deux signes pour cent sont toujours présents ne permettrait pas de repérer des décomptes intervertis. Vérifier uniquement les types ne permettrait pas non plus de détecter l’inversion, puisque les deux valeurs sont des entiers. À l’inverse, modifier l’ordre des arguments de l’app pour l’adapter à une seule traduction changerait le contrat pour toutes les autres traductions utilisant cette entrée.
Dans les consignes de remise, demandez au traducteur de préserver les associations d’arguments et les types de formatage exportés tout en adaptant la formulation. Toute modification structurelle d’une substitution doit être explicitement vérifiée par rapport au contrat. Modifier l’ordre des mots peut être tout à fait approprié.
Exporter un package que le traducteur pourra retourner
Avant l’exportation, activez le réglage de compilation du projet Use Compiler to Extract Swift Strings afin d’inclure les chaînes localisables Swift. Sélectionnez le projet dans le navigateur de projets, choisissez Product > Export Localizations, sélectionnez les localisations requises et la destination, puis exportez. Apple documente ces étapes et le package .xcloc obtenu. Exporting localizations
Les deux extensions de catalogue ont des fonctions distinctes. Le fichier .xcstrings du projet contient son catalogue de chaînes. Le package .xcloc exporté sert de support de remise au traducteur ; son dossier Localized Contents contient le fichier XLIFF, et son dossier Notes peut contenir des textes complémentaires. Envoyez le package avec la note du contrat au lieu de réduire le message à une liste de phrases visibles en deux colonnes. Exporting localizations
Vérifiez que l’outil de traduction prend en charge les variations des catalogues de chaînes dans XLIFF. Apple explique que les identifiants de variation issus d’un catalogue encodent la clé de la chaîne et la configuration des variations, et documente le réglage Localization Prefers String Catalogs pour cette représentation d’exportation. Ces structures doivent être préservées lors du retour. Discover String Catalogs
Utilisez cette liste de vérification pratique pour les éléments remis. Il s’agit d’une recommandation de flux de travail fondée sur la structure documentée du package et le contrat de l’exemple.
- Retournez le package
.xcloctraduit avec ses ressources pertinentes intactes. - Préservez les identifiants des messages et les chemins de variation, sauf si une modification structurelle intentionnelle est documentée.
- Fournissez le texte cible pour les branches plurielles requises par la localisation cible.
- Préservez l’identité des arguments, les types numériques et les associations des substitutions.
- Signalez toute modification de la source reçue après l’exportation afin qu’elle puisse être prise en compte avant l’importation.
Si l’outil du traducteur ne peut pas préserver les entrées à variations, utilisez Xcode pour modifier la localisation exportée ou saisir les traductions dans le catalogue du projet. Apple documente la modification des cibles XLIFF et des catalogues de chaînes dans Xcode ; les exportations suivantes incluent les modifications du catalogue. Un échange de texte brut laisse à quelqu’un le soin de reconstruire la structure des variations. Editing XLIFF and string catalog files
Importer le retour et examiner les différences réelles
Conservez l’exportation d’origine pour la comparer. Lorsque le package traduit revient, sélectionnez le projet et choisissez Product > Import Localizations. Sélectionnez le dossier du catalogue de localisation Xcode. Dans l’interface d’importation, examinez les avertissements et les erreurs dans Issues View, puis les modifications dans File View avant de terminer l’importation. Apple précise que l’éditeur de comparaison affiche la version importée à gauche et la version actuelle du projet à droite. Importing localizations
Pour les chaînes issues du catalogue, Apple indique que les traductions sont réimportées dans le catalogue de chaînes approprié. Après l’importation, rouvrez l’entrée du résumé de la sélection et vérifiez les deux substitutions, leurs associations d’arguments et leurs branches cibles. Discover String Catalogs
Si quelque chose semble incorrect, suivez une séquence de diagnostic ciblée. Si une entrée est absente, comparez sa table et sa clé à celles de l’exportation d’origine. Si des variantes plurielles manquent, comparez la structure des variations retournée. Si les décomptes apparaissent à côté des mauvais noms, comparez les associations d’arguments. Si une seule combinaison est incorrecte, examinez le texte de cette branche avant de modifier le code de l’app. Cette séquence suit les dépendances de l’exemple ; elle ne signifie pas que Xcode détecte automatiquement toutes les violations du contrat.
Tester des décomptes différents pour repérer les arguments intervertis
Une importation réussie confirme que Xcode a accepté les éléments remis. L’exemple nécessite toutefois des vérifications de comportement. Utilisez les données de test de l’app ou une configuration de développement pour afficher les combinaisons suivantes. Ces phrases attendues illustrent le contrat du texte source anglais ; la formulation et la sélection des branches doivent respecter la localisation cible.
| Nombre de tuiles | Nombre de groupes | Résultat attendu du texte source anglais | Ce que cela permet de repérer |
|---|---|---|---|
| 1 | 1 | Selected 1 tile in 1 group. |
Les deux formes singulières |
| 3 | 1 | Selected 3 tiles in 1 group. |
Variation indépendante des tuiles |
| 1 | 2 | Selected 1 tile in 2 groups. |
Variation indépendante des groupes |
| 3 | 2 | Selected 3 tiles in 2 groups. |
Valeurs différentes qui révèlent une inversion des arguments |
Ajoutez un test avec zéro si l’app peut afficher une sélection vide. Choisissez aussi des valeurs qui couvrent toutes les catégories plurielles requises par chaque localisation cible. Les quatre lignes ci-dessus couvrent les combinaisons singulier/pluriel de l’anglais, mais pas toutes les branches possibles de chaque langue cible.
Pour lancer l’app Mac dans une localisation cible, choisissez Product > Scheme > Edit Scheme, sélectionnez Run et ouvrez Options. Définissez App Language et, si nécessaire, App Region, fermez l’éditeur, sélectionnez la destination d’exécution Mac, puis lancez l’app. Apple documente ce flux de test fondé sur le schéma. Testing localizations when running your app
Lisez le message affiché et vérifiez qu’il tient dans l’interface de bureau. Si les décomptes restent associés aux bons noms, que chaque branche requise fonctionne correctement et que la structure retournée correspond au contrat prévu, l’aller-retour de la traduction a préservé le comportement nécessaire à ce libellé. Conservez la note du contrat avec les éléments remis afin de pouvoir vérifier la prochaine modification de formulation à partir des mêmes exigences explicites.
Sources
- String.LocalizationValue — Apple
- Preparing your app’s text for translation — Apple
- Localizing and varying text with a string catalog — Apple
- Discover String Catalogs — Apple
- String Format Specifiers — Apple
- Exporting localizations — Apple
- Editing XLIFF and string catalog files — Apple
- Importing localizations — Apple
- Testing localizations when running your app — Apple