
Guides / Dans les coulisses
Comment nous avons traduit nos jeux mobiles en 14 langues
Ce qu'il a fallu pour mettre nos jeux Android en 14 langues : comment nous organisons les fichiers de textes, pourquoi les règles de pluriel et les polices comptent, les erreurs de traduction qui revenaient sans cesse, un bug qui ne touche que les téléphones en Europe, et pourquoi 14 langues font 16 fiches de store.
Nos six jeux sont entièrement traduits en 14 langues : anglais, allemand, espagnol, français, croate, indonésien, italien, japonais, coréen, portugais, russe, slovène, turc et chinois traditionnel. Les quatre premiers, Idle Ronin, Idle Summoner, Idle AI Factory et Block Brain, contiennent ensemble environ 2 100 textes anglais, de 254 dans Block Brain à 1 253 dans Idle Ronin, chacun traduit 13 fois. Idle Restaurant: Miami et ONI Snakes sont sortis dans les mêmes 14 langues. Voici ce que ça a demandé, et ce que nous referions.
Un fichier de textes par langue, avec du contexte
Chaque jeu garde un simple fichier texte par langue. Une entrée, c'est la ligne source anglaise, marquée par @, suivie de sa traduction, marquée par =, et la plupart des entrées portent un commentaire écrit pour le traducteur. Voici le premier monstre du fichier anglais d'Idle Summoner :
# monster name with its number in the summon chain (1-55); names appear on small labels
@ {0}. Slime
Ces commentaires sont la chose la plus utile que nous ayons ajoutée. Le fichier anglais d'Idle Summoner en compte 156 pour 258 textes. Quelqu'un qui sait qu'un texte s'affiche sur une minuscule étiquette, ou que {0} est un nombre, fait beaucoup moins d'erreurs que quelqu'un qui devine à partir des seuls mots.
Utiliser le texte anglais lui-même comme clé garde les fichiers lisibles, mais cache un piège. Un texte identique dans les deux colonnes n'est pas forcément un nom qui doit rester en anglais : dans Idle Ronin, environ 680 des 1 185 premières entrées étaient identiques à leur texte anglais. Seuls les vrais noms propres restent en anglais, ceux des 19 Gardiens, les noms des unités et 12 costumes, et notre script de build verrouille exactement ceux-là.
Les règles de pluriel ne sont pas facultatives
L'anglais a deux formes : 1 unit, 2 units. Beaucoup de langues en ont plus, et les règles varient. Notre code Loc suit les règles de pluriel des nombres entiers des tables Unicode CLDR :
| Langues | Formes utilisées par notre code |
|---|---|
| Anglais, allemand, espagnol, italien | one, other |
| Français, portugais | one (0 et 1), other |
| Croate | one, few, other |
| Russe | one, few, many |
| Slovène | one, two, few, other |
| Turc, indonésien, japonais, coréen, chinois | une seule forme |
Le slovène est celui qui surprend : il a une forme à part pour deux, si bien qu'on dit « 2 enoti » mais « 5 enot ». Si ton code ne connaît que le singulier et le pluriel, chacune de ces langues affiche une grammaire fausse quelque part.
Les polices : les lettres dont tu ignorais l'absence
La police de texte d'Idle Summoner était une copie allégée de Noto Sans KR Black à laquelle manquaient č, š, ž et ć, les accents d'Europe de l'Ouest, les lettres turques et le chinois traditionnel. Les lettres manquantes passaient soit par une police du téléphone, soit ne s'affichaient pas du tout. Nous l'avons reconstruite avec toutes les lettres qu'utilisent nos tables, et nous avons ajouté Noto Sans JP pour le japonais et Noto Sans TC pour le chinois traditionnel. Les étiquettes en police pixel du jeu la gardent seulement tant que le texte tient dans les lettres de cette police.
Les polices peuvent aussi tromper. Dans la police coréenne d'Idle Ronin, le N majuscule est dessiné de telle sorte que ON et OFF se lisent « OΠ ». Nous avons remplacé ces interrupteurs par les mots coréens 켜기 et 끄기, qui se lisent mieux de toute façon.
Les erreurs qui revenaient dans toutes les langues
Quelle que soit la façon dont un jeu est traduit, le premier jet est rarement prêt. Le nôtre répétait la même poignée d'erreurs dans presque toutes les langues, celles que notre propre relecture en slovène avait repérées en premier :
- « Particle », un réglage graphique, traduit par le mot de physique au lieu de « Effets ».
- « Stack », les copies en plus d'une unité, laissé en anglais ou traduit par « tas » au lieu de « copies ».
- Une quête consistant à vaincre le monstre nommé Treasure Chest, traduite comme s'il fallait casser des coffres au trésor.
- Du texte traduit en entier pour des lignes et des badges où ne tiennent qu'un ou deux mots.
- « FIGHT FLOOR {0} » avec un verbe superflu qui rendait le bouton trop long.
Nous avons donc écrit un vérificateur qui sort exactement ces textes pour n'importe quelle langue, et nous remettons la liste avant le début de la traduction. Les deux langues traduites avec la liste en main n'ont eu besoin d'aucune correction ; celles traduites sans elle en ont demandé environ six chacune.
Vérifie les écrans, pas seulement les fichiers
Un fichier peut être complet alors que l'écran affiche encore de l'anglais. Notre test : passe le jeu dans une autre langue, récupère tout le texte visible à l'écran et compare-le au fichier anglais. Tout ce qui reste en anglais est une étiquette que le code ne traduit jamais. Dans Idle Ronin, ce balayage a trouvé un bouton OPEN toujours visible et des boutons de réglages bloqués dans la langue active à la première ouverture du menu.
Ensuite, vérifie que tout tient sur une vraie résolution de téléphone. Nous regardons chaque écran en 1080 x 2400 dans les langues les plus longues ainsi qu'en japonais, coréen, chinois et russe, et nous préférons raccourcir le texte plutôt que de le rétrécir jusqu'à ce que personne ne puisse le lire.
Une virgule qui casse les sauvegardes en Europe
Un bug n'a rien à voir avec les mots. Dans un jeu que nous sommes en train de créer, la sauvegarde assemble des nombres avec des virgules. Sur un téléphone dont la langue écrit les décimales avec une virgule, comme dans une grande partie de l'Europe, 7392.58 devient 7392,58, la virgule en trop le coupe en deux, et toutes les valeurs suivantes se décalent d'un cran. Un développeur qui teste en anglais ne le voit jamais. La correction tient en une ligne au démarrage qui fixe le format des nombres sur la culture invariante, plus une protection pour que les sauvegardes déjà cassées se chargent quand même.
14 langues, 16 fiches de store
Google Play a des fiches séparées pour l'espagnol d'Espagne et d'Amérique latine, et pour le portugais du Portugal et du Brésil. Nous gardons une traduction dans le jeu par langue, mais nous écrivons le texte du store séparément pour chaque marché, avec ses propres mots-clés. Cela fait 16 fiches par jeu, chacune avec son titre, sa description courte, sa description complète et ses captures d'écran. Notre site suit le même schéma, et nous expliquons comment nous le construisons dans un article à part.
Ce que nous referions
- Écris un commentaire de contexte pour chaque texte.
- Verrouille les noms propres dans le build, pas dans la tête du traducteur.
- Mets en place les règles de pluriel avant l'arrivée de la première traduction.
- Vérifie que tes polices contiennent toutes les lettres qu'utilisent tes tables.
- Tiens une liste des textes à problèmes connus et remets-la dès le départ.
- Passe les écrans en revue dans une autre langue pour débusquer l'anglais oublié.
- Écris les données de sauvegarde dans la culture invariante.
- Prévois 16 fiches de store, pas 14.
Tu veux voir le résultat ? Change la langue dans Idle Ronin, Idle Summoner, Idle AI Factory, Block Brain, Idle Restaurant: Miami ou ONI Snakes : chacun parle les 14.
Sources
- Unicode CLDR, Language Plural Rules.
- Code des jeux d'ONI Games, septembre 2026 : Idle Summoner (Loc.cs, LocFonts.cs, Localization/Summoner/en.txt), Idle Ronin (Localization/Ronin), Idle AI Factory (Localization/AIFactory), Block Brain (Localization/Brain).








