Les formats de fichiers qui cassent réellement en production
La localisation de logiciels semble simple jusqu'au déploiement. Une équipe rédige en.json et suppose que l'espagnol, l'allemand et l'arabe suivront le même chemin. Ce ne sera pas le cas. Chaque format de fichier comporte une particularité qui casse le build d'une agence non préparée. Après 14 ans et plusieurs milliers de versions SaaS, nous avons une courte liste des cas qui piègent même les équipes d'ingénierie matures.
JSON, YAML et le problème de l'apostrophe
Le JSON brut n'a pas de commentaires ni de prise en charge du pluriel — acceptable pour l'anglais, fragile en production dès que les traducteurs ajoutent des apostrophes courbes (' vs '), des espaces insécables fines autour de la ponctuation française, ou des guillemets allemands (», «). Un traducteur français qui écrit le correct L'application avec une apostrophe typographique passera la QA linguistique et cassera un analyseur JSON fragile. Nous normalisons les apostrophes à l'importation, validons la présence du BOM UTF-8 et effectuons un contrôle syntaxique avant l'expédition de toute locale.
Android strings.xml : l'échappement silencieux
Android stocke les apostrophes comme \' et les esperluettes comme &. Les traducteurs collent régulièrement les caractères courbes de Microsoft Word qui semblent identiques et expédient — jusqu'à ce que la mise en page affiche du mojibake à l'exécution. Nous utilisons un aller-retour XLIFF personnalisé pour les ressources Android afin que le traducteur ne voie jamais le XML brut, et nous ré-échappons à l'exportation.
iOS .strings et .stringsdict
Le problème classique concerne les règles de pluriel. iOS utilise les catégories de pluriel CLDR (zero, one, two, few, many, other) via .stringsdict. Un traducteur naïf traitera le fichier comme un un-pour-un et perdra les variantes de pluriel — votre application allemande dira alors "1 Nachrichten". Nous utilisons un éditeur sensible au pluriel qui expose chaque catégorie CLDR requise pour la locale cible et refuse l'exportation si une catégorie manque.
.NET .resx et Java .properties
.resx accepte les commentaires XML et les références de code intégrées ; .properties utilise ISO-8859-1 par défaut (les chaînes d'outils modernes prennent en charge UTF-8, mais la mauvaise combinaison expédie toujours des échappements \uXXXX qui déroutent les traducteurs). Nous forçons UTF-8 à l'importation et n'émettons les échappements natifs qu'au moment du build.
L'aller-retour XLIFF
Chaque fois que possible, nous extrayons les fichiers source vers XLIFF 1.2 ou 2.0, traduisons dans notre éditeur avec le contexte attaché, et fusionnons à nouveau. Cela permet aux traducteurs de voir le commentaire source, la capture d'écran et la contrainte (limite de caractères, forme plurielle ICU, indicateur de miroir RTL) sans jamais toucher au fichier source. Le pipeline de build fusionne dans le format que vos développeurs ont commité.