• Hey! Guest! The 37th GMC Jam will take place between May 28th, 12:00 UTC and June 1st, 12:00 UTC. Why not join in! Click here to find out more!

Design Localizations. Better think about it later?

Hello, everyone! I'm wondering if it's better to focus on finishing a project in one language or working on a localization system before starting all the writing. Also, I'd like to hear your opinion on which is the best way to store text and dialogs: .ini, JSON or other? Thank you!
If you're planning on any localisation at all ever, it's better to do it early just to avoid having to go back and recode the way all the dialogue is fetched. Personally, I feel like the easiest way is a ds_map (so JSON), but it all depends on how you prefer to handle things I guess. Pretty sure there's some tutorials out there for it.

Phil Strahl

With my game, I started localization relatively late and it was a pain to implement it, so the sooner you start the better. Also it helps to know which languages you want to support. Especially Chinese can be problematic both in terms of file encoding because of font licensing; or Arabic as it's right-to-left. The way that worked for my game was having a JSON decode to ds_map, so when you switch languages, the ds_map called "string_map" would get filled with the language in question. In hindsight I would also suggest doing your own parsing on top if you're using variables in strings.

For example take the string "You scored 123 points!" where 123 is filled by a variable. I "solved" this by having two entries that I concatenate like "You scored" + score_variable + "points!". But that's bad because this doesn't work for all languages and your translator(s) will have a hard time trying to make it work. So better have something like "You scored {x} points!" and write a script that replaces a token with a variable.

Also watch out for text lengths, for example German is notorious for very long words. it's better to detect possible overflow and have the text scale down than to just cut it off at the risk of vital information not showing to the player. My rule of thumb is that German is around 1.5 to 1.75 times longer than any given English sentence.

Finally, give your translators as much context as possible, they need everything they can get. Especially with spoken dialog it's important to know who is speaking to whom as well as the social standing and gender of the speakers. When you use a lot of individual words, "cancel", "go", "miss", context is also important. E.g. "go" can have so many different meanings: In an adventure it means "walk over to", on a text box it could mean "okay, confirm and close", when a referee says it at the start of a round it means "the game is on for everyone," etc.

Hope that helps!


GMC Memer
GMC Elder
Finally, give your translators as much context as possible, they need everything they can get.
This one is super important! In languages like japanese and french, factors like the age and gender of the speaker (or who they speak to) will completely change how dialogue is meant to be written, even if it's the same in english. ("uncle" has different words in swedish depending on if it's the brother of your father or the brother of your mother; Donald Duck famously got mistranslated as paternal uncle instead of maternal uncle to Huey/Dewey/Louie and it was too late to retcon it when the lore was updated)

Many languages also has different standards for spoken and written text, which might have seen large changes depending on time period (ancient japanese was top-to-bottom, right-to-left).

Things to keep in mind:
  • There's a lot of fake translators out there that just plug stuff into Google Translate and send it back to you, make sure to look up their track record beforehand and get a friend that knows the language first-hand to double-check things if possible. Darkest Dungeon famously got tricked into getting a subpar Korean translation and Red Hook got review-bombed by angry korean fans that preferred the fan translation and demanded it being made official instead.
  • Text baked into graphics might be the hardest to replace, so think carefully about what text to render with fonts and what stuff to pre-render. Save easily editable source files for all your fancy typeset splash screens.
  • In many contexts (e.g. japanese) english loanwords and even english text still is a standard for some things (e.g. "grinding" for the act of sliding your skateboard on a rail, english terms for common menu options like "play"), make sure you don't translate loanwords to a local equivalent version or your translation will come off as archaic and unnatural.
  • Always have trustworthy, fluent-speaker people test a translation before you deploy it, especially if you don't know the language yourself. And even if you know it, have a fresh pair of eyes look over the text finding all the typos you missed.