BL Analyse des futurs fichiers à traduire

Daneel53

Sergeant Knight
WBVC
Best answers
0
Arrivés à ce stade, on se rend compte que rédiger la VF de Bannerlord ne va pas être de la tarte : non seulement il y aura au total probablement dans les 30000 lignes à traduire, mais en plus les nouvelles syntaxes vont rendre l'écriture des textes localisés bien délicate et la récupération de l'existant issu de Warband difficile.

Il y a donc deux possibilités à partir de maintenant : soit TW fait réaliser un localisation française, auquel cas on n'a pas à s'emmerder à la réaliser nous même et on attend qu'elle sorte, soit il n'y aura pas de localisation française et on a un sacré boulot qui nous attend.

Comme il faudra bien en avoir le cœur net, je me suis décidé à aller poster directement la question sur le forum Bannerlord.
https://forums.taleworlds.com/index.php/topic,387902.0.html

On verra s'ils répondent un jour...  :smile:
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Je suis en train de regarder de plus près les nouvelles syntaxes que l'on peut trouver dans Bannerlord, et par hasard je suis tombé sur cette section qui ne contient pas de syntaxe spéciale mais qui a attiré mon attention.
Textes anglais :
    <string id="module_strings.base.strings.string.text.str_i" text="I" />
    <string id="module_strings.base.strings.string.text.str_me" text="me" />
    <string id="module_strings.base.strings.string.text.str_he" text="he" />
    <string id="module_strings.base.strings.string.text.str_his" text="his" />
    <string id="module_strings.base.strings.string.text.str_king" text="king" />
    <string id="module_strings.base.strings.string.text.str_she" text="she" />
    <string id="module_strings.base.strings.string.text.str_her" text="her" />
    <string id="module_strings.base.strings.string.text.str_queen" text="queen" />
    <string id="module_strings.base.strings.string.text.str_khan" text="khan" />
La même chose en français après initialisation par la bibliothèque :
    <string id="module_strings.base.strings.string.text.str_i" text="Je" />
    <string id="module_strings.base.strings.string.text.str_me" text="moi" />
    <string id="module_strings.base.strings.string.text.str_he" text="il" />
    <string id="module_strings.base.strings.string.text.str_his" text="his{***}" />
    <string id="module_strings.base.strings.string.text.str_king" text="roi" />
    <string id="module_strings.base.strings.string.text.str_she" text="elle" />
    <string id="module_strings.base.strings.string.text.str_her" text="her{***}" />
    <string id="module_strings.base.strings.string.text.str_queen" text="reine" />
    <string id="module_strings.base.strings.string.text.str_khan" text="khan" />
On voit que tout existait déjà dans Warband sauf deux mots : his et her. Pas de problème me direz vous, ça se traduit facilement par son et sa... sauf que pas du tout !

En anglais, ces pronoms s'accordent avec le genre de la personne à qui appartient la chose dont on parle :
  • This item belongs to James, this is his table.
  • This item belongs to Lola, this is her table.
  • This item belongs to Lola, this is her armchair.
Alors qu'en français, le pronom s'accorde avec le genre de l'objet dont on parle :
  • Cet objet appartient à Jean, c'est sa table.
  • Cet objet appartient à Lola, c'est sa table.
  • Cet objet appartient à Lola, c'est son fauteuil.
Bon, je ne vous fais pas un dessin, le remplacement direct de his et her par son et sa ne fonctionne pas du tout en français. Or il faudra bien mettre une traduction pour ces deux mots qui seront ensuite utilisés automatiquement par Bannerlord avec d'autres textes pour fabriquer une phrase complète... qui sera grammaticalement fausse en français une fois sur deux statistiquement parlant suivant le genre de l'objet désigné.

Comment éviter cela ? Eh bien très sincèrement, je ne vois pas comment ça serait possible. Espérons que ces deux mots ne seront que très rarement utilisés dans les dialogues de Bannerlord...  :facepalm:

Ceci dit, il me semble que le problème est exactement le même en allemand (faudrait vérifier, mes deux années d'apprentissage de cette langue sont très très lointaines), auquel cas on peut espérer que les traducteurs en allemand feront remarquer aux devs que cette façon de procéder ne fonctionne pas du tout pour les langues autres que l'anglais.
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour,

Après avoir fait autre chose ces derniers jours, je suis revenu sur Bannerlord. J'ai relancé la beta, j'ai constaté qu'il y a eu une grosse mise à jour, je suis allé regarder si les fichiers en langue étrangère avaient changé... et effectivement ils ont beaucoup changé : ils ont totalement disparu, le dossier Modules\Native\Module data\languages est vide !

M'en fous, j'en avais fait une copie ailleurs, donc je peux toujours les remettre en place et mon pseudo fichier en français (quelques lignes traduites dans les options) fonctionne encore. Mais on peut s'interroger sur la disparition de ces fichiers. Soit ils se sont rendus compte qu'ils sont incomplets parce que les fichiers de base n'ont pas des ID corrects, soit ils ne veulent tout simplement pas que des rigolos comme moi commencent à essayer de traduire la beta. Mystère !

Enfin, ça ne m'empêchera pas de finir de migrer mon outil à la nouvelle structure des fichiers à traduire, après ça on verra bien. Le chemin vers la sortie officielle de Bannerlord va encore être trèèèèès long !

Et soit dit en passant : trois semaines après, ils n'ont toujours pas répondu à ma demande sur l'existence d'une future localisation en français. Pas glop, ça, pas glop !  :evil:
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour,

Pour faire réaliser mes premières traductions automatiques avec mon programme Traduire Bannerlord, j'avais réalisé une "super bibliothèque" constituée de la compilation des 16 bibliothèques de traduction de Warband en une seule bibliothèque pour le fichier unique string_translation_data de Bannerlord. Mais au total ce fichier pèse 33000 lignes, et faire balayer ces 33000 lignes par les 16200 lignes de string_translation_data pour essayer de les traduire, ben ça prend environ 1mn30 sur mon i5 4690.

Alors je me suis dit que cette super bibliothèque contient certes les textes de Native, mais aussi ceux de ACOK, Nova Aetas, L'Aigle et que ces trois derniers devaient être inutiles pour Bannerlord qui n'est que l'évolution naturelle de Warband. Donc je me suis refait un bibliothèque, mais constituée uniquement de l'intégralité des textes de la VF de Native... et je suis revenu à une bibliothèque de 8700 lignes qui me permet de faite descendre la traduction automatique de string_translation_data à environ 25 secondes. Sauf que...

Sauf que avec la super bibliothèque j'avais réussi à traduire automatiquement 4629 lignes alors qu'avec la bibliothèque limitée à Warband Native je n'en ai traduit que 4323, soit une différence de 306 lignes que Native seule ne peut traduire ! Allons bon ! Comment se fait-il que 300 lignes de Bannerlord ne soient traduites que par des textes de Nova Aetas, ACOK ou l'Aigle ? Comme vous pouvez l'imaginer, j'ai utilisé Winmerge pour voir les différences entre les fichiers résultant des traductions par les deux bibliothèques.

Allez, je vais faire court. Pendant un moment j'ai vraiment cru que Bannerlord avait pompé intégralement certains trucs de Nova Aetas. Notamment à cause de quatre lignes de texte que l'on trouve à l'identique dans Nova Aetas et pas dans Native, y compris la variable {s26} ce qui est quand même très précis. Sauf que j'ai fini par penser à aller fouiller les textes anglais de Viking Conquest et que j'y ai aussi trouvé ces quatre lignes à l'identique... et d'autres. J'avais aussi trouvé des mots ou expressions qui ne sont que dans l'Aigle... mais je me suis souvenu que TaleWorlds a aussi édité Napoleonic Wars, qui doit être dans le même esprit et à la même époque. Napoleonic Wars est payant, je n'ai pas de clé, donc je ne peux pas faire générer les textes anglais de ce mod, mais je suppose que j'y trouverai des choses qui sont aussi dans l'Aigle.

Bref, le constat est que non, Warband n'est pas resté au niveau de Native. Depuis TaleWolrlds a sorti d'autres mods (With Fire and Sword, Napoleonic Wars et Viking Conquest) qui ont fait évoluer le matériel et les textes de base. Après on ne peut exclure qu'ils ont aussi regardé ce qui se trouve dans les mods qui ont eu le plus de succès et on ne peut leur reprocher d'avoir pioché de bonnes idées ici ou là. D'ailleurs entre les trois jeux de TaleWorlds et les autres mods dont je parle, difficile de dire qui a copié qui et à quel moment, donc inutile de se lancer là dedans.

En tout cas cela veut dire que je vais devoir rester sur la super bibliothèque. Tant pis pour le temps que met chaque essai de traduction. De toute façon ce n'est pas le genre de chose qu'on aura à faire de nombreuses fois (sauf moi pour mes essais). Il me reste maintenant à viser le moyen d'améliorer le pourcentage de traduction automatique en introduisant dans la bibliothèque quelques syntaxes à la Bannerlord et en essayant l'adaptation de syntaxe à la volée durant la traduction : on y reviendra.  :smile:
 

Zombie Warrior

Knight at Arms
Best answers
0
Sans doute cela pourrait paraître évident ou stupide puisque je ne sais pas comment ton programme marche mais as-tu pensé d'utiliser plusieurs fils exécutions ou des méthodes asynchrones afin de rendre le processus de la traduction automatique plus rapide?

En passant, c'est vraiment intéressant comment ils ont organisés leurs fichiers. J'ai vraiment hâte que Bannerlord sorte pour expérimenter ici et la avec des petites idées de modification...
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
as-tu pensé d'utiliser plusieurs fils exécutions ou des méthodes asynchrones afin de rendre le processus de la traduction automatique plus rapide?
Non, parce que jusqu'à présent je n'avais jamais fait face à des temps de traitement supérieurs à dix secondes par fichier. Après, comme il s'agit de traiter un fichier ligne à ligne dans l'ordre et de ranger le résultat dans le même ordre, je ne pense pas qu'un traitement parallèle asynchrone permette d'aller plus vite sans danger pour l'ordonnancement général. Mais je peux me tromper, je n'ai jamais mis en œuvre ces techniques.
J'ai vraiment hâte que Bannerlord sorte pour expérimenter ici et la
Nous allons malheureusement devoir encore attendre longtemps. Pour l'instant, je vais passer à autre chose. :meh:
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour,

Après avoir fait autre chose ces derniers temps, j'ai relancé la Beta pour voir où ils en sont sur les fichiers texte.
Aujourd'hui la version est la b0.3.6, et si les fichiers de langue étrangère ne sont pas revenus, le fichier string_translation_data a pour sa part bien changé. Je vous laisse juge de son nouveau début, à comparer à ce que j'ai montré dans le premier message de ce sujet :
<?xml version="1.0" encoding="utf-8"?>
<base xmlns:mad:si="http://www.w3.org/2001/XMLSchema-instance" xmlns:mad:sd="http://www.w3.org/2001/XMLSchema" type="string">
  <tags>
    <tag language="English" />
  </tags>
  <strings>
    <string id="bHzPJfR." text="{CONVERSATION_SCRAP}." />
    <string id="jZF4l0jY" text="Oh, sorry, {?PLAYER.GENDER}madam{?}sir{\?}. May I be of service?" />    <string id="KPfs7L7B" text="Ah, my apologies, {?PLAYER.GENDER}madam{?}sir{\?}. May I help you with something?" />
    <string id="Os-upw6M" text="Beg pardon, {?PLAYER.GENDER}madam{?}sir{\?}, I need to get back to my parents. Is there anything you need?" />
    <string id="X1A4r7wY" text="Your good health, {?PLAYER.GENDER}madam{?}sir{\?}. May I help you?" />
    <string id="P99OLPWU" text="Excuse me, {?PLAYER.GENDER}madam{?}sir{\?}, but I must shortly go about my business. Is there anything you need?" />
    <string id="7kn4Jmdl" text="Ah, yes! We had such rhymes when I was young." />
Qu'on ne commence plus par la Pointed Imperial Blade n'est pas un problème, mais on voit surtout que les ID, qui étaient jusqu'à présent longs mais compréhensibles, sont devenus une suite de huit caractères aléatoires qui ne va plus permettre de voir de quoi il s'agit ni de deviner de quels fichiers ils sont issus.

Ceci confirme que la traduction de Bannerlord va consister à traduire un gros fichier de plus de 20000 lignes sans pouvoir catégoriser les lignes à traduire pour y aller progressivement. Il était quand même pratique, avec Warband, de pouvoir traiter les fichiers .csv un par un, et ceci dans un ordre respectant une certaine logique.

A part ça le fichier qui avait 16231 lignes au début en possède désormais 18027.

A suivre...
 

Zombie Warrior

Knight at Arms
Best answers
0
18.000, ouf!
Va falloir qu'ils commencent à commenter leur code avec des id pareils, sinon on ne finira plus de deviner ce qui se passe!

Sincèrement, tout mettre dans un seul fichier semble être une monumentale erreur d'organisation et une qui pourrait faire perdre beaucoup de temps à n'importe qui qui souhaite modifier le jeu...
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
La beta est désormais en version b0.4.1.

Le fichier string_translation_data possède désormais 18165 lignes. Petit à petit, il gonfle...
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Allez, j'ai refait quelques essais de traduction automatique à partir d'une bibliothèque complète contenant les quatre mods habituels et dans laquelle j'ai ensuite remplacé {playername} par {PLAYER.LINK} et les {/e} par {?PLAYER.GENDER}e{?}{\?} pour me mettre dans la nouvelle syntaxe de Bannerlord.

Le résultat brut est que je traduis automatiquement 4125 lignes sur les 18157 que contient le dernier fichier string_translation_data. Alors d'accord, avoir 4000 lignes déjà traduites sur 18000, c'est bien mieux que de partir de rien du tout. Mais ça laisse la porte ouverte à faire beaucoup mieux, surtout quand on est conscient que de nombreuses phrases sont bien directement issues de Warband et qu'elles ne sont pas traduites automatiquement uniquement à cause des modifications de syntaxe du style {?NPC.GENDER}lady{?}man{\?} au lieu de {reg4?lady:man}.

Je vais donc être amené, s'il faut nous fendre d'une VF intégrale si TaleWorlds ne sort de VF officielle, à faire deux choses pour aller vers la première VF intégrale de Bannerlord :
  • Identifier les lignes où il n'y a rien à traduire parce qu'il n'y a pas de texte à proprement parler.
  • Introduire la logique floue pour retrouver les lignes potentiellement d'origine de Warband et pouvoir proposer une traduction.
Pour le premier cas, j'ai trouvé dans Bannerlord des lignes de ce style :
{REFUSE_BARTER_LINE}
{AGREE_TO_TAKE_PAYMENT}[ib:aggressive][rb:trivial]
Dans les deux cas, on est uniquement face à une variable, éventuellement complétée par des indications de réponses "émotives", variables et expressions qui n'ont absolument pas à être traduites en français. Le texte de la VF doit donc rester strictement identique à la VA. Je vais modifier le code de traduction automatique pour détecter les lignes de ce type et simplement les recopier à l'identique.

Pour le deuxième, regardons l'exemple suivant, d'abord tiré de Bannerlord puis de Warband :
Forgive me, {?NPC.GENDER}madame{?}sir{\?}. I don't know what I was thinking.
Forgive me sir. I don't know what I was thinking.
On voit que si on est capable de détecter la deuxième partie du texte, alors on pourra proposer la traduction issue de la VF de Warband Pardonnez-moi monsieur, je ne sais pas ce qu'il m'a pris. puis simplement la corriger en introduisant le {?NPC.GENDER}madame{?}monsieur{\?}.

Je ne pense pas faire ce genre de correction automatiquement, mais plutôt proposer une traduction issue de Warband que le traducteur prendra s'il la juge adaptée puis ajoutera le matériel manquant à la main.

 

Sinjide

Sergeant
WBNWVC
Best answers
0
C'est pas une mauvaise idée de traduire du texte via un quelconque algorithme ? Rien de personnel hein, Google Trad n'y arrive toujours pas alors je me posais la question.
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour Sinjide,

Je ne pratique pas la traduction automatique au sens Google Trad ou DeepL. Mon programme Traduire Bannerlord repose sur ce que j’appelle une bibliothèque de traduction qui contient l'intégralité des textes des VF de Warband et des mods ACOK, Nova Aetas et L'Aigle. Ces VF ont été réalisées à la main et tous les textes qui s'y trouvent ont donc été lus et validés par un traducteur humain.

Ce que j'appelle traduction automatique consiste uniquement à faite tourner une moulinette qui, pour chaque texte de Bannerlord, regarde si ce texte anglais figure à l'identique dans la bibliothèque et, si oui, prend le texte de la VF dans laquelle il se trouvait et a déjà été traduit. Ce n'est quelque part que du copier-coller. Et comme c'est un algorithme programmé qui fait cette moulinette, c'est pourquoi je dis que la traduction est automatique : j'appuie sur un bouton et le travail se fait tout seul.

Quand je dis que mon processus de traduction automatique a traduit 4125 lignes sur les 18157 que contient le fichier string_translation_data.xml de Bannerlord, cela signifie que 4125 lignes de Bannerlord sont reprises à l'identique de Warband et ses mods, qu'elles ont déjà été traduites à la main et figurent dans la bibliothèque de traduction.

Les 14000 lignes restantes ne le sont pas soit parce que ce sont des textes totalement nouveaux pour Bannerlord, soit parce que la syntaxe des variables a changé entre Warband et Bannerlord et que les textes anglais existants venus de Warband ont été modifiés à cause de cela. Dans les deux cas les textes anglais ne sont pas présents à l'identique dans ma bibliothèque, donc ils ne sont pas traduits.

C'est pour traiter le deuxième cas, des textes venus de Warband mais légèrement modifiés à cause de la nouvelle syntaxe des variables, que j'envisage d'introduire une notion de logique floue qui permettrait de voir qu'un texte anglais de Bannerlord est presque identique à un texte de Warband. Il n'y aura pas de traitement automatique de l'ensemble du texte de Bannerlord avec ce processus. Je vise à l'introduire dans la fonction d'édition ligne à ligne de Traduire Bannerlord et à proposer au traducteur, pour la ligne sur laquelle il se trouve, de possibles traductions existantes en bibliothèque. Libre à lui ensuite de prendre une proposition ou pas puis de l'ajuster à la main, le choix sera toujours humain et la rédaction finale aussi.  :smile:
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour,

Je constate aujourd'hui que la beta est désormais en version 0.4.3 avec une très grosse modification : le fichier string_translation_data est désormais découpé en six fichiers string_translation_data_0 à string_translation_data_5 !

Les cinq premiers fichiers contiennent tous exactement 3008 lignes et le dernier à peine 164, c'est à dire que pour l'instant environ 3000 lignes ont disparu au passage. Le fait que les cinq premiers fichiers aient exactement le même nombre de lignes montre que cette découpe est purement arithmétique et non conduite par un rangement du contenu par catégories comme l'étaient les fichiers .csv de Warband.

Ceci montre aussi qu'il est beaucoup trop tôt pour envisager de traduire Bannerlord nous-même sans attendre la VF officielle qui a été confirmée car si la structure des fichiers change sans arrêt, tout le travail que nous pourrions faire serait sans cesse à refaire.

J'aurais quand même des modifications à faire dans ma bibliothèque de traduction l'année prochaine, car par exemple les phrases avec des conversations encadrées par des caractères " ne passeront pas vu que les textes des fichiers xml sont eux-même encadrés avec des ", on ne peut pas mettre des caractères comme ceux-là à l'intérieur des textes.

Ou alors je ne fais strictement plus rien et j'attends tout simplement la première VF officielle pour me rebâtir une bibliothèque toute neuve... Rendez-vous dans un an ?
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
En tout cas, à l'année prochaine !

Laissons passer les fêtes de fin d'année, on reprendra tout ça à tête reposée en 2020 quand la Beta laissera sa place à l'Early Access. Early Access auquel probablement je ne participerai pas car celui-là, au contraire de la Beta, sera payant.

Enfin, on verra bien...

A bientôt, en 2020 !  :twisted:
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Un peu avant 2020, finalement !

La beta est aujourd'hui en version 0.5.1 et la découpe des fichiers à traduire a encore changé. On a maintenant 27 fichiers aux nombre de lignes variables car ils sont rangés dans l'ordre alphabétique des premières lettres de id : de string_translation_data_0 à _25 pour les 26 lettres de l'alphabet, et le dernier (_26) pour les id commençant par un chiffre. Le tout représente désormais moins de 10000 lignes, tout ne doit donc pas y être...

Toujours aucun rangement "logique" en fonction du contenu.

A suivre...  :smile:
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour,

Juste un mot rapide pour dire que la beta est passée en 0.6.0 mais les 27 fichiers à traduire n'ont pas changé. Seraient-ils enfin stabilisés ?

Enfin, je suppose que les choses bougeront avec l'early access.

A +
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour,

Nouveau changement avec la 0.6.2 : les fichiers à traduire ont été ramenés à 6 fichiers. En fait c'est le même contenu que les 27 fichiers (environ 7500 lignes à traduire au total), mais regroupés en six paquets plus gros. Ils sont malheureusement toujours rangés dans l'ordre alphabétique des Id qui sont toujours une suite de caractères aléatoires, donc les textes n'ont aucune suite logique et il est impossible de suivre une conversation comme on pouvait le faire dans les fichiers .csv de Warband. C'est très ennuyeux pour la traduction, ça, car chaque ligne à traduire est totalement décorrélée de son contexte.

Je dis ça parce que j'avais commencé à traduire le premier des 27 fichiers, pour voir, et c'est très perturbant. Si par exemple on voulait simplement traduire l'écran des options vidéo, eh bien tous les labels de ces paramètres sont éclatés dans tous les fichiers, là où auparavant on les trouvait tous les uns sous les autres dans le même fichier .csv. Donc cet écran ne sera traduit que quand tous les fichiers seront traduits. A l'inverse quand on tombe sur un adjectif seul de type "Green", impossible de savoir s'il faut traduire en "Vert" ou "Verte" parce qu'on n'a pas le contexte. Il est aussi impossible désormais de repérer les phrases qui s'adressent au personnage principal de celles qui s'adressent aux PNJ, donc impossible de mettre spontanément les adjectifs au féminin si le personnage principal est une femme. Si par exemple on trouve tout simplement "I saw you.", impossible se savoir à qui cette phrase s'adresse, donc on ne peut pas traduire spontanément par "Je vous ai vu{?PLAYER.GENDER}e{?}{\?}.".

Sinon peu importe le nombre actuel de fichiers à traduire, le programme lit tous les fichiers xml qu'il trouve dans le dossier language. Je dis ça parce que j'avais pour l'exemple modifié quelques labels dans le fichier string-translation-data_23. Bien qu'en 0.6.2 les fichiers anglais vont désormais de 0 à 5, les textes en français écrits dans le fichier string-translation-data_23_fr.xml qui était resté en place sont toujours lus, preuve que le programme l'a chargé alors qu'il n'y a plus de fichier anglais 23.