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 le texte et la mise en forme qui supposent une langue ou une culture spécifique.
- 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 elle présente des chaînes manquantes ou corrompues, ou si le code ajouté insère du texte destiné à être lu directement 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 Les 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 n'a pas de traduction | Oui |
invalid_syntax | La traduction ne peut pas être analysée, par exemple une erreur ICU | Oui |
placeholder_mismatch | Les espaces réservés diffèrent de la source | Oui |
plural_categories | Une forme plurielle requise par la langue est absente | Oui |
stale | La source a été modifiée après la traduction de la chaîne | Non |
Le glossaire, les règles de longueur et les termes interdits génèrent leurs propres codes lorsque votre fichier de configuration les active.
Codes de code
| Code | Ce qu'il détecte | Bloque par défaut |
|---|---|---|
hardcoded_text | Du texte destiné à être lu par une personne inséré dans le code au lieu du catalogue : le texte JSX et les modèles, les attributs visibles tels que placeholder, title, alt et aria-label, les notifications et alertes | Oui |
concatenated_text | Une phrase assemblée à partir de parties : une traduction combinée avec du texte ou une valeur via +, un littéral 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 en CSS et dans les classes 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 destinée à être lue par des personnes, séparée par une virgule ou « 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 valeurs fixes 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 et lu avec parseFloat ou Number | Non |
ime_composition | La touche Entrée gérée dans un champ de saisie sans vérifier si un mot chinois, japonais ou coréen est encore en cours de composition | Non |
Conception adaptée à chaque marché affiche la correction pour chacun.
Ce que la vérification analyse
L'étape liée au code analyse le JavaScript et le TypeScript, ainsi que JSX, et lit les modèles Vue, Svelte, Astro, HTML, ERB et Handlebars ainsi que le CSS en tant que texte. Une règle s'applique uniquement là où son contexte la désigne : un modèle de code postal n'est signalé qu'à côté d'un champ de code postal, et une liste jointe uniquement là où des personnes la lisent.
- Traduit par définition. Texte situé dans les appels de traduction et les composants du projet (
t(),formatMessage,<Trans>,<FormattedMessage>,$t()) et les fonctions énumérées dans le fichier de configuration. - Jamais de texte. Termes protégés ainsi que les mots autorisés par le fichier de configuration.
- Omis volontairement. Une ligne contenant un
i18n-ignorecommentaire, ainsi que la ligne suivante. Indiquez la raison :// i18n-ignore: product name.
Le paramètre optionnel world section de .coroid/i18n.json définit le reste :
{
"world": {
"exclude": ["src/legacy/**", "scripts/**"],
"translate": ["translateText", "i18n.translate"],
"allow": ["Storefront", "OK"]
}
}| Champ | Signification |
|---|---|
exclude | Ensembles de fichiers ignorés par les règles |
translate | Fonctions de traduction autres que celles fournies par les frameworks |
allow | Mots qui ne sont jamais traduits, en plus des termes protégés |
formatter, currencies | Défini lors de l'étape Culture de l'assistant ; consultez 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 des vérifications et figure dans la tâche associée. Problèmes détectés: les constatations sont classées par catalogue, clé et langue ; les constatations de code par fichier, ligne et texte trouvé ; les constatations de page par page, élément et texte. Une constatation est considérée comme résolue 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.
Sur les demandes de fusion, les constatations de code apparaissent également sous forme d'annotations sur les lignes modifiées : une erreur en cas de blocage, un avertissement s'il s'agit seulement de rapports.
Lorsqu'une vérification bloque une tâche, l'agent développeur reçoit chaque constatation bloquante, comme 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 pour 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 son propre changement avant de remettre la tâche en traitement.
Des contributions provenant de toutes les sources
La vérification applique les mêmes normes à chaque modification, quel que soit son auteur :
- Coroid's agents Pour les projets internationalisés, 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 définies par Culture.
- Les demandes de fusion provenant des utilisateurs et d'autres outils passent par Coroid Check afin d'obtenir les mêmes constatations et annotations. Activez Révisez chaque PR pour l'exécuter sur chaque pull request.
- Les modifications fusionnées sans avoir passé cette étape sont détectées après la fusion. Les chaînes de caractères traduites fusionnées en dehors de Coroid lit les résultats de la vérification effectuée sur le pull request. Il crée une tâche de traduction lorsque des chaînes manquent ou sont obsolètes. Si la vérification bloque des constatations liées au code, il génère également une tâche nommée Internationaliser le code fusionné le 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éparation au marché mondial le liste et crée des tâches de correction que vous pouvez lancer à votre convenance.
Exécutez-le vous-même
Le moteur est l'outil en ligne de commande coroid-i18n, dont la version est définie 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 lit le code sans avoir à consulter les catalogues, ce qui permet son fonctionnement même lorsqu'ils ne sont pas encore configurés. Sans --changed ou --diff il analyse l'ensemble du dépôt. Ces deux commandes renvoient la valeur 1 en cas de détection d'un élément ; ajoutez
--format json pour obtenir un rapport lisible par machine.