Le WordPress d'aujourd'hui, décodé pour les développeurs

Multilingue

Espace de formation BTP traduit sans dupliquer la progression des apprenants

Schéma d'organisation des cours, quiz et certificats d'un centre de formation BTP traduits en deux langues, sans jamais dupliquer la progression réelle d'un apprenant.

Par Clément Hadrot • 24 janvier 2025 • 4 min de lecture • Aucun commentaire
Espace de formation BTP traduit sans dupliquer la progression des apprenants

Un apprenant qui commence un module de sécurité chantier en français doit-il perdre sa progression s’il termine le module suivant en langue régionale, parce qu’un collègue formateur le lui présente ainsi ? C’est la contrainte posée par un centre de formation professionnelle du bâtiment qui propose ses parcours certifiants en deux langues, pour des apprenants travaillant indifféremment dans l’une ou l’autre selon les chantiers.

La réponse à cette question dépend entièrement de la façon dont l’architecture sépare, ou ne sépare pas, le contenu traduit de la progression réelle de l’apprenant. Voici le schéma d’organisation retenu.

Le piège d’une progression liée au contenu traduit

Sur une architecture naïve, où chaque traduction d’un cours est un article WordPress distinct au sens de Polylang, la progression est naturellement enregistrée par rapport à l’ID de cet article. Un apprenant qui suit le module 3 en français puis passe au module 4 en langue régionale se retrouve alors avec deux enregistrements de progression distincts, sans lien entre eux, ce qui casse le calcul du taux d’avancement global du parcours et complique l’émission du certificat final.

Schéma d’architecture retenu

parcours_source (ID stable, non traduit)
  |
  +-- module_1
  |     +-- traduction_fr (contenu pédagogique)
  |     +-- traduction_oc (contenu pédagogique)
  |
  +-- module_2
  |     +-- traduction_fr
  |     +-- traduction_oc
  |
  +-- quiz_final --> résultat rattaché au parcours_source, pas à la traduction consultée
  |
  +-- certificat --> référence uniquement l'ID du parcours_source

Chaque module référence un objet parcours_source commun, non traduit, qui porte l’identifiant utilisé pour tout enregistrement de progression. Les traductions Polylang de chaque module ne portent que le contenu pédagogique affiché, jamais la moindre donnée de suivi.

L'essentiel à retenir : Le cours traduit reste un habillage, la progression appartient à l'apprenant ; Un identifiant de parcours stable relie toutes les langues d'un même cours ; Le certificat final référence le parcours, jamais une langue en particulier

Enregistrer la progression sur le bon identifiant

function enregistrer_progression_module( $apprenant_id, $module_traduit_id, $statut ) {
    $parcours_source_id = get_field( 'parcours_lie', $module_traduit_id );

    update_user_meta(
        $apprenant_id,
        "progression_parcours_{$parcours_source_id}",
        $statut
    );
}

Quelle que soit la langue dans laquelle l’apprenant consulte le module au moment de sa validation, la fonction remonte systématiquement à l’ID du parcours source avant d’enregistrer quoi que ce soit, ce qui garantit la continuité de la progression indépendamment des changements de langue en cours de route.

Le quiz final et le certificat suivent la même règle

Le quiz de fin de module pose une question supplémentaire : les questions elles-mêmes sont traduites, mais le résultat obtenu, lui, doit rester unique par apprenant et par parcours, pas par langue de passage du quiz. Un apprenant ne peut pas repasser le même quiz dans une autre langue pour obtenir une deuxième tentative déguisée : le nombre de tentatives se compte au niveau du parcours source, pas de la traduction consultée.

Le certificat final, généré en PDF à l’issue du parcours, référence uniquement l’identifiant du parcours source et la langue de délivrance choisie par l’apprenant au moment de la demande, sans lien avec les langues dans lesquelles les modules ont été effectivement suivis.

Gérer un module ajouté après coup dans une seule langue

Un module ajouté ultérieurement au parcours, disponible d’abord uniquement dans une langue en attendant sa traduction, ne doit pas bloquer la progression des apprenants déjà engagés dans l’autre langue. Un champ de statut par traduction de module (« disponible », « en cours de traduction ») permet d’afficher un message d’attente clair plutôt qu’un module manquant sans explication.

Dans un parcours certifiant, la langue est un vecteur d’accès au contenu, jamais une composante de l’identité du parcours suivi par l’apprenant.

En résumé

La clé de cette architecture tient en une phrase : tout ce qui touche à la progression, aux résultats de quiz et à la certification se rattache à un identifiant de parcours source unique et non traduit, tandis que Polylang ne gère que l’habillage pédagogique visible. Cette séparation stricte évite qu’un simple changement de langue en cours de formation ne fragmente artificiellement le suivi d’un apprenant.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi