Folder Location
Place your language files inside thecustomadvancements/ folder in your game directory, under data/lang/:
.json. Only .json files are read; anything else in the folder is ignored.
Minecraft loads the file matching the player’s in-game language setting.
Example: en_us.json
The following is the full English locale file from the bundled examples:customadvancements/data/lang/en_us.json
customadvancements/data/lang/de_de.json
File Format
Language files use the standard Minecraft JSON lang format: a single flat JSON object where every entry maps a string key to a string value. No nested objects, no arrays.Key Format
Translation keys are arbitrary strings — the only rule is that the key in your advancement JSON matches the key in your language file exactly. That said, the convention used by the bundled examples is worth following:<advancement_name> identifies the advancement, typically matching its filename without the .json extension. An advancement defined in back_to_the_roots.json therefore uses customadvancements.advancements.back_to_the_roots.title.
Referencing Keys in Advancement JSON
Instead of a plain string, pass a text component with atranslate field to point at a key from your language file:
customadvancements/customadvancements/my_root.json
translate component at render time against the active language. Switching the game language in the settings updates the advancements screen automatically — no reload required.
See Display for the full list of fields that accept text components.
Fallback Behavior
If a key has no translation in the active locale, Minecraft displays the raw key string — for examplecustomadvancements.advancements.example_root.title — instead of readable text. This is the tell-tale sign of a missing or misspelled key.
How Translations Reach the Client
Language files are read from thecustomadvancements/data/lang/ folder of whichever installation is reading them, and injected into that side’s translation table. Custom Advancements 4.7.5 does not transmit language files over the network.
An alternative, if client-side files are not an option: skip translation keys entirely and hardcode the text with {"text": "..."} in the advancement JSON. Advancement definitions themselves are synced to every client by the server, so hardcoded titles always display, at the cost of being untranslatable.
Applying Changes
Adding or editing a language file takes effect on the next/ca reload or on the next game start. See Commands.