• Register
Post news Report RSS DevLog: Translating an RPG is hard

The challenges of preparing BattleJuice Alchemist to be released in multiple languages.

Posted by on

Hey folks,

I have recently been working on the translation system for BattleJuice Alchemist. And surprisingly I found this to be quite a fun task to work on. Seriously! In software development there is a lot of talk of localization, internationalization and also globalization. I don't want to get in technicalities here, but just talk about some interesting stuff, so let's dive in.

First of all, what we are currently working on is the translation of actual language. This means, we are not e.g. switching visual assets for certain regions. So the basic feature here is that you can switch the language like so:

LanguageSwitch 3MB


What we do first is to create a German translation, because it is the native language of our team. Further versions will be made by our publisher ESDigital. The game will come out in quite a lot of languages, but I don't want to say anything final yet.

Canadian 3MB


The first challenges we have to overcome are the obvious ones: In some places you have to dynamically size the font to make the text fit a button, in others, you can implement a scrollable box or find different solutions to accommodate for varying text lengths. BattleJuice Alchemist as a complex RPG is quite heavy on the UI side, so this is a lot of work. And there is actually quite a lot of text. Every word that needs to be translated literally costs money. If the word "level" shows up in 50 places, you don't want a translator to charge you for 50 words, but 1. So you create string tables for words that are used more often, so they only pop up once in the sheet of text to be translated.

All in all I found Unreal's localization system to be super easy to work with. I was able to set up the system and provide our team member Jan with a .PO file that he then could use to make a first test translation in German. We are using a tool called Poedit that runs on the DeepL and therefore often gives you perfect pre-translations out of the box. But it is not perfect. I asked Jan to tell me about the challenges a bit, here is what he said:

When translating with Poedit, I still found there is the need to focus heavily on individual letters instead of broad meanings. Everybody knows the example with that txet taht is rdaelabe if you just scan the context. That does not cut it when checking AI-translations and made me squint my eyes every now and then. For example, strangely, "damage" was translated into "dSchaden" every time, with the "d" being utterly wrong.

We obviously had to check for possible misunderstandings. "Flask" most often got translated as "Kolben", which is technically right, but only in the context of chemistry. That would be fine in the game itself, but not when it comes to a German speaking player base, where "Kolben" would most likely be associated with the "piston" of a car engine.

An ongoing challenge is to make the German text smooth. "Frog Hop Flask", three short words, could be translated as and combined into "Froschhüpfflasche", a one word monster. The German eye stumbles over the double h, each belonging to a different noun. And then the same thing is happening to the double f...

The challenges I myself faced so far were more of dealing with the crimes I had committed in the past. I had to deal with technical debt when e.g. rewriting systems that were lazily relying on comparing text. Very simply put, the computer couldn't say if an item is a "sword" when looking at its name, because it is now called a "Schwert", because we are in a German translation.

This devlog has become a lot longer than I planned, so I'll just stop here. Just one thing I discovered and found really funny is that Unreal lets you localize your game for a LOT of cultures ;)

LocalizationLeet 3MB


Let me know if you have questions or own struggles with translations, I like to chat about this stuff ;)

Have a great weekend!

Alain

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: