Skip to content

feat(i18n): traduction fr/en du cours et sélecteur de langue - #16

Merged
CCoupel merged 74 commits into
mainfrom
feature/i18n
Oct 7, 2026
Merged

CCoupel merged 74 commits into
mainfrom
feature/i18n

Conversation

@CCoupel

@CCoupel CCoupel commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Résumé

Traduction fr/en du cours et sélecteur de langue (milestone v1.0.0, issue parent #3).

  • 16 modules traduits en anglais (modules/en/), à parité avec le français
  • Sélecteur FR | EN dans l'interface (maquette validée), langue mémorisée
  • tools/validate.js : contrôle de parité fr/en et --strict-i18n ; tools/i18n-hash.js (empreintes de synchronisation)
  • 87 cas de tests dans tests/i18n
  • Export PowerPoint par langue (-fr / -en)
  • Release bilingue (release.yml) et CI stricte sur PR vers main (ci.yml)

[BREAKING]

  • Nom des fichiers PowerPoint : openshift-course-X.Y.Z-fr.pptx / -en.pptx
  • Chemin des modules : modules/ → modules/fr/

Changements du français existant

Champ lang, identifiants neutres, 7 « contrôler », m06 autoupdate, valeurs YAML.

Limites assumées

Closes #3, #4, #5, #6, #7, #8, #9, #10, #11, #12, #14, #15

🤖 Generated with Claude Code

CCoupel and others added 30 commits October 7, 2026 14:30
…18n.js

[BREAKING] l'ancien nom openshift-course-X.Y.Z.pptx est remplacé par -fr / -en.
Repli sur le français signalé pour les modules en absents (erreur sous --strict-i18n).

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Ajoute la nouvelle section « Langues » documentant:
- Arborescence bilingue modules/<lang>/mNN-*.js
- Champ obligatoire « lang » et sa validation
- Contrat de parité structurelle (D1)
- Ce qui se traduit et ne se traduit pas
- Localisation des libellés (assets/i18n.js)
- Titres bilingues (assets/plan.js)
- Synchronisation par empreinte de source (D6)
- Règle « une correction = même commit fr+en »
- Options --strict-i18n et --root
- Tests de parité et export PPTX bilingue

Met à jour les passages existants (chemins, schéma du module, commandes validate).

Co-Authored-By: Claude Haiku 4.5 <[email protected]>
…emets, --root sans valeur

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
release.yml : validate --strict-i18n, export + check-pptx fr/en, sha256 par langue, 2 .pptx publiés.
ci.yml : validate --strict-i18n et check-pptx --strict-i18n sur PR vers main seulement.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Ajoute la règle index.html: chaque module (fr/en) doit être référencé par une balise <script> ;
module en non référencé = warn normalement, erreur sous --strict-i18n (strict-i18n).

Clarifie la tolérance duration: normalisée aux chiffres (format flexible accepté).

Ajoute la limite de comparaison des commentaires de code:
 hors guillemets accepté pour traduction, exceptions non gérées documentées.

Références: corrections de revue ebfdfd5 et 9c4e379.

Co-Authored-By: Claude Haiku 4.5 <[email protected]>
…duisible), cas F01-F04

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Champ file: le nom de fichier doit rester identique fr/en, mais une précision
entre parenthèses en fin de ligne (ex. 'dnsmasq.conf (lab example)') peut être traduite.

Règle appliquée: regex \s*\([^)]*\)\s*$ en fin de file ne compte pas pour la parité.

Validation: tools/validate.js compare baseFile() qui supprime le texte entre parenthèses.

Référence: lot A m00, commit dev-course phase 1.

Co-Authored-By: Claude Haiku 4.5 <[email protected]>
CCoupel and others added 17 commits October 7, 2026 15:23
mon-sa, autre-svc, NOM_DU_CSR et colonnes custom-columns neutralisés en fr et en (même commit).

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
in plain text, change-me (m10 fr+en), lab-storage (m08 fr), tag to schedule (m11), empreintes recalculées.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…uelles

Le marqueur « à vérifier » (fr) / « to be verified » (en) doit être réservé
STRICTEMENT aux incertitudes factuelles (faits non confirmés par rapport à la doc
Red Hat, à relire en phase 4).

validate.js compte CHAQUE occurrence de « à vérifier » comme un marqueur
et exige la parité avec « to be verified » en anglais.

Usage ordinaire (consignes, titres de sections, vérifications générales):
- « à contrôler » / « check » ou « to verify »
- « à confirmer » / « to confirm »
- « vérifier que... » / « verify that... »

Clarifications dans la section Langues et dans les Exigences de contenu.

Contexte: m12 et m14, lot D.

Co-Authored-By: Claude Haiku 4.5 <[email protected]>
Remplace la règle générale « chaînes visibles à l'écran » par la règle réelle
pour les blocs YAML : les VALEURS des clés message, summary, text, description,
displayName se traduisent ; la CLÉ reste identique ; tout le reste
(identifiants, noms d'objets, commandes) reste neutre et anglais dans les deux langues.

Liste blanche en tools/validate.js (VISIBLE_TEXT_KEYS): message, summary, text,
description, displayName. Aucune clé n'est ajoutée sans décision explicite.

Exemple: message: "Alerte détectée" (fr) → message: "Alert detected" (en).

Références: 81b40d7 (validate.js), 552f108 (fr restauré), GLOSSARY.md 63c3b03.

Co-Authored-By: Claude Haiku 4.5 <[email protected]>
Ajoute section anglaise courte (Overview): cours OpenShift on-prem,
16 modules bilingues fr/en, sélecteur de langue FR | EN (raccourci l, ?lang=),
deux PowerPoint par langue, HTML + ZIP bilingue en release.

Met à jour les sections existantes:
- Accès: deux PPTX (-fr.pptx / -en.pptx), sélecteur de langue, lien partageables
- Structure du dépôt: modules/fr/, modules/en/, assets/i18n.js, tools/i18n-hash.js,
  docs/i18n/GLOSSARY.md, tests/i18n/
- Validation: --strict-i18n, --root, tests i18n (87 cas)
- Export: --lang fr|en, libellés depuis i18n.js
- Release: deux PPTX, contrôle strict i18n, checksums des trois fichiers
- Conventions: section Langues de CONVENTIONS.md, GLOSSARY.md
- Limites: relecture reportée, marqueurs restent, version non définie

Co-Authored-By: Claude Haiku 4.5 <[email protected]>
Ajoute section Unreleased (Non publié, sans numéro ni date):

Ajouté:
- Traduction anglaise 16 modules, sélecteur FR | EN (raccourci l, ?lang=)
- Localisation moteur (assets/i18n.js, assets/plan.js)
- Validation parité (validate.js --strict-i18n, --root)
- Synchronisation empreinte (tools/i18n-hash.js)
- Suite tests i18n (87 cas, tests/i18n/run.js)
- Glossaire et guide de style (docs/i18n/GLOSSARY.md)
- Export PowerPoint bilingue (--lang fr|en, deux .pptx)
- Workflow release bilingue, licence MIT

Modifié:
- Chemins modules: modules/ → modules/fr/ et modules/en/
- Identifiants neutres (fr+en)
- Corrections contenu français (m06, m04, m05, m07)
- Contrôles CI (push: warn, PR: erreur stricte)

[BREAKING]:
- Nom PPTX: .pptx (unique) → -fr.pptx / -en.pptx (deux fichiers)
- Chemin modules: modules/ → modules/fr/

Notes:
- Relecture technique reportée après fusion (marqueurs restent)
- Version non définie (section deviendra 1.0.0 à la release)

Co-Authored-By: Claude Haiku 4.5 <[email protected]>
C1 (l.324): Toute retouche fr rend l'empreinte en périmée → recalcul i18n-hash
nécessaire, même pour simple tournure. Reformulation.

C2 (l.224-269): Exemple i18n.js faux (emojis). Le moteur ajoute les emojis
de callouts (sauf export.*). Correction des valeurs (course.title, Warning/Caution
→ titles réels). Clarifier que validate contrôle parité des clés et paramètres,
pas l'usage.

C3 (l.277-278): Emojis et titres inexacts du plan.js (validate exige correspondance
exacte). Corriger emojis et titre en identique.

C4 (l.5, l.134): Chemin obsolète modules/ → modules/fr/. Clarifier que validate
EXIGE lang, pas de défaut au validateur.

C5 (l.179): Préciser que liste blanche s'applique partout (heredoc bash etc.),
ajouter limite « valeur sur une seule ligne » (multilignes refusées).

C6 (l.379-389): Moteur ne « charge » pas les modules (tous chargés d'emblée par
index.html), il les sélectionne. Repli reste en code (filet de sécurité), bandeau
disparaît.

Références: code-reviewer-i18n-final.md (revue phase 1-5).

Co-Authored-By: Claude Haiku 4.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(site): traduction fr/en avec sélecteur de langue

1 participant