Localization
Sets up and configures Unity Localization, including locales, String and Asset Tables...
Install
npx skills add Unity-Technologies/skills --skill localization -g -a claude-code -y- Repository
- Unity-Technologies/skills1.2k
- Category
- Design
- Updated
- 5d ago
- License
- See repository
- Context cost
- Mediumabout 3,000 tokens
- Runs scripts
- No, instructions only
What it does
Sets up and configures Unity Localization, including locales, String and Asset Tables, and CJK fonts. Use when the user asks to add languages, translate UI text, or mentions i18n or multilingual support.
This guide covers setting up and configuring Unity Localization, including locales, String and Asset Tables, Addressables integration, and CJK font support via Asset Tables.
0. Package Installation Check
Before doing anything else, verify that the Localization package is installed. Many APIs in this skill will fail silently or throw confusing errors if the package isn't present.
- Check by reading the project, not by asking the Package Manager. Look for
com.unity.localizationinPackages/packages-lock.json. That file records what Unity actually resolved, it is plain JSON, and reading it needs no Editor and no async call. (Packages/manifest.jsononly records what was requested, so check the lock file.) - Install if missing:
UnityEditor.PackageManager.Client.Add("com.unity.localization"). - Wait properly.
Client.AddandClient.Listare asynchronous: they return a request that is stillInProgresswhen the call returns, so reading the result in the same statement tells you nothing. Do not busy-wait onIsCompletedeither; that blocks the main thread you are running on. Instead, return after firing the install, then pollpackages-lock.jsonin a later call until the id appears. Installation also triggers a domain reload, so expect the first poll or two to fail; a fresh install typically resolves in a few seconds. - Confirm the types are actually loaded before using them, since the lock file can be written
before the assemblies are ready:
Only proceed once that returnsvar t = System.Type.GetType( "UnityEngine.Localization.Settings.LocalizationSettings, Unity.Localization"); return t != null ? "ready" : "not loaded yet";ready.


