Script Python pour traductions

Espace libre pour faire connaître vos dernières réalisations ou les événements concernant la communauté (concours, jeux individuels, etc.)

Modérateurs: Stormi, Otto Grimwald

Script Python pour traductions

Messagepar Mule hollandaise le Sam Oct 25, 2014 9:24 am

J'ai créé un script Python qui permet de traduire des jeux plus facilement.

Concrètement, plus besoin de toucher au code : le script extrait toutes les chaînes de caractères du code source, vous les met dans un fichier à part, et il suffit d'écrire votre traduction dans ce fichier et de relancer le script pour obtenir le code source final. (Avec quelques bidouilles finales, notamment bien 'traduire' le nom de la bibliothèque de grammaire si il apparaît, et éventuellement modifier quelques déclarations de verbes.)
Ah, et grâce la façon dont c'est fait, si vous changez votre code original, votre fichier de traduction marchera toujours (il sera juste mis à jour avec les nouvelles chaînes de caractères).
Pas sûr que ça marche super bien pour les jeux où il y a énormément de code adaptatif, mais avec un peu de doigté c'est sûrement possible (ou traduisez les gros morceaux avec le script et finissez en retouchant le code source directement).

Ce qui signifie que si ça vous dirait bien de traduire un jeu mais que vous ne connaissez rien à la programmation, c'est maintenant possible !
Et même si vous savez programmer en Inform, c'est beaucoup mieux d'utiliser ce script, puisque vous ne mettrez plus les mains dans le cambouis, avec tous les risques que ça comporte. J'ai encore en travers de la gorge l'erreur de copier-coller ajoutée à la dernière minute en traduisant vers l'anglais la correction d'un bug dans Gossip, ce qui rendit le NPC qui donnait des indices complètement inutile, ce qui bloqua tout le monde à la dernière scène, ce qui me fit (peut-être, sans doute) finir deuxième à l'IntroComp 2009 ^^ Bref, un accident fatal est si vite arrivé, alors si vous pouvez vous abstenir de toucher au code, nul doute que ça soit préférable.

Je n'ai par contre pas testé avec Inform 7, mais il me semble que ça marchera tout aussi bien (il faut juste expliquer aux traducteurs potentiels que "[if the objet is in the location]" se laisse tel quel). Si quelqu'un pouvait essayer, pour I6 ou I7, et me faire des retours, ça serait super :D
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Script Python pour traductions

Messagepar Stormi le Sam Oct 25, 2014 2:39 pm

Merci pour ce script. Je n'ai pas prévu de traduire un jeu pour le moment mais je me fais souvent la réflexion que ce serait super d'avoir plein de bons jeux anglais traduits, alors je suis à fond avec toi au moins moralement (et pour du beta test) !
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Script Python pour traductions

Messagepar Natrium le Sam Oct 25, 2014 4:39 pm

J'ai voulu télécharger pour voir ce que ça donnerait avec du code I7, mais ça me donne une erreur 404.
Sinon, c'est effectivement pratique. Par contre, est-ce qu'on pourrait avec ça faire passer son texte sans le code qu'il y a autour dans un correcteur (comme Antidote) ?
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1147
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Script Python pour traductions

Messagepar Eriorg le Sam Oct 25, 2014 7:17 pm

Stormi a écrit:je me fais souvent la réflexion que ce serait super d'avoir plein de bons jeux anglais traduits

Je suis tout à fait d'accord, mais à vrai dire ce serait peut-être encore plus utile de traduire des bons jeux d'autres langues (espagnol, italien, allemand...), s'il y a des gens ici qui connaissent ces langues. En ce qui me concerne — et je ne dois pas être le seul dans la communauté IF francophone — je connais suffisamment l'anglais écrit (mais ne me demandez pas de le parler ! :? ) pour préférer jouer aux jeux anglais en VO, sauf s'ils sont fortement basés sur des jeux de mots ou sur un langage très littéraire ou archaïque ou au contraire très familier. Et vous ?
Avatar de l’utilisateur
Eriorg
Grand Ancien
 
Messages: 852
Inscription: Jeu Déc 14, 2006 8:03 am
Localisation: Suisse

Re: Script Python pour traductions

Messagepar Stormi le Sam Oct 25, 2014 7:58 pm

Je préfère jouer à un jeu en français si la traduction est de qualité, parce que jouer à une IF c'est déjà un effort mental, rajouter la langue par-dessus (même si j'ai un niveau d'anglais lu pas mauvais), ça rend la chose un poil plus difficile. Mais surtout je pense à tous ceux qui sont mauvais en anglais :)

Mais je n'ai rien contre la traduction depuis d'autres langues, si certains ont les compétences !
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Script Python pour traductions

Messagepar Mule hollandaise le Sam Oct 25, 2014 8:47 pm

@Natrium: oups, en effet, j'avais uploadé le fichier sous le mauvais nom. C'est réparé !
Et pour le correcteur orthographique, je pense que le plus gros problème (outre les [if truc is in truc] d'I7) c'est que le fichier de traduction contient l'original et la traduction, donc le correcteur orthographique trouvera plein d'erreurs qui sont en fait l'autre langue. Mieux vaut utiliser le switch du compilateur qui crache tout le texte du jeu (-r, il me semble)

@Stormi, Eriorg: Oui, moi aussi je trouve que ça serait bien d'avoir plus de jeux traduits ! C'est aussi pour ça que j'ai fait cet outil, pour que ça soit plus facile et plus abordable. Ca serait peut-être pas mal d'avoir un dépôt svn ou git(hub) dont on se servirait pour faire des traductions, qu'on ouvrirait à tout le monde (anglophones, hispanophones, et autres) pour coordonner les efforts et avoir plus de gens qui y travaillent ?
De mon côté, je comprends l'espagnol à un niveau plutôt moyen, et j'aimerais bien un jour peut-être traduire un de leurs jeux ; ils ont notamment des jeux très beaux avec beaucoup d'images (Transilvania Corruption) qui donnent vraiment envie. Le problème, c'est que si leurs jeux sont faits avec InformATE!, c'est plus dur à traduire (en fait, je sais pas comment on ferait : y'a des trucs qu'ils ont inventé, du genre les trucs comme nombre_fp, qui correspond aux synonymes féminins pluriels !).
Mais si on décidait de créer un lieu où les gens se retrouvent pour collaborer sur les traductions de fictions interactives, ça serait utile et chouette je pense :)
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Script Python pour traductions

Messagepar Mule hollandaise le Dim Oct 26, 2014 3:58 am

Et hop, nouvelle version qui intègre Inform 7 (la syntaxe, notamment pour les caractères et les ', n'est pas la même) ; la nouvelle syntaxe est
Code: Tout sélectionner
scriptTrad.py -l <i6 ou i7> -i inputFile -t tradFile -o outputFile

Faites plus attention quand vous traduisez du I7, vu que y'a du code à l'intérieur des strings, faudrait pas introduire des bugs !

J'avais un peu de temps alors j'ai téléchargé une douzaine de jeux I6 qui étaient bien reçus et dont la source était disponible. Voilà les résultats :
Code: Tout sélectionner
Aug4            = 7802 strings
blue chairs     = 4526 strings
christminster   = 4744 strings
devours         = 1329 strings
risorgimiento   = 7970 strings
shade           = ~1300 strings
spider and web  = 3664 strings
vespers         = 4048 strings
wasp            = 4141 strings
wedding         = 1747 strings

Pour information, à la louche, Capitaine Verdeterre c'était à peu près 1000 chaînes, traduites en 3 mois. Bref, si on veut s'attaquer à des gros projets, il faut probablement être plusieurs :)
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Script Python pour traductions

Messagepar Mule hollandaise le Lun Mar 07, 2016 1:25 am

Nécroooopostiiiing
Pour compléter le post précédent, "Shade" a pris 3 mois pour la traduction (à 2, un peu en dilettante) et le bêta-test par Natrium ; sachant que Verdeterre n'avait pas été bêta-testé :)
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Script Python pour traductions

Messagepar Mule hollandaise le Lun Mar 07, 2016 1:41 am

La version 2 du script vient de sortir !

Au menu : on change le format de stockage de la traduction, et on passe en format .po !!
Il s'agit d'un format standardisé utilisé pour la traduction de plein de logiciels (notamment les distributions linux et les plugins Wordpress). On trouve plein de programmes sur Internet pour les éditer, comme POEdit, POEditor, Virtaal, etc. ; mais c'est aussi facile dans un bloc-notes, vu que ça ressemble à
msgid "The string in English"
msgstr "La chaîne de caractères en français"

msgid "The title"
msgstr "Le titre"


Donc voilà, plutôt que de réinventer la roue avec un format fait maison, j'ai préféré avoir un format standardisé et connu (et pas beaucoup plus compliqué). Ca nous permet de mettre "traductions en .po" sur notre CV :wink: Mais surtout, j'espère aussi que ça pourra aider à rameuter des traducteurs - vu que le format est connu ça peut faire tomber une barrière à la contribution !

Par contre c'est une version alpha :) Contrairement à la v1, qui a été testée sur Shade et Life on Mars?, je n'ai pas encore fait de tests sur cette version (enfin, un petit exemple en I6 et c'est tout quoi). Tout rapport de bug est bienvenu, mais le mieux serait qu'on se lance dans un nouveau projet de traduction pour tester, non ? :wink:
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Script Python pour traductions

Messagepar Natrium le Lun Mar 07, 2016 3:15 am

Super ! Comme je n'avais pas eu l'occasion de tester la v1, j'ai essayé la nouvelle version avec une source I7 (l'exemple 37 du manuel d'Inform) pour voir s'il n'y aurait pas des améliorations à faire de ce côté-là.

Malheureusement, le script ne fonctionne pas : le code python contient à la fois des indentations avec espaces et des indentations avec tabulations, le tout mélangé. J'ai essayé de corriger, mais j'avais du mal à voir quel était le niveau d'indentation pour certaines lignes.

Sinon, je ne suis pas sûr que ça va bien fonctionner avec du code I7, principalement pour 2 raisons : il n'y a pas que les chaînes à traduire, il y a aussi le nom des objets et autres directement dans le code ; et ça ne fonctionnera pas si on traduit depuis une source totalement en français (comme la FI du tuto), puisque là, il faudrait carrément traduire le code en entier.

Mais bon, le dernier cas ne nous concerne pas, et j'imagine que ça doit quand même faciliter la traduction.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1147
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Script Python pour traductions

Messagepar ciseur68 le Lun Mar 07, 2016 5:42 pm

Dites-moi, je ne suis pas spécialiste, mais l'I7 n'est pas basé sur l'I6 ? Lors de la compilation, il n'y a pas un passage préalable par le I6 ? Dans tous les cas, à une étape de la compilation, il y a peut-être un moment où on pourrait extraire toutes les chaînes de caractères du jeu, et après, il suffirait de remplacer dans le code source. Est-ce utopiste ?
-César-
Avatar de l’utilisateur
ciseur68
Investigateur
 
Messages: 79
Inscription: Mer Fév 10, 2010 6:43 pm

Re: Script Python pour traductions

Messagepar Mule hollandaise le Mar Mar 08, 2016 12:35 am

@ciseur : oui, mais l'ennui c'est que le code I6 généré par Inform 7 est vraiment pas joli x) Tous les fichiers sont inclus dans un gros fichier, c'est pas forcément évident de retrouver ses petits... mais mon script est censé marcher en I7, il suffit de le perfectionner :)

@Natrium : ah zut :/ C'est quoi le problème exactement ? Je sais pas si j'ai bien compris (et je sais pas quel exemple c'est - Disenchantment Bay 2 ?).
Pourtant je viens d'essayer avec la source du Temple Nâga et ça me fait quelque chose de pas déconnant... (résultat en pièce jointe de ce post) Est-ce que tu y vois ton problème ?

En tout cas merci d'avoir essayé et de me faire remonter les problèmes :) Oui tu as raison, il faut aussi traduire genre les noms des objets partout, mais c'est vraiment pas évident de les distinguer dans le code, faudrait un parser d'I7 complet... (sans parler de ta traduction x) ) De toute façon je pense pas qu'on puisse arriver à une solution parfaite, il faudra toujours une phase de retouche pour retoucher la grammaire, ajouter des synonymes... Mais au moins on peut extraire la partie à traduire du code en lui-même, et j'y vois plusieurs avantages !
Fichiers joints
naga.txt
(39.16 Kio) Téléchargé 131 fois
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Script Python pour traductions

Messagepar Natrium le Mar Mar 08, 2016 1:12 am

À ciseur68 : c'est une très très très mauvaise idée. Le plus petit code source I7 possible est celui-ci, constitué d'une seule ligne :
Code: Tout sélectionner
There is a room.
I7 génère à partir de ça un code I6 de 54879 lignes ! Et ce code contient tout un tas de chaînes générées automatiquement et qu'il n'y a pas à traduire (les formes conjuguées des verbes, par exemple). Et en fait, l'exemple avec le Temple nâga que Mule vient de faire fonctionne vraiment mieux que ce que je pensait, donc tout va bien !

À Mule : ce n'est pas le code I7 qui est en faute, mais le code python. Comme je l'ai dit, il y a des indentations avec espaces et avec tabulations mélangées. Du coup, Python lève l'erreur « TabError: inconsistent use of tabs and spaces in indentation ». Je me demande comment tu as fait pour le lancer.
J'ai mis une image en pièce jointe pour montrer le problème. Les espaces sont représentées par des points et les tabulations par des triangles.


Mais finalement, ça rend vraiment bien, même avec un code I7. Ça me rappelle de bons souvenirs de traduction de thèmes Wordpress ! :lol: À voir si dans la pratique ça fonctionne vraiment bien.
Ma suggestion serait, si possible, de ne pas inclure les name et les Understand dans le .po (ou bien préciser en commentaire qu'il ne s'agit pas de chaînes destinées à être affichées). D'une part parce qu'il s'agit souvent de mots isolés, donc difficile de savoir comment traduire, d'autre part parce que ça semble causer des problème inutiles (comme dans Shade où un même objet avait des names identiques).
Fichiers joints
probleme_scripttrad.png
probleme_scripttrad.png (130.46 Kio) Vu 6919 fois
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1147
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Script Python pour traductions

Messagepar Mule hollandaise le Mar Mar 08, 2016 11:27 pm

Ah, je vois ce que tu veux dire. Je sais pas, c'est le python qui est dans Linux, j'imagine Python 3 ? Il m'a rien dit en tout cas ^^
N'empêche que c'est pas bien (et tu n'es sans doute pas le seul utilisateur qui rencontrera le problème), alors j'essaierai de mettre ça à jour dans la semaine.

Merci pour ta suggestion ! Le format .po inclut le numéro de la ligne pour le contexte - mais rien de plus, c'est vrai. Je me l'écris dans un coin, mais c'est un peu compliqué vu que ça veut dire parser du I7 correctement... j'y réfléchirai.
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Script Python pour traductions

Messagepar Natrium le Mer Mar 09, 2016 12:08 am

Dans mon cours de python et sur internet, le mélange des espaces et des tabulations revient assez souvent en tant qu'erreur basique qui empêche le code de fonctionner. Apparemment, Python 2.7 autorisait ce mélange, donc c'est peut-être à cause de ça

Sinon pour les names, c'est sûr que c'est plus difficile avec I7. Avec I6, j'imagine qu'il suffit de voir si la chaîne est entre guillemets simples ou doubles. Mais ne t'embêtes pas trop pour ça non plus, je pense que ce n'est pas non plus ultra-embêtant.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1147
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Script Python pour traductions

Messagepar Mule hollandaise le Sam Mar 19, 2016 12:34 pm

J'ai enfin trouvé le temps de faire la modification, retrouvez-la sur mon site et dans le Bitbucket I6.

(Pffff j'ai vraiment le temps pour rien ces temps-ci :( )
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: Script Python pour traductions

Messagepar Natrium le Mer Mar 23, 2016 8:59 pm

C'est mieux, mais il y a encore des espaces et des tabulations mélangées, donc ça ne fonctionne toujours pas avec Python 3.

Laisse tomber pour l'instant, c'est pas comme si j'allais me mettre à traduire une FI spontanément, comme ça, demain.

Merci quand même pour l'effort ! :wink:
Fichiers joints
indentation.png
indentation.png (71.48 Kio) Vu 6511 fois
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1147
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Script Python pour traductions

Messagepar Mule hollandaise le Mer Fév 15, 2017 6:53 pm

Une nouvelle annonce, et une grande !

Comme avant, ça prend un HTML d'un Twine 1.4, ça crée un fichier .po avec les chaînes de caractère, et à vous de jouer !
L'alternative étant de trouver le fichier .tws, de cliquer sur chaque passage individuellement, d'éviter le code qui reste, etc. Alors que ce script ne touche pas aux images et aux commandes Twine (<< truc >>), et extrait juste le texte.
Seule limitation, avec du code un peu plus avancé parfois on se retrouve avec un nom de passage dans le .po, et il faut alors faire attention.

Ce sont deux scripts différents car parser du Twine est très différent de parser de l'inform... D'ailleurs je devrais peut-être scinder en scriptTradInform6.py et scriptTradInform7.py.

En espérant que ça puisse aider celles et ceux qui voudraient traduire des œuvres Twine !! :)
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm


Retourner vers Annonces

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

cron