Skills

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
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.

  1. Check by reading the project, not by asking the Package Manager. Look for com.unity.localization in Packages/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.json only records what was requested, so check the lock file.)
  2. Install if missing: UnityEditor.PackageManager.Client.Add("com.unity.localization").
  3. Wait properly. Client.Add and Client.List are asynchronous: they return a request that is still InProgress when the call returns, so reading the result in the same statement tells you nothing. Do not busy-wait on IsCompleted either; that blocks the main thread you are running on. Instead, return after firing the install, then poll packages-lock.json in 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.
  4. Confirm the types are actually loaded before using them, since the lock file can be written before the assemblies are ready:
    var t = System.Type.GetType(
        "UnityEngine.Localization.Settings.LocalizationSettings, Unity.Localization");
    return t != null ? "ready" : "not loaded yet";
    
    Only proceed once that returns ready.
Read the whole SKILL.md on GitHub

More in Design