Localization
Multi-language support
Included Languages
| Code | Language |
|---|---|
en-US | English |
de-DE | German |
es-ES | Spanish |
fr-FR | French |
hu-HU | Hungarian |
it-IT | Italian |
pt-BR | Portuguese (Brazilian) |
ru-RU | Russian |
tr-TR | Turkish |
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.langfilename 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
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:
- Set the server's default language if it isn't already what you want to edit:
/mmoconfig language <code>(e.g./mmoconfig language ja) - 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 - 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.langfile - Run
/mmoconfig reloadlang - 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
| Prefix | Description |
|---|---|
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 reloadlangReload 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