Pourquoi créer son propre traducteur EPUB est plus difficile qu'on ne le pense

Last updated: 2026-04-13

Pourquoi créer son propre traducteur EPUB est plus difficile qu'on ne le pense

Un tweet a récemment fait le buzz dans la communauté des développeurs. @cat88tw a partagé sa tentative de construire un traducteur EPUB avec Claude Code et a décrit, sans détour, à quel point c'était plus compliqué que prévu. Le tweet a atteint 1 671 vues — pas parce que l'idée était originale, mais parce que chaque développeur ayant tenté la même chose s'y est reconnu.

Le concept semble simple. Les fichiers EPUB ne sont que du HTML et du CSS compressés en ZIP. Les modèles d'IA modernes traduisent remarquablement bien. On connecte les deux, et c'est réglé en un week-end.

Sauf que non. En un week-end, on obtient un prototype avec un formatage cassé, des chapitres corrompus et des images manquantes. Construire un traducteur EPUB fiable — capable de gérer de vrais livres — est un véritable défi d'ingénierie.

Défi 1 : La structure EPUB est trompeusement complexe

Un fichier EPUB est une archive ZIP contenant des fichiers XHTML, des feuilles de style CSS, des images, des polices, des métadonnées et un système de navigation. Les standards EPUB 2 et EPUB 3 définissent l'organisation de ces éléments, mais les éditeurs interprètent ces standards de façons très variées.

Certains livres découpent le contenu en un fichier par chapitre. D'autres mettent tout dans un seul fichier XHTML monolithique. La table des matières peut être un fichier NCX, un Navigation Document, ou les deux. Les styles peuvent être en ligne ou en référence externe.

Votre traducteur doit gérer toutes ces variations. Dès que vous faites une hypothèse — « les chapitres sont toujours dans des fichiers séparés » — vous rencontrerez un livre réel qui la contredit.

Le fichier OPF répertorie chaque ressource du livre et l'ordre de lecture. Si votre traducteur ajoute ou supprime des fichiers sans mettre à jour ce manifeste, l'EPUB devient invalide.

Défi 2 : Préserver le formatage en remplaçant le texte

C'est là que la plupart des projets DIY échouent. Traduire le texte est la partie facile. Maintenir le formatage intact après la traduction est le vrai cauchemar.

Il faut extraire le texte traduisible en préservant les balises HTML, puis remapper le texte traduit sur les bonnes balises — alors que l'ordre des mots, la structure des phrases et la longueur du texte ont complètement changé. Les références de liens hypertexte ne doivent pas être traduites. Les entités HTML ne doivent pas être corrompues.

Si vous envoyez le HTML brut à un modèle de langage, il altérera fréquemment les balises. Si vous supprimez d'abord le HTML pour traduire du texte brut, vous perdez tout le formatage sans possibilité de le restaurer.

Multipliez cela par chaque motif de formatage : notes de bas de page, exposants, lettrines, citations, poésie avec retours à la ligne, notation mathématique et tableaux avec cellules fusionnées.

Défi 3 : Découpage des chapitres et fenêtres de contexte

Un livre typique contient 60 000 à 100 000 mots. Aucun modèle de langage actuel ne peut traiter un livre entier en un seul appel API. Vous devez découper le livre en segments.

Mais le découpage introduit ses propres problèmes :

  • Perte de contexte : les noms de personnages, termes techniques et pronoms doivent être traduits de manière cohérente d'un segment à l'autre
  • Points de coupure : couper au milieu d'un paragraphe ou d'un tableau produit du HTML cassé
  • Cohérence terminologique : le même mot peut recevoir des traductions différentes dans des segments différents

Les outils de traduction professionnels maintiennent des glossaires et des fenêtres de contexte chevauchantes entre segments.

Défi 4 : Gestion du CSS et des polices

La traduction modifie la longueur du texte. Une phrase anglaise de 20 mots peut devenir 35 mots en allemand ou 12 caractères en chinois. Cela a des effets en cascade sur la mise en page :

  • Les conteneurs de largeur fixe débordent ou laissent des espaces vides
  • Les mises en page CSS multicolonnes se brisent
  • Les mises en page verticales (courantes dans les livres japonais) nécessitent des règles CSS entièrement différentes
  • Les polices personnalisées peuvent ne pas contenir les glyphes de la langue cible
  • La hauteur de ligne et l'espacement optimisés pour un script ne conviennent pas à un autre

Défi 5 : Scripts CJK et RTL

Si votre traducteur ne gère que les langues européennes, vous pouvez ignorer les problèmes spécifiques aux systèmes d'écriture. Dès que vous ajoutez le chinois, le japonais, le coréen ou l'arabe, la complexité double.

Défis CJK :

  • La segmentation des mots — le chinois et le japonais n'utilisent pas d'espaces entre les mots
  • Le texte ruby (furigana) — les guides de prononciation au-dessus des kanji doivent être préservés
  • Les règles de ponctuation diffèrent — le chinois utilise une ponctuation pleine largeur
  • L'écriture verticale est standard dans de nombreux livres japonais

Défis RTL :

  • L'arabe et l'hébreu se lisent de droite à gauche, ce qui affecte la mise en page entière
  • Le texte bidirectionnel nécessite un traitement correct de l'algorithme Unicode BiDi
  • L'écriture arabe est cursive — la forme des lettres change selon leur position dans le mot

Défi 6 : Validation EPUB et compatibilité des liseuses

Générer un EPUB valide qui s'affiche correctement sur toutes les liseuses est étonnamment difficile. Les liseuses ne sont pas des navigateurs web — chacune implémente un sous-ensemble différent du standard EPUB.

Apple Books affiche des fonctionnalités EPUB 3 que Kindle ignore. Le traitement CSS de Kobo diffère de celui de Google Play Books. Les anciens appareils Kindle nécessitent une conversion en MOBI. Les tests multi-liseuses prennent du temps et révèlent des bugs spécifiques à chaque plateforme.

Défi 7 : Gestion des erreurs à grande échelle

Traduire un livre de 300 pages peut nécessiter plus de 200 appels API. Chaque appel peut échouer. Votre traducteur a besoin d'une logique de retry, d'un suivi de progression, d'une validation des sorties et d'une estimation des coûts.

Pourquoi un outil spécialisé s'impose

Chaque défi ci-dessus est surmontable. Mais les résoudre tous simultanément — et les maintenir résolus à mesure que les standards évoluent et que les API changent — est un travail à plein temps.

C'est exactement pourquoi EPUBTranslator existe. Au lieu de passer des semaines à construire et déboguer votre propre pipeline, vous téléchargez un fichier, choisissez une langue et récupérez un EPUB traduit correctement formaté. L'outil gère toute la complexité décrite ci-dessus : analyse de structure, préservation du formatage, gestion des segments, ajustement CSS, support CJK et RTL, validation et récupération d'erreurs.

Si vous êtes un développeur qui aime les défis, construire un traducteur EPUB est un excellent projet d'apprentissage. Mais si votre objectif est de lire un livre dans une autre langue, un outil spécialisé vous fera gagner un temps considérable. Le développeur à l'origine du tweet viral l'a appris à ses dépens — vous n'avez pas à refaire la même erreur.