Developer Diaries #9: Dr. Stringlove or: How I Learned to Stop Worrying and Love Localization

Developer Diaries #9: Dr. Stringlove or: How I Learned to Stop Worrying and Love Localization

  • Crusader Kings III Available Now!

    The realm rejoices as Paradox Interactive announces the launch of Crusader Kings III, the latest entry in the publisher’s grand strategy role-playing game franchise. Advisors may now jockey for positions of influence and adversaries should save their schemes for another day, because on this day Crusader Kings III can be purchased on Steam, the Paradox Store, and other major online retailers.


    Real Strategy Requires Cunning

HBS_Mouse

Corporal
4 Badges
Dec 3, 2018
31
0
  • BATTLETECH
  • Harebrained Schemes Staff
  • BATTLETECH - Digital Deluxe Edition
  • Shadowrun: Hong Kong
Hey BATTLETECH friends! I’m Jo, Core Tech producer at HBS and principal producer for our 1.4 update. You may have seen me around the forums, at Mech_Con 2018, or on HBS social media. I’m somewhere in this picture:



Writing a developer diary as a producer is tricky. Unlike Marco’s Hatchetman art or Zach’s Tropical Biome, the mark of a producer is the absence of something: work blockages, bugs, or whatnot. It’s hard to point to an absence and say, “I did that”. Instead, I’ll tell you about my journey to HBS, producing the 1.4 update, and why languages are super cool.

I started at HBS in mid-September 2018, after working at a AAA game studio for several years. It’s been an absolute blast being here so far, and I’ve learned so much. The production org was growing when I joined, so I got in and helped produce the 1.3 update, Flashpoint, and the localization beta.

Bringing BATTLETECH to our French, German, and Russian communities has been on the docket as a post-release feature since our Kickstarter. Unfortunately, given the size of the team and complexity of the project, we couldn't lay all the groundwork for localized languages we wanted to during production. So after we shipped the game, we needed to do retroactive work in design and UI to make it happen. My job at HBS was to make sure that we did that work, so that we had translated versions of the game. Look at that! My first HBS production project!



One of the biggest challenges of localizing BATTLETECH was the sheer volume of text. I love how we use words to weave together this deep universe full of lore, intrigue, and big stompy robots, but there are over 300,000 words in the English version alone! One does not simply drop a bunch of text into Google Translate, copy/paste the results, and expect it to work in-game. So, in true BATTLETECH style, we had to approach this mission strategically.

First, our engineers built a set of tools for “string” collection. Strings are bits of data that make up the game text, so that variables (such as MechWarrior or system names) are strings, but they are housed in other strings, so that you might see a series of strings (each one in yellow) on a screen like this:



Part of the reason we built our own tools is that different types of text (e.g. missions, conversations, events, and contracts) are located and stored differently, and the tool had to identify and recognize that. The fact that we built our own tools also meant that, before we could even do any actual translation work, we had to design, implement, and test our tools, to make sure that they were working properly. If they were, the tool would grab the strings from different parts of the game and generate them uniformly on a spreadsheet.

From there, we’d send those strings to our localization team. They’re based in Europe so we send them strings from our office in the US, where they work on them overnight (during their work day), and we get the translations the next morning to put into the game. We’ve been doing this process for months, because there are a lot of strings to gather, translate, and implement. Below is a tiny(!!) portion of what our table looks like:



The translation process isn’t easy, either. Translations have to be consistent with 35 years of BATTLETECH lore, as well as be linguistically and culturally accurate. But given all the different dialogue options, as well as the fact that we have three pronoun options when other languages have two genders for nouns, there was a lot of back and forth so that the translators can get the right context and phrasing. I’ve learned about coding for non-breaking spaces in French, German grammatical sentence construction, and how Cyrillic text fits into Latin alphabet text boxes. (Sidenote: our localization team has also been reading your feedback in the language-specific forums, so next time you post there, give them some thanks for their work!)

Finally, there were challenges with UI. Once translated, German and Russian words are often much longer than their English counterparts, and all that text has to fit on the screen somewhere. For example, here’s what the English text for upgrading your Argo looks like:



And here’s the same screen in German:



In these cases, we had three main options for solving this:
  • Make the text box bigger;
  • Make the text smaller;
  • Get a shorter translation with an equivalent meaning.
Throughout BATTLETECH, we’ve used variations of all three. Each of them has benefits and limitations. Changing a text box in one language will affect the size and layout of the text for all other languages. We have dynamic text (which automatically changes size depending on the size of the text box), but if the strings are long, then the text becomes tiny and unreadable. A shorter translation requires additional work (since the strings have to be retranslated), and can affect translation accuracy. In the case above, we ended up making the text box bigger AND the text a bit smaller:



Production work is about making calls at each step of the way to shepherd the process. Localization production in particular is challenging and unique, and certainly a labor of love. It’s about working with a team of dedicated and smart individuals, and trusting them, so we can all put out the best product possible, even if we don’t understand most of the text that shows up on our screens. But it also means that different parts of our community can come together to play a game that they’re passionate about. When we were done, we had a game with over 1.2 million words across four languages:







I know that many of you are excited to play BATTLETECH in your native language, so I hope you enjoy this update!

Cheers,

Jo <3)~

P.S. I recognize the irony of talking about localization and not having this post be localized, so if anyone can help with that, it would be greatly appreciated!
 

stjobe

Moderator
Moderator
15 Badges
Jan 3, 2018
2.665
253
  • BATTLETECH
  • BATTLETECH - Initiate of the Order
  • BATTLETECH - Digital Deluxe Edition
  • BATTLETECH - Beta Backer
  • BATTLETECH - Backer
  • BATTLETECH: Flashpoint
  • BATTLETECH: Season pass
  • BATTLETECH: Heavy Metal
  • Shadowrun Returns
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • Magicka
  • Stellaris
  • Pillars of Eternity
  • Tyranny: Archon Edition
I'm in awe that you managed to pull this off. Translation is hard. Kudos to the whole team on a job well done!
 

Prussian Havoc

BATTLETECH Multiplayer Advocate
45 Badges
May 12, 2017
7.934
110
forum.paradoxplaza.com
  • Age of Wonders: Planetfall Premium edition
  • Surviving Mars: First Colony Edition
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Surviving Mars: Digital Deluxe Edition
  • BATTLETECH - Digital Deluxe Edition
  • BATTLETECH - Beta Backer
  • BATTLETECH - Backer
  • Stellaris: Distant Stars
  • Shadowrun Returns
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • Victoria 2
  • BATTLETECH: Flashpoint
  • Stellaris: Megacorp
  • Surviving Mars: First Colony Edition
  • Imperator: Rome Sign Up
  • BATTLETECH: Season pass
  • Age of Wonders: Planetfall
  • Age of Wonders: Planetfall Deluxe edition
  • Age of Wonders: Planetfall Season pass
  • BATTLETECH: Heavy Metal
  • Age of Wonders III
  • Stellaris
  • Stellaris: Galaxy Edition
  • Hearts of Iron IV: Cadet
  • Hearts of Iron IV: Colonel
  • Tyranny: Archon Edition
  • Tyranny: Archon Edition
  • Tyranny: Gold Edition
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • BATTLETECH
  • Tyranny - Bastards Wound
  • BATTLETECH - Initiate of the Order
  • Victoria 2: A House Divided
  • Surviving Mars
  • Victoria 2: Heart of Darkness
  • Stellaris: Ancient Relics
  • Age of Wonders: Planetfall - Revelations
  • Stellaris - Path to Destruction bundle
  • Stellaris: Galaxy Edition
  • Stellaris: Synthetic Dawn
  • Tyranny - Tales from the Tiers
  • Crusader Kings II
@HBS_Mouse, great job! I've served as a Military Linguist... the scope and difficulty of what you all have accomplished here is quite impressive.

Well done Team HBS, well done indeed. :bow:
 

Brother Diogenes

Major
25 Badges
Feb 23, 2018
601
7
  • BATTLETECH
  • BATTLETECH: Heavy Metal
  • BATTLETECH: Season pass
  • Stellaris: Megacorp
  • BATTLETECH: Flashpoint
  • Shadowrun: Hong Kong
  • Shadowrun: Dragonfall
  • Shadowrun Returns
  • BATTLETECH - Backer
  • BATTLETECH - Beta Backer
  • Stellaris: Apocalypse
  • Stellaris: Humanoids Species Pack
  • Stellaris - Path to Destruction bundle
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Stellaris
  • Magicka 2: Ice, Death and Fury
  • Pillars of Eternity
  • Warlock 2: The Exiled
  • Magicka 2
  • Magicka
  • Warlock 2: Wrath of the Nagas
  • King Arthur II
  • Sword of the Stars
  • Stellaris: Synthetic Dawn
I'm in awe that you managed to pull this off. Translation is hard. Kudos to the whole team on a job well done!
No doubt. Mastering the intricacies of even one language is hard enough, let alone two or more.
One of the biggest challenges of localizing BATTLETECH was the sheer volume of text. I love how we use words to weave together this deep universe full of lore, intrigue, and big stompy robots, but there are over 300,000 words in the English version alone! One does not simply drop a bunch of text into Google Translate, copy/paste the results, and expect it to work in-game. So, in true BATTLETECH style, we had to approach this mission strategically.
And now I'm imagining an optional April Fool's update that does exactly this, running the game's whole text through Google Translate a few times and bringing it back to the original language. Let's see what it does to Ostergaard's introduction to the story:
Attention, forces of the Arano Restoration: I'm Commodore Samuel Ostergaard of the Concord Navy. You are surrounded by a battalion of the Concordat's most decorated mechwarriors. On behalf of our allies in the Aurigan Directorate, I demand your immediate and unconditional surrender.

But I know you won't stand down, Lady Arano. You're the Sword of Restoration. You have a reputation to uphold, and that's good. I wouldn't have it any other way.

I'm going to enjoy painting the ice red with your blood.
Now let's see what happens when you use an algorithm to turn it to Latin, then Haitian Creole, then back to English:
The sins themselves, they pulled up to the next Year of Restoration Arano: I came out in harmony at the Commodore Samuel Ostergaard Marine. And he agrees most to be surrounded by a group of oil mechwarriors. For us, in the Driving Direction, I may ask you to immediately surrender.

But I do not stand down my mouse. You swords at work. The fame is kept, and that's a good thing. Not just anyone else.

I will enjoy yourself painted red in the mirror.
Yeah... good translation isn't nearly that easy. Though Elias Toufexis's voicing just might make it work.
 

Havamal

Moderator
Moderator
30 Badges
Jan 3, 2018
4.720
39
  • Shadowrun Returns
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • BATTLETECH - Initiate of the Order
  • BATTLETECH - Beta Backer
  • BATTLETECH - Backer
  • BATTLETECH
  • BATTLETECH - Digital Deluxe Edition
  • BATTLETECH: Flashpoint
  • BATTLETECH: Season pass
  • BATTLETECH: Heavy Metal
  • Age of Wonders III
  • Tyranny - Tales from the Tiers
  • Tyranny: Gold Edition
  • Tyranny: Archon Edition
  • Tyranny: Archon Edition
  • Tyranny - Bastards Wound
  • Stellaris
  • Pillars of Eternity
  • Warlock: Master of the Arcane
  • Crusader Kings II
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: Sword of Islam
  • Magicka
  • Knights of Pen and Paper +1 Edition
  • Sword of the Stars
  • Sword of the Stars II
  • Crusader Kings III Referal
  • Imperator: Rome
  • Imperator: Rome Sign Up

HBS_Mouse

Corporal
4 Badges
Dec 3, 2018
31
0
  • BATTLETECH
  • Harebrained Schemes Staff
  • BATTLETECH - Digital Deluxe Edition
  • Shadowrun: Hong Kong
Well, I was going to reply to this conversation with a link to the latest Ariana Grande tattoo debacle to prove a point about translation difficulties but I see that I don't have to.
 

Havamal

Moderator
Moderator
30 Badges
Jan 3, 2018
4.720
39
  • Shadowrun Returns
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • BATTLETECH - Initiate of the Order
  • BATTLETECH - Beta Backer
  • BATTLETECH - Backer
  • BATTLETECH
  • BATTLETECH - Digital Deluxe Edition
  • BATTLETECH: Flashpoint
  • BATTLETECH: Season pass
  • BATTLETECH: Heavy Metal
  • Age of Wonders III
  • Tyranny - Tales from the Tiers
  • Tyranny: Gold Edition
  • Tyranny: Archon Edition
  • Tyranny: Archon Edition
  • Tyranny - Bastards Wound
  • Stellaris
  • Pillars of Eternity
  • Warlock: Master of the Arcane
  • Crusader Kings II
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: Sword of Islam
  • Magicka
  • Knights of Pen and Paper +1 Edition
  • Sword of the Stars
  • Sword of the Stars II
  • Crusader Kings III Referal
  • Imperator: Rome
  • Imperator: Rome Sign Up
Well, I was going to reply to this conversation with a link to the latest Ariana Grande tattoo debacle to prove a point about translation difficulties but I see that I don't have to.
:salute:
Don't worry "One day the super karate monkey death car will park in [your] space."
:D
 

ThatGuyMontag

Colonel
16 Badges
Feb 23, 2018
1.104
7
  • Pillars of Eternity
  • Stellaris
  • Tyranny: Archon Edition
  • BATTLETECH
  • Tyranny - Tales from the Tiers
  • Tyranny - Bastards Wound
  • BATTLETECH - Digital Deluxe Edition
  • BATTLETECH - Beta Backer
  • BATTLETECH - Backer
  • Shadowrun Returns
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • BATTLETECH: Flashpoint
  • BATTLETECH: Season pass
  • BATTLETECH: Heavy Metal
  • Magicka
A big welcome to @HBS_Mouse. Thanks for your work getting localisation up and running because all of us in the community know this is an important step to getting this game we all love the audience it deserves.

It's also nice to see HBS getting a bit bigger as a studio: the community wishlist for where Battletech goes is getting a taaaaad long.
 

Spartakus

Colonel
46 Badges
Feb 22, 2018
860
1.320
  • Crusader Kings II
  • Stellaris - Path to Destruction bundle
  • Hearts of Iron IV: Expansion Pass
  • BATTLETECH: Heavy Metal
  • BATTLETECH - Initiate of the Order
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Europa Universalis IV: Rule Britannia
  • BATTLETECH - Beta Backer
  • BATTLETECH - Backer
  • Stellaris: Distant Stars
  • Europa Universalis IV: Dharma
  • Shadowrun Returns
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • Europa Universalis IV: Golden Century
  • Stellaris: Ancient Relics
  • BATTLETECH: Season pass
  • Europa Universalis IV: Cradle of Civilization
  • Age of Wonders III
  • Hearts of Iron IV: Death or Dishonor
  • BATTLETECH
  • Europa Universalis IV: Mandate of Heaven
  • Hearts of Iron IV: Together for Victory
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Europa Universalis IV: Rights of Man
  • Hearts of Iron IV: Cadet
  • Stellaris
  • Europa Universalis IV: Mare Nostrum
  • Europa Universalis IV: Cossacks
  • Europa Universalis IV: Common Sense
  • Europa Universalis IV: El Dorado
  • Cities: Skylines
Thanks for getting this done, and for letting the community participate in checking the translations.

So, uhm, I've seen a lot of the issues mentioned in the translation-beta threat still in the current version. Am I experiencing a bug or is there a date where we can expect those to be fixed? Especially the noun declension thing is very noticable.
 

Mechwarrior Horus

Sergeant
3 Badges
Feb 23, 2018
69
0
  • BATTLETECH - Initiate of the Order
  • BATTLETECH - Beta Backer
  • BATTLETECH - Backer
Thank you for sharing @HBS_Mouse !! This was a great way for us to get a better appreciation of what the hbs team has to take on for us to have such a great game. Always a huge fan of you all and i have immense amount of respect of everyone there. Thank you thank you thank you!
 

HBS_Mouse

Corporal
4 Badges
Dec 3, 2018
31
0
  • BATTLETECH
  • Harebrained Schemes Staff
  • BATTLETECH - Digital Deluxe Edition
  • Shadowrun: Hong Kong
Thanks for getting this done, and for letting the community participate in checking the translations.

So, uhm, I've seen a lot of the issues mentioned in the translation-beta threat still in the current version. Am I experiencing a bug or is there a date where we can expect those to be fixed? Especially the noun declension thing is very noticable.
We're aware of the noun declension issue! There's been a lot of feedback about it. Our engine didn't support it at the time of release, but we are currently looking at how we can improve our engine and tools to be able to support it in the future. We're also still watching the forums for other feedback, so please keep it coming. :)
 

Spartakus

Colonel
46 Badges
Feb 22, 2018
860
1.320
  • Crusader Kings II
  • Stellaris - Path to Destruction bundle
  • Hearts of Iron IV: Expansion Pass
  • BATTLETECH: Heavy Metal
  • BATTLETECH - Initiate of the Order
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Europa Universalis IV: Rule Britannia
  • BATTLETECH - Beta Backer
  • BATTLETECH - Backer
  • Stellaris: Distant Stars
  • Europa Universalis IV: Dharma
  • Shadowrun Returns
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • Europa Universalis IV: Golden Century
  • Stellaris: Ancient Relics
  • BATTLETECH: Season pass
  • Europa Universalis IV: Cradle of Civilization
  • Age of Wonders III
  • Hearts of Iron IV: Death or Dishonor
  • BATTLETECH
  • Europa Universalis IV: Mandate of Heaven
  • Hearts of Iron IV: Together for Victory
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Europa Universalis IV: Rights of Man
  • Hearts of Iron IV: Cadet
  • Stellaris
  • Europa Universalis IV: Mare Nostrum
  • Europa Universalis IV: Cossacks
  • Europa Universalis IV: Common Sense
  • Europa Universalis IV: El Dorado
  • Cities: Skylines
We're aware of the noun declension issue! There's been a lot of feedback about it. Our engine didn't support it at the time of release, but we are currently looking at how we can improve our engine and tools to be able to support it in the future. We're also still watching the forums for other feedback, so please keep it coming. :)
OK, this might be a dumb question, but:
As far as I can tell you have some flags in your texts to insert the name of a faction into your texts. So fhe text gets dynamically changed depending on employer and target, etc.
And you already have two versions, a noun and an adjective, so you can have both Mercenarys of the Capellan Confederation and capellan mercenaries.
can't you just add a bunch of such flags to include all cases? English will only ever use one and the translator knows which one to use in any instance.
 

HBS_Mouse

Corporal
4 Badges
Dec 3, 2018
31
0
  • BATTLETECH
  • Harebrained Schemes Staff
  • BATTLETECH - Digital Deluxe Edition
  • Shadowrun: Hong Kong
OK, this might be a dumb question, but:
As far as I can tell you have some flags in your texts to insert the name of a faction into your texts. So fhe text gets dynamically changed depending on employer and target, etc.
And you already have two versions, a noun and an adjective, so you can have both Mercenarys of the Capellan Confederation and capellan mercenaries.
can't you just add a bunch of such flags to include all cases? English will only ever use one and the translator knows which one to use in any instance.
Good question! We did consider using flags that we could switch on/off for these purposes, but we also had particular hard-coded strings for which this was not a viable solution (at least on a systemic level). We're looking at how we can implement a change to our engine that would work for both German and Russian noun declension in the future.