Thank you for the fix!
Upon further investigation, I've realised that I wasn't clear re: what I am trying to achieve. Your suggestion that I use a Key Field wouldn't work because, as far as I can tell, a Key Field replaces Conversation/Entry ID as a reference when running a Localisation import/export, correct? That's precisely what I
don't want it to do. Let me explain my use case.
The way I set things up, Dialogue System sits between Adventure Creator and memoQ.
On one side,
Adventure Creator deals with 90%+ of all game logic. We use AC ActionLists to check for all sorts of conditions (a mix between AC variables and the 'Dialogue System Check' custom action, running Lua Code to evaluate the Sim Status of conversation entries). These ActionLists then run the appropriate cutscenes, which often include calling Dialogue System conversations.
Dialogue System sits in the middle. We use it to write all dialogue and quests. Because we make reference to Conversation/Entry IDs all the time on the AC side of things, it is absolutely necessary that all IDs remain the same. Changing any IDs would break the game.
And on the other side, we have
memoQ for localisation. We have set up the memoQ project so that when we import the CSV file from Dialogue System, it will lock the 'Conversation ID' and 'Entry ID' columns as context, and it will assign 'Original Text' and 'Translated Text' as the source and target columns, respectively. This means that when the translator translates the original text and commits the translation to the Translation Memory, the TM will pair the original and translated strings and suggest it as a partial match whenever the translator encounters a similar string elsewhere. Here, it is very important for the 'Conversation ID' and 'Entry ID' to be used as context during match evaluation: we only want memoQ to return a 100% match when not only the source strings match, but also when the IDs match as well. This way, when the same string is used in
different contexts, memoQ will tell the translator: here is a 99% match (the words are the same, but they are used in a different context; make sure they fit the new context).
In short, both on the Adventure Creator and the memoQ side of things, it is essential that the Conversation and Entry IDs
never change, and that Dialogue System imports/exports are always tied to them. If we create a Loc ID field, we do
not want the imports/exports to be tied to them instead, which unfortunately is what a Key Field would do.
We really are 99% of the way there. The only reason why I was considering creating a Loc ID field is that when we run a Localisation Export on Dialogue System, the resulting CSV file is ordered by Conversation ID and Entry ID. For example:
The order the nodes are linked in the conversation editor is actually 0>1>3>2, but the translator wouldn't know that! Reordering the IDs would fix the order on the exported spreadsheet and make the translator's life easier, but as I explained above, this would cause severe problems both for AC and memoQ.
What we want the CSV file to look like is this:
I thought that if we created a 'Loc ID' entry field and ran a similar method to the 'reorder ID' one in order to generate their values, we could have something like this:
This would make it trivial to reorder the rows on Excel before importing the file to memoQ. The problem is that this can't be achieved because
(1) a Key Field does not allow for that anyway - the point of creating a Loc ID field would have been to allow it to be changed whenever we want for sorting purposes, without messing up AC references to dialogue entries or accidentally overwriting entries when importing a CSV file back into Dialogue System (for instance, if we assign Loc ID as a key field and export a CSV to memoQ, this means we cannot reorder the Loc IDs in DS and then eventually import a translated CSV back). And
(2) I'm not sure how to replicate the method that reorders entry IDs so that it leaves entry IDs alone and generates Loc IDs instead.
Now, I've noticed that when we export the database as a Screenplay, it displays the conversation nodes in a perfectly readable order regardless of the Entry IDs. Would you consider adding a checkbox to the Localisation Export section that would allow us to export the strings in the same order as the screenplay one, but keeping the Conversation and Entry IDs intact? This would eliminate the need to create a Loc ID field for further sorting.