WENOPAL

Translating Project Zomboid B42 mods (JSON)

Build 42 only reads translations in JSON. Which files exist, which key each one uses, and the most common mistake when porting a mod from B41.

Level intermediate Β· Updated

Translating your mod is easy, and it gets your mod in front of a lot more people. Project Zomboid has a huge non-English-speaking community (the Spanish-speaking one alone is enormous), and there are thousands of strings out there that have never been translated.

The most important rule

Build 42 only reads .json files. The old Build 41 files (ItemName_ES.txt, Sandbox_ES.txt...) are ignored silently: the game doesn't flag an error, it just shows the key instead of the text. If you port a mod from B41 to B42 and see things like Tooltip_MiMod_Algo on screen, this is why.

Where they go

text
media/lua/shared/Translate/
β”œβ”€β”€ ES/
β”‚   β”œβ”€β”€ ItemName.json
β”‚   β”œβ”€β”€ Tooltip.json
β”‚   β”œβ”€β”€ Recipes.json
β”‚   β”œβ”€β”€ IG_UI.json
β”‚   └── Sandbox.json
└── EN/
    └── (the same files)

Each language is a folder named with its code: ES, EN, PTBR, FR, RU... Look at the folders that ship with the game in media/lua/shared/Translate/ to see the exact codes.

Which key each file uses

FileWhat it's forKeyExample
ItemName.jsonItem namesModule.Item"SL.SableLuz": "Lightsaber"
Tooltip.jsonDescription shown on mouse hoverWhatever you put in the item's Tooltip ="Tooltip_SL_SableLuz": "Glows when you wield it."
Recipes.jsonRecipe namesThe craftRecipe name"SLEnsamblarSable": "Assemble lightsaber"
IG_UI.jsonUI text, vehicle names, container titlesWhichever one you use in your Lua"IGUI_VehicleNameWanaco": "Wanaco"
Sandbox.jsonYour mod's sandbox optionsSandbox_ + name"Sandbox_MiMod_Dificultad": "Difficulty"

A complete file looks like this (this one is ES/ItemName.json; the EN version uses the same keys with English text):

json
{
    "SL.SableLuz": "Sable de Luz",
    "SL.CristalKyber": "Cristal Kyber (rojo)",
    "SL.EmpunaduraSable": "EmpuΓ±adura de Sable de Luz"
}

Tips

  • Save the files as UTF-8, or accented characters like Γ© and Γ± will show up as weird symbols.
  • One extra comma breaks the whole file. The last entry has no comma. If a translation doesn't show up, paste the JSON into an online validator.
  • Always ship at least English and Spanish. English is the fallback language for every other language, so it's the one you can't skip.
  • Keep names short. The details go in the tooltip.