BL Analyse des futurs fichiers à traduire

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour,

Suite à la sortie de la Beta pour quelques Steamers, j'ai pu me faire envoyer un fichier sensé contenir dans le futur des traductions des textes de Bannerlord. Je dis dans le futur car bien que le fichier soit sensé contenir de l'allemand, il ne contient en fait que de l'anglais, nous y reviendrons. Il s'agit du fichier string_translation_data_de.xml qui se trouve dans le dossier Mount & Blade II Bannerlord - Beta\Modules\Native\ModuleData\Languages à côté de ses deux copains japonais et turc.

Oui, il possède l'extension .xml et non plus .csv. On le savait déjà, exit les fichiers formatés à la sauce spécifique TaleWorlds, place aux fichiers en XML qui semble-t-il seront légion dans le futur Module System. Ceci va donc changer fondamentalement notre méthode de traduction aujourd'hui bien huilée. Mais voyons d'abord à quoi ressemble ce nouveau format. Plutôt que de vous mettre un simple extrait du fichier constitué aujourd'hui de 16232 lignes (!), j'ai préféré vous faire un raccourci avec quelques extraits choisis pour illustrer les propos qui vont suivre.

Nota : Je ne vais pas faire ici un cours de XML. IL suffit de savoir qu'en XML :
  • toutes les informations sont "taggées",
  • c'est-à-dire sont encadrées de deux expression de type <MonPaquet> et </MonPaquet> pour marquer le début et la fin d'une suite d'informations,
  • commencent par <MonInfo et se terminent par /> pour l'information en question,
  • chaque information peut contenir plusieurs variables élémentaires indiquées par un truc du style "Variable= ".
<?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="Deutsch" />
  </tags>
  <strings>
    <string id="crafting_pieces.CraftingPieces.CraftingPiece.name.empire_blade_1" text="GERPointed Imperial Blade" />
    <string id="lord_conversations_66" text="GER{SURRENDER_DEMAND_STRING}" />
    <string id="lord_conversations_67" text="GERSo, then. What is it?" />
    <string id="raid_enemy_village_quest_behavior_17" text="GERRaid the enemy village in  in {GIVEN_DAYS} {?GIVEN_DAYS &gt; 1}days{?}day{\?} and then return to me with the good news." />
    <string id="raid_enemy_village_quest_behavior_18" text="GERMy {?PLAYER.GENDER}Lady{?}Lord{\?} I am afraid I cannot do that." />
    <string id="villager_campaign_behavior_5" text="GERWe have {PRODUCTS}. We can let you have them for {TOTAL_PRICE}{GOLD_ICON}." />
    <string id="villager_campaign_behavior_6" text="GERAll right. Here is {TOTAL_PRICE}{GOLD_ICON}." />
    <string id="game_menus.base.GameMenus.game_menu.default_text.menu_requested_castle_granted_to_player_husband" text="GERYou receive a message from your liege, {TOWN_NAME}.^^ {?KING.GENDER}She{?}He{\?} has decided to grant {TOWN_NAME} and {VILLAGES} to your husband, {HUSBAND.LINK}." />
    <string id="bandits_campaign_behavior_24" text="GERThat's enough talking for now. Make your choice.[if:idle_angry][rb:trivial][ib:aggressive]" />
    <string id="module_strings.base.strings.string.text.str_you_speak_of_claims_and_legalities_yet_to_others_you_talk_of_bringing_peace_by_force" text="GERYou speak of claims and legalities, yet to others you talk of bringing peace by force" />
  </strings>
</base>
Voyons maintenant la structure générale du contenu. Là où auparavant les fichiers .csv n'avaient que des données utiles de la première à la dernière ligne, on trouve ici des lignes d'introduction et d'encadrement du contenu utile, XML oblige :
  • Une ligne de version du XML et de type d'encodage que l'on trouve dans la plupart des fichiers XML.
  • Une rubrique <base> qui va contenir tout ce qui va suivre jusqu'à la dernière ligne </base>.
  • Une rubrique <tags> qui permet de donner la langue des textes du fichier.
  • Et enfin une rubrique <strings> qui contient une longue suite d'informations <string> dont chacune contient un texte à traduire.
L'important est de voir que chaque <string> contient deux variables élémentaires : id et text, les équivalents de ce que j’appelais auparavant dans les fichiers .csv le label (ou la clé) et le texte proprement dit. Bannerlord n'ayant pas balayé Warband, loin s'en faut, on retrouve dans le fichier de Bannerlord plein de phrases identiques à celles qui figurent dans Warband. Prenons par exemple la première ligne du dialogs de Warband et son équivalent dans Bannerlord :

dlga_award_fief_to_vassal:award_fief_to_vassal_defer|I wish to defer the appointment of a lord, until I take the counsel of my subjects

<string id="conversations.base.Conversations.conversation.text.4" text="GERI wish to defer the appointment of a lord, until I take the counsel of my subjects" />

Dans Warband nous avions Label|Texte.
Dans Bannerlord nous avons <string id=Label text=Texte />

La façon de procéder pour traduire sera donc a priori simple : on ne touche toujours pas au label et on se contente de traduire ce qui se trouve derrière text= (en laissant en place le /> final bien entendu).
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
On va maintenant regarder d'un peu plus près le contenu des ces textes.

D'abord, première évidence, le fichier de la langue allemande est en anglais. Je ne sais pas pourquoi les fichiers nommés _de, _jn et_tk se trouvent dans la distribution de la version Beta puisqu'ils ne servent à rien, mais peu importe, ça m'arrange vu que je cause très mal allemand et pas du tout japonais et turc. Comme ça au moins je peux comprendre le contenu.

Deuxième évidence, tous les textes commencent par GER (pour German). Là c'est franchement bizarre, vu que comme on est dans le fichier allemand de par son nom et attesté de plus par le tag language="Deutsch", je ne vois pas pourquoi il faudrait faire commencer tous les textes par GER. Serait-ce une façon de montrer lors de leur lecture par le jeu que ces textes ne sont pas traduits, auquel cas il ne faudra évidemment pas les mettre quand on écrira le texte en langue étrangère ? Mystère, on ne le saura que quand TaleWorlds se décidera à communiquer sur ces fichiers et donnera officiellement la façon de procéder, et ça n'est pas demain la veille. En attendant, on va donc les garder et par défaut et considérer qu'ils seront toujours là, avec EN devant les textes anglais (quand on les aura) et FR devant les textes français, même si c'est très chelou.

Intéressons-nous maintenant au contenu des textes eux-mêmes.

La première chose qui saute aux yeux, c'est l'apparition de plein de nouvelles variables. Dans Warband il y a {playername}, les variables {sN} et {regN}... et c'est tout. Là on voit {SURRENDER_DEMAND_STRING}, {GIVEN_DAYS}, {PRODUCTS}, {TOTAL_PRICE}, {GOLD_ICON}, {TOWN_NAME}, {VILLAGES}... et je n'ai pas tout mis dans l'exemple, loin de là, il y en a beaucoup d'autres. Le grand intérêt de ces nouvelles variables, c'est que leur nom est explicite. Souvent dans les textes de Warband on se demande si {s5} est un personnage, une ville ou une faction, on fait des suppositions mais il arrive régulièrement que quand le texte sort en jeu on s’aperçoive qu'on a mal joué aux devinettes. Là au moins c'est très clair, on sait ce que contiendra la variable et on fera moins de bêtises en traduisant. Quand on lit {WAR_FACTION_1} declared war on {WAR_FACTION_2}, on n'a pas à se poser de question car c'est beaucoup plus clair que {s1} declared war on {s2} où on ne sait pas si s1 et s2 sont des factions ou des dirigeants. L'arrivée de ces nouvelles variables est donc la bienvenue.

On voit aussi que, héritage des propriétés des langages orientés objet, ces variables disposent elles aussi de propriétés. {PLAYER.GENDER}, par exemple, donne le genre du joueur. On trouve la même chose pour des PNJ, comme pour {KING.GENDER} ou {LORD.GENDER}. Il y a aussi la propriété .LINK, comme dans HUSBAND.LINK, dont la signification est pour le moment brumeuse car je ne vois pas de point commun entre cela et par exemple PRISON_PARTY_LEADER.LINK et ASKED_LORD.LINK. Là il faudra attendre les explications de TaleWorlds.

Un autre point important est la syntaxe liée aux questions.

Dans Warband, pour changer le texte en fonction du genre, on avait une syntaxe du style {reg63?Monsieur:Madame} où reg63 devait avoir été chargé préalablement par le jeu avec le genre du personnage dont on parle. Dans Bannerlord on retrouve le même genre de chose mais sous la forme suivante : {?PLAYER.GENDER}madam{?}sir{\?}. C'est peut-être plus clair, mais ça complique quand même sacrément la syntaxe. En effet là où, pour ajouter un "e" au féminin, on pouvait écrire par exemple "battu{reg63?:e}" (voire battu{/e} si joueur principal), il faudra maintenant écrire "battu{?PNJ.GENDER}e{?}{\?}". C'est quand même long juste pour ajouter un "e" et il y aura des risques certains de mauvaises syntaxes si on ne fait pas attention.

Ceci dit il existe maintenant des syntaxes de question étendues et permettant de faire beaucoup plus de choses. Un truc gênant, par exemple actuellement, est que quand on doit écrire "il y a {reg5} blessés", on fait une faute d'orthographe si reg5 vaut 0 ou 1. Malheureusement il n'y a aucun moyen dans Warband de savoir si reg5 va demander le singulier ou le pluriel. C'est désormais possible dans Bannerlord. Regardez bien la quatrième string  :
Raid the enemy village in  in {GIVEN_DAYS} {?GIVEN_DAYS &gt; 1}days{?}day{\?}
Eh oui, il y a bien l'interrogation "est-ce que GIVEN_DAYS est plus grand (gt, greater than) que 1 ou pas, si oui on écrit "days", si non c'est "day". Enfin ! Plus de raison de faire des fautes de grammaire suivant le singulier ou le pluriel.
A noter que j'ai trouvé une deuxième syntaxe qui fait à peu près la même chose :
{PRISONERS_AMOUNT} Prisoner{?ISPLURAL}s{?} {\?}
Il faudra voir à l'usage la raison d'être de ces deux syntaxes pour faire a priori la même chose.

On peut voir aussi un nouvelle syntaxe dans  :
Make your choice.[if:idle_angry][rb:trivial]
Difficile de dire aujourd'hui ce que cela provoquera dans le jeu. Une expression sur le visage de la personne affichée ? Quoi qu'il en soit ce genre de chose ne sera probablement pas à traduire, il faudra juste laisse en place les [XXX] en traduisant.

Conclusion :

On trouvera dans les textes de Bannerlord beaucoup de nouvelles variables et syntaxes et il faudra attendre la documentation du Module System pour en connaître toute l'étendue et la richesse, ainsi pour certaines que des explications sur leur fonctionnement. Tout cela ne va pas remettre fondamentalement en question la façon de traduire et va permettre de faire moins d'erreurs de grammaire qu'avant du fait des nouveautés, mais la richesse des nouvelles possibilités se fait au détriment de la simplicité et il faudra être très vigilant pour ne pas commettre d'erreurs typographiques en écrivant ces nouvelles syntaxes plus complexes. Traduire va, à mon sens, demander davantage de temps du fait de l'attention soutenue qu'il faudra porter à ces syntaxes spéciales durant l'écriture.
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
J'ai oublié de signaler que si j'ai réussi à voir l'existence du fichier string_translation_data.xml via une vidéo mise en ligne, ce fichier n'est certainement pas le seul car j'ai par exemple remarqué que les labels figurant dans certains écrans affichés en jeu ne sont pas dans ce fichier. Or il faudra bien les traduire aussi. Alors soit le fichier de traduction n'est pas encore complet, soit il y en aura d'autres.

N'étant pas dépositaire de la beta, je ne peux guère chercher davantage.

D'ailleurs j'ai une question à poser si quelqu'un ayant la beta passe par ici : y a-t-il dans la beta un écran préliminaire de chargement où on pourrait changer la langue du jeu comme le premier écran de Warband où on choisit la langue, le module à jouer et certaines options graphiques avant le lancement du cœur du jeu ?
 

General2000

Recruit
WBNW
Best answers
0
Daneel53 said:
D'ailleurs j'ai une question à poser si quelqu'un ayant la beta passe par ici : y a-t-il dans la beta un écran préliminaire de chargement où on pourrait changer la langue du jeu comme le premier écran de Warband où on choisit la langue, le module à jouer et certaines options graphiques avant le lancement du cœur du jeu ?
Salut,

Pour l'instant le launcher de bannerlord ne propose pas de changer la langue ( sauf qu'en on est dans le jeu ).
Il y'a un onglet DLC du launcher qui affiche "Native" et il y'a aussi un onglet Mods mais il est vide bien entendu.
Il semble qu'il n'y ait pas d'options graphiques dans le launcher.

Voilà voilà :smile:

ps : J'ai la beta donc si besoin hésite pas à me contacter :wink: ( j'ai pas mal de temps libre pour le moment ).
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour,

sauf quand on est dans le jeu
Dois-je comprendre qu'il est donc théoriquement possible de changer la langue dans la version beta, même si l'endroit où ça se fait a changé par rapport à Warband ? Car ce qui m'intéresserait serait d'essayer de modifier des textes et voir si le jeu répercute les modifs. Pour l'instant vous ne verriez rien car les trois fichiers de langue que j'ai entrevus ne contiennent que de l'anglais, mais si on modifie un texte et qu'on change la langue ?
 

General2000

Recruit
WBNW
Best answers
0
Daneel53 said:
Dois-je comprendre qu'il est donc théoriquement possible de changer la langue dans la version beta, même si l'endroit où ça se fait a changé par rapport à Warband ? Car ce qui m'intéresserait serait d'essayer de modifier des textes et voir si le jeu répercute les modifs. Pour l'instant vous ne verriez rien car les trois fichiers de langue que j'ai entrevus ne contiennent que de l'anglais, mais si on modifie un texte et qu'on change la langue ?
Salut,

J'ai fais un test en essayant de changer la langue du jeu pour le passer en allemand en relançant le jeu.

C'était toujours en anglais ou du moins presque. L'onglet Armory en version anglaise était traduite en allemand par "GERARMORY", même cas pour d'autres onglets exceptés les textes qui étaient entièrement en anglais ( en gros la version de base du jeu en anglais quoi ).

Après je n'ai pas touché aux fichiers du jeu vu que je ne n'y connais rien ( je viens à peine d'avoir la clé pour la beta fermée ^^ ), mais je pense qu'il est possible de faire des modifications qui se répercute dans le jeu ( en tout cas pour la beta ).
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Comme je l'ai expliqué dans le premier message de ce sujet, le fichier de langue allemande, par exemple, contient actuellement non la traduction allemande mais des textes en anglais précédés de GER.

Pour rebondir sur ton exemple, on trouve le texte que tu cites dans la ligne 15943 du fichier
Mount & Blade II Bannerlord - Beta\Modules\Native\ModuleData\Languages\string_translation_data_de.xml
<string id="str_armory" text="GERArmory" />
Si tu remplaces cette ligne par <string id="str_armory" text="Armure" /> et que tu passes en langue allemande, il se passe quoi ?
 

General2000

Recruit
WBNW
Best answers
0
Daneel53 said:
Si tu remplaces cette ligne par <string id="str_armory" text="Armure" /> et que tu passes en langue allemande, il se passe quoi ?
Excellente nouvelle ça a marché  :party: , la modif a pris effet ( je ne sais pas si je peux faire des screenshots vu que je suis en beta fermée ).
 

LeChat

Sergeant Knight at Arms
WBM&BWF&SVC
Best answers
0
Il n'y aurait pas moyen de demander directement aux développeurs comment ça fonctionne ?
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Excellente nouvelle ça a marché
Super ! Je sais donc a priori quoi faire pour traduire les textes anglais. J'aurais d'autres essais à faire pour voir si on peut ajouter la langue française qui n'existe pas encore, mais c'est un peu tôt pour ça et de toute façon je n'ai pas accès à la béta.
Il n'y aurait pas moyen de demander directement aux développeurs comment ça fonctionne ?
Je pense que tout sera expliqué quand ils publieront leur nouveau "Module System", mais comme ça ne sera pas fait avant la sortie de la version finale de Bannerlord, je pense qu'ils ne répondront pas à ce genre de question auparavant.

 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Vu les dizaines de vidéos de plus de dix minutes réalisées avec la beta qui sont accessibles sur YouTube (pour citer le site le plus célèbre et évident), je ne vois pas pourquoi poster une simple capture d'écran serait répréhensible...
 

Míriel

Section Moderator
M&BWBWF&S
Best answers
0
Daneel53 said:
Vu les dizaines de vidéos de plus de dix minutes réalisées avec la beta qui sont accessibles sur YouTube (pour citer le site le plus célèbre et évident), je ne vois pas pourquoi poster une simple capture d'écran serait répréhensible...
Il s'agit d'une beta "fermée", pour avoir participé à plusieurs betas pour différents jeux, il est "généralement" demandé d'accepter une close de non divulgation.
Donc à moins que ce ne soit pas le cas je lui recommande fortement de ne rien rendre publique.
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour,

Revenons au sujet principal, les fichiers à traduire. Je tiens en préambule à remercier chaleureusement Ettenrocal qui m'a fait parvenir une clé disponible, j'ai donc pu télécharger la version beta de Bannerlord et la lancer.

Je vais maintenant pouvoir me lancer à la recherche des textes anglais que l'on voit dans le jeu et qui ne se retrouvent pas dans le fichier string_translation_data. Comme il y a de très nombreux fichiers xml répartis dans de très nombreux dossiers, il y en a pour un moment.

En attendant je vais faire générer par mon outil un fichier string_translation_data_fr qui contiendra les 4600 lignes déjà traduites grâce à la bibliothèque de traduction et essayer de le faire accepter par le jeu.
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
pour avoir participé à plusieurs betas pour différents jeux, il est "généralement" demandé d'accepter une close de non divulgation. Donc à moins que ce ne soit pas le cas je lui recommande fortement de ne rien rendre publique.
J'ai trouvé cette phrase dans le premier message du sujet qui parle de NDA (Non Disclosure Agreement) :
https://forums.taleworlds.com/index.php/topic,386441.0.html
we have just finished up at gamescom, where we handed out 5000 beta keys to visitors to our booths. Obviously, this means that we can't really enforce any sort of NDA going forward, so the decision has been made to allow people to share their involvement in the beta with their friends, as well as, post screenshots or videos online.
Traduction : ils ont distribué tellement de clés, y compris à la Gamescom, qu'espérer une non divulgation des informations par les beta testeurs est un rêve inatteignable. Donc la mise en ligne de captures d'écran et de vidéos est autorisée.

Parfait ! Je pourrai en poster quelques unes pour illustrer mes essais de traduction de Bannerlord.
 

Daneel53

Sergeant Knight
WBVC
Best answers
0
Allez, on attaque le vif du sujet !

Quand on lance Bannerlord, on se trouve face à cet écran :
Si on clique sur la roue Paramètres en haut à gauche, on arrive sur l'écran suivant où se trouvent cinq onglets, là j'ai sélectionné l'onglet "Gameplay" qui est celui où on peut sélectionner la langue :
Comme déjà évoqué, il y a trois fichiers de langues présents dans le dossier Modules\Native\ModuleData\Languages du jeu :
C'est donc sans surprise que le jeu propose, en plus de l'anglais, les langues allemandes, japonaises et turques. La question est maintenant : peut-on ajouter le français ? La réponse est oui.

Pour se faire j'ai tout simplement dans un premier temps fait une copie du fichier allemand, je l'ai renommé en string_translation-data_fr.xml, je l'ai édité et j'ai remplacé le tag "Deutsch" par "Français", comme ceci :
Le répertoire de langues contient donc désormais quatre fichiers :
Puis j'ai relancé le jeu et ça a donné ceci dans l'onglet Gameplay :
Voilà, le fichier modifié a été accepté et le français est disponible ! On le sélectionne, on valide avec le bouton Apply, on quitte le jeu et on le relance (non, pas de prise en compte immédiate du changement de langue pour l'instant) et voilà ce que ça donne :
Et là il y a des choses intéressantes à remarquer !

J'ai déjà signalé que :
  • Tous les textes présents dans le fichier de langue allemand commencent pour l'instant par GER.
  • Tous les textes du jeu ne sont pas présents dans ce fichier.
Et là c'est flagrant :
  • Les cinq onglets du haut, 3 onglets internes de la page et les deux boutons du bas commencent par GER ; on doit donc pouvoir les traduire via le fichier string_translation_data.
  • Deux onglets de la page Paramètres (Audio et Graphics) et la totalité des options affichées ne commencent pas par GER ; on ne pourra pas les traduire pour l'instant.
Voilà, on s'arrête là pour l'instant, on continue dans un autre message.
 
Last edited:

Daneel53

Sergeant Knight
WBVC
Best answers
0
Alors, c'est facile d'implémenter le français ? A première vue, oui. J'ai plongé dans le fichier avec Notepad++, j'ai cherché certains des textes présents dans cet écran et je les ai modifiés comme ceci :
J'ai relancé Bannerlord et voilà ce que ça a donné :
Voilà, super, les textes modifiés sont désormais en français ! Nickel, il n'y a plus qu'à traduire ? Qu'à cela ne tienne. Comme j'ai modifié récemment mon futur outil Traduire Bannerlord pour qu'il génère un fichier string_translation_data_fr initialisé avec ma bibliothèque de traduction issue de Warband, je dispose d'un fichier dans lequel 4600 lignes sont d'ores et déjà traduites en français.

Voici un petit extrait pour exemple (certaines phrases peuvent rappeler des choses aux joueurs de Warband assidus) :
Confiant, je relance le jeu avec ce fichier, mais là, patatras !
Et oui, un bon crash au chargement !

Bon, vous pensez bien que j'ai vérifié la syntaxe globale du fichier généré par mon programme, mais ce n'est pas de là que vient le problème. J'ai laissé mûrir la question jusqu'à ce que, en me penchant sur la syntaxe détaillée du XML, le déclic se fasse : du fait de la nature particulière de la syntaxe du XML, certains caractères ne peuvent pas passer sous leur forme naturelle.

Un exemple simple. Dans un tag <string il est écrit texte="xxx". Ceci interdit de fait de mettre des caractères " dans le texte en question car cela ferme le contenu de la variable texte et le reste ne peut pas être lu. Donc, en XML, ce caractère doit être remplacé par l'expression &quot; . Oui, six lettres à la place d'un seul caractère, et d'autres caractères sont dans le même cas.

Donc comme il y a dans les textes récupérés des textes du style Je lui ai dit "Bienvenue" quand il est arrivé, la traduction automatique a généré une ligne comme
<string id="conversations.base.Conversations.conversation.text.173" text="Je lui ai dit "Bienvenue" quand il est arrivé." />

Ligne qui contient des guillemets dans les guillemets, donc ligne avec une syntaxe incorrecte, donc plantage à la lecture par Bannerlord.

Par la suite, en y réfléchissant, je me suis dit que les textes de Warband contiennent aussi les anciennes expressions valides dans Warband comme {/e}, {reg63?monsieur:madame}, {playername}, toutes expressions qui ont été remplacées par autre chose dans Bannerlord et qui ne sont plus acceptées par ce dernier, susceptibles donc de faire planter la lecture du fichier string_translation_data-fr.xml.

Et là on voit que faire passer les textes conservés de Warband dans Bannerlord va être autrement plus compliqué qu'une simple traduction automatique. Car certes les textes simples passeront, comme l'exemple des titres des onglets et boutons ci-dessus l'a montré, mais tous les textes contenant des caractères spéciaux ou des expressions de Warband devront être repris à la main en respectant les nouvelles syntaxes de Bannerlord... qui ne sont pas aujourd'hui expliquées.

Alors, quand on connaitra toutes les nouvelles règles et syntaxes de Bannerlord, on pourra peut-être envisager de mettre en place une correction automatique de syntaxe pour passer de Warband à Bannerlord, mais pour l'instant on est un peu bloqués. Je vais quand même essayer de me concentrer sur des exemples simples pour voir ce qui passe et ce qui ne passe pas.

On en parle un autre jour... :neutral:
 
Last edited:

Daneel53

Sergeant Knight
WBVC
Best answers
0
Bonjour,

Nous avons vu que certains textes sont traduisibles via le fichier string_translation_data et d'autres n'y figurent pas. Pourtant ils sont affichés, donc il faut bien que ces textes figurent quelque part. Ce constat amène deux questions :
  • Dans quels fichiers se trouvent les textes affichés ?
  • Quel lien y a-t-il entre ces fichiers et string-translation_data ?
D'abord, une première évidence, il y a de très nombreux fichiers xml dans l'arborescence de Bannerlord, répartis un peu partout. C'est là que la fonction "Rechercher dans les fichiers d'un dossier" de Notepad++ va être d'une aide essentielle. La première string présente dans string_translation_data va permettre d'éclairer tout ça.

Cette première string est la suivante :
<string id="crafting_pieces.CraftingPieces.CraftingPiece.name.empire_blade_1" text="GERPointed Imperial Blade" />

J'ai donc demandé à Notepad++ de rechercher la chaine "Pointed Imperial Blade" dans la totalité des fichiers xml de l'arborescence de Bannerlord, et il m'a sorti cela :
Autrement dit, on trouve la chaine dans les quatre fichiers string_translation_data, normal, et dans le fichier Modules\Native\ModuleData\Crafting_pieces.xml. Et si on regarde bien la ligne dans ce dernier fichier, que voit-on ?
<CraftingPiece id="empire_blade_1" name="{=CraftingPieces.CraftingPiece.name.empire_blade_1}Pointed Imperial Blade"

Avant le texte Pointed Imperial Blade se trouve l'expression {=CraftingPieces.CraftingPiece.name.empire_blade_1} où le texte entre {} se trouve justement être l'id indiqué dans la string de string_translation_data !

Nous avons donc ici la façon dont le lien est fait entre un texte à afficher dans son fichier descriptif et la chaine traduite quand elle existe dans string_translation_data.

L'étape suivante est donc bien tentante : et si on ajoute une nouvelle ligne dans string_translation_data avec un texte qui ne figure pas encore dans ce fichier, que se passe-t-il ? :smile:

Par curiosité, j'ai essayé avec la première option des Options de Jeu, "Mouse Sensitivity". Voici ce que Notepad++ m'a sorti.
Fichier Modules\Native\ModuleData\Global_strings.xml :
<string id="str_options_type.MouseSensitivity" text="{=base.strings.string.text.str_options_type.MouseSensitivity}Mouse Sensitivity" />

Fichier string_translation_data :
<string id="global_strings.base.strings.string.text.str_options_type.MouseSensitivity" text="GERMouse Sensitivity" />

Mauvais exemple, le texte figure bel et bien dans string_translation_data ! Alors pourquoi n'est-il pas écrit avec le GER du début ? Si on regarde bien, on voit que l'id dans string_translation_data n'est pas tout à fait le même que celui dans le fichier de base car il contient au début un "global_strings." que le fichier de base ne contient pas dans l'expression {}. Ceci explique pourquoi le texte n'est pas traduit alors même que la ligne existe dans string_translation-data. La suite est évidente : on rend les deux id identiques et on regarde ce qu'il se passe.

Pour ne pas toucher aux fichiers de base, j'ai choisi d'enlever le "global_strings." dans string_translation_data (alors qu'à mon sens c'est l'inverse qu'il faudrait faire vu que les id semblent commencer par le nom du fichier de base, ce qui n'est pas le cas dans ce fichier de base), j'ai traduit en français par "Sensibilité Souris" et ça a donné ça :
Et voilà, les options pourraient aussi être traduites si les id étaient corrects. Pourquoi ne le sont-ils pas ? Mystère. Soit TW a volontairement fait cette différence, soit ils ne l'ont pas vue, mais nous on n'en sait rien.

Je vais par la suite m'attaquer aux textes qui ne sont pas du tout dans string_translation_data.
 
Last edited:

Daneel53

Sergeant Knight
WBVC
Best answers
0
J'ai recherché dans les fichiers le texte qui s'affiche pour le descriptif du mode de jeu Capitaine : "Lead your own detachment...".
Notepad me l'a trouvé dans la ligne 502 du fichier ModuleData\Module_strings.xml :
<string id="str_multiplayer_official_game_type_description.Captain" text="{=base.strings.string.text.str_multiplayer_official_game_type_description.Captain}Lead your own detachment of AI troops in this team-based PvP game mode. Command your troops and coordinate with your teammates to destroy the enemy team or break their morale by dominating the battlefield." />

Sans faire de traduction, je vais essayer d'ajouter la ligne correspondant telle qu'elle devrait se trouver dans string_translation_data. J'ai donc ajouté ceci dans ce fichier (avec un GER de début pour le repérer) :
<string id="base.strings.string.text.str_multiplayer_official_game_type_description.Captain" text="GERLead your own detachment of AI troops in this team-based PvP game mode. Command your troops and coordinate with your teammates to destroy the enemy team or break their morale by dominating the battlefield." />
Et voilà, la nouvelle ligne dans string_translation_data a été prise en compte et on pourrait désormais traduire ce texte !

Bon, on a compris le principe général : tous les textes qui se trouvent dans les fichiers xml de base possèdent un id qui permet de faire le lien avec les textes déportés dans le fichier string_translation_data qui sera donc peut-être à terme le seul gigantesque fichier à traduire. Pour l'instant certains textes figurent dans string_translation_data avec un mauvais id (ou plutôt je pense que certains id dans les fichiers de base sont erronés car le nom du fichier est absent de l'id) et d'autres n'y sont pas du tout. Je suppose que c'est l'état beta du produit qui explique tout ça. :smile:

Accessoirement ça veut dire que le jeu n'est pas encore en état d'être localisé, ce qui est plutôt inquiétant.
 
Last edited: