Comparer un message ICU à sa traduction

Collez le message source et sa traduction pour comparer leur structure. Vérifiez ensuite les messages avec la bibliothèque ICU ou i18n de votre application.

Fonctionne localement dans votre navigateur
Les messages sont entièrement analysés dans ce navigateur. Ils ne sont pas téléversés, traduits ou stockés par KivTools.
Message ICU source
Traduction du message ICU
Rapport de compatibilité des messages
Arguments sources
Arguments de traduction
Problèmes
  • INFOCollez les deux messages, puis exécutez la vérification de compatibilité locale.

Détectez les erreurs du contrat de traduction avant le rendu

Le vérificateur valide les structures pratiques ICU MessageFormat, y compris les arguments imbriqués, les branches sélectionnées, les solutions de secours plurielles/sélectives et la parité des espaces réservés. Il s'agit d'une aide à la révision, et non d'un remplacement pour le rendu des messages avec votre bibliothèque de production i18n.

Comparer deux messages ICU

Collez le message d’origine dans « Message ICU de source » et sa traduction dans « Message ICU de traduction ». Les deux chaînes sont lues comme des messages ICU MessageFormat, leur structure est comparée, et chaque constat s’affiche sur sa propre ligne, préfixée OK, CHECK ou ERROR.

Les trois compteurs au-dessus de la liste indiquent combien d’arguments chaque message déclare et combien de constats ont été relevés. Tout est analysé dans ce navigateur : rien n’est téléversé et la page continue de fonctionner hors ligne une fois chargée.

  1. Collez le message d’origine dans le champ de gauche et la traduction dans celui de droite, ou cliquez sur « Charger un exemple » pour partir d’un couple qui fonctionne.
  2. Cliquez sur « Vérifier les messages ». Un couple compatible donne une seule ligne OK ; toute autre différence devient une ligne CHECK ou ERROR.
  3. Lisez le rapport : ERROR signale un contrat rompu — un argument ou une branche other perdu par la traduction, ou un message illisible ; CHECK signale une différence à examiner, comme un argument en trop, un type différent ou une branche select présente d’un seul côté.
  4. Cliquez sur « Copier le rapport » pour récupérer les constats en texte brut, ou sur « Effacer » pour vider les deux champs et recommencer.
  5. Rendu final : vérifiez les messages avec la bibliothèque ICU ou i18n de votre production, car cette page compare la structure et non le texte traduit.

Ce que le vérificateur compare et ce qu’il laisse de côté

Ce qui est comparé

Les arguments sont appariés par nom entre les deux messages. Un argument présent uniquement dans la source est un ERROR, un argument présent uniquement dans la traduction est un CHECK, et si le même nom porte un type différent — plural d’un côté, number de l’autre — le rapport émet un CHECK en nommant les deux types.

Pour les arguments select, les clés de branche sont comparées une à une : une branche perdue ou ajoutée dans la traduction est signalée avec son nom. Les arguments plural et selectordinal doivent conserver une branche other, dont l’absence est un ERROR attribué au côté qui l’a perdue. Les messages imbriqués dans une branche sont analysés récursivement, leurs arguments sont donc comptés aussi.

Ce qui n’est pas comparé

Les branches plural et selectordinal ne sont pas comparées une à une : une source avec one/other face à une traduction qui n’a que other est déclarée compatible. Le vérificateur ne lit pas non plus le texte traduit, ne contrôle pas les catégories de pluriel exigées par la langue cible (few, many…), et ne rend pas le message avec des valeurs.

Un rapport vert signifie donc seulement que les deux messages déclarent les mêmes arguments et les mêmes branches select. Rendez les deux avec votre bibliothèque de production avant publication, en tenant compte des règles de pluriel de la langue cible.

Syntaxe acceptée

L’analyseur lit les arguments {name}, les arguments plural, selectordinal et select avec leurs branches, offset:N dans un en-tête plural, les messages imbriqués, le marqueur # dans les branches plural, et l’apostrophe : deux apostrophes représentent une apostrophe littérale, une seule ouvre et ferme un texte protégé. Les types number, date ou time sont enregistrés par leur nom, un squelette comme {value, number, ::percent} est donc accepté.

Un message illisible interrompt l’analyse par un ERROR au lieu d’un rapport : une { non fermée, une } sans partenaire, une apostrophe non fermée, un nom d’argument qui ne commence pas par une lettre ou un souligné, ou une branche non suivie de son bloc { … }.

Outils récents :