Traduction de mods pour l'Infinity Engine

Outils et techniques

Introduction

Ce document est un recueil d’informations accumulées au cours de mon expérience de traduction de The Darkest Day et pendant ma modeste contribution à d’autres travaux. J’ai également repris des astuces publiées sur des forums anglophones (voir la partie Remerciements).

J’ai cherché à présenter certains aspects techniques de l’Infinity Engine ou des programmes d’édition de mods permettant de mieux comprendre les contraintes qui en découlent.

J’ai consigné dans ce document mon expérience et une technique de travail toute personnelle. Il en existe certainement d’autres.

Bien que le texte se veuille général, les exemples s'appliquent toujours à Baldur's Gate II. Bien que je n'ai pas tout vérifié, le document devrait s'appliquer indifféremment à tous les jeux basés sur l'Infinity Engine.

Généralités

La traduction

La traduction d’objets, de sorts, de kits, de noms de lieux ou de créatures ne pose généralement pas de problème particulier, en dehors de l’homogénéité que l’on souhaite conserver tout au long du mod à traduire. Les concepteurs de mod recherchent généralement une bonne intégration dans le jeu, comme si le mod avait fait partie du jeu depuis sa création par Bioware ou Black Isle Studios. Quand il s’agit de traduction, ceci se décline dans l’obligation d’utiliser les mêmes termes que le jeu original vis-à-vis des descriptions d’objets (Classe d’armure, TAC0, étoile du matin, …), de sorts (les écoles ou les sphères notamment), les noms de lieux ou de personnages, les noms des capacités spéciales des kits de classe (autrement appelés spécialisation), ….

L’homogénéité à l’intérieur du mod lui-même implique de s’assurer de l’emploi des mêmes traductions d’un groupe à l’autre. Par exemple, si la description d’un objet indique qu’il vous a été donné par « Khelben Blackstaff » (que vous traduisez par « Khelben Bâton-noir »), il faudra aussi traduire le nom de la créature « Khelben Blackstaff » en « Khelben Bâton-noir ».

La traduction des dialogues présente davantage de difficultés. Non seulement les recommandations que je viens d’énoncer s’appliquent, mais il faut aussi se préoccuper des personnages impliqués dans la conversion, tant leur personnalité et leurs relations (tutoiement, vouvoiement, …) que leur sexe (pour les accords de verbe ou d’adjectif dans les phrases notamment). Rien de plus étrange en effet qu’un personnage féminin qui parle et qui dit « Je suis heureux » ou qu’un ami de longue date qui se met à vouvoyer.

C’est pourquoi le traitement des dialogues fera l’objet d’une description plus spécifique.

Il faut noter que les dialogues font aussi l’objet d’un traitement spécifique par le jeu. En effet, il s’agit du seul élément dans le jeu dont le texte est pris dans des fichiers différents afin de s’adapter au sexe du personnage concerné : dialog.tlk pour le masculin, dialogF.tlk pour le féminin. Les descriptions d’objets, de sorts, de kits, … sont toujours accordées dans l’optique d’un personnage masculin lorsqu’il y a nécessité d’accorder.

Ce traitement est propre aux langues autres que l’anglais, pour laquelle il existe peu d’accord à réaliser en fonction du sexe. Ces accords sont d’ailleurs pris en charge par le jeu grâce à des mots-clés tels que <HISHER>, <HIMHER>, … qui font que le jeu anglais ne dispose que du fichier dialog.tlk.

Les mods

Il existe principalement deux types de mods :

Dans le premier cas, les textes associés aux éléments ajoutés par le mod se trouvent directement dans le fichier dialog.tlk livré avec le mod. La traduction de ce genre de mod ne peut se faire qu’en modifiant le fichier dialog.tlk et en distribuant une version en français en remplacement de la version originale.

Au contraire, le mécanisme d’installation de WeiDU fait en sorte d’ajouter les descriptions des éléments du mod au fichier dialog.tlk existant, sans oublier d’ailleurs le fichier dialogF.tlk. Les fichiers contenant les descriptions sont généralement des fichiers TRA, placés dans des répertoires différents selon les langues, mais portant le même nom quelle que soit la langue (ce qui permet à WeiDU de les retrouver). La traduction de ce genre de mod consiste donc à traduire les fichiers TRA et à les placer dans un nouveau répertoire, portant souvent le nom « french ». Il faut également modifier la procédure d’installation (fichier TP2) pour qu’elle propose la nouvelle langue (c’est généralement l’auteur du mod qui le fait).

Techniques générales

Vérifier si la traduction n'existe pas déjà

Cela peut paraître tout bête, mais il n’est pas rare que les textes d’un mod apparaissent déjà dans le jeu. Dans ce cas, pourquoi s’embêter à traduire de nouveau ? Cela se produit surtout pour les mods qui remplacent le fichier dialog.tlk (certains mécanismes provoquent l’apparition de doublons), mais cette technique fonctionne pour tous les textes, quitte à réduire un peu les objectifs (des morceaux de phrase plutôt que des descriptions complètes).

Qu'il s'agisse des descriptions d’objets, de sorts, de kits, des noms de créature ou de lieu ou encore des morceaux de phrase dans des dialogues, voire tout simplement des mots ou des expressions idiomatiques, la traduction du jeu d’origine regorge d’informations inestimables pour vous aider à traduire un mod. En particulier, les livres que l’on trouve un peu partout dans le jeu évoquent la géographie ou l’histoire des royaumes et constituent une excellente référence. On peut aussi y piocher des exemples d’expressions courantes.

Pour exploiter cette capacité, il faut disposer d’un fichier dialog.tlk en anglais. Pour Baldur’s Gate II, il suffit de récupérer le mod Big Picture, par exemple, pour obtenir ce fichier. Il est aussi possible de récupérer une version corrigée de fautes sur le site Baldurdash (ce n’est pas forcément une bonne solution, car cela peut entraîner des différences mineures qui vont diminuer les chances de retrouver les textes recherchés si les auteurs de mod n’ont pas travaillé à partir de cette version mais à partir de l’original). Pour Icewind Dale, il suffit d’installer le mod Trial of the Luremaster en anglais pour obtenir un tel fichier.

Pour commencer il faut exporter les fichiers dialog.tlk sous forme de fichier texte, que l’on peut ouvrir dans un éditeur de texte afin d’utiliser la fonction rechercher.

Exportation du fichier dialog.tlk

Il existe deux programmes permettant de générer un fichier texte à partir d’un fichier TLK : BG2 Tlk Editor et WeiDU.

Contrairement à ce que son nom indique, BG2 Tlk Editor ne fonctionne pas qu’avec BG2. Il présente certaines forces, comme les contrôles de cohérence qu’il effectue sur le contenu du fichier TLK, ainsi que certains inconvénients, comme le fait qu’il génère beaucoup de messages d’alerte. Il permet de modifier directement le fichier TLK et dispose également de fonctions d’exportation/importation vers ou depuis un couple de fichiers, texte et binaire, le fichier binaire contenant tous les éléments autres que le texte (indication de présence de mots-clés dans le texte, nom du fichier son pour les répliques qui sont aussi parlées, volume du son, …). Il faut donc veiller à conserver les deux fichiers, sous peine d’être incapables de réimporter ultérieurement. BG2 Tlk Editor est un excellent programme permettant d’identifier des défauts sur l’utilisation des mots-clés tels que <CHARNAME>, <HIMHER>, … en particulier les erreurs de frappe ou les espaces supplémentaires. Il est toujours très utile de l’utiliser au moins une fois pour identifier toutes ces erreurs.

De son côté, WeiDU ne crée qu’un seul fichier contenant à la fois le texte et le nom éventuel du fichier son associé. Les autres paramètres pouvant être déduits ou n’étant apparemment pas utilisés par le jeu, il n’y a pas de perte d’information. Par contre il n’offre pas de fonction de contrôle.

Pour simplement extraire les fichiers TLK, l’outil le plus pratique est WeiDU. La syntaxe d’utilisation est la suivante :

WeiDU --traify-tlk fichier.tlk --out fichier.tra

Il est possible de limiter la plage des textes à extraire en utilisant les options --min et –max :

WeiDU --traify-tlk fichier.tlk --min numéroMin --max numéroMax --out fichier.tra

Par exemple, pour extraire les textes de SoA et ToB d’un fichier dialog.tlk comprenant déjà des mods (comme celui de BP), il suffit d’utiliser la commande :

WeiDU --traify-tlk dialog.tlk --min 0 --max 74106 --out dialogSoAToB.tra

Le fichier obtenu se présente sous la forme suivante (extrait) :

@25617 = ~Soyez les bienvenus aux Cinq Choppes, mes bons amis ! Ici, vous trouverez toujours un sourire et tous, je dis bien tous les breuvages de Féérune pour vous réconforter !~
@25618 = ~Je serais curieuse de voir ce que vous avez.~
@25619 = ~Que savez-vous au sujet des meurtres qui sévissent dans la région ?~
@25620 = ~Tous les breuvages, dites-vous ? J'ai peine à y croire.~

Le nombre indiqué après le caractère @ est le numéro d'index du texte qui suit dans le fichier dialog.tlk. Ce numéro d'index (qui indique tout simplement la position du texte dans le fichier) est ce qui permet de faire le lien entre les éléments manipulés par le jeu (objets, sorts, personnages, dialogues, ...) et les textes associés (les noms, descriptions, répliques, ...).

Astuce : en ne précisant pas le nom du fichier tlk, WeiDU va automatiquement chercher les textes dans les fichiers dialog.tlk ET dialogF.tlk, ce qui permet d’obtenir en un seul fichier tra l’ensemble des textes et les variations au féminin.

WeiDU --traify-tlk --min 0 --max 74106 --out dialogSoAToB.tra

Le fichier résultat aura alors le contenu suivant lorsque les versions masculines et féminines diffèrent :

@1280  = ~Etourdi~ ~Etourdie~
...
@59797 = ~Et voilà le travail, l’ami. Faites en bon usage. Et vous savez à présent où me trouver si le hasard met d’autres objets de cette sorte sur votre chemin.~ ~Et voilà le travail, la belle. Faites en bon usage. Et vous savez à présent où me trouver si le hasard met d’autres objets de cette sorte sur votre chemin.~

Le premier texte est la version masculine et le second la version féminine.

En supposant que vous ayez extrait le fichier dialog.tlk du jeu en VO sous le nom dialogEng.tra et le fichier dialog.tlk en VF sous le nom dialogFra.tra, la méthode pour identifier des textes déjà traduits est la suivante :

A partir du fichier du mod ouvert dans votre éditeur de texte, faites une copie du texte que vous souhaitez chercher (mot, expression, phrase, ...) dans le presse-papier. Ouvrez le fichier dialogEng.tra dans votre éditeur de texte puis lancez une recherche et copiez le texte à chercher depuis le presse-papier. Si le texte figure dans le fichier, notez le numéro de ligne où le texte apparaît, disons @nnn, où nnn représente le nombre. Ouvrez le fichier dialogFra.tra dans l'éditeur et allez à la ligne que vous venez d'identifier (vous pouvez utiliser la fonction recherche avec @nnn par exemple). Identifiez la partie du texte qui correspond au texte anglais d'origine, sélectionnez ce texte et copiez le dans le presse-papier. Maintenant il ne reste plus qu'à recopier le contenu du presse-papier dans le fichier du mod en français dans lequel vous travaillez.

Cas d'un mod avec des fichiers TRA

Dans le cas d’un dialogue écrit avec WeiDU, les fichiers TRA permettent d’indiquer des répliques différentes pour les deux sexes de la façon suivante :

@nnn = ~Réplique pour personnage masculin~ ~Réplique pour personnage féminin~

A l’installation du mod, WeiDU utilise la première partie pour mettre à jour le fichier dialog.tlk et la seconde pour le fichier dialogF.tlk. S’il n’y a qu’une seule version de la réplique, elle apparaît à l’identique dans les deux fichiers (le sexe du personnage ne modifie pas la phrase).

Il faut garder à l’esprit qu’il ne s’agit ici que d’adapter des accords ou des intitulés (comme garçon ou fille), en aucun cas de changer fondamentalement le contenu du texte en fonction du sexe du personnage. Ce genre de chose est généralement pris en charge dans le jeu par d’autres mécanismes qui ne font pas appel au texte du dialogue lui-même. Par exemple Salvanas, dans la Couronne de Cuivre, a des répliques spécifiques pour chaque personnage féminin, mais juste une seule, identique, pour les personnages masculins.

Cas d'un mod remplaçant le fichier TLK

La traduction d’un fichier dialog.tlk se fait généralement en exportant le fichier sous un format texte, éditable avec n’importe quel éditeur de texte ou traitement de texte. Il existe pour cela deux outils, BG2 Tlk Editor et WeiDU.

Pour exporter le fichier du mod, consultez le chapitre Exportation du fichier dialog.tlk.

La première étape consiste à récupérer les textes en français pour la partie originale du jeu (SoA et ToB, par exemple pour TDD). Il faut pour cela exporter le fichier dialog.tlk du jeu en VF en fichier texte (plus précisément fichier tra, si vous suivez la méthode détaillée dans le chapitre correspondant) et recopier toutes ses lignes à la place des lignes de même numéro dans le fichier exporté du mod. Cette opération doit se faire également pour l’adaptation au féminin, à partir donc du fichier dialogF.tlk. Comme ce fichier n’existe généralement pas pour le mod lui-même (en anglais, la différence masculin/féminin est gérée autrement, sans recourir à un deuxième fichier), il suffit de partir du fichier exporté à partir du fichier anglais du mod puis de remplacer le début par les lignes exportées du fichier dialogF.tlk.

En ce qui concerne la traduction, il est probablement plus simple de traduire d’abord complètement la version masculine, en repérant toutes les lignes de dialogues qu’il faudrait adapter dans le cas d’un personnage féminin. Une fois la traduction terminée et relue, il ne reste plus qu’à recopier les lignes traduites du mod dans le fichier féminin puis à adapter les accords pour un personnage féminin, aux lignes repérées pendant la traduction ou la relecture.

Recréer un fichier dialog.tlk à partir d'un fichier exporté

Si vous travaillez avec un fichier exporté avec BG2 Tlk Editor, il suffit d’utiliser l’option Import du menu pour effectuer l’importation.

Dans le cas d’un fichier extrait avec WeiDU, il faut utiliser la commande suivante :

WeiDU --make-tlk MonFichier.tra --tlkout dialogModifie.tlk

Le fichier TRA doit comporter une ligne @n pour n allant de 0 au nombre total de lignes à créer dans le fichier TLK. Les lignes dans le fichier TLK seront créées en utilisant le numéro indiqué en @n.

Le fichier obtenu, dialogModifie.tlk peut ensuite être renommé en dialog.tlk ou dialogF.tlk (en ayant fait auparavant une copie de sauvegarde de ce fichier, par mesure de prudence) selon qu'il s'agit de la version masculine ou féminine. Le fait d'utiliser un autre nom de fichier permet de préserver le fichier original (au cas où ...).

Techniques propres aux objets, sorts, kits, créatures

Les éléments à traduire concernant les objets, sorts et kits sont leurs descriptions. Celles-ci respectent toujours un schéma commun dans lequel chaque caractéristique est passée en revue. On retrouve donc toujours un cartouche commun dans chacune de ces catégories.

Afin d’homogénéiser les traductions de ces éléments vis-à-vis du jeu original, il est pratique de se constituer une sorte de glossaire regroupant les termes usuels afin d’utiliser systématiquement les mêmes formulations dans les mods. La constitution de ce glossaire est propre à chaque jeu car il y a toujours des différences d’un à l’autre. Par exemple, le nom des catégories d’armes varie de Baldur’s Gate à Icewind Dale, de Baldur’s Gate à Baldur’s Gate II, ….

Par ailleurs, il est très intéressant de profiter d’une capacité des éditeurs de texte : la fonction rechercher et remplacer. Les éléments des cartouches sont les principaux candidats à l’utilisation de cette capacité. On peut même l’étendre non seulement à l’intitulé mais également aux valeurs, lorsqu’il existe une liste finie (par exemple, « Type de compétence » n’utilise qu’un nombre limité de valeurs, comme « épée à 2 mains », « épée longue », …). Pour ce genre de recherche, un éditeur proposant la possibilité d’utiliser des expressions régulières est un must (par exemple, EditPlus 2). Avec cette possibilité, il est facile de s’affranchir du nombre d’espace qu’a laissé le concepteur du mod avant ou après les deux points par exemple.

Par exemple :

Proficiency Type: War Hammer

Proficiency Type : War hammer

Proficiency type: WarHammer

Avec un éditeur acceptant les expressions régulières, comme EditPlus 2, il suffit d’utiliser l’expression suivante :

Proficiency [tT]ype[ ]*:[ ]*[Ww]ar[ ]*[Hh]ammer

pour trouver toutes les variations montrées ci-dessus.

Avec EditPlus 2 (et peut-être d’autres éditeurs), il est nécessaire de lui indiquer que l’on souhaite utiliser des expressions régulières (regular expression) :

D’autres éditeurs, comme ConTEXT, PS Pad ou Crimson Editor, ont également cette capacité.

Vous pouvez trouver des aides sur les expressions régulières aux adresses suivantes (entre autres) :

http://fr.wikipedia.org/wiki/Expression_r%C3%A9guli%C3%A8re
http://fr.selfhtml.org/cgiperl/langage/expresreg.htm

Il existe aussi un programme d’aide à la construction d’expression régulière : RegExp Studio

Techniques propres aux dialogues

Qu'est ce qu'un dialogue

La plupart du temps, les conversations ne concernent que deux personnes, l’interlocuteur (le plus souvent hors du groupe) et un membre du groupe. D’autres conversations (nombreuses dans le cas d’un mod ajoutant un nouveau personnage recrutable) concernent des dialogues entre un personnage et le personnage principal, en encore deux personnages de l’équipe (appelés « banter » en anglais ou bavardage).

Les dialogues avec des personnages extérieurs au groupe se déclenchent la plupart du temps avec le personnage du groupe le plus proche, lorsque le dialogue se déclenche à vue, soit avec le personnage actuellement sélectionné (le leader du groupe si tout le groupe est sélectionné) lorsque le dialogue est provoqué par le joueur. Dans ces cas, le jeu tient compte du sexe du personnage du groupe qui parle et utilise le contenu du fichier dialog.tlk pour un personnage masculin ou celui du fichier dialogF.tlk pour un personnage féminin.

En anglais, le jeu n’utilise que le fichier dialog.tlk mais s’appuie sur des principes de la langue qui limitent considérablement les différences entre version masculine et féminine. Il utilise alors des mots-clés particuliers qui permettent d’ajouter dans la phrase un mot qui devra être adapté selon le sexe de la personne du groupe qui parle. Il existe des mots-clés tels que <GIRLBOY>, <MANWOMAN>, … qui se répercutent dans les textes sous la forme garçon/fille, homme/femme, ….

Remarque : ne pas confondre avec <PRO_GIRLBOY>, <PRO_MANWOMAN> qui s’adaptent au sexe du personnage principal (PRO semble venir de « protagonist »). Les phrases où ces mots-clés apparaissent posent d’ailleurs des problèmes d’adaptation parfois insolubles (par exemple, quelqu’un parlant à un personnage du groupe à propos du personnage principal, ce qui donne quatre combinaisons possibles mais le jeu ne tient compte que du sexe du personnage du groupe).

Ces mots-clés demeurent en français mais ont un usage bien plus limité. En effet, on pourrait remplacer directement ceux qui changent en fonction du personnage du groupe qui parle, puisque nous disposons d’un fichier spécifique aux personnages masculins et d’un pour les personnages féminins.

Dans d’autres cas plus complexes, certains dialogues font intervenir plus de deux personnes, par exemple lorsqu’un personnage du groupe intervient dans un dialogue entre le groupe et un personnage extérieur. Dans ce cas, on peut assimiler ce dialogue à une succession de petits dialogues bipartites afin de retomber sur un cas plus simple.

Dans le jeu, un dialogue est mémorisé dans un fichier DLG. Un personnage susceptible de parler est associé à au moins un fichier DLG. Ce fichier contient à la fois les répliques des deux interlocuteurs. En d’autres termes, le personnage principal et le groupe n’ont pas de fichier pour stocker leurs répliques, elles sont dans le dialogue du personnage tiers.

Les personnages recrutables sont aussi à un moment des personnages tiers, ils possèdent un dialogue pour cette circonstance, qui porte généralement le nom XxxxxP.DLG (Xxxxx étant un nom raccourci du personnage, le P étant associé à « out of Party », hors du groupe). Ce dialogue comprend les répliques de présentation et celles concernant le fait d’intégrer/quitter/réintégrer le groupe. Une fois dans le groupe, le fichier associé s’appelle généralement XxxxxJ.DLG (le J signifiant « Joined »). Enfin, les bavardages ou « Banter » sont souvent contenus dans le fichier BXxxxx.DLG.

Les dialogues du fichier XxxxxD.DLG peuvent concerner n’importe qui dans le groupe (pas uniquement le personnage principal) et doivent donc être adaptés au féminin. Les dialogues du fichier XxxxxJ.DLG s’adressent la plupart du temps au personnage principal (soit directement pour discuter, soit en intervenant pour donner des conseils). Enfin les répliques du fichier BXxxxx.DLG sont échangées entre personnages du groupe. Ces dernières ne doivent pas changer entre les fichiers masculin et féminin puisque le sexe des personnes concernées est invariant.

Les dialogues faisant intervenir plus de deux personnes impliquent un nombre de fichiers DLG égal au nombre de personnages concernés moins un (le groupe, qui n’a pas de fichier dialogue). Le dialogue du personnage extérieur (ou celui du personnage du groupe initiant le dialogue) contient un lien vers le dialogue d’un autre personnage (sur une réplique particulière) qui est utilisé si le personnage en question est présent (le dialogue contient un test de présence du personnage). En dehors de cette particularité, il n’y a pas de différence par rapport au cas bipartite.

Il est possible de visualiser l’arborescence d’un fichier dialogue en utilisant des programmes tels que Infinity Explorer, Near Infinity, DLTCEP, IDU ou IDW. Les quatre derniers permettent également de les modifier, alors méfiez-vous des mauvaises manipulations. Les deux premiers sont certainement les plus faciles à utiliser grâce à leur interface de type Explorateur.

Constitution d'un fichier DLG

La capture d’écran suivante montre la structure interne d’un fichier DLG (j'ai utilisé le programme Infinity Dialog Workshop pour cette explication car il présente une vue très synthétique, même s'il présente pas ailleurs certains défauts) :


Au premier niveau, le plus à gauche, on trouve tous les sujets possibles de discussion, avec la phrase qui initie le dialogue. Le choix entre tous ces sujets dépend des circonstances et le jeu vérifie que les conditions pour déclencher un certain sujet sont remplies (dans cet exemple, la présence de Yoshimo dans le groupe, notamment. Pour l’anecdote, vous remarquerez l’horrible traduction, « venez me voir en dernier », qui donne une phrase sans aucun sens, pour un texte en VO signifiant à peu près « qui me rend enfin visite ». Je vous invite à faire beaucoup mieux dans vos traductions).

Le deuxième niveau identifie les réponses possibles (là aussi, il peut y avoir des conditions pour que certaines réponses soient disponibles).

Pour chaque réponse, on peut avoir de nouvelles répliques, que l’on découvre en dépliant un peu plus l’arbre, et ainsi de suite.

Le texte surligné montre également comment sont chaînés les dialogues faisant intervenir plus de deux personnages (ici Yoshimo, par sa réplique numéro 140, va répondre à Renal, puis le dialogue de Yoshimo, YOSHJ.DLG, va indiquer un lien vers un autre sujet du dialogue de Renal pour que le dialogue se poursuive).

On retrouve partiellement cette organisation dans les fichiers D que manipule WeiDU, ce qui n’est pas surprenant d’ailleurs :

// creator  : weidu (version 160)
// argument : RENAL.DLG
// game     : .
// source   : ./override/RENAL.DLG
// dialog   : ./dialog.tlk
// dialogF  : ./dialogF.tlk

BEGIN ~RENAL~
//////////////////////////////////////////////////
// WARNING: this file contains non-trivial WEIGHTs
//////////////////////////////////////////////////

IF WEIGHT #0 ~NumTimesTalkedTo(0)
ReactionLT([PC],15)
!InParty("Yoshimo")~ THEN BEGIN 0 // from: 102.0
  SAY #21186 /* ~Vous m'excuserez si je vous dévisage, vous n'êtes pas vraiment ce que j'attendais. D'après ce qu'on m'avait dit, j'attendais quelqu'un de plus... large, disons.~ [RENAL02] */
  IF ~~ THEN REPLY #21189 /* ~Qu'est-ce qu'on vous a dit sur moi exactement ?~ */ DO ~EraseJournalEntry(293)
SetGlobal("TalkedToRenal","GLOBAL",1)~ GOTO 54
  IF ~~ THEN REPLY #21190 /* ~J'attendais davantage de la part du chef des voleurs de l'Ombre.~ */ DO ~EraseJournalEntry(293)
SetGlobal("TalkedToRenal","GLOBAL",1)~ GOTO 3
  IF ~~ THEN REPLY #21191 /* ~Que voulez-vous de moi ?~ */ DO ~EraseJournalEntry(293)
SetGlobal("TalkedToRenal","GLOBAL",1)~ GOTO 5
  IF ~~ THEN REPLY #21192 /* ~Je ne vais pas rester ici et me laisser insulter.~ */ DO ~EraseJournalEntry(293)
SetGlobal("TalkedToRenal","GLOBAL",1)~ GOTO 8
END

IF WEIGHT #1 ~NumTimesTalkedTo(0)
ReactionGT([PC],14)
!InParty("Yoshimo")~ THEN BEGIN 1 // from: 102.1
  SAY #21193 /* ~Vous n'êtes pas vraiment ce que j'attendais. D'après ce qu'on m'avait dit, je m'attendais à plus... grand.~ [RENAL03] */
  IF ~~ THEN REPLY #21194 /* ~Que vous a t-on dit sur moi exactement ?~ */ DO ~EraseJournalEntry(293)
SetGlobal("TalkedToRenal","GLOBAL",1)~ GOTO 54
  IF ~~ THEN REPLY #21195 /* ~J'attendais davantage de la part du chef des voleurs de l'Ombre.~ */ DO ~EraseJournalEntry(293)
SetGlobal("TalkedToRenal","GLOBAL",1)~ GOTO 3
  IF ~~ THEN REPLY #21196 /* ~Que voulez-vous de moi au juste ?~ */ DO ~EraseJournalEntry(293)
SetGlobal("TalkedToRenal","GLOBAL",1)~ GOTO 5
  IF ~~ THEN REPLY #21197 /* ~Je ne vais pas rester ici et me laisser insulter.~ */ DO ~EraseJournalEntry(293)
SetGlobal("TalkedToRenal","GLOBAL",1)~ GOTO 8
END

Un échange simple est composé de :

IF ~conditions sujet~ THEN BEGIN identifiant
    SAY #numéroSujet /* ~Sujet~ */
    IF ~conditions réponse 1~ THEN REPLY #numéroRéponse1 /* ~Réponse 1~ */ DO ~action~ GOTO idenfiant1
    IF ~conditions réponse 2~ THEN REPLY #numéroRéponse2 /* ~Réponse 2~ */ DO ~action~ GOTO idenfiant2
END

De façon générale, la syntaxe WeiDU est la suivante :

IF ~conditions sujet~ THEN BEGIN identifiant
   SAY ~Sujet~
   IF ~conditions réponse 1~ THEN REPLY ~Réponse 1~ DO ~action~ GOTO idenfiant1
    IF ~conditions réponse 2~ THEN REPLY ~Réponse 2~ DO ~action~ GOTO idenfiant2
END

On retrouve ici l’équivalent d’un niveau sujet-réponse. La syntaxe GOTO identifiant renvoie vers un nouveau bloc de même forme où la valeur de l’identifiant correspond à celle du GOTO.

On ne voit plus la hiérarchie complète du dialogue, elle est remise en plat dans le fichier, même si on peut suivre la progression grâce aux identifiants.

Quand on décompile un dialogue, comme je l’ai fait ici, les parties de texte de sujet ou de réponse sont remplacées par le numéro d’ordre de la réplique dans le fichier dialog.tlk, sous la forme #xxx, suivi en commentaires (entre /* et */) du texte lui-même. Dans un fichier D venant d’un mod créé avec WeiDU, on trouve généralement à la place du texte le numéro du texte dans le fichier correspondant au dialogue :

IF ~conditions sujet~ THEN BEGIN identifiant
   SAY @numéroSujet
   IF ~conditions réponse 1~ THEN REPLY @numéroRéponse1 DO ~action~ GOTO idenfiant1
   IF ~conditions réponse 2~ THEN REPLY @numéroRéponse2 DO ~action~ GOTO idenfiant2
END

Comment suivre le fil dans une discussion tripartite (ou plus)

Certains programmes comme Near Infinity et Infinity Explorer permettent de visualiser un fichier DLG et d’en parcourir l’arborescence, ainsi que de passer au fichier dialogue lié lorsqu’un autre personnage intervient.

L’écran suivant illustre comment procéder avec Near Infinity :


Le bouton Select permet de progresser dans le dialogue en fonction de la réponse choisie. Ici, il n’y a pas de texte de réponse du groupe, mais seulement des conditions exclusives pour faire intervenir un personnage du groupe. En cliquant sur Select, Near Infinity va faire apparaître le dialogue de Nalia en se positionnant sur l’intervention pointée.

Ces programmes fonctionnent avec un mod déjà installé. Quand il s’agit d’un mod écrit avec WeiDU, il existe une autre possibilité.

Lors de la création d’un fichier D, WeiDU offre la possibilité de gérer les échanges de plusieurs personnes en indiquant les changements de personnage concerné, et donc les changements de fichier dialogue directement dans le fichier D. Quand on dispose du fichier D du mod (et non une décompilation), c’est le moyen le plus simple de suivre le fil de la conversation. Ce qui suit est un exemple fourni avec WeiDU :

BEGIN ~BBLUE~ // We are in a banter file, specifically, the banter file for the NPC Blue.

CHAIN IF ~InParty("Jan") // Is the NPC Blue wants to talk to in the party?
See("Jan") // Can she SEE the NPC?
!StateCheck("Jan",STATE_SLEEPING) // Is the NPC conscious?
Global("JanBlueTalk","LOCALS",0)~ THEN
BBLUE BlueJanBanterChain
 ~Agh! What am I doing in a computer game? I should never have eaten that leftover pizza.~  // Blue should say this.
DO ~SetGlobal("JanBlueTalk","LOCALS",1)~ // Okay, make sure this talk won't happen again, and let's see the NPC's reply.
== BJAN
~Have a turnip! It'll make you feel better. The same thing happened to my third-cousin-twice-removed-once-by-marriage Philroy waaaaay back just two weeks ago -~  // We already know who's replying here, so no need to specify.
== BBLUE  // Okay, now we want Blue to say something, so we go back to her banter file.
~And to make things worse, I'm stuck in a banter with HIM! Give me a sentence that's less than four words long, please?~  // And that's what she says.
== BJAN  // Alright, back to Jan.
~What are you talking about?~  // That's what he says.
== BBLUE
~Argh! That's FIVE words, FIVE!~  // Blue gives her ending line.

Ici, la forme BEGIN ~BBLUE~ au début indique que ce morceau de dialogue viendra compléter le fichier BBLUE.DLG. C’est ainsi qu’on indique à WeiDU le fichier DLG à créer ou à modifier à partir du contenu du fichier D.

Chaque fois qu’il y a un changement de personnage (et donc de fichier dialogue) l’utilisation de la forme == MonDLG indique à WeiDU que les textes suivants (jusqu’au prochain == ou jusqu’à la commande EXIT) sont à ajouter au fichier MonDLG.DLG et que WeiDU doit renseigner les liens de fichier à fichier pour que la conversation passe bien d’un personnage à l’autre.

Il existe d’autres formes de chaînage dans WeiDU, mais à chaque fois la syntaxe « == MonDLG » indique les changements de fichier.

Quand on ne dispose pas des fichiers D d’origine, WeiDU offre également la possibilité de décompiler les fichiers DLG ayant des échanges complexes en insérant dans le fichier D les interventions des autres interlocuteurs.

WeiDU --transitive Fichier.DLG

L’option --transitive indique à WeiDU de suivre les liens et d’inclure les échanges correspondants. Par exemple, pour le fichier BANOMEN.DLG, on obtient le résultat suivant (extrait) :

WARNING: THIS --TRANSITIVE D FILE MAY CONTAIN STATES FROM MANY DLG FILES AND SHOULD NOT BE COMPILED!
BEGIN ~BANOMEN~
//////////////////////////////////////////////////
// WARNING: this file contains non-trivial WEIGHTs
//////////////////////////////////////////////////

IF ~~ THEN BEGIN 0 // from:
  SAY #2639 /* ~Oui, tel un puissant oiseau de feu... Vous ne parlez pas beaucoup, n'est-ce pas ?~ [ANOMEN47] */
  IF ~~ THEN EXTERN ~BAERIE~ 20
END

IF ~~ THEN BEGIN BAERIE 20 // from: 577.0
  SAY #2640 /* ~Que voulez-vous dire ?~ */
  IF ~~ THEN GOTO 1
END

IF ~~ THEN BEGIN 1 // from: BAERIE:20.0
  SAY #2641 /* ~Tu hésites comme si tu réfléchissais à ce que tu diras ensuite. Les chevaliers comme moi doivent sans arrêt parler aux gens.~ */
  IF ~~ THEN EXTERN ~BAERIE~ 21
END

IF ~~ THEN BEGIN BAERIE 21 // from: 20.0
  SAY #2642 /* ~Est-ce... est-ce que votre épreuve vous effraie ?~ */
  IF ~~ THEN GOTO 2
END

IF ~~ THEN BEGIN 2 // from: BAERIE:21.0 BAERIE:21.0
  SAY #2643 /* ~Ha, je n'ai pas le temps d'avoir peur. Et en plus... l'Ordre ne pourra pas m'évincer longtemps.~ */
  IF ~~ THEN EXIT
END

On voit ici clairement l’enchaînement Anomen-Aerie, les interventions d’Aerie (ici le personnage externe) étant repérées par un BEGIN BAERIE (BAERIE.DLG étant le fichier des répliques d’Aerie).

Détermination du sexe des personnages

A moins qu’il s’agisse d’un bavardage bien identifié entre deux personnages du groupe, il est difficile de connaître le sexe des personnages impliqués.

Quand il s’agit d’un dialogue avec un personnage à l’extérieur du groupe, il faut accorder tous les termes dépendant du sexe du personnage extérieur de la même façon dans les deux formes de dialogue, quel que soit le sexe du personnage du groupe. Pour identifier le sexe, la solution générale consiste à utiliser les fonctions de recherche de certains programmes, en particulier Near Infinity. Il faut pour cela ouvrir le fichier dialogue, sélectionner l’onglet Edit, puis cliquer sur Find, choisir « references to this file », pour faire apparaître la fenêtre suivante :


Sélectionnez uniquement les fichiers CRE. Lancez la recherche. Une fois terminée, Near Infinity affiche la liste des créatures utilisant ce dialogue (dans ce cas, il ne devrait y en avoir qu’une seule). Double-cliquez sur la créature pour en visionner les caractéristiques (on peut vérifier en particulier que notre dialogue de départ est bien indiqué pour la partie Dialog) :


L’information qui nous intéresse ici est « Gender ».

Remarque: attention à ne pas confondre avec « Sex », qui existe parmi les paramètres de la créature (si vous affichez l’onglet Edit) et qui n’a pas la même signification (ni même un contenu cohérent par rapport à Gender).

En ce qui concerne la prise en compte du sexe du personnage du groupe qui parle pour le groupe, il faut utiliser les fichiers dialog.tlk et dialogF.tlk pour différencier les éléments qui s’accordent avec le sexe du personnage du groupe en train de parler.

Identification des dialogues à traduire

Partie encore non disponible...

Repérage des fichiers d’un mod.

Repérage des fichiers DLG à partir du texte dans le TLK, -> DLG -> extraction en .D

Vérification d'un fichier dialog.tlk avec BG2 Tlk Editor

Partie encore non disponible...

Repérage des doublons dans les fichiers à traduire

Les mods qui remplacent le fichier dialog.tlk ont souvent été conçus avec les outils de TeamBG qui utilisaient un format de fichiers particulier, .TBG, pour échanger des fichiers d’un utilisateur à un autre, en s’assurant que les textes associés aux éléments étaient aussi transférés (nom, description, etc…). Contrairement à WeiDU, le programme permettant d’importer ces fichiers (qui s’appelle IEES ou IEEP) ajoute systématiquement les textes à la fin du fichier TLK au moment de l’importation, même si le texte était déjà présent dans le fichier TLK. La conséquence est que les mods en question contiennent souvent des textes dupliqués dans le fichier dialog.tlk, en général à la suite de modifications ou de corrections de bugs.

Quand il s’agit de traduire, il est préférable de s’assurer qu’on ne traduit pas une nouvelle fois (et éventuellement de façon différente) un texte déjà présent par ailleurs. Si le texte existe déjà et est déjà traduit, il suffit d’appliquer la méthode indiquée dans le chapitre Vérifier si la traduction n’existe pas déjà. Mais, même s’il n’est pas déjà traduit, il vaut mieux éviter de traduire plusieurs fois la même chose. Si on ne travaille pas sur un fichier TRA comprenant l’ensemble du mod, c’est plus difficile à déterminer. Plusieurs dialogues peuvent utiliser la même phrase. C’est pourquoi il vaut mieux faire cette vérification le plus tôt possible quand on commence la traduction d’un mod.

Il existe un moyen simple de déterminer les textes d’un mod qui constituent un doublon par rapport à un texte déjà existant dans le jeu d’origine ou dans un autre mod. Cette méthode fait appel à une fonction méconnue de WeiDU, --testtrans (merci à SirLancelot du forum Forgotten Wars pour avoir indiqué cette procédure très efficace).

Tout d’abord, il faut extraire dans un fichier TRA les textes du mod dans lequel vous voulez vérifier s’il y a des lignes en doublon. Ensuite il s’agit de demander à WeiDU de déterminer si des lignes de ce fichier apparaissent déjà dans le fichier dialog.tlk du jeu original (ou du jeu + des mods déjà traduits). Evidemment, il faut utiliser alors le fichier dialog.tlk correspondant en anglais. WeiDU génère alors un fichier indiquant quelles sont les lignes du mod à traduire qui sont déjà présentes dans le fichier dialog.tlk de référence.

La première étape consiste à obtenir le fichier TRA à partir du mod à traduire. Cette procédure est indiquée dans le chapitre Exportation du fichier dialog.tlk. Il faut maintenant retirer du fichier TRA obtenu les lignes du début du fichier jusqu’au premier texte du mod, ceci afin de ne garder dans le fichier TRA que les lignes du mod (sinon la comparaison effectuée par WeiDU trouverait évidemment que toutes les lignes du jeu original sont dupliquées, ce qui rendrait la liste inutilisable).

Ensuite il suffit d’utiliser la commande suivante :

WeiDU --tlkin dialogEnglish.tlk --testtrans TextesMod.tra --out DupliMod.txt

Dans cet exemple, dialogEnglish.tlk est le nom du fichier dialog.tlk en version anglaise, TextesMod.tra, le fichier TRA contenant uniquement les textes du mod et DupliMod.txt le fichier dans lequel WeiDU va écrire la liste des doublons qu’il a identifiés.

Remarque : si vous ne travaillez pas dans le répertoire principal de votre installation de Baldur’s Gate II (cas d’une installation multiple ou si vous travaillez dans un répertoire spécial pour la traduction), il faut penser à retirer temporairement du répertoire principal du jeu les fichiers dialog.tlk et dialogF.tlk. Sinon, dans certains cas, WeiDU va les charger et va générer une liste bien plus grande et complètement fausse de doublons. WeiDU indique alors un message du type :

*** C:\Program Files\Black Isle\BGII - SoA/dialogF.tlk has 11735 too few entries, padding.

Si un message comme celui-ci apparaît, pensez à retirer au moins le fichier dialogF.tlk du répertoire indiqué, sinon le contenu du fichier DupliMod.txt sera complètement inexploitable.

Si tout se passe bien, au moment de l’exécution, WeiDU affiche quelque chose qui ressemble à :

[TextesMod.tra] has XXX translation strings
You did not specify '--tlkout dialog.tlk', so YYY strings were not saved.

Le nombre XXX indique le nombre total de textes du fichier TextesMod.tra et YYY le nombre de lignes du fichier qui ne sont pas en doublon, que ce soit vis-à-vis du fichier TLK ou à l’intérieur du fichier TRA lui-même (et qui auraient donc dû être ajoutées si WeiDU avait installé un mod contenant ces lignes-là).

Le fichier de doublons généré par WeiDU se présente sous la forme suivante :

@98325 is #57672
@98326 is #57673
@98327 is #57674
@98328 is #58909
@98329 is #3304
@98330 is #58910
@90139 is #84604
@98331 is #58911
@98332 is #58913

Le contenu est assez explicite. WeiDU signale que la ligne dont la première colonne indique le numéro, et qui fait partie du fichier TRA est en réalité identique (« is ») à la ligne du fichier TLK stipulée dans la deuxième colonne. Ici, on voit que la ligne commençant par @98325 du fichier TextesMod.TRA est donc identique à la ligne 57672 du fichier dialog.tlk anglais. La traduction consiste donc alors à récupérer la ligne déjà traduite dans le fichier TLK français (à partir d’un fichier TRA qu’on a généré à partir du TLK), à la ligne @57672, et à le recopier dans le fichier TRA du mod à la ligne @98325.

Cette méthode a été expérimentée avec succès pour le travail de traduction de The Big Picture.

Remarque : cette technique permet aussi de repérer dans un mod WeiDU (donc à partir de ses fichiers TRA) les lignes que le mod a recopiées du jeu original ou d’un autre mod (la première étape indiquée ci-dessus n’est pas à faire puisqu’on a déjà les fichiers TRA). Par conséquent, elle peut aussi permettre de faciliter le travail de traduction d’un mod WeiDU, en identifiant les lignes déjà traduites qu’on peut recopier du jeu original.

Outils

Glossaire

Noms du monde AD&D et expressions anglaises
Terminologie pour les objets et les sorts dans Baldur’s Gate II (non applicable à d’autres jeux)

Editeurs de texte

ConTeXt (gratuit, avec expressions régulières)
Crimson Editor (gratuit, avec expressions régulières)
PS Pad (gratuit, avec expressions régulières)
Edit Plus 2 (shareware, avec expressions régulières)
Ultra Edit 32 (shareware, avec expressions régulières)
TextPad (shareware, avec expressions régulières)

Editeurs pour l'Infinity Engine

BG2 Tlk Editor (modification des fichiers TLK)
Infinity Dialog Utility (IDU) (édition de fichiers DLG), obsolète, à n'utiliser que pour visualiser les dialogues
Infinity Dialog Workshop (IDW) (édition de fichiers DLG), obsolète, à n'utiliser que pour visualiser les dialogues
WeiDU (création de fichiers DLG et BCS, outils d'installation)
DLTCEP (éditeur généraliste de tous types de fichiers Infinity Engine)
Near Infinity (éditeur généraliste de tous types de fichiers Infinity Engine)
Infinity Explorer (explorateur de fichiers Infinity Engine), ou cette version plus récente

Historique du document

23/10/2004
15/10/2005

09/05/2008

Remerciements

Un grand merci à SirLancelot de CLAN DLAN, pour son astuce d’utilisation de WeiDU permettant d’identifier les « doublons ».

J’ai également emprunté les informations concernant l’extraction des fichiers TLK en fichiers TRA à Mhoram de CLAN DLAN.

Isaya

isaya_ie at hotmail dot com (par mesure antispam, remplacez " at " par "@" et " dot " par ".")