Skip to content
A close-up of three simple, unbranded file folders in warm, natural earth tones

Jeu Twine multilingue : comment gérer plusieurs langues ?

L’ESSENTIEL

  • La méthode la plus fiable consiste à séparer le scénario, les textes traduits et la variable de langue.
  • Avec SugarCube, vous pouvez changer de langue sans réinitialiser la progression si les variables de jeu restent indépendantes.
  • Avec Harlowe, les conditions et les variables permettent aussi de gérer plusieurs langues, mais avec une organisation différente.
  • Testez chaque parcours dans chaque langue, car un lien correct en français peut devenir incohérent après traduction.

La variable qui change le plus la méthode est le format d’histoire choisi dans Twine, notamment Harlowe ou SugarCube.

Comment définir la structure d’un jeu Twine multilingue ?

Un jeu Twine multilingue fonctionne mieux lorsque le contenu narratif et le choix de la langue sont traités comme deux systèmes séparés. Le scénario conserve ses variables et ses embranchements, tandis que l’interface affiche la version correspondant à la langue sélectionnée.

Cette séparation évite de dupliquer toute la logique du jeu pour chaque traduction. Elle facilite aussi les corrections, car vous pouvez modifier une phrase dans un passage de langue sans toucher aux conditions qui déterminent le parcours.

Comment choisir Twine 2 et le format de récit adapté ?

Twine 2 est le choix le plus pratique pour un nouveau projet, car il permet de créer une histoire dans un navigateur ou avec une application de bureau, puis de l’exporter en fichier HTML. Twine est un outil de création de fiction interactive, c’est-à-dire un récit dans lequel les décisions du joueur modifient la progression.

Le format d’histoire détermine la syntaxe disponible. Harlowe convient à un projet qui repose surtout sur des liens, des variables et des conditions lisibles, tandis que SugarCube offre davantage de contrôle avec JavaScript, les sauvegardes et l’interface.

Si vous débutez, le tutoriel Twine en français pour créer votre premier jeu vous aidera à maîtriser les passages avant d’ajouter les traductions. Le site Gaming Campus décrit également Twine comme un outil gratuit permettant de publier rapidement un jeu sous forme HTML, mais vérifiez toujours la licence des images, musiques et polices ajoutées.

Comment organiser les passages et les textes par langue ?

La structure la plus claire consiste à conserver un passage logique comme Debut, puis à créer ses variantes Debut_fr, Debut_en et Debut_es. Le passage principal sert de contenant ou de point d’entrée, tandis que chaque suffixe identifie la traduction.

Une autre méthode consiste à regrouper toutes les phrases dans un objet de données. Elle devient intéressante pour une interface riche, mais elle demande davantage de JavaScript et rend les longues scènes moins agréables à écrire.

La méthode par passages traduit bien la structure visuelle de Twine. Dans mes essais, elle permet de repérer rapidement une version absente dans la carte de l’histoire, alors qu’un grand tableau de chaînes peut cacher une traduction incomplète.

Comment créer un sélecteur de langue dans Twine ?

Un sélecteur de langue doit modifier une variable globale, actualiser l’affichage et conserver les variables qui décrivent la partie. Vous pouvez placer ce choix dans une barre latérale, dans un passage d’accueil ou dans un écran de paramètres.

Affichez le nom complet de la langue pour le joueur, mais utilisez un code court et stable dans le moteur. Les codes fr, en et es sont plus faciles à exploiter que des libellés pouvant changer selon l’interface.

Comment mémoriser la langue choisie avec une variable ?

Dans Harlowe, vous pouvez initialiser la langue avec une variable persistante, par exemple (set: $lang to "fr"). Un lien peut ensuite la modifier avec (set: $lang to "en"), puis renvoyer le joueur vers le passage affiché.

Dans SugarCube, une variable comme $lang convient également. Si vous souhaitez que la préférence survive à la fermeture du navigateur, utilisez le système de mémorisation prévu par SugarCube avec prudence et informez le joueur du fonctionnement des données locales.

Ne mélangez pas la langue et la progression. Une variable $lang doit indiquer la langue, tandis que des variables comme $aRencontreLeGardien ou $inventaire décrivent l’état du récit.

Comment ajouter un menu de changement de langue ?

Un menu simple peut proposer un lien par langue. Dans Harlowe, un passage de paramètres peut contenir une logique de ce type :

(link: "English")[(set: $lang to "en")(go-to: "Debut")]

Avec SugarCube, le même principe s’écrit avec une macro, par exemple <<link 'English'>><<set $lang = 'en'>><<goto 'Debut'>><</link>>. Le lien doit renvoyer vers une scène qui se recharge selon la langue, sans appeler une commande de redémarrage.

Le tutoriel de Fiction-interactive.fr utilise SugarCube 2, un menu de paramètres et des passages suffixés par code de langue. Cette approche permet au joueur de changer de langue pendant la partie, à condition de conserver les données de progression dans des variables séparées.

Comment afficher les textes selon la langue sélectionnée ?

Pour afficher le bon texte, le jeu doit lire la valeur de la langue et choisir la variante correspondante. Vous pouvez faire ce choix dans chaque passage ou centraliser l’appel dans une fonction qui charge automatiquement le passage suffixé.

La solution centralisée réduit le nombre de conditions visibles dans le scénario. Elle demande toutefois de prévoir un texte de secours lorsqu’une traduction n’existe pas encore.

Comment utiliser les variables et conditions de Twine ?

La méthode par conditions est facile à comprendre pour une petite scène. En Harlowe, vous pouvez écrire :

(if: $lang is "fr")[Vous ouvrez la porte.](else-if: $lang is "en")[You open the door.](else:)[Texto no disponible.]

Cette technique devient difficile à maintenir lorsque chaque passage contient plusieurs paragraphes et plusieurs langues. Pour un projet long, utilisez plutôt un passage contenant l’action ou le lien, puis chargez un passage traduit dont le nom est construit avec la langue.

Les textes d’interface doivent aussi être traduits. Les boutons de sauvegarde, les messages d’erreur, les titres de menus et les instructions sont souvent oubliés parce qu’ils ne figurent pas dans le scénario principal.

Comment adapter les exemples à Harlowe ou SugarCube ?

Harlowe utilise ses propres macros, comme (if:), (set:) et (go-to:). SugarCube emploie notamment <<if>>, <<set>> et <<goto>>, avec une couche JavaScript pour les fonctions avancées.

Ne copiez pas un script SugarCube dans une histoire Harlowe en espérant une adaptation automatique. Le format sélectionné est visible dans la gestion de l’histoire, et chaque exemple doit respecter sa syntaxe.

Pour personnaliser la présentation d’un menu de langue, vous pouvez aussi utiliser le tutoriel Twine CSS Grid consacré à l’interface. Le CSS modifie la position et l’apparence du sélecteur, mais ne doit pas porter la logique de traduction.

Comment gérer les choix, liens et variables dans plusieurs langues ?

Les choix doivent conserver la même destination logique dans toutes les langues, même si leur formulation change. Un bouton comme « Ouvrir la porte » et son équivalent anglais doivent conduire au même embranchement, sauf si la traduction prévoit volontairement une différence de scénario.

Comment éviter les liens cassés et les textes incohérents ?

Utilisez des noms de passages stables qui ne dépendent pas de la traduction, comme ChoixPorte ou FinA. Évitez de renommer une destination en DoorChoice dans une langue et en ChoixPorte dans une autre, car la logique deviendra difficile à vérifier.

Les variables doivent elles aussi garder des noms identiques entre les langues. Traduire $aTrouveLaCle en $foundTheKey dans une branche peut créer une nouvelle variable vide et rendre un choix inaccessible.

Pour concevoir des embranchements lisibles, consultez notre article sur les choix en fiction interactive. Une traduction réussie conserve la conséquence du choix, pas seulement le sens littéral de la phrase.

Comment préparer et intégrer les traductions ?

Préparez les traductions avant de les intégrer dans Twine en établissant une liste des passages, des chaînes d’interface et des messages système. Cette liste donne au traducteur le contexte nécessaire et évite les textes trop longs pour un bouton.

Ne demandez pas uniquement une traduction mot à mot. Un choix doit rester naturel, un titre doit tenir dans son espace et un message doit conserver le même degré de politesse que dans la version originale.

Comment utiliser une convention de nommage claire ?

Choisissez une convention et appliquez-la partout, par exemple NomDuPassage_fr, NomDuPassage_en et NomDuPassage_de. Utilisez les codes de langue de manière constante et documentez-les dans un passage réservé aux notes de développement.

  • Passage logique : Debut, Foret, FinA.
  • Version française : Debut_fr, Foret_fr, FinA_fr.
  • Version anglaise : Debut_en, Foret_en, FinA_en.

Si une langue manque, prévoyez une langue de repli, généralement celle du texte original. Le joueur doit obtenir un message compréhensible plutôt qu’un passage vide ou une erreur JavaScript.

Comment gérer les accents, pluriels et caractères spéciaux ?

Enregistrez votre projet et vos fichiers en UTF-8 afin de préserver les accents français, les apostrophes typographiques et les alphabets non latins. Testez aussi les polices si vous ajoutez l’arabe, le cyrillique ou des caractères asiatiques.

Les pluriels demandent plus qu’un remplacement de mots. Une phrase comme « Vous avez 1 clé » doit produire une autre forme avec 2 clés, et certaines langues suivent des règles plus complexes que le français.

Évitez de construire une phrase en assemblant plusieurs fragments traduits. Donnez au traducteur la phrase complète, car l’ordre des mots varie selon la langue.

Comment tester un jeu Twine multilingue ?

Testez chaque parcours important dans chaque langue avant la publication. Un jeu peut fonctionner techniquement en français tout en affichant un passage anglais, un bouton tronqué ou une condition non traduite.

Un tableau de suivi avec le nom du passage, la langue, le résultat attendu et le résultat observé suffit pour un petit projet. Pour une histoire longue, ajoutez un identifiant de test à chaque embranchement.

Comment vérifier chaque parcours dans chaque langue ?

Commencez par changer de langue au début, puis au milieu d’une partie et juste avant une fin. Vérifiez que la progression, l’inventaire, les variables de relation et les conditions restent inchangés après le changement.

  • Contrôlez les passages d’accueil, les menus et les messages système.
  • Suivez les branches principales et les fins alternatives.
  • Revenez en arrière après un changement de langue et vérifiez les liens.
  • Testez les sauvegardes avant et après la modification de la langue.

Faites relire les textes par une personne qui maîtrise réellement la langue cible. Une vérification technique ne repère pas toujours une nuance maladroite, un faux ami ou une phrase qui change le ton d’un personnage.

Comment tester l’affichage sur ordinateur et mobile ?

Testez le fichier exporté dans plusieurs navigateurs sur ordinateur et téléphone. Les textes traduits peuvent être plus longs, modifier la hauteur des boutons et déplacer un choix important sous la zone visible.

Vérifiez les alphabets de droite à gauche, la taille des caractères, les retours à la ligne et les éléments fixés par CSS. Avec un écran étroit, un menu de langue horizontal peut devenir inutilisable alors que le même menu paraît correct sur un écran large.

Comment publier et mettre à jour le jeu multilingue ?

Publiez une version exportée après avoir testé le fichier HTML final, pas seulement l’aperçu de Twine. Le fichier doit inclure les images, les feuilles de style et les scripts nécessaires, ou référencer des ressources dont l’accès est fiable.

Pour diffuser votre création légalement, utilisez une plateforme ou un hébergement qui accepte les fichiers HTML et vérifiez les licences de chaque ressource intégrée. Notre article sur la publication d’un jeu Twine sur itch.io détaille les étapes de mise en ligne sans distribuer de fichiers protégés.

Comment exporter le fichier HTML ?

Dans Twine 2, utilisez la commande d’exportation de l’histoire pour générer un fichier HTML autonome lorsque votre format et vos ressources le permettent. Ouvrez ensuite ce fichier dans un navigateur distinct afin de vérifier les chemins d’images, les liens et le changement de langue.

Conservez une copie du projet Twine avant chaque mise à jour importante. Le fichier exporté sert à la diffusion, tandis que le fichier source reste nécessaire pour corriger une traduction, ajouter un passage ou modifier une variable.

Comment ajouter une nouvelle langue sans modifier le scénario principal ?

Ajoutez d’abord le code de langue au sélecteur, puis créez les passages traduits avec le suffixe correspondant. Si votre système charge automatiquement NomDuPassage_<langue>, le scénario principal n’a pas besoin d’être réécrit.

Terminez par un test de couverture : chaque passage accessible doit posséder sa variante, chaque chaîne d’interface doit être traduite et chaque police doit afficher correctement les caractères. Cette organisation permet d’ajouter une langue progressivement sans multiplier les copies de la logique narrative.