[1.1.2579 rev1092] QuestScripts bouncing back and forth between two states

Started by b606, March 22, 2020, 12:36:38 PM

Previous topic - Next topic

b606

Since yesterday, the two QuestScripts below are constantly changing, almost every minutes. When I use the ingame translation tool, sometimes I get Diff 1, next time I get Diff 2 for Royalty/DefInjected/QuestScriptDef/Script_Hospitality_Worker.xml and Royalty/DefInjected/QuestScriptDef/Scripts_JoinerThreat.xml. Which is the correct one ?

Diff 1: Wants to replace already translated texts with TODO (???)

diff --git a/Royalty/DefInjected/QuestScriptDef/Script_Hospitality_Worker.xml b/Royalty/DefInjected/QuestScriptDef/Script_Hospitality_Worker.xml
index 336fd41b..7cf9b8b4 100644
--- a/Royalty/DefInjected/QuestScriptDef/Script_Hospitality_Worker.xml
+++ b/Royalty/DefInjected/QuestScriptDef/Script_Hospitality_Worker.xml
@@ -32,7 +32,7 @@
   <!-- EN: [letterSubject], who you were charged to protect, is gone. [remainingWillNowLeave][failLetterEndingCommon] -->
   <Hospitality_Util_Worker.root.nodes.lodgersLeftMap.node.nodes.Letter.text.slateRef>[letterSubject], que vous étiez chargé de protéger, a disparu. [remainingWillNowLeave][failLetterEndingCommon]</Hospitality_Util_Worker.root.nodes.lodgersLeftMap.node.nodes.Letter.text.slateRef>
   <!-- EN: Guest lost: {SUBJECT_definite} -->
-  <Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.label.slateRef>Invité perdu : {SUBJECT_definite}</Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.label.slateRef>
+  <Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.label.slateRef>TODO</Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.label.slateRef>
   <!-- EN: [letterSubject], who you were charged to protect, has joined another faction. [remainingWillNowLeave][failLetterEndingCommon] -->
   <Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.text.slateRef>[letterSubject], que vous avez été chargé de protéger, a rejoint une autre faction. [remainingWillNowLeave][failLetterEndingCommon]</Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.text.slateRef>
   <!-- EN: Shuttle destroyed -->
diff --git a/Royalty/DefInjected/QuestScriptDef/Scripts_JoinerThreat.xml b/Royalty/DefInjected/QuestScriptDef/Scripts_JoinerThreat.xml
index a71b155b..32e7a75b 100644
--- a/Royalty/DefInjected/QuestScriptDef/Scripts_JoinerThreat.xml
+++ b/Royalty/DefInjected/QuestScriptDef/Scripts_JoinerThreat.xml
@@ -134,7 +134,7 @@
   <!-- EN: [joiner_nameDef] has admitted what [joiner_pronoun] was fleeing from.\n    \n[joiner_pronoun] was supposed to marry the child of [enemyFaction_leader_nameFull], leader of [enemyFaction_name]. [joiner_pronoun] became drunk before the ceremony and vomited on the altar - a flagrant insult towards [enemyFaction_leader_nameDef]'s whole family.\n    \n[enemyFaction_leader_nameDef] swore to seek revenge on [joiner_nameDef] and all those associated with [joiner_objective], and sent [enemyFaction_pawnsPlural] to carry out the task.\n    \n{BASETEXT} -->
   <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-0.nodes.Set-1.value.slateRef>[joiner_nameDef] a révélé pour quoi [joiner_pronoun] s'enfuit.\n    \n[joiner_pronoun] était supposé(e) se marier avec l'enfant de [enemyFaction_leader_nameFull], leader de [enemyFaction_name]. [joiner_pronoun] s'est saoulé(e) avant la cérémonie et a vomi sur l'autel, une insulte flagrante envers toute la famille de [enemyFaction_leader_nameDef].\n    \n[enemyFaction_leader_nameDef] a juré de se venger de [joiner_nameDef] et de tous ceux avec [joiner_objective], et a envoyé des [enemyFaction_pawnsPlural] pour cela.\n    \n{BASETEXT}</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-0.nodes.Set-1.value.slateRef>
   <!-- EN: {BASELABEL}: Chasing [joiner_nameDef] -->
-  <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-0.value.slateRef>{BASELABEL} : pourchassant [joiner_nameDef]</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-0.value.slateRef>
+  <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-0.value.slateRef>TODO</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-0.value.slateRef>
   <!-- EN: [joiner_nameDef] has admitted what [joiner_pronoun] was fleeing from.\n    \n[joiner_nameDef], greedy for the pleasures and money insect jelly can bring, intended to destroy a massive insect hive using poison. [joiner_pronoun] failed, but was doused in insect threat pheromones. Insects have been hunting [joiner_objective] ever since. Now they've launched their final attack.\n    \n{BASETEXT} -->
   <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-1.value.slateRef>[joiner_nameDef] a révélé pour quoi [joiner_pronoun] s'enfuit.\n    \n[joiner_nameDef], avide du plaisir et de l'argent que les gelées d'insectes procurent, voulait détruire une énorme ruche d'insectes avec du poison. [joiner_pronoun] a échoué, mais a été imbibé(e) de phéromones de menace par les insectes. Depuis, [joiner_pronoun] est pourchassé(e) par ces insectes qui maintenant, vont lancer leur assaut final.\n    \n{BASETEXT}</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-1.value.slateRef>
   <!-- EN: Site appeared to harass [joiner_nameDef]: [site_label] -->
@@ -163,7 +163,7 @@
   <!-- EN: {BASETEXT}\n                  \nThe [enemyFaction_pawnsPlural] are coming for [../joiner_nameFull]. -->
   <ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Util_Raid.parms.customLetterText.value.slateRef>{BASETEXT}\n                  \nLes [enemyFaction_pawnsPlural] sont venus pour [../joiner_nameFull].</ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Util_Raid.parms.customLetterText.value.slateRef>
   <!-- EN: {BASELABEL} chasing [../joiner_nameDef] -->
-  <ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterLabel.value.slateRef>{BASELABEL} : pourchassant [../joiner_nameDef]</ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterLabel.value.slateRef>
+  <ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterLabel.value.slateRef>TODO</ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterLabel.value.slateRef>
   <!-- EN: {BASETEXT}\n                        \nThe [enemyFaction_pawnsPlural] are coming for [../joiner_nameFull]. -->
   <ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterText.value.slateRef>{BASETEXT}\n                        \nLes [enemyFaction_pawnsPlural] sont venus pour [../joiner_nameFull].</ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterText.value.slateRef>


Diff 2: Wants to delete rules, move 1 rule from Sequence-1.nodes.Set-0 to Sequence-3.nodes.Set-0

diff --git a/Royalty/DefInjected/QuestScriptDef/Script_Hospitality_Worker.xml b/Royalty/DefInjected/QuestScriptDef/Script_Hospitality_Worker.xml
index 336fd41b..c65e6db5 100644
--- a/Royalty/DefInjected/QuestScriptDef/Script_Hospitality_Worker.xml
+++ b/Royalty/DefInjected/QuestScriptDef/Script_Hospitality_Worker.xml
@@ -31,8 +31,6 @@
   <Hospitality_Util_Worker.root.nodes.lodgersLeftMap.node.nodes.Letter.label.slateRef>Invité perdu : {SUBJECT_definite}</Hospitality_Util_Worker.root.nodes.lodgersLeftMap.node.nodes.Letter.label.slateRef>
   <!-- EN: [letterSubject], who you were charged to protect, is gone. [remainingWillNowLeave][failLetterEndingCommon] -->
   <Hospitality_Util_Worker.root.nodes.lodgersLeftMap.node.nodes.Letter.text.slateRef>[letterSubject], que vous étiez chargé de protéger, a disparu. [remainingWillNowLeave][failLetterEndingCommon]</Hospitality_Util_Worker.root.nodes.lodgersLeftMap.node.nodes.Letter.text.slateRef>
-  <!-- EN: Guest lost: {SUBJECT_definite} -->
-  <Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.label.slateRef>Invité perdu : {SUBJECT_definite}</Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.label.slateRef>
   <!-- EN: [letterSubject], who you were charged to protect, has joined another faction. [remainingWillNowLeave][failLetterEndingCommon] -->
   <Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.text.slateRef>[letterSubject], que vous avez été chargé de protéger, a rejoint une autre faction. [remainingWillNowLeave][failLetterEndingCommon]</Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.text.slateRef>
   <!-- EN: Shuttle destroyed -->
diff --git a/Royalty/DefInjected/QuestScriptDef/Scripts_JoinerThreat.xml b/Royalty/DefInjected/QuestScriptDef/Scripts_JoinerThreat.xml
index a71b155b..614a956f 100644
--- a/Royalty/DefInjected/QuestScriptDef/Scripts_JoinerThreat.xml
+++ b/Royalty/DefInjected/QuestScriptDef/Scripts_JoinerThreat.xml
@@ -133,14 +133,14 @@
   <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-0.nodes.Set-0.value.slateRef>{BASELABEL} : pourchassant [joiner_nameDef]</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-0.nodes.Set-0.value.slateRef>
   <!-- EN: [joiner_nameDef] has admitted what [joiner_pronoun] was fleeing from.\n    \n[joiner_pronoun] was supposed to marry the child of [enemyFaction_leader_nameFull], leader of [enemyFaction_name]. [joiner_pronoun] became drunk before the ceremony and vomited on the altar - a flagrant insult towards [enemyFaction_leader_nameDef]'s whole family.\n    \n[enemyFaction_leader_nameDef] swore to seek revenge on [joiner_nameDef] and all those associated with [joiner_objective], and sent [enemyFaction_pawnsPlural] to carry out the task.\n    \n{BASETEXT} -->
   <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-0.nodes.Set-1.value.slateRef>[joiner_nameDef] a révélé pour quoi [joiner_pronoun] s'enfuit.\n    \n[joiner_pronoun] était supposé(e) se marier avec l'enfant de [enemyFaction_leader_nameFull], leader de [enemyFaction_name]. [joiner_pronoun] s'est saoulé(e) avant la cérémonie et a vomi sur l'autel, une insulte flagrante envers toute la famille de [enemyFaction_leader_nameDef].\n    \n[enemyFaction_leader_nameDef] a juré de se venger de [joiner_nameDef] et de tous ceux avec [joiner_objective], et a envoyé des [enemyFaction_pawnsPlural] pour cela.\n    \n{BASETEXT}</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-0.nodes.Set-1.value.slateRef>
-  <!-- EN: {BASELABEL}: Chasing [joiner_nameDef] -->
-  <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-0.value.slateRef>{BASELABEL} : pourchassant [joiner_nameDef]</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-0.value.slateRef>
   <!-- EN: [joiner_nameDef] has admitted what [joiner_pronoun] was fleeing from.\n    \n[joiner_nameDef], greedy for the pleasures and money insect jelly can bring, intended to destroy a massive insect hive using poison. [joiner_pronoun] failed, but was doused in insect threat pheromones. Insects have been hunting [joiner_objective] ever since. Now they've launched their final attack.\n    \n{BASETEXT} -->
   <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-1.value.slateRef>[joiner_nameDef] a révélé pour quoi [joiner_pronoun] s'enfuit.\n    \n[joiner_nameDef], avide du plaisir et de l'argent que les gelées d'insectes procurent, voulait détruire une énorme ruche d'insectes avec du poison. [joiner_pronoun] a échoué, mais a été imbibé(e) de phéromones de menace par les insectes. Depuis, [joiner_pronoun] est pourchassé(e) par ces insectes qui maintenant, vont lancer leur assaut final.\n    \n{BASETEXT}</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-1.value.slateRef>
   <!-- EN: Site appeared to harass [joiner_nameDef]: [site_label] -->
   <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-2.nodes.Set-0.value.slateRef>Un site semble harceler [joiner_nameDef] : [site_label]</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-2.nodes.Set-0.value.slateRef>
   <!-- EN: [joiner_nameDef] has admitted what [joiner_pronoun] was fleeing from.\n    \n[joiner_nameDef] was traveling when [joiner_pronoun] happened upon [enemyFaction_leader_nameFull], leader of [enemyFaction_name], sick on the side of the road. [joiner_nameDef] insulted [enemyFaction_leader_nameDef] by comparing [enemyFaction_leader_objective] to a [Animal].\n    \nNow [enemyFaction_leader_nameDef]'s [enemyFaction_pawnsPlural] are activating a site nearby to harass you.\n    \n[allSitePartsDescriptions] -->
   <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-2.nodes.Set-1.value.slateRef>[joiner_nameDef] a révélé pour quoi [joiner_pronoun] s'enfuit.\n    \n[joiner_nameDef] était en voyage quand [joiner_pronoun] est tombé(e) sur [enemyFaction_leader_nameFull], leader de [enemyFaction_name], malade sur le bord de la route. [joiner_nameDef] a insulté [enemyFaction_leader_nameDef] en le/la comparant à [AnimalAny_indef].\n    \nMaintenant, les [enemyFaction_pawnsPlural] de [enemyFaction_leader_nameDef] s'installeront sur un site à proximité pour vous harceler.\n    \n[allSitePartsDescriptions]</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-2.nodes.Set-1.value.slateRef>
+  <!-- EN: {BASELABEL}: Chasing [joiner_nameDef] -->
+  <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-3.nodes.Set-0.value.slateRef>TODO</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-3.nodes.Set-0.value.slateRef>
   <!-- EN: [joiner_nameDef] has admitted what [joiner_pronoun] was fleeing from.\n    \n[joiner_nameDef] was traveling when [joiner_pronoun] came upon a lost group of [animalKind_labelPlural]. [joiner_pronoun], in a bad mood, goaded the [animalKind_labelPlural]. Unexpectedly, they attacked [joiner_objective]. And they have followed [joiner_objective] a long distance.\n    \n{BASETEXT} -->
   <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-3.nodes.Set-1.value.slateRef>[joiner_nameDef] a révélé pour quoi [joiner_pronoun] s'enfuit.\n    \n[joiner_nameDef] était en voyage quand [joiner_pronoun] est tombé(e) sur un groupe perdu de [animalKind_labelPlural]. De mauvaise humeur, [joiner_pronoun] a provoqué les [animalKind_labelPlural]. Ils l'attaquèrent à l'improviste et l'ont poursuivi(e) sur une longue distance.\n    \n{BASETEXT}</ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-3.nodes.Set-1.value.slateRef>
   
@@ -162,8 +162,6 @@
   <ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Util_Raid.parms.customLetterLabel.value.slateRef>{BASELABEL} : pourchassant [../joiner_nameDef]</ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Util_Raid.parms.customLetterLabel.value.slateRef>
   <!-- EN: {BASETEXT}\n                  \nThe [enemyFaction_pawnsPlural] are coming for [../joiner_nameFull]. -->
   <ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Util_Raid.parms.customLetterText.value.slateRef>{BASETEXT}\n                  \nLes [enemyFaction_pawnsPlural] sont venus pour [../joiner_nameFull].</ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Util_Raid.parms.customLetterText.value.slateRef>
-  <!-- EN: {BASELABEL} chasing [../joiner_nameDef] -->
-  <ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterLabel.value.slateRef>{BASELABEL} : pourchassant [../joiner_nameDef]</ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterLabel.value.slateRef>
   <!-- EN: {BASETEXT}\n                        \nThe [enemyFaction_pawnsPlural] are coming for [../joiner_nameFull]. -->
   <ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterText.value.slateRef>{BASETEXT}\n                        \nLes [enemyFaction_pawnsPlural] sont venus pour [../joiner_nameFull].</ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterText.value.slateRef>
b606


Make the French RimWorld Translation at maximum quality.
French Optimisation Mod

Ragnar-F

Since 1.1.2584 rev912 also for the following:

Royalty/DefInjected/QuestScriptDef/Script_BuildMonument_Worker.xml
Element: BuildMonumentWorker.root.nodes.IsTrue-2.elseNode.elseNode.nodes.IsNull.elseNode.node.nodes.Delay.expiryInfoPartTip.slateRef

Royalty/DefInjected/QuestScriptDef/Script_ChangeRoyalHeir.xml
Element: ChangeRoyalHeir.root.nodes.monumentMarkerMonumentCompleted.node.nodes.Delay.expiryInfoPartTip.slateRef

Royalty/DefInjected/QuestScriptDef/Script_EndGame_RoyalAscent.xml
Element: EndGame_RoyalAscent.root.nodes.shuttleSentUnsatisfied.node.nodes.Letter.label.slateRef

Royalty/DefInjected/QuestScriptDef/Scripts_Decree.xml
Element: Decree_BuildMonument.root.nodes.monumentMarkerMonumentCompleted.node.nodes.Delay.expiryInfoPartTip.slateRef

b606

It looks like two git repos or two git branches are out of sync on these six Royalty/DefInjected/QuestScriptDef/ files. One stores one set of modifications and the other another set.
b606


Make the French RimWorld Translation at maximum quality.
French Optimisation Mod


b606

Step to reproduce:

1. Choose one translation language (save the files)
2. Clean it with the ingame tool, save again (or commit the changes)
3. Quit to OS
4. Restart RimWorld
5. Clean again the translation files with the ingame tool, save or commit the change.
6. diff what you have from step 2 and step 5 : six QuestScript files bounced back and forth.

This is observable without any delay significant between step 3 and 4 (sometimes within a minute, might be two successive revs).
b606


Make the French RimWorld Translation at maximum quality.
French Optimisation Mod

Tynan

Just moved this to Bugs from Translations, we should take a look.
Tynan Sylvester - @TynanSylvester - Tynan's Blog

Cynapse

Would it be possible for someone to give me an exact repro case? (with files included)

Also, are two options for the same language appearing when you attempt to change languages?

b606

Hi !
I pushed https://github.com/Ludeon/RimWorld-fr/tree/test-cleaning
where you can retrace the reproduction steps using RimWorld-fr from the current master branch.
[RimWorld 1.1.2609 rev633]

Best regards
b606


Make the French RimWorld Translation at maximum quality.
French Optimisation Mod

b606

b606


Make the French RimWorld Translation at maximum quality.
French Optimisation Mod

Cynapse

During my tests, I can only repro "Hospitality_Util_Worker.root.nodes.Equal-0.node.nodes.Sequence-1.nodes.Set-2.value.slateRef" bouncing between Sequence-1 and Sequence-2 after translation/clean. Odd, since it's a math expression and shouldn't need translation anyways.

We have changed some QuestScriptDefs around a bit, so that would explain why the cleaner is placing TODOs in seemingly random areas. Eg. expiryPartInfoTip on top of expiryPartInfo.

b606

Hi Cynapse,
I tested again, this odd thing is still there, but I cannot tell you more.
One of the questions is what should be the final contents of the QuestScript files, and which sequence number is the correct one. Do the removed tags need to be present and translated, or is it safe to leave them as TODO ?
These tags are:

  • <BuildMonumentWorker.root.nodes.IsTrue-2.elseNode.elseNode.nodes.IsNull.elseNode.node.nodes.Delay.expiryInfoPartTip.slateRef>
  • <BuildMonumentWorker.root.nodes.IsTrue-2.node.nodes.Delay.expiryInfoPartTip.slateRef>
  • <ChangeRoyalHeir.root.nodes.monumentMarkerMonumentCompleted.node.nodes.Delay.expiryInfoPartTip.slateRef>
  • <EndGame_RoyalAscent.root.nodes.shuttleSentUnsatisfied.node.nodes.Letter.label.slateRef>
  • <Hospitality_Util_Worker.root.nodes.AnySignal.node.node.nodes.Letter.label.slateRef>
  • <Decree_BuildMonument.root.nodes.monumentMarkerMonumentCompleted.node.nodes.Delay.expiryInfoPartTip.slateRef>
  • <ThreatReward_MysteryThreat_Joiner.root.nodes.Delay.node.nodes.RandomNode.nodes.Sequence-1.nodes.Set-0.value.slateRef>
  • <ThreatReward_RaidMultiFaction_Joiner.root.nodes.Delay.node.nodes.Delay.node.nodes.Util_Raid.parms.customLetterLabel.value.slateRef>
b606


Make the French RimWorld Translation at maximum quality.
French Optimisation Mod

ison

@b606 Is there any "EN: xxx" comment next to those lines? If not, then maybe it's a leftover from previous versions you can safely delete. Generally TODO translations are safe, as they're simply ignored. But I wonder what causes it in this case.

@Cynapse Maybe SlateRef.MustTranslate() detects math expressions incorrectly?

//edit: I just fixed something similar, but I'm not sure if it caused the bug reported here

b606

All of them have <!-- EN: xxx -->, they just do not accept the provided translations. First cleaning wipes them out (Step 1 see the commit history of https://github.com/Ludeon/RimWorld-fr/tree/test-cleaning), and second cleaning (Step 3) reinserts them with TODOs.

If I know which of the tags should be there, I'll just ignore the cleaning tool directive until this is fixed.
b606


Make the French RimWorld Translation at maximum quality.
French Optimisation Mod

Nowhere

So if i check out the Step 2 from your repo and run TranslationCleaner it's supposed to add those values back, right? Asking cause that didn't happen. It did add some, but pretty sure those were from recent changes that aren't present in the translation yet.

b606

Yes, from Step 2, it does add them back with TODOs (I checked again now with 1.1.2618 rev720). Steps 1 to 3 were made after commiting the proposed cleaning and game restart. Something is weird and let us summarize:

- From my side: debian stable + backports, linux 4.19.0-8-amd64, git version 2.20.1. RimWorld game "unstable" (now 1.1.2618 rev720) from steam v1.0.0.59-4, no mods. If needed (I thought about some line ending problem), .gitattributes:

*       text=auto
*.xml   text eol=lf whitespace=-trailing-space
*.txt   text eol=lf whitespace=-trailing-space
*.png   -text


- The problem started appearing one or two days before the original post, first with two QuestScripts, then to all six files as confirmed by Ragnar. No other files are concerned.

- Cynapse could reproduce "Hospitality_Util_Worker.root.nodes.Equal-0.node.nodes.Sequence-1.nodes.Set-2.value.slateRef" but not the others.

- If you leave the TODO in the tags, the loop stops. It only continues on and on when one tries to fill in with the translated texts from the <!-- EN... comments. So question from translator POV: should we leave the tags with TODO or translate them ?

- Does the game really need these InfoPartTip.slateRef> and Letter.label.slateRef> that the cleaning tool does not want ? (I'm joking :-) )
b606


Make the French RimWorld Translation at maximum quality.
French Optimisation Mod