> For the complete documentation index, see [llms.txt](https://enchantedmobs.superiormc.cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://enchantedmobs.superiormc.cn/for-ultimatequest/features/advanced-language-management.md).

# Advanced Language Management

## Default language

Set the default language file in `config.yml`:

```yaml
config-files:
  language: en_US
  per-player-language: true
  force-parse-mini-message: false
```

Language files are stored in `plugins/UltimateQuest/languages/`. The configured value is the filename without `.yml`.

To add a translation, copy an existing language file, rename it to the desired locale such as `zh_CN.yml`, and translate its values without changing required keys or placeholders.

## Per-player language

When `per-player-language` is enabled, UltimateQuest chooses a loaded language file from the player's client locale. If no matching file exists, it falls back to the configured default language.

## Language placeholders

Use the language placeholder in supported message, name, description, menu, and feedback fields:

```
{lang:menu-title}
```

Custom keys can be added under `override-lang` in each language file:

```yaml
override-lang:
  example-task-name: 'Example'
  example-task-description: 'Break 16 stone blocks.'
```

Then reference them from a task:

```yaml
name: '{lang:example-task-name}'
description:
  - '&8{lang:example-task-description}'
```

Keep every locale's placeholder arguments consistent. For example, if one translation uses `{remaining}`, all translations of that message should preserve it. The bundled tasks, objectives, rewards, and menus use translation keys under `override-lang.defaults`. For example, `{lang:defaults.tasks.miner.name}` reads `override-lang.defaults.tasks.miner.name`. Translate the values while keeping IDs, material names, and command parameters unchanged.
