Languages

Every string the menu shows has a key (ui.…, setting.<id>.name, setting.<id>.help, setting.<id>.option.<value>, category.<id>, input.action.<name>). The kit ships an English String Table (Content/Localization/English.asset).

Add a language #

  1. Duplicate English.asset, rename it (e.g. German.asset), and set Language Code (de) and Native Name (Deutsch).
  2. Translate the values (keep the keys and any {0} placeholders or <b> tags).
  3. Add the table to the Language setting (in your profile copy).

Missing keys fall back to English. The default language is the player's system language when a table matches it, otherwise English.

Pseudo-localization (testing) #

In the Editor and in development builds the Language setting also offers Pseudo: every text gets accented letters, 40% more length and brackets ([Ñéŵ Ĝáɱé~~~~]). Use it to find text that is cut off or not translated. Menu texts shrink to fit long translations; an automated test checks every screen at 4:3, 16:10, 16:9, 21:9 and 32:9, at 75%, 100% and 150% menu size, in every theme, with pseudo-localization on.

Fonts for other scripts (Chinese, Japanese, Korean, …) #

The included Inter font covers Latin scripts (Western European languages). For Chinese, Japanese, Korean, Cyrillic, Greek, Arabic or other scripts, create a TextMesh Pro font asset from a font that covers them (for example Noto Sans CJK, SIL OFL) and add it to the Fallback Font Assets list of the theme's font asset (or set it as the theme's font). Dynamic atlas population keeps the build small. Right-to-left languages need extra work in TextMesh Pro and are not handled by the kit.

Unity Localization package (optional) #

When com.unity.localization is installed, the menu also asks a Unity Localization string table named SettingsMenuKit (same keys), and follows the package's selected locale. The bridge is compiled only with the package (1.4 or newer). A text missing from the selected locale's table comes from the English Unity table, then the kit's English table, then the text in the prefab. Change the table name with UnityLocalizationStringSource.TableName, or stop following the selected locale with UnityLocalizationStringSource.FollowSelectedLocale = false.

Credits and loading tips come from your own text files; translate them by assigning a different file per language from your game code.

Something unclear or wrong? Tell us · Get help