I was asked recently to provide some tips about localization issues. Localization for games is really not much different than for any other application, so most if not all of these ideas work no matter what type of application you’re creating.
- Assume your game will be localized. All successful games are localized. If you go in knowing that localization will happen, you’ll make design decisions that will save you (and your localizers) a ton of time in the future.
- Don’t embed UI text in code. This is one of the hardest tips to follow. Rule of thumb: if the text could ever appear to your customer, it shouldn’t be directly in the code — it should be in a separate resource.
- Use Unicode for all player-visible text; prefer UTF-8 (or string IDs) on the wire. Multi-byte character strings are hell; avoid them. Sending text over the network should be avoided when possible. Use some form of compression, at least UTF-8.
- Avoid composite strings built at run time. Word order is different from language to language. For instance, in German the verbs are often at the end. That means doing printf-style strings may not work appropriately.
- Allow 50–75% extra space in the UI. Even 75% may not be enough for some crazy German nouns. For example, has anybody caught you Geschwendigkeitsüberschreitung lately?
- Don’t forget time, date, and money strings. Use your operating system localization functions (or the CRT) to do the proper conversions for display.
You can find more information on production issues that pertain to localization in this Gamasutra article.