Repository navigation
feat(contrat): doc_url et criteria[].lessons se traduisent dans lab.<lang>.yaml (0.9.3) - #375
Merged
Merged
Conversation
…lang>.yaml (0.9.3) Une leçon du site existe dans chaque langue, à une URL qui ne se déduit pas de l'autre, et un lab n'avait qu'un doc_url : guide envoyait un apprenant anglophone sur la page française, et lab.fr.yaml n'y pouvait rien. - models/lab.py : doc_url rejoint les champs traduisibles ; les leçons d'un critère se surchargent par id, comme son libellé ; langues_traduites() liste les lab.<lang>.yaml d'un lab. - validators/contract.py : doc_url et criteria[].lessons ne sont plus des clés hors contrat dans lab.<lang>.yaml. - validators/metadata.py : validate-structure relit chaque traduction et contrôle la forme des URL qu'elle substitue, sans compter deux fois une URL héritée. - --check-urls interroge aussi les doc_url traduits. - Contrat, doc d'auteur, schéma JSON, CHANGELOG EN + FR. Aucun catalogue existant ne change : un lab.yaml qui garde son URL française se comporte comme avant. Passage en 0.9.3, qui livre aussi #201, #203 et #369. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Une leçon du site existe dans chaque langue, à une URL qui ne se déduit pas de l'autre :
/docs/admin-serveurs/linux/devient/en/docs/linux/. Or un lab n'avait qu'undoc_url, si bien queguideenvoyait un apprenant anglophone sur la page française, etlab.fr.yamln'y pouvait rien. Mesure du 2026-11-14 : 440doc_urlet 630 leçons de critères ont une version anglaise sur le site.Ce qui change :
doc_urldevient traduisible, commetitle:lab.yamlporte l'URL anglaise,lab.fr.yamlla française.lessonsd'un critère se surchargent parid, comme sonlabel.guide,showetlist-labs --jsonrendent l'URL de la langue de la session. Une traduction qui ne donne pas d'URL hérite de l'anglaise.validate-structurerelit chaquelab.<lang>.yaml. Il contrôle la forme des URL qu'une traduction substitue, sans compter deux fois une URL héritée.--check-urlsinterroge aussi lesdoc_urltraduits.doc_urletcriteria[].lessonsne sont plus des clés hors contrat danslab.<lang>.yaml.criteria[].testsy reste refusé.Aucun catalogue existant ne change : un
lab.yamlqui garde son URL française se comporte comme avant. La session du site a validé ce choix, plutôt qu'un champdoc_url_en. Elle adaptera son générateur de catalogue pour lire ledoc_urldelab.fr.yaml.Cette PR passe aussi le moteur en 0.9.3, qui livre en plus #201, #203 et #369, déjà sur main.
Type of change
Checklist
Always
ruff check src/dsoxlab tests tests_e2e fuzz scriptspassemypy src/dsoxlabpasse (strict, 124 fichiers)pytestpasse : 2 316 testspytest tests_e2e: pas joué en local, la CI le joueterraform-dsoxlab-training(aucune VM) :validate-structuresort en 0 ;linux-dsoxlab-training, sur un clone frais de main :validate-structuresort en 0.When behavior changes
CHANGELOG.mdetCHANGELOG.fr.md: entrée ajoutée, et[Unreleased]devient[0.9.3] - 2026-11-14pyproject.tomlpasse en 0.9.3, etuv.lockest régénéréWhen a command or option is added, removed or changed
N/A : aucune commande ni option ne change, seule l'URL rendue dépend de la langue.
When
.github/workflows/is touchedN/A : aucun workflow touché.
When the declarative contract changes
docs/contract-v1(.fr).md,docs/catalog-author(.fr).mdetschemas/lab.schema.jsonsont à jour. La section contrat duREADME.mdne décrit paslab.<lang>.yaml, donc rien n'y change.doc_urletlessonsexistaient déjà.lessonstraduites qui ne sont pas une liste sont ignorées, et l'anglais reste. Une traduction illisible est avalée, comme avant.Tests
tests/test_doc_url_traduit.py: 16 tests. Ils ont été joués contre le code d'avant le changement : 11 échouent. Les 5 autres sont des garde-fous qui doivent passer dans les deux cas (héritage de l'anglais, pas de double signalement, guide en anglais).test_politique_d_affichage.py::test_les_lecons_ne_se_traduisent_pasaffirmait l'ancienne règle. Il est remplacé partest_les_lecons_se_traduisent_mais_pas_les_tests.Related issues
Suite de #374 (contrat : ce que surcharge
lab.<lang>.yaml). Les catalogues passeront leurs URL anglaises danslab.yamlune fois la 0.9.3 publiée.🤖 Generated with Claude Code