Almost exactly a year ago I published a quick survey about free localization tools, comparing those available in the asset store. In the meantime, the guys at Unity have developed and finally published version 1.0 of their own Localization package in September this year. I have decided to give it a try for Network Traders. So here comes an update to my last year’s survey.
First off, I only used free tools for localization so far. I never tried, e.g., I2 Localization, which is kind of a reference for Unity developers. And I2 still seems to have a number of features the Unity package does not provide, such as auto-translation or various font manipulation tools. But I am looking at this from a hobbyist’s perspective, so a basic set of features is sufficient.
Unity Localization provides a quite extensive number of features. The most important ones are:
- Localization of assets (such as sprites or audio) and text, including TextMeshPro.
- Automatic detection of system locale.
- Dynamic text, using variables which can be changed programmatically.
- “Smart strings“, which allow for correct pluralization, gender conjugation, and more.
- Export to and import from external sources, namely CSV files, Google Sheets and XLIFF.
Coming from Unity, it makes use of the addressables system naturally. This means that loading additional language packs during runtime or updating them between versions should be easy. The documentation is extensive, although the quick start guide left some open questions the first time I read it, and I had to dig deeper to understand some key aspects.
Another helpful feature is the automatic setup of localization. Each component which can be localized receives a new menu command called “Localize”. This command automatically adds the required components for localization. In this case, this would be a LocalizeStringEvent component.
If you select “Track Changes” in the Localization Scene Controls, the package even keeps track of changing database keys and the like. But be careful here, sometimes the automatic setup seems to be a little overeager. In my first experiments, I ended up with a warning saying “No translation found for ” in GeneralLocalizedText”. The cause was a loose GameObjectLocalizer component which was created without my realizing it. Deleting it removed the warning, but not until I spent some hours searching the forums. Well, not finding anything should have been a hint for me that the mistake was on my side rather than a bug in the package.
The Unity Localization package requires some practicing and experimenting before you know its peculiarities. But after getting used to, its a mighty and efficient tool. For previous projects, I had been using Lean Localization by Carlos Wilkes, but for Network Traders, I will give this package a shot. It integrates very well with the Unity editor, and includes some features I do not currently use but might need in the future.
If you are looking for a more comprehensive introduction to the Localization package, try this tutorial. And if you tried it yourself and found some obstacles I haven’t run into yet, I’d be happy if you left a comment.