Tkh's Translation Helper program (downloadable)


In the original text it looks like

"esc_menu" : {
   "exit_confirm_dialog" : {
      "title" : "Exit Game",
      "message" : "Do you want to save before exiting?",
      "save_and_exit_button": "Save and Exit",
      "just_exit_button": "Just Exit",
      "cancel_button": "Cancel"

and after transfer through your program so

"title" : "Выйти из игры",
"message" : "Сохранить игру перед выходом?",
"save_and_exit_button" : "Сохранить и выйти",
"just_exit_button" : "Выйти!",
"cancel_button" : "Отменить",

strings “esc_menu” and “exit_confirm_dialog” disappear. This is problem?


This is a limitation in the program that I wasn’t planning for when I wrote it some 18 months ago. At the moment it can only translate the main file, there are two reasons why:

  1. It can not handle more depth than 1 (one). The esc_menu and exit_confirm_dialog are lower levels (or are they called higher?) and the program simply can’t handle that.
  2. In its current state it cannot handle two tags with the same name in the same file due to the key-search-algorithm that isn’t very good…

Going forward, both of these issues must be solved (I should actually start asap on that), because in alpha 12, lots of (all?!) tags will be moved into en.json (source: devblog ), and then this program won’t work any longer. If I’m able to solve the problems in a good way, I will re-release the program (I haven’t touched it in 5 months). If not, I will simply cancel this project :blush:

(Or put out the source code in public so perhaps someone else might succeed where I failed.)


Important update:
This program is put on hold due to the release of Alpha 12, there are two limitations (design flaws) from the very beginning that are preventing the program from working any longer.

  • Multiple tags with the same name in the same file
  • Various block depths

My program can’t handle this, and would have to be re-written in many places. At the moment I have no time to do so. I can’t even promise that I ever will. But if I do, I promise that I will update this thread :blush:

If you feel like fixing the limitations yourself just tell me and I’ll provide you with the project/source code :wink:


As the person who caused your program to no longer work (and also out of curiosity), I would like to request the source code please. :smiley:


LOL ^^ why i have known that you will be show up here :wink:


Here’s is the updated project:

I had to change it to use json loading, so it’s not as powerful as it used to be. You can no longer add rows. The program will only save out translations for keys that existed in the original file.

There might also be errors and stuff that happen. I did minimal testing. Please post bugs if you encounter them.

Thanks all


Ok first questions - which exe is now the correct one? there are 4 now :wink:


Well, if any file is correct it’s the one in the debug folder. But since it’s a debug version I don’t know if it will behave correctly. Or you can open the project in Visual Studio Express (2013) and build it from there to be sure that it’s Yang’s version.

I’ll give it a go tonight (after work and family stuff). If it seems to work I’ll build a release version and post it here. So stay tuned for exciting updates in here, awesome that I got this expert help :smiley:

Changelist in new versions

Hmmm it appears there’s still a bug with escaped quotation strings. Hang on.

Also, @tkh what do you think about making a github repository for this? Then it can be easily updated.



Thanks to @yshan we now have a release that might work. I think I was able to fix a small bug that caused an error message, but still, the program is barely tested! Anyway, here it is:
[Link removed in wait for a new version]

Now, with 3047 tags in the same file, opening the original file is very slow… and when you open a translation file it gets even worse :wink: But it seems to work! I have not tried it ingame yet, so the old encoding problem is not verified to be fixed yet.

Oh, and @yshan, regarding github repo… I guess that sounds good. I have never worked with projects on github before though, but perhaps I can learn :blush:


We found a bug that occurs when original file contains quotes in a string. So one row ends up as four rows or something… It looks really strange. Instead of " the files must now use ". In the current version you’ll manually have to write " in those places to make things work, but I have updated the program to handle this automatically from next version. I will do some testing and then release a new version. Perhaps tomorrow :blush:


and i will test it then :wink: even i have already complete my current translation ^^


Great, I need testers :smile:

Also, we need to verify that file is read correctly by the game, so German characters will be great test. Can you post your file so I can try to read it with my latest version?

I’m at work, so I can’t try it ingame of course :stuck_out_tongue:

#94 (62.1 KB)

here is the file ^^ (i think) i have already changed all the quotes because yhsan has updated it in the en-dev for 5 days ^^


Yeah, she did that update after we found the bug. Perhaps she did it before me and possibly for other reasons as well, but anyway! With my latest version the quotes will look normal in the program, but are saved as ". They will of course be converted when reading the file as well, so it’s easy for the user.

Tried to open your file, and it looks good, tried to resave it and compare the new file to the old and they look very similar… but for some reason it grew in size from 288k to 293k :smile: And I also found a bug with / characters. It won’t explain the extra 5k size, but still need to fix that if I can. Fun thing is that when I resave the english, original file, it does not grow in size as your did.

Here’s the resave, if you find any other strange things than the / characters please tell me :blush: (60.9 KB)


so i have compare it - yes its adds the symbol \ before the char / - so its looks like / ^^

then in your file there some spaces lesser - after saving again with the lesser spaces its the same size ^^ but i think its because of the format ^^

my file is UTF8 - UNIX and yours UTF8 - PC ^^

after replacing it works like before - so there are no issue :wink:


I’m testing right now for the french translation and for now all I can say is great job!

One question anyway, could it be possible to get a save that merge the translations with the original file? Basically filling the blanks with the original strings? (For test purpose, it would be better to get the original strings on what is not translated yet)


ok normally you have two files - the original and an copy of the original ^^ when you open both its says all infos are the same and you can change line for line :wink:

i think you have make an clear file - so there are no infos ^^

edit: jup i have test it - when you make an complete new file with no infos - the programm adds the name of the strings and you have no infos for the translations ^^

sooo like always just make an copy of the original file and change it there ^^


Ok, get it! Tx for the tips!


This is the preferred way, indeed! In my program, all those lines will be marked yellow. So the exported file will work when used in the game, and all non-translated lines will be in English - until you have time to translate those lines :blush:

I don’t know how to solve the part with / -> \ at the moment, perhaps I need @yshan’s help. Can’t spend more than a few minutes at work on these things… Plus, if I get spare time at work I will use it to set up an Arduino as an I2C master and control it from computer :smile: (Big smiley, because it’s damn fun!)