Validation du Fichier de Base
Qu'est-ce qui est validé ?
MMG vérifie principalement les contenus suivants.
- Si le nombre de chaque tag utilisé par l'utilisateur est le même
- Si un tag en double apparaît à nouveau avant que tous les tags n'apparaissent une fois
- S'il y a des tags autres que les tags spécifiés à l'avance
- Si l'option
no-suffix
est correctement définie
Si la validation échoue, vous pouvez utiliser le paramètre de verbosité décrit sur cette page pour informer l'utilisateur de la raison de l'échec de la validation. Même si la validation échoue, vous pouvez forcer la conversion.
Si le nombre de tags utilisés est le même
Pour vérifier si l'utilisateur a manqué une balise, MMG compte le numéro de chaque balise utilisée par l'utilisateur et le compare.
La validation échoue car B est manquant.
<!-- multilingual suffix: A, B, C -->
<!-- [A] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [C] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- multilingual suffix: A, B, C -->
<!-- [A] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [B] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [C] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Si un tag en double apparaît à nouveau avant que tous les tags n'apparaissent une fois
Même si tous les tags sont utilisés le même nombre de fois dans tout le document, la validation échouera si certains tags n'apparaissent pas par ensemble.
La raison de cette validation est que si toutes les balises n’apparaissent pas uniformément, il est difficile pour l’utilisateur de savoir quelle balise manque. Même si le nombre de balises utilisées est le même, il est encore plus difficile de savoir si le document est long. Grâce à cette validation, les problèmes potentiels peuvent être évités à l’avance.
Il n’y a pas de contenu manquant dans A, B et C, donc il n’y a pas de problème avec le contenu que MMG va générer. Cependant, comme A apparaît à nouveau après que A et B apparaissent, la validation échoue.
<!-- multilingual suffix: A, B, C -->
<!-- [A] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [B] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [A] -->
Aenean in ultrices metus, in semper mi.
<!-- [B] -->
Aenean in ultrices metus, in semper mi.
<!-- [C] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [C] -->
Aenean in ultrices metus, in semper mi.
A, B et C n’ont pas nécessairement à apparaître dans l’ordre.
<!-- multilingual suffix: A, B, C -->
<!-- [C] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [A] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [B] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [A] -->
Aenean in ultrices metus, in semper mi.
<!-- [B] -->
Aenean in ultrices metus, in semper mi.
<!-- [C] -->
Aenean in ultrices metus, in semper mi.
S'il y a des tags autres que les tags spécifiés à l'avance
Comme l’utilisateur peut faire une faute de frappe à tout moment, MMG vérifie si la balise est déclarée dans l’en-tête lors de la lecture de la balise définie par l’utilisateur.
La validation échoue car ko
a été entré incorrectement comme kr
et ja
a également été entré incorrectement comme jp
.
<!-- multilingual suffix: ko, ja -->
<!-- [kr] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [jp] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- multilingual suffix: ko, ja -->
<!-- [ko] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [ja] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Si l'option no-suffix
est correctement définie
en-US
n’est pas une balise définie par l’utilisateur, donc la validation échoue.
<!-- multilingual suffix: ko, ja -->
<!-- no suffix: en-US -->
<!-- [kr] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [jp] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- multilingual suffix: ko, ja -->
<!-- no suffix: ko -->
<!-- [ko] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<!-- [ja] -->
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Réglage de la verbosité
Note
Il existe des fichiers d’exemple qui peuvent tester le réglage de la verbosité dans le dépôt GitHub, alors veuillez les utiliser. (Emplacement du fichier d’exemple: ./examples/validation-examples)
Comme 0 est la valeur par défaut, le MMG habituel ne produit que les résultats de validation.
$ mmg -r
----------------------
❌ bad_md.base.md
✅ good_md.base.md
❌ bad_jupyter.base.ipynb
----------------------
=> 3 base files were found.
Do you want to convert these files? [y/N]
Cependant, si vous réglez la verbosité, vous pouvez savoir pourquoi la validation a échoué.
Verbosity 1 (--verbose
ou -v
)
Si la verbosité est 1, le nombre de balises est également affiché. Cela vous permet de vérifier rapidement les balises manquantes ou les fautes de frappe.
$ mmg -r -v
----------------------
❌ bad_md.base.md
3 language(s) not translated.
Tag count: {'A': 4, 'B': 2, 'C': 2, '<Unknown>': 1}
✅ good_md.base.md
Tag count: {'A': 3, 'B': 3, 'C': 3}
❌ bad_jupyter.base.ipynb
1 language(s) not translated.
Tag count: {'en-US': 2, 'fr-FR': 2, 'ko-KR': 2, 'ja-JP': 2, '<Unknown>': 1}
----------------------
=> 3 base files were found.
Do you want to convert these files? [y/N]
Verbosity 2 (--verbose --verbose
ou -vv
)
Si vous réglez la verbosité sur 2, vous pouvez savoir exactement quelle ligne a échoué la validation pour quelle raison. En particulier, dans le cas du cahier jupyter, vous pouvez savoir quelle ligne de quelle cellule a échoué la validation, vous n’avez donc pas à vérifier chaque cellule rendue.
$ mmg -r -vv
----------------------
❌ bad_md.base.md
3 language(s) not translated.
Tag count: {'A': 4, 'B': 2, 'C': 2, '<Unknown>': 1}
Config: no_suffix 'en-US' is not in lang_tags.
Line 10: Unknown tag 'D' detected.
Line 12: 'common' appeared before all tags appeared once.
Line 18: 'A' appeared again before all tags appeared once.
Line 22: 'common' appeared before all tags appeared once.
Line 28: 'common' appeared before all tags appeared once.
Line 34: 'common' appeared before all tags appeared once.
✅ good_md.base.md
Tag count: {'A': 3, 'B': 3, 'C': 3}
❌ bad_jupyter.base.ipynb
1 language(s) not translated.
Tag count: {'en-US': 2, 'fr-FR': 2, 'ko-KR': 2, 'ja-JP': 2, '<Unknown>': 1}
Cell 4, Line 3: Unknown tag 'English' detected.
----------------------
=> 3 base files were found.
Do you want to convert these files? [y/N]
Ignorer la validation
Vous pouvez ignorer la validation en utilisant l’option -s
ou --skip-validation
.
Dans ce cas, les fichiers markdown sont affichés comme 📄 et les fichiers jupyter notebook sont affichés comme 📒.
$ mmg -r -s
----------------------
📄 bad.base.md
📄 good.base.md
📒 sample_jupyter.base.ipynb
----------------------
=> 3 base files were found.
Do you want to convert these files? [y/N]
Mode de validation uniquement pour CI/CD (création de fichiers désactivée)
Cette fonctionnalité est disponible à partir de la v2.0.0.
Ce mode ne fait que valider et ne génère pas de fichiers convertis.
Il appelle sys.exit(1)
s’il échoue à la validation car il a été créé pour CI/CD.
Il appelle sys.exit(0)
s’il réussit la validation.
Cela peut être utilisé pour diviser le pipeline CI/CD en fonction des résultats de la validation.
mmg -r --validation-only
----------------------
❌ bad_md.base.md
✅ good_md.base.md
❌ bad_jupyter.base.ipynb
----------------------
=> 3 base files were found.
=> Some files are unhealthy.
Grâce au réglage de la verbosité, vous pouvez également laisser la raison de l’échec de la validation dans le journal CI/CD.
$ mmg -r --validation-only -vv
----------------------
❌ bad_md.base.md
3 language(s) not translated.
Tag count: {'A': 4, 'B': 2, 'C': 2, '<Unknown>': 1}
Config: no_suffix 'en-US' is not in lang_tags.
Line 10: Unknown tag 'D' detected.
Line 12: 'common' appeared before all tags appeared once.
Line 18: 'A' appeared again before all tags appeared once.
Line 22: 'common' appeared before all tags appeared once.
Line 28: 'common' appeared before all tags appeared once.
Line 34: 'common' appeared before all tags appeared once.
✅ good_md.base.md
Tag count: {'A': 3, 'B': 3, 'C': 3}
❌ bad_jupyter.base.ipynb
1 language(s) not translated.
Tag count: {'en-US': 2, 'fr-FR': 2, 'ko-KR': 2, 'ja-JP': 2, '<Unknown>': 1}
Cell 4, Line 3: Unknown tag 'English' detected.
----------------------
=> 3 base files were found.
=> Some files are unhealthy.