Dev Campfire: Localization and Text

The localization process was something I was semi-familiar with but had never executed on my own projects until now, and thought sharing my experiences might be a good one to cover. There’s a fair amount of decent information out there on how to setup localization but there were a few things I had to reach out for help on and find out myself, hopefully this post will help! These Dev Campfire posts are based on my experience and research, my goal is approaching development with lean and agile production. You can read my previous post here: Dev Campfire: Cheat Tools In Development

Research

Generally any system is going to take way more time and headaches to make yourself then simply purchasing a well-functioning preexisting one. Usually the cost of a plugin will always be cheaper in the long run (As long as it does what you need it to do).

I2 Localization for Unity was a smooth process to setup. For the majority of text, I could add to the I2 component and let it do its magic. Great bonus feature with this tool is that it can change the font based on its language, so you can have a suitable font for each language. It also has a lot of other great features and is worth checking out.

I’ll do a quick run down of the most common tips for localization:

  • Figure out your demographic and target audience to translate to before hand
  • Try to setup your localization early on
  • Don’t hard code text
  • Avoid text in visuals or textures if possible
  • Make sure your fonts support unicode characters. (You can get royalty free fonts from Google Fonts.)
  •  Make sure you have enough room for text in menus and especially on buttons. Languages like German can have long character lengths.
  • Be descriptive when leaving comments for your translators
  • Make sure your game is appropriate for the languages and cultures you’re targeting.

You can see some more great tips in detail from these links:

https://www.gamasutra.com/view/feature/175367/10_tips_localization.php?page=1

http://1uptranslations.com/en/localization-blog/2018/how-to-prepare-your-game-for-localization

 

Design In Style

Designing your interface

If you’re planning to translate text in your game you definitely need to take the time to think about how it will be presented beforehand. The more text you have, the more it will cost. Think about setting guidelines for using text and using text only when necessary. This of course depends on the game, but in most cases try and keep your descriptions to the point, informative and clear. Not only to save cost on translations but not to leave the player reading walls of text. Think about how you would feel as a player in an action game having to stop and read a wall of information at certain intervals. Design the information to work with the flow of the game.

Reusing phrases

Think about how you can reuse phrases in multiple locations of your game. Instead of having different ways to say ‘Okay/confirm’ reduce it down to one or two terms, not only does this reduce the cost of your localization but it builds a strong consistency through interface navigation.

Consistency is key

Keep text style consistent through the game. If you use certain fonts for buttons, headings and descriptions make sure it follows through everywhere in the game. This makes it easier for the player to learn the structure of your menus and makes processing information much faster. Its not going to be possible all the time but it helps the player understand your navigation. I tried to make sure that my ‘back/close’ button was always in the top right hand corner in all of my menus. I wanted to make sure my players didn’t have to guess how to navigate each menu.

Distance from the screen

Size of your text is important. Generally you’re close to the screen on your computer but if the game is played on a different platform, you want to make sure the text is easily legible from a distance. With different languages having different character lengths you want to try to make sure all languages can be legible. Players will be seated at least 2+ meters from a screen on consoles and mobile devices will have a smaller screen with small viewing distance.

Visual presentation

Lastly think about the visual presentation about your text. Make sure it’s neat, easy to read and the colors used aren’t jarring or fighting with other visual elements. Ideally you want the player to spend a short amount of time reading text otherwise they’re most likely going to ignore it or give up reading it. While this is circumstantial to the game, you want the player to be able to process any information as quick as possible. I strongly feel that you shouldn’t be overly artistic with your text as its main purpose is to be informative, but it all depends on the content and tone.

  • Use guidelines when implementing text
  • Keep in-game descriptions on point, informative and clear
  • Design information to work with the flow of the game
  • Reuse phrases where possible
  • Keep fonts consistent through buttons, headings and descriptions
  • Consistency helps players navigate and process information on the screen faster
  • Think about the legibility and size of your text based on your platforms
  • Keep presentation for text neat and visually easy to read

 

Preparing Your Game for Translation

First things first! Make sure the way you’re going to upload your translated strings into your game will be a smooth process. Ideally find out what file format your translators will provide translations and if you can export them as a file your localization system can read. If they can only work in an excel spreadsheet make sure you can import and export without losing information or having to adjust anything. Ideally you want to just to be able to import/re-import the localization file and know its going to reconnect all the strings to your text with minimal rework (or none at all).

You want to make sure all of your text/strings have an obvious id. Example:

StartText – Start

QuitText – Quit

CharacterAText – Character A

It will be easier to track and navigate especially dealing with other languages.

Storing Strings

Develop a smart way to load in your strings. If you have a list of items or abilities with descriptions you’ll probably be loading them all in at some point. Avoid having to read from file every time you select a list item. You could preload your list descriptions by grabbing them in the chosen language, storing them in an array, then pulling your specific strings from there. You’ll save on the amount of bottlenecks and checks every time the player selects item or description. There are many ways to go about this, ultimately the way to design your system will depend on your personal preferences and the game itself.

 

Numbers

I was surprised to find out that my numeric values remained in English when I had everything translated. The result was beneficial because I didn’t have to worry about ranking numbers in leader boards, scoring systems or or an item with a stat value. This means you could probably change or tweak these values and not worry about getting it translated again. You could go that extra step and make sure numbers are shown in their native language but I’m guessing this also means extra work creating unique systems that know how to piece together numbers in other languages.

eg:

10 = 十    20 = 二十     100 = 一百        200 = 二百          1000 = 一千

Languages like Simplified Chinese have special characters to represent different quantities like 100, 1000, etc. So converting numbers over to something like a score isn’t so simple. Definitely something to think about.

I couldn’t really find a simple and quick solution to converting score to different native characters, so if you do know please feel free to share.

 

Structuring Sentences

One mistake I made was structuring a sentence that contained a variable. So when I had a question to ask in game, which constructed a string containing a variable, this had to be rethought. Luckily this was the only case and a simple fix.
My question:

'Are you sure you want to delete Slot A?'

Slot A was the variable that would be interchanged, this does not work in other languages because you would have to write separate systems to figure out where it would be placed in the sentence in each language or translate out each varied sentence.

To fix this I separated the strings and reworded the question:

Slot A

'Are you sure you want to delete this slot?'

This is a pretty quick fix and painless setup, I could only imagine that displaying text with interchanging variables throughout would require additional systems for each language based on the sentence structure. It’s definitely something to think about when you’re setting up text in your game.

Buttons with text

If you have buttons with text, you most definitely will need to make these buttons have enough room to fit varied character limits. I suggest doing some tests in German and a few other languages to see how much space your buttons will need. Unity does have a best fit option on its text component, which allows to rescale text based on dimensions, so you can also utilize something like that as a safety net.

Finalizing Text & Strings

Don’t start translation until you’re completely ready and all your text is locked in, ideally when the game is in beta. Have the majority of text/strings hooked up and ready to go.

  • Test your systems and setup with importing test localization file(s) before sending it off for translation
  • Make sure all your text is finalized and locked in before translating
  • Think about how to efficiently load text in chosen language.
  • Think about how number values will work in your game through translation
  • Sentences are structured differently in each language, avoid trying to construct strings from layered segments
  • Buttons with text need to be designed with enough space in mind

 

Translating

A very important thing I would like to point out is that you should start a dialogue with your translators, give them a lot of information on the context, tone and of course be as friendly as possible, you want them to be asking questions and making the best choices for translations, especially when it comes to the text that isn’t common or for functionality. They’re using their judgement on what will work best for your game.

Descriptions

Descriptions are one of the most important things when translating, even the most obvious terms can have several or different meanings. Use descriptions on every single string even if its obvious because translators need to know in what context it’s used. This is especially important for functionality. Making translators aware that certain text is used for buttons or titles and headings will give them a heads up that they need to use shorter words.

Made up Names

You’re probably going to have made up names/words in your game. In the likely chance these words can’t be directly translated, you have a two options you could possibly take: A) Don’t translate it. or B) Make an alternative name for translating.

For Example: One of my bosses in Nom Nom Apocalypse goes by ‘Baconzilla’ A combination of Bacon and the last part of Godzilla. Some translators were able to translate it to a very similar name but I still supplied a second term for translators just in case, which was Bacon Godzilla. Not as flashy but they have the information to either use that straight outright or try to create something close. Providing an alternative will ensure you get the closest outcome with no surprises.

Cultural Slang, Phrases and Idioms

If I could go back and change one thing about the way I approached my localization, it would be dealing with cultural phrasing better. A lot of my ability names involved word play and while many of them would translate perfectly fine, I did have translators asking what a few meant and it made me wonder whether the some of these would make sense. My advice would be to be mindful of word play and sayings, and have an alternative phrase that you could have translated just in case.  Descriptions are especially important for sayings.

  • Supply tone, context, Screenshots, website and explain theme in full details to translators
  • Have descriptions for every string. Use it to specify context, functionality and more information
  • Have a secondary/alternative words for made up names just in case they can’t be translated accurately or to improve description
  • Keep in mind the cultural phrases/sayings and word-play are not universal and might require an alternative phrase.
  • Be aware of multi-cultural wording, iconography, values, customs and norms

 

 Language Options in Game

Once your translations are done and are fed through in game, you’ll have to do a little testing and setup the languages to be accessible to the player. I would suggest making a cheat tool/button so that you can quickly toggle your languages on the fly in-game. This will save a lot of time checking whether you forgot to hook up text or if anything is hard coded. My previous post talks about the usefulness and time-saving benefits of having cheat tools here: Dev Campfire: Cheat Tools In Development

Setting up language selection should be pretty straight forward in the settings. I had the language flags next to the option so regardless of the current language the game is in, the choices can still be understood.

If you’re running your game through a marketplace/app and they have language integration, load the language the player is using on the game’s first launch and save that language setting. Alternatively you could make it a one time configuration option screen on the game’s first start up. If the player changes the language, you should save the settings to be loaded on start next time the game is running.

  • Create an agile way to check text has translations setup in every area of your game
  • Flag imagery can be a helpful bonus to identify language
  • See if you can setup to detect the player’s language through application first time the player loads the game

Conclusion

Localization can be a costly process, so planning thoroughly and designing ahead can build strong foundations for a smooth integration of your language system. For my game, the text wasn’t heavy and was generally informative rather than narrative based but I still made sure my presentation was clear, concise and easy to navigate. It took a short amount of time and resulted in a very painless process with minimal tweaking. I’m sure there’s still some great information out there, if anyone has any other great tips or suggestions I’d love to hear them.

– Josh

 

 

Illustrations by Manfred Steger

Leave a Reply

Your email address will not be published. Required fields are marked *