Aller au contenu
Analyses

Faire d’une traduction manquante une erreur de compilation

Les sites bilingues divergent. Une langue reçoit un nouveau paragraphe, l’autre non, et personne ne s’en aperçoit pendant un trimestre. La solution est un type, pas un processus.

5 min de lectureÉcrit par Elite Algos Labs Engineering

Chaque projet bilingue dont nous avons hérité présentait le même défaut : la seconde langue était en retard. Pas de façon catastrophique — un libellé de bouton ici, un message d’erreur non traduit là — mais systématiquement, car maintenir deux fichiers synchronisés est un problème de discipline, et la discipline cède sous la pression des délais.

La correction structurelle consiste à faire d’une langue la source du type, et de chaque autre langue une valeur qui doit le satisfaire.

// en.ts — the source of truth. Note: no `as const`.
export const en = {
  nav: { home: 'Home', about: 'About' },
}
export type Dictionary = typeof en

// fr.ts — cannot compile until every key exists.
import type { Dictionary } from './en'
export const fr: Dictionary = {
  nav: { home: 'Accueil', about: 'À propos' },
}
L’absence de `as const` est essentielle : avec des types littéraux, une traduction ne compilerait que si elle était identique à l’anglais.

Dès lors, une chaîne française manquante n’est plus un oubli de contenu découvert par un utilisateur : c’est un soulignement rouge dans l’éditeur et une compilation en échec dans l’intégration continue. La garantie passe de « nous pensons à traduire » à « il est impossible de livrer autrement ».

SujetsArchitectureInternationalisation
Toutes les analyses

À lire également

  • L’écart entre une démonstration et un système

    La plupart des projets d’IA n’échouent pas parce que le modèle était mauvais. Ils échouent parce que personne n’a traité les vingt pour cent de cas que la démonstration ne montrait jamais.

    L’écart entre une démonstration et un système