Skip to content

Localization

curveo edited this page May 12, 2026 · 1 revision

Localization

TesseraUI integrates with Minecraft's built-in translation system. Your mod supplies the lang files; TesseraUI resolves them at render time via I18n.get(key).


1. Add lang files to your mod

assets/yourmod/lang/en_us.json
assets/yourmod/lang/fr_fr.json
assets/yourmod/lang/de_de.json
// en_us.json
{
  "ui.yourmod.title":       "Settings",
  "ui.yourmod.confirm":     "Confirm",
  "ui.yourmod.cancel":      "Cancel",
  "ui.yourmod.items.empty": "No items",
  "ui.yourmod.items.count": "items"
}
// fr_fr.json
{
  "ui.yourmod.title":       "Paramètres",
  "ui.yourmod.confirm":     "Confirmer",
  "ui.yourmod.cancel":      "Annuler",
  "ui.yourmod.items.empty": "Aucun élément",
  "ui.yourmod.items.count": "éléments"
}

2. Use data-i18n in templates

The data-i18n attribute replaces an element's text content with the active translation. The text written in the HTML serves as a fallback if the key is missing.

<col>
  <h2 data-i18n="ui.yourmod.title">Settings</h2>

  <row>
    <button data-i18n="ui.yourmod.confirm" onclick="confirm">Confirm</button>
    <button data-i18n="ui.yourmod.cancel"  onclick="cancel">Cancel</button>
  </row>
</col>

data-i18n works on any text-bearing element: button, label, p, h1h6, badge, span, strong, em, a, li.


3. Use {{ t:key }} for inline mixed content

When you need to mix a translation with a dynamic value:

<!-- "Hello, Steve!" -->
<label>{{ t:ui.yourmod.greeting }}, {{ player.name }}!</label>

<!-- "42 items"  or  "No items" -->
<label>{{ items.count == 0 ? t:ui.yourmod.items.empty : items.count + " " + t:ui.yourmod.items.count }}</label>

Note: In ternary expressions, use : (colon surrounded by spaces) as the separator when either branch contains a t: key.

Concatenation with translations

<label>{{ t:ui.yourmod.prefix }}: {{ player.name }}</label>

Architecture summary

Responsibility Owner
Translation resolution (I18n.get) TesseraUI (automatic)
data-i18n / {{ t:key }} binding Your HTML templates
Lang JSON files Your mod's assets/yourmod/lang/
Fallback text The literal text in the HTML element

No configuration is needed in TesseraUI — it discovers translations from all loaded mods automatically via Minecraft's resource manager.

Clone this wiki locally