# Un site de e-learning multilingue : sous-titrer les vidéos sans tout retraduire

> Couvrir plusieurs langues sur une plateforme de formation vidéo sans doubler la production passe par un sous-titrage centralisé relié à l'extension multilingue.

- Auteur : WordPress Développement
- Publié le : 2023-06-14
- Mis à jour le : 2023-06-14
- Catégorie : Multilingue
- URL : https://www.wpmoderne.fr/multilingue/elearning-multilingue-sous-titres-video/

## L’essentiel

- Le fichier vidéo source reste unique dans toutes les langues
- Les fichiers de sous-titres VTT portent seuls la charge de traduction
- Le lecteur vidéo doit choisir la piste selon la langue Polylang active

Produire une vidéo de formation coûte cher : tournage, montage, voix off, validation pédagogique. Produire cette même vidéo cinq fois, une par langue, multiplie ce coût par cinq sans multiplier la valeur pédagogique par autant. C'est le problème concret auquel se heurte toute plateforme de formation en ligne qui veut couvrir plusieurs marchés linguistiques sans faire exploser son budget de production.

La solution la plus robuste, largement éprouvée dans l'industrie du sous-titrage professionnel, consiste à séparer strictement le fichier vidéo, unique et partagé par toutes les langues, du texte qui l'accompagne, porté par des fichiers de sous-titres au format WebVTT reliés à la structure multilingue du site WordPress.

## Un seul fichier vidéo, plusieurs pistes de texte

Concrètement, la vidéo source (hébergée sur un service comme Vimeo, ou auto-hébergée) reste strictement identique quelle que soit la langue de consultation. Ce qui change, c'est le fichier de sous-titres associé, un simple fichier texte au format `.vtt` contenant les horodatages et le texte traduit :

```
WEBVTT

00:00:04.000 --> 00:00:08.000
Bienvenue dans ce module sur la gestion des stocks.

00:00:08.500 --> 00:00:13.000
Nous allons voir comment configurer les seuils d'alerte.
```

La balise HTML5 `<track>`, associée à l'élément `<video>`, permet de proposer plusieurs pistes de sous-titres pour un même fichier vidéo, chacune identifiée par un code de langue :

```
<video controls>
  <source src="module-stocks.mp4" type="video/mp4">
  <track kind="subtitles" srclang="fr" label="Français" src="module-stocks-fr.vtt" default>
  <track kind="subtitles" srclang="en" label="English" src="module-stocks-en.vtt">
  <track kind="subtitles" srclang="de" label="Deutsch" src="module-stocks-de.vtt">
</video>
```

## Faire choisir la bonne piste automatiquement

> L'essentiel à retenir : Le fichier vidéo source reste unique dans toutes les langues ; Les fichiers de sous-titres VTT portent seuls la charge de traduction ; Le lecteur vidéo doit choisir la piste selon la langue Polylang active

Laisser l'apprenant sélectionner manuellement sa langue de sous-titres à chaque vidéo fonctionne, mais alourdit inutilement l'expérience sur une plateforme déjà organisée par langue via Polylang. La bonne pratique consiste à faire correspondre automatiquement l'attribut `default` de la balise `<track>` à la langue active du site, détectée côté PHP au moment du rendu du gabarit :

```
<?php
$current_lang = function_exists( 'pll_current_language' ) ? pll_current_language() : 'fr';
?>
<video controls>
  <source src="module-stocks.mp4" type="video/mp4">
  <?php foreach ( $subtitle_tracks as $lang => $file ) : ?>
    <track kind="subtitles" srclang="<?php echo esc_attr( $lang ); ?>"
           src="<?php echo esc_url( $file ); ?>"
           <?php echo ( $lang === $current_lang ) ? 'default' : ''; ?>>
  <?php endforeach; ?>
</video>
```

L'apprenant qui navigue sur la version allemande du site voit automatiquement la piste allemande activée par défaut, sans manipulation supplémentaire, tout en gardant la possibilité de changer de piste directement dans les contrôles natifs du lecteur vidéo.

## Où stocker les fichiers de sous-titres dans WordPress

Deux approches coexistent selon la taille de la plateforme. Pour un catalogue de vidéos modeste, un champ personnalisé par langue sur la fiche du module (via des champs ACF répétables, un par langue) suffit largement et reste simple à gérer pour une petite équipe pédagogique. Pour un catalogue de plusieurs centaines de modules, il devient plus robuste de nommer les fichiers de sous-titres selon une convention stricte liée à l'identifiant du module et au code de langue, puis de les servir dynamiquement sans passer par un champ de base de données pour chacun, ce qui évite une explosion du nombre de champs à maintenir.

### Le cas particulier de la voix off

Le sous-titrage seul ne suffit pas toujours : certains publics, notamment en formation obligatoire ou réglementaire, exigent une voix off doublée plutôt qu'un simple sous-titre. Dans ce cas, la piste audio elle-même doit être multipliée par langue, ce qui casse partiellement l'économie du fichier vidéo unique. La solution la plus courante reste alors de conserver une seule piste vidéo mais de synchroniser une piste audio alternative via la balise `<audio>` pilotée par script, une solution plus complexe à maintenir qui ne se justifie que si l'obligation réglementaire l'impose vraiment.

- Séparer strictement le fichier vidéo, unique, du texte traduit porté par les sous-titres
- Utiliser le format WebVTT et la balise `<track>` plutôt qu'un lecteur vidéo propriétaire fermé
- Faire correspondre automatiquement la piste par défaut à la langue Polylang active
- Réserver le doublage audio complet aux cas où une obligation réglementaire l'impose réellement

## En résumé

Le sous-titrage centralisé transforme un problème de production vidéo coûteux en un problème de traduction de texte, beaucoup plus simple à budgétiser et à faire évoluer. Une plateforme de e-learning qui adopte cette architecture dès le départ peut ajouter une nouvelle langue de couverture en ne produisant qu'un fichier de sous-titres par module existant, sans jamais retourner en salle de tournage.
