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

  • We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

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:

R9FF7hSznw6fUeSlLi1jtCxfSMqVKXS5aY3On783mZZI8iSoXe9qy-4Y6rjt-rcCGZIhB8Dkw1u5jPqopq_VmYFcL20hA7QxRQ8fuwLoUoBtrfFb8JpRE0JiC4xYP0rHuiSGTyKe


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!

1nM0lKLAgUeMHd5qDsX-XKV0ZLB0za9e5nM8vG3hCjKEN7W98bg4WB5Y7c6pM2Qgty5i6WuSbAfANVhbWneTbuylq0XGyODH3E4Sah_ZhQMGcsqvKSEFHU4hb0c5GOoTa3IacpkS


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:

LpdpgA-1RZQ6L2NuTPl-gwQjRzk8SkADsJhzQv6ET-xwh8drpymWioJvaqt3n8ZznzU1F7doqYmKLDyaKbkbqrC-nTyGgw1nTM3OKGZZtTs50i63WLbLszUftXMdaV73c4B0Bkgx


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:

s0Kc4SEVMSib3P_NJvuwaW1uk3fDR1R_p3NznP_8x2zQVsrdvWDMarph7GLDp_kmf5eE56P8pojNe_QrYb2FlOqg5TPxBQBREsJJ2vwj10qA0wW86_TnVeGe6JvVatTP9G-cpjax


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:

a9KPTEMfNIUnxaFsMfw08CbGpp_W75A_2hlQ8XJxhzeOR3XLr5r-MskW5vitIclZEW8MUCS3hweyOWh8NP39vwxIPMa5EFX2VpOFuQzXvYXPG-nv59YjKS7vX0ERPJ4ohrf59RNs


And here’s the same screen in German:

eFgg9f_NPQeGeFiB7JGp8xQ12sBr2jTOX9oO4U-u2j8KEHInIEUSGYHpaJ4AamOMLIuMVuld-_uoAhzUCKn8eoxolpNnzBUUDKJ26VCQTbFz5DHRlsVwApDI0cEcO95mgiMwuJ9-


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:

NG8mJVl_hQ_KU-gpEsMMnIfk5HPyuqBqDbpUbidnth7qM1KN72-CdXB9RWWOPF4hlqYfeFgyIcQWYdqqKWgF7of1z-mMe_v_I6ygH-kcaVmzKPPFh6MskFReyJ9AssGxLWJpuFoU


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:

ayoNSlq9YZ_BFyD_YGRSuYTXHjleCa18nH7Q-0Flg_bN1IYA5e7p5l7trWPHDO55zucIbyCg9YrzPhbHQCPbGdkHc_UtORtIVd6cDZFKfDiH8MbX9nid0Miq8XhtWKZhDIfDixqm


DSR7wm1w-bmUG7tMWkUhdCvMe_K9x4or97R21nI35RGyKvCVnNhH07JL13RYeayNs_r-YjWc82-WefmXrk3LVuyhQyr7ucMTdjAQm99ZLnR3YFEQyexQ8bXBT6ebw2nV3pvCGz2o


cGzRQjf_Eoj61qy_MmYb-Er6-Sa5WzSttrlsaUzPTUDVV5rYn9f3OBfsSEf7INQrlpTljqzzkdXTKKYNSBysBq784poJGafROx_XRG03sF-Ft90A5l_Iurn0adNOJeMIGSOQhz0P


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!
 
I'm in awe that you managed to pull this off. Translation is hard. Kudos to the whole team on a job well done!
 
@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:
 
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.
 
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.
 
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
 
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.
 
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.
 
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!
 
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. :)
 
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.
 
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.