Le Globalisation Le contrôle qualité vérifie que le projet internationalisé reste opérationnel dans toutes les langues. Il s'exécute lors de la validation des tâches et des demandes de fusion, et analyse uniquement ce qu'une modification a touché :
- Catalogues. Les chaînes de caractères ajoutées ou modifiées par la modification, dans toutes les langues.
- Code. Les lignes ajoutées par la modification, pour du texte et une mise en forme qui supposent une seule langue ou une seule culture.
- Pages. Lorsque le projet définit comment démarrer son application, ses pages sont affichées avec une pseudo-traduction.
L'assistant active cette vérification par défaut dès que son pull request est fusionné. Ses paramètres se trouvent dans Contrôle qualité → Globalisation; l'interface de travail Paramètres indique si elle est activée.
Ce qui bloque par défaut
Une modification est renvoyée pour correction si des chaînes de caractères manquent ou sont corrompues, ou si le code ajouté insère directement le texte lu par les utilisateurs dans le code ou assemble une phrase à partir de parties. Tout le reste est signalé comme constatation sans bloquer quoi que ce soit tant que vous ne choisissez pas de le faire. Les constatations relatives à la mise en forme, au tri et à la disposition restent signalées jusqu'à ce qu'un projet les ait constatées dans son propre code.
Choisissez ce qui doit bloquer sous Contrôle qualité → Globalisation: les codes de catalogue, Ce qui dans le code renvoie une modification en arrière, et Problèmes de page qui renvoient une modification pour correction. Vérifier le code source et Afficher les pages désactive les étapes liées au code et aux pages.
Codes de catalogue
| Code | Signification | Bloque par défaut |
|---|---|---|
missing | La chaîne de caractères n'a pas de traduction | Oui |
invalid_syntax | La traduction ne peut pas être analysée, par exemple à cause d'une erreur ICU ou d'un défaut de modèle : une phrase tronquée, une ponctuation non fermée, une guillemet non clos ou un mot doublé. | Oui |
placeholder_mismatch | Les placeholders ou termes protégés diffèrent de la source, par exemple un nom de produit écrit deux fois. | Oui |
plural_categories | Une forme plurielle requise par la langue est absente. | Oui |
stale | La source a changé après la traduction de la chaîne. | Non |
obsolete | La source ne contient plus la chaîne, ni la page sur laquelle elle figurait. | Non |
Le glossaire, les règles de longueur et de termes interdits affichent leurs propres codes lorsque votre fichier de configuration les définit.
La traduction supprime les chaînes obsolètes de toutes les langues et efface les traductions d'une page dont la source a disparu. Elle ne supprime que les fichiers Coroid traduits, jamais une page existant dans une seule langue.
Codes de code
| Code | Ce qu'il détecte | Bloque par défaut |
|---|---|---|
hardcoded_text | Le texte lu par les personnes, inséré dans le code au lieu du catalogue : le texte JSX et les modèles, les attributs visibles comme placeholder, title, alt et aria-label, les messages toast et alertes | Oui |
concatenated_text | Une phrase assemblée à partir de parties : une traduction combinée avec du texte ou une valeur via +, une chaîne de modèle ou des éléments voisins | Oui |
locale_number | Un nombre formaté sans tenir compte de la locale du lecteur, comme toFixed dans le code de l'interface utilisateur ou toLocaleString() sans locale | Non |
locale_date | Une date ou une heure formatée sans tenir compte de la locale du lecteur, ou avec un modèle fixe comme MM/dd/yyyy | Non |
hardcoded_currency | Un symbole ou un code monétaire placé à côté d'un montant. | Non |
ordinal_sort | Du texte trié ou comparé selon le code des caractères, ou localeCompare sans locale | Non |
case_mapping | toUpperCase() ou toLowerCase() sur du texte sans locale | Non |
physical_direction | Gauche et droite dans les classes CSS et utilitaires, dans un projet utilisant une langue écrite de droite à gauche. | Non |
postal_code_format | Un code postal validé selon le modèle d'un pays. | Non |
phone_number_format | Un numéro de téléphone validé comme étant nord-américain. | Non |
latin_only_input | Un nom, une ville, une rue ou une adresse limités aux caractères a-z. | Non |
joined_list | Une liste de personnes affichée avec une virgule ou le mot « et ». | Non |
calendar_names | Les noms de jours ou de mois écrits dans le code, ou un premier jour de semaine fixe. | Non |
paper_size | Lettre, format A4 et autres éléments fixés dans les paramètres d'impression ou de PDF. | Non |
fixed_unit | Une unité comme mi, lb ou °F placée à côté d'un nombre affiché. | Non |
locale_parsing | Un nombre saisi par une personne, lu avec parseFloat ou Number | Non |
ime_composition | La saisie gérée dans un champ de texte sans vérifier si un mot chinois, japonais ou coréen est encore en cours de composition. | Non |
Conception adaptée à tous les marchés affiche la correction pour chacun.
Ce que lit la vérification
L'étape de traitement du code analyse le JavaScript et le TypeScript, y compris JSX, ainsi que les modèles Vue, Svelte, Astro, HTML, ERB et Handlebars, ainsi que le CSS en tant que texte. Une règle ne s'applique que là où son contexte l'indique : un motif de code postal n'est signalé qu'à côté d'un champ de code postal, et une liste jointe n'est détectée que là où les utilisateurs la lisent.
- Traduit par définition. Le texte situé dans les appels de traduction et les composants du projet (
t(),formatMessage,<Trans>,<FormattedMessage>,$t()) ainsi que les fonctions répertoriées dans le fichier de configuration. - Jamais de texte. Termes protégés et mots autorisés par le fichier de configuration.
- Omis volontairement. Une ligne contenant un
i18n-ignorecommentaire, ainsi que la ligne qui suit. Indiquez la raison :// i18n-ignore: product name.
La section optionnelle world de .coroid/i18n.json définit le reste :
{
"world": {
"exclude": ["src/legacy/**", "scripts/**"],
"translate": ["translateText", "i18n.translate"],
"allow": ["Storefront", "OK"]
}
}| Champ | Signification |
|---|---|
exclude | Fichiers ignorés par les règles |
translate | Fonctions de traduction autres que celles fournies par les frameworks |
allow | Les mots qui ne sont jamais traduits, à l'exception des termes protégés |
formatter, currencies | Défini à l’étape Culture de l’assistant ; voir Culture |
render | Comment démarrer l’application pour les pages pseudo-localisées ; voir Pseudo-Localisation |
Constatations et corrections
Chaque constatation est enregistrée lors de l'exécution de la vérification et répertoriée dans la tâche concernée Problèmes détectés: les constatations de catalogue sont classées par catalogue, clé et langue ; les constatations de code par fichier, ligne et texte détecté ; les constatations de page par page, élément et texte. Une constatation est considérée comme corrigée lorsque la dernière vérification du même travail ne la mentionne plus.
- Ouvrirui · checkout.total · fr: missingMondialisation · Non traduit
- En cours de correctionsrc/pricing.tsx:7 · “Tarification simple”Mondialisation · Texte inséré directement dans le code
- Ouvrir/{locale}/ · p#promo · “Livraison gratuite pour toute commande” · runtime_text (de-DE, ar-SA)Mondialisation · Texte non issu du catalogue
- En cours de correctionui · cart.items · ja: placeholder_mismatchMondialisation · Les espaces réservés diffèrent de la source
- Corrigéui · cart.count · ar: plural_categoriesMondialisation · Formes plurielles absentes pour cette locale
Résultats de qualité de la vérification Globalisation : chaînes de caractères du catalogue, modification de code ajoutée et page pseudo-localisée, un code de problème par constatation. Données illustratives.
Dans les demandes de fusion, les constatations de code apparaissent également sous forme d'annotations sur les lignes modifiées : une erreur si elles bloquent le processus, un avertissement si elles ne font que signaler un problème.
Lorsque la vérification bloque une tâche, l'agent développeur reçoit chaque constatation bloquante, telle que src/pricing.tsx:7 hardcoded_text: “Simple pricing”, ainsi que les instructions pour la corriger. Il répare les traductions via une session de traduction dédiée à la tâche, jamais en modifiant manuellement les catalogues d'autres langues. Il déplace le texte dans le catalogue source, reformule les phrases assemblées en un seul message avec des espaces réservés, et applique les règles de code sur ses propres modifications avant de remettre la tâche en cours.
Les contributions provenant de toutes les sources
Le contrôle applique la même norme à chaque modification, quel que soit son auteur :
- Coroid's agents Pour un projet internationalisé, chaque tâche précise le catalogue source et la fonction de traduction, un message par phrase, le formateur du projet, la disposition logique pour les langues écrites de droite à gauche, ainsi que les conventions des marchés fournies par Culture.
- Les demandes de fusion provenant d'utilisateurs ou d'autres outils sont soumises au contrôle via Coroid Check, avec les mêmes constatations et annotations. Ce processus s'exécute sur chaque pull request dès que l'application Coroid GitHub est installée dans le dépôt et que la politique du projet est appliquée lors des demandes de fusion.
- Les modifications fusionnées sans avoir passé ce contrôle sont détectées après la fusion. Traduire les chaînes fusionnées en dehors de Coroid Il lit le contrôle exécuté sur l'pull request. Il crée une tâche de traduction pour les chaînes de caractères manquantes ou obsolètes laissées par l'pull request. Lorsque ce contrôle détecte des anomalies dans le code, il crée également une tâche nommée Internationaliser le code fusionné dans pull request, en indiquant où chercher. Chaque fusion génère au maximum une tâche de chaque type.
Le code existant n'est jamais bloqué : Prêt pour le monde entier Il l'énumère et liste les tâches de correction que vous démarrez lorsque vous le choisissez.
Exécutez-le vous-même
Le moteur est l'outil en ligne de commande coroid-i18n, la version spécifiée dans votre
fichier de configuration :
coroid-i18n check # catalogues
coroid-i18n source --changed main # the code a branch adds since main
coroid-i18n check --source --changed mainsource Il analyse le code sans avoir à lire les catalogues, ce qui lui permet de fonctionner même lorsqu'
ils ne sont pas encore configurés. Sans --changed ou --diff il analyse l'ensemble du
répertoire. Ces deux commandes renvoient la valeur 1 lorsqu'elles détectent un élément ; ajoutez
--format json pour un rapport lisible par machine.