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 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 :
- 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.
- 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.titleau 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.