Localization

Multi-language support

Included Languages

CodeLanguage
en-USEnglish
de-DEGerman
es-ESSpanish
fr-FRFrench
hu-HUHungarian
it-ITItalian
pt-BRPortuguese (Brazilian)
ru-RURussian
tr-TRTurkish

Each player sees the game in their own client locale; the server never reads or stores a per-player language preference. The matching .lang file is resolved client-side, with English as the per-key fallback.

Native Language Files (.lang)

The nine built-in languages ship as native Hytale .lang translation files bundled in the mod jar, and new languages are added the same way - as a small asset pack dropped into your mods directory. This is the recommended way to add or share a language: it is discovered automatically at server start, needs no admin commands, and survives mod updates.

  • The full authoring guide (the mmoskilltree.lang filename rule, the fallback chain, and the zip gotcha) is on the Translation Packs page.

Prefer to tweak a handful of strings without shipping a pack? Use the optional per-server JSON admin override below; it layers on top of the native files and always wins.

Admin Override: Custom Translations

Scope: the server's single default language only

The server has exactly one configured default language (en unless changed), set with /mmoconfig language <code>. The JSON override below affects only that one language, and only the small set of strings the server itself resolves and sends (floating combat text, item-slot tooltip hover, console/admin output, quest markdown). It does not retranslate the UI for a player on a different client locale - almost all UI text is resolved client-side from the native .lang packs above, which a server-side JSON file can never reach. To change what a player on locale X sees, ship or edit that locale's .lang pack instead.

Use this override to tweak a handful of server-resolved strings (in the server's default language) without shipping a full language pack. These overrides live on your server and always win over pack and built-in translations for that language:

  1. Set the server's default language if it isn't already what you want to edit: /mmoconfig language <code> (e.g. /mmoconfig language ja)
  2. Create mods/mmoskilltree/localization/messages-<code>.json (e.g. messages-ja.json) - there is no file to copy, the mod never writes a reference file to disk; start from an empty object
  3. Add only the specific keys you want to override, as a flat key-value map; English key names and values for reference live in the bundled en-US/mmoskilltree.lang file
  4. Run /mmoconfig reloadlang
  5. The overridden strings apply immediately, but only to the server-resolved sinks listed above, for the server's configured default language

Message Structure

Language files use a flat key-value structure with placeholder support:

{
  "language.name": "English",
  "ui.button.close": "CLOSE",
  "ui.button.back": "< BACK",
  "ui.viewxp.title": "Skill Overview",
  "ui.viewxp.level_prefix": "Lv. {0}",
  "notify.xp_gain": "+{0} {1} XP",
  "notify.level_up": "LEVEL UP! {0} is now Level {1}!",
  "skill.mining": "Mining",
  "reward.stat_health": "Max Health",
  "reward.format.percent": "+{0}%",
  "reward.format.flat": "+{0}"
}

Message Categories

PrefixDescription
ui.*UI labels, buttons, page text
notify.*XP gain, level up, combat notifications
skill.*Skill names
reward.*Reward type names and formats
cmd.*Command responses
cmd.config.*/mmoconfig command messages

Placeholders

Use {0}, {1}, etc. for dynamic values:

  • "notify.xp_gain": "+{0} {1} XP" → "+50 Mining XP"
  • "ui.viewxp.level_prefix": "Lv. {0}" → "Lv. 42"

Hot Reload

/mmoconfig reloadlang

Reload all language files without server restart. New translations take effect immediately.

Server Default Language

/mmoconfig language <code>

Sets the server's single default language (SkillConfig.defaultLanguage, default en). This does not change what any individual player sees - per-player locale is resolved entirely client-side and the server never reads or stores it. This command only controls which language the admin-override JSON files above and the residual server-resolved sinks (combat text, tooltips, console output) target.

Fallback Behavior

  • Resolution order: admin override, then native language file, then English default
  • Missing keys fall back to English, per-key
  • Raw keys are never shown to users

Sharing Translations

Override files are portable; share your messages-XX.json with other servers. To publish a full language for everyone, package it as a native language asset pack.

What's Localized

  • All UI text (pages, buttons, labels)
  • XP and level-up notifications
  • Skill names
  • Reward type names and descriptions
  • Command responses and error messages
  • Settings labels