Even a small game project such as my Coopong for Kids needs to be translated into different languages if you want to reach more players. If you want to keep your budget low while having the least amount of hassle with localization, the following (incomprehensive) list of free localization tools for Unity might help.
(Update: also have a look at my article about the Unity Localization package, which was published later.)
My first version of Coopong for Kids which went into “soft launch” last year only featured a German translation, so I only published it in Germany and Austria. For publishing in the rest of the world, I needed at least an English translation. Since I did not want to put too much effort into the technicalities I looked around for some advice on what plugin to use.
The blog post 7 Tips for Localizing Your Indie Game In Unity by Level Up Translation is very much worth a read. They offer some useful advice like using external files in human readable format. Putting these files into asset bundles lets you update your localization without publishing new versions of your game. Naturally, as a professional translation company, they cater to indies with some budget, so some of their tips go beyond what a hobbyist needs to implement. The Unity asset they advocate, l2 Localization, with a price around 40€ (45$) may already be too expensive, but there are a number of free alternatives.
I had a look at eight different tools, implementing a quick test application for each of them. One particular use case I looked at was dynamic text, meaning how easy it is to integrate variable parts into translated strings. This comes in handy when you want to change, e.g., an achievement text or score value in a placeholder text. My three favorite localization tools were the following, although only the last of them really supports dynamic text.
This asset is quite easy to use and comes with a straight-forward documentation, while doing a lot of stuff under the hood. Translations are stored in a local XML file which is generated by a built-in editor. This XML file can also be edited with any other tool and synchronized subsequently. Localization Wizard conveniently determines the system language for your app on first start. It allows you to localize text, audio clips and textures. There is, unfortunately, no description on how to use dynamically changing content via script.
I liked this asset quite a bit, but unfortunately, it does not provide the dynamic text API I was looking for either. However, it provides an easy to use integrated localization explorer and features localization support for a lot of different components (Text, TextMesh, TextMeshPro, TextAsset, VideoClip, AudioClip, Sprite, Texture, Font and Prefab). Google Translate can be added as a service. This makes Asset Localization a good tool for quickly set-up initial localizations, although it may not scale well for large projects as it relies mostly on its internal editor. Anyway, give it a try!
My favorite asset and the one I chose for Coopong For Kids is Lean Localization by Carlos Wilkes. I have been using his LeanTouch asset in all my mobile games so far and was also convinced by his localization tool.
Lean Localization comes with a comprehensive HTML documentation and a step-by-step tutorial using example scenes. Translations are added via the central LeanLocalization prefab in your scene. Each translation, phrase, or token is represented by a GameObject located underneath this prefab. These translation objects can be grouped to simplify phrase selection in the LeanLocalizedText component. Instead of a list of GameObjects in each scene, folders of prefabs with translations can be used.
Lean Localization supports dynamic text! Text tokens can be changed via code or using other components by providing a callback when tokens are to be changed via code. Furthermore, Lean Localization offers a number of convenience features, such as automatically storing the last selected language, storing translations in either text or csv files, or using lazy loading for the translations.
More Localization Tools
The other five localization assets I surveyed are (in no particular order) Dynamic Text Localisation, Base Localization Tool, Simple Localization by Hippo, ISI Localization and Language Localization. Some of them have interesting additional features such as support for Excel files or Google Spreadsheets, or downloading translations via URL.
It took me quite some time to finally get this post done. In the meantime, development has caught up with me. Unity now provides a built-in localization package which requires at least Unity 2019.3 and is still in preview. However, it might be officially released sometime in 2021. I haven’t had time yet to review it, so there is an opportunity for a follow-up on this post.