December Dev Update - Translating Numina


Hello everyone,

With the festive season upon us, I hope you all have a chill time. With this update we'll only briefly focus on the Beta phases' progress. Lots of bugs have been fixed and it's been very challenging covering all the different paths. A lot more than I would have imagined 😂

At the same time I'm also translating Numina from German into English to have two language options ready for the release. Hopefully early next year. I still have a lot of lines to translate, but I'm making good progress. But in this devlog I actually wanted to let you peek a bit behind the scenes into how translation actually works in my setup with RPG Maker MV and a custom tool. I've you're a dev yourself or even just interested in learning a bit about development, this might be interesting to you!☺️

Translating Numina

Introduction

RPG Maker MV (and also MZ) stores all of the game's content in .json files (short for Java Script Object Notation). It's a human-readable format that contains all sorts of data in a specific structure. Below is an example of a JSON-file containing all the game's weapons:

As you can see there is a "description" that contains some German text that will be displayed in the game for each weapon. Now you probably also understand how these JSON files are relevant for translation since they actually contain all the strings relevant for translating the game from German into a different language!

Sadly, RPG Maker doesn't provide you with a built-in way to have additional languages. So for example, when you write a dialoge in the engine you can only enter it in one language. As far as I'm aware there are some plugins created by the community that allow you to achieve this but I've opted for my own solution to have full control over the process.

TranslatorNG

Introducing: TranslatorNG a custom program I've created to help me translate Numina's contents:


It has 3 core functionalities which I'll get into in the next sections.

Import Game Locales

TranslatorNG scans all the game's JSON files for translatable strings and adds them to an internal database. A very important part of this process is also updating this internal database if the German source game has changed for example. In my case, I'm still working on the game (fixing bugs that the betatesters found, fixing typos in the German text, etc.) that change the source texts that might already have translations. So it was very important to be able to merge in new changes without having to redo already translated messages.

Translate Locales

The most important bit! Actually translating text. This can happen directly in TranslatorNG itself. As you can see this is one source locale with an english translation:


Since I have to translate around 90'000 words, it was very important to me to have a very speedy process with minimal breaks so the whole window is operatable completely just by using the keyboard. This even includes switching to the next bit of text or looking up translations online.

There's also an alternative way to this that I added mainly for external translators: Excel templates. I can export all the text of the game into an Excel file and send that to another person to add translations and then import it again into TranslatorNG.

Export Translations

The final bit of the process is actually getting the translations stored in TranslatorNG into the game and make it available to the players. This involves to components:

  1. TranslatorNG creates clones of all json files that contain translated texts that contain translated texts instead of the original text.
  2. A plugin in RPG Maker MV offers the player a language selection in the options menu and tells RPG Maker which JSON files it's supposed to use (the original ones, or the translated clones when picking a different language).

I've read that some of the communities translation solutions work in a similar way. There is also a limitation of my solution that I can only provide translations for text - not images or other assets. Meaning that TranslatorNG currently couldn't provide support for language specific images or sounds. But that was only a minor hindrance in some instances for my project.

I hope you found this little peek into my process interesting. I think this might be my first actual "development" log instead of just a progress update 😂

Thanks everyone, stay safe & see you soon!

Get Numina

Buy Now$16.99 USD or more

Leave a comment

Log in with itch.io to leave a comment.