Le trésor d’Elgon en français, un exemple de traduction à l’aide de Bastrad

J’ai publié en octobre dernier un outils d’aide à la traduction de programmes écrits en BASIC, dénommé bastrad. Ce dernier est décrit et téléchargeable dans l’article « Assistant de traduction de jeux en BASIC« .

Nous allons maintenant voir un exemple pratique d’utilisation de cet assistant, en prenant comme exemple le jeu d’aventure Treasure of Elgon, dans sa version Applesoft BASIC (mais cela fonctionne également avec les versions pour d’autres BASIC tel le MC10).

The treasure of Elgon, with the French touch !

La chose aurait dû être simple, surtout grâce l’outil bastrad. Hélas, j’ai fait face à quelques difficultés liées à la façon dont est programmé Treasure of Elgon, qui n’est pas exempt de bugs…

ETAPE 1 : Débogage du programme d’origine

Le premier problème rencontré n’est pas un bug mais une façon particulière de coder l’analyse des commandes saisies par le joueur. Les traitements associés aux différentes commandes (lignes 740 à 6160) doivent impérativement être rangés suivant l’ordre alphabétique des commandes, et un aiguillage en fonction du premier caractère de la commande est effectué à la ligne 730 :

730 ON ASC(A$)-64 GOTO 740, 750, 790, 1020, 1270, 2000, 2070, 3090, 3100, 3300, 3510, 3610, 3740, 3840, 3970, 4150, 4400, 4470, 4690, 5340, 5520, 5890, 5900, 6050, 6150, 6160

Le problème est que la traduction des commandes en français en modifie l’ordre alphabétique. Par conséquence, les traitements associés ne seront plus rangés en respectant cet ordre, puisque les traitements se trouvent toujours aux mêmes endroits dans le code. Ceci rend le programme non fonctionnel.

Une première étape a donc été de supprimer la contrainte d’ordre alphabétique, en enlevant l’aiguillage par ON…GOTO en ligne 730 et en modifiant les branchements en fonction de la commande opérateur stockée dans la variable F$, entre les lignes 740 et 6160.

Plusieurs bugs ont également été corrigés :

  • Mauvaise gestion du nombre d’objets transportés (variable EI dans le programme);
  • La commande « D » (DOWN) doit afficher l’erreur « I can’t go that way » en cas d’impossibilité de se déplacer vers le bas;
  • Longueur de la commande saisie portée à 30 caractères (le français étant moins concis que l’anglais).

Au final ceci donne le programme corrigé suivant :

Etape 2 : traduction du programme

Cette étape s’avère au final plus rapide que la précédente ! Voici la façon dont j’ai procédé :

  • Extraction des chaines de caractères avec BASTRAD :
bastrad.py -x elg_en.txt treasure_of_elgon_A2-fixed-20211108.bas
  • Traduction en français du fichier elg_en.txt, en s’aidant de Google Translate dans un premier temps, puis en améliorant le texte proposé ; il faut prendre garde à traduire les abréviations tel que W en O pour « aller à l’ouest ». Le fichier traduit est elg_fr.txt. La reprise « manuelle » prend quand même du temps et nécessite une connaissance des langues si l’on veut une traduction correcte.
  • Injection du fichier texte en français dans le programme initial :
bastrad.py -r elg_fr.txt -o tresor_elgon_A2-20211108.bas treasure_of_elgon_A2-fixed-20211108.bas

Voici le programme obtenu, dans la langue de Molière :

Tests et walkthrough

Les corrections du programme d’origine et la création de la version française ont nécessité pas mal de tests. Je me suis appuyé sur le « walkthrough » publier sur le site de Jim Gerrie, ici.

J’ai traduit cette solution en français pour mes tests, voici les solutions dans les deux langues :

Exemple de début de partie, en français cette fois ci
Conclusion

Le programme en version française Le trésor d’Elgon est fonctionnel et l’outil Bastrad apporte un réel gain de temps puisqu’il extrait uniquement la partie à traduire du programme BASIC (soit les chaînes de caractères).

Cependant, dans le processus de traduction, il ne faut pas négliger :

  • Les défauts du programme à traduire (bugs, mauvais codage) qui rendent la traduction difficile voire impossible, comme cela a été le cas dans cet exemple;
  • Le fait que la traduction automatique reste approximative et qu’il faut la prendre (il faut donc maîtriser la langue)
  • Les tests, toujours longs. En cours de test, l’on se rend compte de certaines traductions approximatives ce qui nécessite des reprises et d’itérer plusieurs fois…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *