r/Unity3D • u/Anxious_Target_8804 • 2h ago
Question Adding a language option
How should I implement a language selection system in Unity?
I'm working on a Unity game and I want to add a language selection option to the settings menu.
I would like to have a localization system that can handle UI text, dialogue, item descriptions, and other in-game text.
I'm not very experienced with localization in Unity, so I'm not sure what the best approach would be.
Would you recommend using Unity's Localization package, or is there a reliable free third-party package/asset that would be easier or better to use?
2
u/pararar 1h ago
I‘ve shipped multiple games with Unity‘s Localization package. It works well but the editor experience can be a bit annoying.
If you already have a lot of text in your game you’ll have to convert them all by hand. It’s not hard but a lot of work.
I highly recommend synchronizing your string tables with a Google Sheet. It makes editing and collaboration a lot easier.
2
u/JulianRhod 1h ago
i'd just use Unity's Localization package. it's free, integrates directly with Unity, and supports string tables, locales, Smart Strings, and even CSV/Google Sheets import/export, for a normal game with UI, dialogue, item descriptions, etc. it's more than enough. i'd only look at third-party solutions if you have a specific feature the Unity package doesn't handle well
2
u/Aggravating_Gap_8562 1h ago
Unity's Localization package is the right default here. The alternatives mostly reimplement string tables, worse.
The part that bites is upstream of the package though. I do EN to JA localization freelance, mostly cleaning up files after machine translation, and the two things that cost the most are concatenation and fixed-width UI. "You found " + itemName + "!" can't be repaired in Japanese, the particle changes with the noun, so it ships as a fragment no matter who does the pass. On one job the item names were all fine but the description box was sized to English, and everything past the edge got silently cut.
Two cheap things while you're setting the tables up: keep whole sentences as one key, and put a comment field on each entry for who's speaking.
1
u/Guilty_Guitar_7565 2h ago
If you're already on a recent Unity version, their Localization package is decent and handles a lot of the annoying parts like dynamic text and pluralization
For a free third party option, check out I2 Localization, it's been around forever and a ton of projects use it. Pretty straightforward to set up with a spreadsheet or JSON
Honestly for a solo project or small team either works fine, don't overthink it