Comment traduire un jeu Unity en anglais (texte externalisé)
Un guide pas à pas pour traduire des jeux Unity en anglais avec RuneTranslate : lire les TextAssets, les champs MonoBehaviour et les StreamingAssets, pourquoi seul le texte externalisé est pris en charge, et comment la protection des identifiants vous évite de casser le jeu.
Unity est le moteur derrière une part croissante des jeux indépendants et des visual novels japonais — et le plus délicat à traduire parmi les moteurs courants, car Unity n'a pas de format de texte unique. Les dialogues peuvent se trouver dans des blocs TextAsset, dans des champs de chaîne de MonoBehaviour, dans des scripts isolés de StreamingAssets, ou compilés directement dans une DLL C#. Ce guide explique comment traduire un jeu Unity avec RuneTranslate et, tout aussi important, présente la seule règle qui rend Unity différent : uniquement le texte externalisé.
La grande réserve d'abord : uniquement le texte externalisé
RuneTranslate traduit le texte Unity qui réside dans les données — des fichiers de ressources que le moteur charge à l'exécution, y compris les champs de chaîne des composants MonoBehaviour (dialogues, noms, libellés). Ce qu'il ne traduit pas, c'est le texte qu'un développeur a codé en dur dans le code C# compilé — l'Assembly-CSharp.dll sur les builds Mono, ou le binaire IL2CPP. Les champs MonoBehaviour sont lus sur les builds Mono comme IL2CPP : RuneTranslate récupère leur agencement de types dans les propres DLL du jeu (Mono), ou le reconstruit à partir des métadonnées IL2CPP lorsqu'il n'y a pas de dossier Managed/. En pratique : les jeux qui gardent leur script dans les ressources et les composants se traduisent bien ; les jeux qui compilent chaque ligne dans le code ne se traduisent que partiellement — et vous ne saurez pas lequel vous avez avant de l'ouvrir, ce qui est la première étape.
Ce qu'il vous faut
- RuneTranslate pour Windows — gratuit, tous les moteurs et fournisseurs débloqués.
- Un dossier de jeu Unity — le répertoire contenant le
.exedu jeu et un dossier<GameName>_Data/(avec les fichiersglobalgamemanagers,resources.assets,data.unity3detlevel*). - Une langue cible — anglais, espagnol, français, allemand, portugais, russe, chinois, italien, turc, vietnamien, et plus de 20 autres.
- Un fournisseur de traduction. Le Google Translate gratuit fonctionne d'emblée ; DeepL propose une offre gratuite ; OpenAI, Anthropic, un modèle local et toute API compatible OpenAI nécessitent votre propre clé.
Étape 1 : Ouvrez le dossier du jeu
Lancez RuneTranslate, cliquez sur Nouveau projet et pointez-le vers le répertoire du jeu Unity. La détection de moteur recherche le dossier _Data/ et identifie le projet comme étant Unity. Un composant auxiliaire Python UnityPy intégré (livré dans l'installateur) ouvre les fichiers de ressources et liste les chaînes lisibles dans un espace de travail par projet situé sous %APPDATA%/RuneTranslate/unity-workspace/<projectId>/. Votre dossier de jeu d'origine n'est jamais modifié. Unity est un moteur au meilleur effort — vérifiez que le build exporté fonctionne avant de le redistribuer.
Étape 2 : Comment les chaînes sont extraites
RuneTranslate lit le texte partout où Unity l'externalise :
- TextAssets — des blocs JSON / CSV / script intégrés dans les
.assetset les AssetBundles, découpés par un extracteur qui reconnaît le format. - Champs de chaîne de MonoBehaviour — le texte affiché sur les composants (dialogues, noms, libellés), sur les builds Mono comme IL2CPP (les informations de type proviennent des DLL du jeu, ou sont reconstruites à partir des métadonnées IL2CPP).
- StreamingAssets — des fichiers de script isolés (
.json,.txt,.csv,.ks) parcourus directement sur le disque.
Unity est aussi l'endroit où la sur-traduction fait le plus de dégâts, alors RuneTranslate embarque une protection pour ça. Beaucoup de chaînes MonoBehaviour ne sont pas du tout du texte affiché — ce sont des identifiants de contrôle et des opérandes de flux : des noms de scène qu'un appel LoadScene résout par chaîne, des clés de routage de messages, des noms de clips d'animation / de son, des noms de parties Live2D, et les valeurs de comparaison dans la logique If / SetVariable de Fungus (par exemple un indicateur comme 村落出口). Traduisez-les et le jeu casse silencieusement — le symptôme classique est un écran de « chargement » infini sans aucune erreur. RuneTranslate les classe automatiquement comme exclus (affichés en rouge, activables uniquement par vous), de sorte que l'éditeur met en avant les vrais dialogues et libellés et laisse la mécanique tranquille. Les substitutions {$var} de Fungus et le balisage {color=...} / TMP <...> sont masqués derrière des espaces réservés pour survivre intacts à la traduction.
Étape 3 : Traduisez et relisez
Choisissez un fournisseur et lancez. DeepL ou un LLM sont les meilleurs pour les dialogues ; le Google Translate gratuit couvre les menus et les noms d'objets. Établissez d'abord un glossaire de votre distribution et de vos termes récurrents — voyez Glossaire 101. Chaque ligne apparaît dans l'éditeur à côté de sa source ; modifiez en ligne (enregistrement à la perte de focus ou avec Ctrl+Entrée) et lancez le raffineur IA optionnel pour une relecture en deuxième passe. La version gratuite de RuneTranslate est bridée à une vitesse ~3–4× plus lente que la version payante — pour une qualité de résultat identique.
Étape 4 : Exportez un build jouable
Cliquez sur Exporter. RuneTranslate copie le jeu, puis réinjecte les chaînes traduites dans les fichiers de ressources sur place. La même protection d'exclusion s'exécute à la réécriture, de sorte qu'un ancien projet ne puisse pas pousser par accident un nom de scène ou un opérande de flux traduit lors de la réexportation. La sortie est une copie complète et exécutable du jeu à l'emplacement de votre choix — lancez le .exe et il se joue dans votre langue cible.
Limitations connues
- Uniquement le texte externalisé : les chaînes codées en dur dans le code C# compilé (
Assembly-CSharp.dllsur Mono, ou le binaire IL2CPP) ne sont pas traduites. Les champs de données MonoBehaviour, eux, le sont — sur les builds Mono comme IL2CPP. - La lecture de MonoBehaviour en IL2CPP nécessite un
global-metadata.datanalysable ; des métadonnées fortement obfusquées peuvent ne pas se reconstruire (meilleur effort). - Meilleur effort : vérifiez que le jeu exporté se lance et s'affiche correctement avant de le partager.
- Le texte dans les images (logos, interfaces dessinées à la main, légendes de CG) n'est pas traduit — hors du champ de la traduction automatique.
Pourquoi c'est plus simple que l'ancienne méthode
Traduire Unity à la main, c'était dépaqueter les ressources avec UABE ou AssetStudio, chercher quels TextAssets et champs MonoBehaviour contenaient du vrai texte, éviter manuellement les chaînes d'identifiants qui font planter le jeu, puis réimporter sans corrompre la table des ressources. RuneTranslate regroupe l'extraction, la classification (pour que vous ne traduisiez pas la mécanique), la traduction et la réinjection sur place en quelques clics — avec l'éditeur ouvert pour que vous maîtrisiez la formulation.
Consultez la page du moteur Unity pour la liste complète des fonctionnalités, lisez le guide TyranoBuilder pour un moteur basé sur HTML, ou téléchargez RuneTranslate et essayez-le sur un vrai jeu.
Prêt à essayer RuneTranslate ?
L'offre gratuite débloque tous les moteurs et tous les fournisseurs de traduction. Supporter (3 $/mois) débloque la vitesse maximale.
Télécharger pour Windows