veilletech.fr
20 sept. Feed du jour
#07 WEB Article

L’hébreu, le test qui dit si votre i18n tient

Une langue de droite à gauche ne traduit pas votre interface. Elle la contredit, et c'est ce qui la teste.

Le retour d'une équipe sur l'ajout de l'hébreu comme onzième langue : 1 458 clés côté serveur, dix pages qui basculent leur attribut dir, et une direction rendue côté serveur pour éviter le clignotement. L'enseignement transférable est que l'internationalisation se tient par des tests, pas par un fichier de traduction.

2 min de lectureintermédiairevidéo 1:20
Partager
Sommaire4 sections
  1. Ce qui se passe
  2. Le RTL est une affaire de mise en page
  3. Deux vérifications à reprendre
  4. À retenir

Ce qui se passe

L'équipe de MeshCtx (open core, AGPLv3) raconte ce que lui a coûté sa onzième langue, l'hébreu, sur la ligne v3.131.x. L'inventaire est le premier enseignement : 1 458 clés dans le registre de traduction côté serveur, 270 pour la page d'accueil, 66 pour le chat. Soit la surface complète du produit, cataloguée — un décompte qu'on ne connaît généralement pas avant de devoir le remplir onze fois.

Le RTL est une affaire de mise en page

L'arabe et l'hébreu inversent le sens d'écriture, et chaque hypothèse de gauche à droite casse. Dix pages basculent leur attribut dir, et le serveur rend la première vue déjà orientée :

HTML
<html lang="he" dir="rtl">

Ce détail supprime le changement de direction visible au chargement. Icônes, barres de progression, flèches de retour et nombres insérés dans une phrase de droite à gauche demandent chacun un traitement explicite — et la suite de tests vérifie le comportement RTL réel, pas le chargement de la police.

Deux pièges sortent du code applicatif. Sur l'installeur Windows NSIS, la liaison des traductions de page exige que MUI_LANGUAGE soit déclaré avant MUI_PAGE : ce défaut-là n'apparaît jamais dans le code de l'application. Sur macOS, CFBundleLocalizations doit valoir 11 pour que le sélecteur de langue du système corresponde à ce que l'application sait réellement faire.

Deux vérifications à reprendre

Les fichiers de traduction pourrissent comme du code : une version a dû corriger 30 identifiants de modèles par défaut périmés logés dans i18n_translations.json. D'où 278 tests liés à l'i18n, dans une base de non-régression de 3 790 tests. Deux d'entre eux se transposent tels quels :

  1. Parité croisée — les clés de la page d'accueil sont comparées aux clés source, pour qu'une fonctionnalité supprimée ne laisse pas de chaînes orphelines.
  2. Balayage du rendu — les 11 langues × 6 pages sont passées au peigne pour repérer un nom de clé brut affiché à l'écran, la classe de bug où l'utilisateur lit signup.title au lieu d'un texte.

Des badges de santé par langue complètent le dispositif : les manques deviennent visibles et attribuables.

La réserve d'usage : ces chiffres viennent de l'éditeur, sur son propre produit. Ce sont les deux vérifications ci-dessus qui valent d'être reprises, pas le décompte.

Source : What Shipping Hebrew RTL Actually Takes: Anatomy of an 11-Language Release, DEV Community, 20 septembre 2026.