> For the complete documentation index, see [llms.txt](https://simple.superiormc.cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://simple.superiormc.cn/arcmenu-wiki/feature-configuration/languages.md).

# Language management

Language files control ArcMenu command messages, errors and administration feedback. Menu titles, buttons, tooltips and action messages authored in menu files are not translated automatically.

Paper, Folia, Leaf and Spigot use `plugins/ArcMenu/languages/`. Bundled languages are Simplified Chinese `zh_CN.yml` and English `en_US.yml`.

## Main configuration

Language settings belong in `plugins/ArcMenu/config.yml`, including on Spigot. `plugins/ArcMenu/spigot/config.yml` controls only its main-menu shortcut.

```yaml
language:
  default: zh_CN
  follow-player-locale: true
```

| Field                  | Purpose                                                                                            |
| ---------------------- | -------------------------------------------------------------------------------------------------- |
| `default`              | Default language, requiring an existing language file. Used for console messages and logs.         |
| `follow-player-locale` | `true` selects messages using the player's client language; `false` uses the default for everyone. |

For English messages for all players, use `default: en_US` and `follow-player-locale: false`. Keep `true` to follow individual client languages.

Without an exact locale match, ArcMenu first tries a loaded locale with the same language, then the default. Missing individual translations fall back to the default language and then bundled Simplified Chinese messages.

## Editing messages

1. Open the appropriate file in `languages/`.
2. Keep existing sections and message keys; edit their text.
3. Preserve replacement markers such as `{0}` and `{1}` and necessary command arguments.
4. Run `/arcmenu validate` and `/arcmenu reload`, then check actual messages.

For example, `command.open.no-permission` reports a missing `arcmenu.use` permission. Editing the message does not grant permission or change the check.

Every message value must be a nonempty string, not a list, number or boolean. Quote text containing colons or special characters. Replacement markers receive parameters from the message; they are separate from menu player placeholders.

A missing new message does not require replacing the entire customized file. Bundled text supplies omitted entries. Translate or customize additional messages after updating as needed.

## Adding a language

Copy an existing file and name it for a client locale, such as `fr_FR.yml`. Retain the structure and translate the messages. Use a lowercase language code and uppercase region code separated by an underscore.

After reloading, players can use the locale through their client language, or administrators can select it with `language.default`. Do not change the configured default to a locale without providing its file.

Adding message keys does not create features. Authors should write multilingual menu content themselves and configure their server's menu selection or placeholder approach.

## Checking

Test default messages, client language selection and fallback for incomplete translations. If changes are absent, check the root `languages/` directory, the active language and whether reload succeeded.

Language settings affect plugin messages. See [Placeholders and text formatting](/arcmenu-wiki/text-formatting/text-placeholders.md) for menu text.
