Pour repérer une traduction obsolète qui apparaît toujours comme traduite, suivez le message source modifié jusqu’à son entrée dans le catalogue de chaînes, reconstruisez le projet et comparez les formulations. Une simple coche verte ne permet pas de résoudre une divergence que vous avez déjà identifiée.
Ce processus s’adresse aux personnes qui assurent la maintenance d’une app Mac dans Xcode avec un catalogue .xcstrings existant. Il s’agit d’identifier les traductions à vérifier après une modification du texte source en anglais, de conserver les formulations existantes utiles et de vérifier le message corrigé dans l’app en cours d’exécution.
Que devrait-il se passer lorsqu’un message source change ?
Apple indique que la modification d’une chaîne source signale ses traductions comme devant être vérifiées. Les états du catalogue distinguent les chaînes non traduites (New), celles qui nécessitent une vérification (Needs Review) et les chaînes traduites, marquées d’une coche verte. L’état distinct Stale signifie que Xcode n’a plus trouvé dans le code une chaîne précédemment traduite. Découvrir les catalogues de chaînes
Cette terminologie est importante pour diagnostiquer le problème. Une traduction obsolète d’un message toujours utilisé par votre app doit être vérifiée. En recherchant uniquement l’état Stale du catalogue, vous risquez de passer à côté.
Le comportement documenté par Apple en cas de modification de la source permet de savoir à quoi s’attendre, mais n’explique pas pourquoi une entrée donnée a conservé son statut traduit. Dans ce cas, examinez le lien entre la source modifiée et le catalogue avant de considérer la coche comme une preuve suffisante que la formulation est à jour.
Repérer le message exact avant de vérifier les traductions
Commencez par un seul message modifié. Notez son ancienne formulation anglaise, sa formulation actuelle, sa clé de recherche si elle est distincte et le nom du catalogue. Cette petite fiche comparative est un outil de diagnostic recommandé, et non une fonctionnalité de Xcode. Elle vous donne un point de repère concret lorsque plusieurs entrées se ressemblent.
Par exemple, supposons qu’un bouton d’application de bureau affichait auparavant Open item et affiche maintenant Open selected items. Il faut vérifier si chaque traduction décrit toujours l’ouverture de la sélection actuelle, qui peut contenir plusieurs éléments. Repérer simplement une traduction du mot Open ne répondrait pas à cette question.
Distinguer la clé de recherche de la formulation affichée
Swift prend en charge une clé de recherche statique explicite distincte d’un defaultValue. Cette valeur par défaut est généralement le texte dans la langue de développement et est utilisée lorsque la recherche échoue. Un comment fournit du contexte à la personne qui traduit. Si aucune table n’est spécifiée, la recherche utilise Localizable ; si aucun bundle n’est spécifié, elle parcourt le bundle principal de l’app. Initialiseur de chaîne à clé explicite de Swift
Utilisez cette fiche de message illustrative pour distinguer ces éléments. Il s’agit de valeurs fictives, et non d’un fichier de catalogue ou d’un programme exécutable.
| Élément | Avant la modification | Après la modification |
|---|---|---|
| Clé de recherche | selection.open |
selection.open |
| Valeur source anglaise | Open item |
Open selected items |
| Contexte pour la personne qui traduit | Button that opens one item |
Button that opens every item in the current selection |
| Table du catalogue | Localizable |
Localizable |
Ici, l’identifiant reste le même alors que le message change. Un audit qui compare uniquement les noms de clés ne repérerait pas cette modification. Comparez également la valeur source et le contexte.
Certains appels de localisation Swift utilisent plutôt le texte dans la langue de développement comme clé. Apple indique que String.LocalizationValue prend en charge ce modèle, y compris l’interpolation. Dans ce cas, modifier la formulation peut aussi modifier la clé de recherche ; vérifiez donc les anciennes et les nouvelles entrées au lieu de supposer que la traduction reste rattachée à un identifiant unique. String.LocalizationValue
Reconstruire le projet et examiner l’emplacement source
Dans Xcode, choisissez Product > Build, puis sélectionnez le catalogue concerné dans le navigateur de projet. Apple indique que les compilations mettent à jour les catalogues avec les modifications apportées aux chaînes localisables du code. Choisissez Editor > Assistant et sélectionnez la clé pour examiner son emplacement source. Localiser et adapter le texte avec un catalogue de chaînes
Comparez le texte source du catalogue avec la modification souhaitée. Si le catalogue contient toujours Open item, commencez par déterminer pourquoi la nouvelle source n’a pas été répercutée dans cette entrée. Vérifier une traduction cible par rapport à l’ancienne source ne résoudrait pas le problème initial.
Vérifiez la table et le bundle utilisés dans l’appel de localisation, surtout si le projet contient plusieurs catalogues ou modules. Apple indique qu’il est possible de transmettre un nom de table pour sélectionner un catalogue ainsi qu’un bundle approprié pour les chaînes situées hors du bundle principal de l’app. Apple recommande également d’utiliser les API de localisation afin que Xcode puisse repérer le texte destiné à l’utilisateur. Préparer le texte de votre app pour la traduction
Pour une entrée gérée manuellement, inspectez et modifiez directement sa source : Apple indique que la synchronisation lors de la compilation ne met pas à jour les chaînes gérées manuellement et ne les supprime pas. Ne vous attendez pas à ce qu’une simple reconstruction du projet l’actualise. Découvrir les catalogues de chaînes
Comparer le sens à l’aide d’un tableau de décision pour les modifications de la source
Une fois la source actuelle présente, sélectionnez chaque langue cible et examinez l’entrée concernée. Xcode permet de filtrer le texte et de trier par état, ce qui peut aider à repérer les éléments à vérifier. Examinez aussi le message modifié, même si son statut indique toujours qu’il est traduit. Découvrir les catalogues de chaînes
L’aide à la décision suivante repose sur une comparaison du sens du message, et non sur une évaluation automatique de la traduction. Les formulations anglaises sont des exemples fictifs. Elle permet de préciser ce qu’il faut demander à la personne chargée de la traduction, sans supposer que chaque modification de la source exige une nouvelle formulation dans la langue cible.
| Exemple de modification de la source | Points à examiner | Décision de vérification |
|---|---|---|
Open item → Open selected items |
Portée de la sélection et sens du singulier ou du pluriel | Vérifiez si la traduction décrit toujours l’action dans son intégralité. |
Show details → Hide details |
Sens de l’action | Vérifiez que l’action traduite a été modifiée en conséquence. |
Items → Items: |
Ponctuation et emplacement du libellé | Conservez la formulation uniquement si elle reste appropriée dans son contexte. |
Open reste Open, mais son emploi change |
Le libellé désigne-t-il maintenant une autre action ? | Vérifiez le contexte, même si le texte source est identique. |
Pour chaque cas à vérifier, comparez trois éléments : le sens de l’ancien message, celui du message actuel et ce que communique la traduction maintenant. Une différence visible dans la source justifie de vérifier la traduction, mais ne prouve pas à elle seule que sa formulation doit changer.
Les changements de contexte seuls méritent une vérification explicite. Apple indique que les commentaires servent de consignes aux personnes qui traduisent, mais la documentation consultée n’établit pas que chaque modification de commentaire invalide automatiquement les traductions existantes. Si un libellé anglais inchangé prend un autre sens, ajoutez-le vous-même à la liste des éléments à vérifier. Préparer le texte de votre app pour la traduction
Si le message contient un nombre ou une variante propre à un appareil, développez ces variantes au lieu de n’examiner que la ligne parente. Apple indique que les catalogues prennent en charge les variantes plurielles et celles propres aux appareils. En anglais, un nombre peut nécessiter 1 item et 2 items ; vérifiez les formes applicables dans chaque langue cible au lieu de reproduire mécaniquement la grammaire anglaise. Localiser et adapter le texte avec un catalogue de chaînes
Résoudre le problème sans perdre les traductions utiles
Utilisez le menu contextuel de l’entrée pour signaler qu’une traduction douteuse doit être vérifiée. Si la formulation existante a été vérifiée et reste appropriée, choisissez Mark as Reviewed ; sinon, mettez à jour la traduction. Ces actions de vérification sont décrites dans le guide pas à pas d’Apple sur les catalogues de chaînes. Découvrir les catalogues de chaînes
Conservez la formulation existante pendant que vous la comparez à la source modifiée. Effacer les traductions uniquement pour réduire les ambiguïtés supprime des éléments de comparaison utiles. De même, évitez de supprimer une entrée au seul motif que sa traduction est obsolète : commencez par vérifier si l’app utilise toujours sa clé.
Pour l’exemple fictif de la sélection, une demande claire à la personne chargée de la traduction inclurait la clé selection.open, la modification de Open item en Open selected items et l’explication que le bouton ouvre tous les éléments sélectionnés. La personne dispose ainsi d’une action et d’une portée précises à évaluer.
Il y a ici une limite pratique : la documentation Apple consultée pour ce processus ne décrit aucune commande rétrospective permettant de reconstituer toutes les modifications antérieures de la source qui auraient échappé aux entrées traduites. Si l’ancienne formulation n’est plus disponible, vous pouvez comparer la source actuelle à la traduction actuelle, mais vous ne pouvez pas établir précisément quand la divergence est apparue. Si la comparaison avant-après est importante, utilisez une ancienne révision du projet ou une copie source enregistrée, si elle est disponible.
Vérifier le message corrigé dans l’app Mac
Après la modification, testez l’interface réelle. Choisissez Product > Scheme > Edit Scheme, sélectionnez Run, ouvrez Options, puis choisissez la langue cible sous App Language. Fermez la boîte de dialogue, sélectionnez la destination d’exécution Mac et lancez l’app. Apple décrit ce test de localisation effectué depuis le schéma. Tester les localisations lors de l’exécution de votre app
Revenez à l’élément d’interface à l’origine de la vérification. Pour Open selected items, essayez une sélection unique, puis une sélection multiple. Vérifiez si le libellé décrit l’action dans les deux cas et si le texte affiché correspond à l’entrée du catalogue que vous avez modifiée. Une divergence à ce stade indique qu’il faut réexaminer la clé de recherche, la table, le bundle ou la variante applicable.
Terminez en indiquant clairement, pour chaque langue concernée, l’une des conclusions suivantes : la formulation existante reste appropriée, la traduction a été mise à jour ou la vérification est toujours en cours. Vous clôturez ainsi la tâche en tenant compte du message modifié et de son comportement dans l’interface, l’état du catalogue venant étayer cette décision.
Sources
- Localiser et adapter le texte avec un catalogue de chaînes — Apple
- Découvrir les catalogues de chaînes — Apple
- init(localized:defaultValue:table:bundle:locale:comment:) — Apple
- String.LocalizationValue — Apple
- Préparer le texte de votre app pour la traduction — Apple
- Tester les localisations lors de l’exécution de votre app — Apple