Files
Iris/docs/08 - Localization.md
T
2026-08-08 00:29:48 -06:00

5.3 KiB

08 - Localization

Iris localizes command, Studio, runtime, HUD, and UI strings through typed Java message catalogs and optional locale overlays. Server locale is selected by general.language in settings.json. Client keybind labels use Minecraft lang assets under assets/irisworldgen/lang/. See also 03 - Configuration.md, 04 - Commands & Permissions.md, and 29 - Client HUD & Protocol.md.

English and catalogs

Canonical English is code-owned in core/.../localization (IrisMessages and the surface catalogs it assembles). Iris does not ship an English server translation file. English locale id is en_US (VolmitLocales.ENGLISH).

Catalog surfaces:

Catalog Surface
IrisMessages Shared command deny / reload / modded help keys
BukkitCommandMessages, BukkitCommandMessagesExtended Bukkit /iris feedback
DirectorCommandMessages Director parameter/help copy (Bukkit command tree)
ModdedCommandMessages, ModdedHelpMessages Fabric/Forge/NeoForge command and help
RuntimeUiMessages, RuntimeProgressMessages, BukkitRuntimeMessages Pregen, chunk jobs, runtime status
PackDownloadMessages Pack download progress
ClientUiMessages Client Vision, What overlay, pregen HUD, toasts, create-world gates
BukkitUiMessages, DesktopUiMessages Bukkit/desktop UI strings

Resolution entry points: IrisLanguage.text(...) (color codes allowed) and IrisLanguage.plain(...) (legacy section colors stripped). Argument-free plain results are memoized per locale snapshot for hot UI paths.

Selecting a locale

Setting Default Location
general.language en_US plugins/Iris/settings.json (plugin) or Iris data-folder settings.json (mod)

Locale names must match [A-Za-z0-9_-]+. Invalid values are rejected and the previous active locale continues. /iris reload (and settings hotload) reloads settings and locale; success/failure messages report the requested and active locale ids.

Bundled server locales

Complete non-English server bundles ship as jar resources under /languages/<locale>.json. Bundled locale ids:

Locale id Language
de_DE German
es_ES Spanish
fi_FI Finnish
fr_FR French
he_IL Hebrew
it_IT Italian
ja-JP Japanese (hyphen in the server locale id)
ko_KR Korean
lt_LT Lithuanian
nl_NL Dutch
pl_PL Polish
pt_PT Portuguese
ru_RU Russian
tr_TR Turkish
vi_VI Vietnamese
zh_CN Simplified Chinese
zh_TW Traditional Chinese

Bundled file size is capped at 2 MiB. A missing bundle for a locale listed in VolmitLocales is a hard load failure; an unknown locale with no bundle falls through to English catalog text (with fallback warnings counted at load).

Override files

Path: <Iris data folder>/languages/overrides/<locale>.json.

Iris creates languages/overrides/ on locale load. Overrides are optional partial files: omitted keys resolve from the bundled overlay (if any), then from code-owned English.

Shape:

{
  "locale": "de_DE",
  "messages": {
    "iris.command.unknown": "Unbekannter Iris-Befehl"
  }
}

Rules:

Rule Behavior
Root keys Only locale and messages are allowed
locale If present, must equal the file's locale id after normalize
Values String (text), string array (lines), or object of plural forms for plural keys
Nesting Objects nest into dotted keys; keys must exist in the message catalog
Size Max 2 MiB
Hotload Override file mtime/size is watched; change triggers locale reload without a full restart when settings hotload runs

Rejected reloads leave the previous locale active and log up to 12 validation errors.

Resolution order

For non-en_US locales: operator override overlay → bundled /languages/<locale>.json → English catalog defaults. For en_US: override overlay only (no English server bundle).

Template placeholders use {name} tokens. Trusted arguments may contain color codes; untrusted arguments strip legacy section codes and rewrite &, <, >.

& color codes in templates are translated to section-sign codes before send (0-9a-f, k-o, r, x).

Client language assets

Minecraft client assets live at assets/irisworldgen/lang/<mc_code>.json inside the mod jar. en_us.json is required and currently holds keybind category and key names only:

Key English
key.categories.irisworldgen.iris Iris
key.irisworldgen.toggle_pregen_hud Toggle Pregen HUD
key.irisworldgen.open_vision_map Open Iris Vision Map
key.irisworldgen.toggle_what_overlay Toggle Iris What Overlay

Minecraft codes are derived from server locale ids by replacing - with _ and lowercasing (ja-JPja_jp). Matching translated client assets ship for every non-English bundled locale. Server HUD/Vision/toast strings still resolve through IrisLanguage / ClientUiMessages on the process that renders them, not through these four Minecraft keys.

Platforms

Localization runs on Bukkit-family and modded (Fabric/Forge/NeoForge). Client keybind lang assets apply only where the client mod is installed. PlaceholderAPI and Bukkit-only command catalogs do not affect mod command trees; modded uses the modded catalogs. See 30 - Platform Differences.md.