> ## Documentation Index
> Fetch the complete documentation index at: https://perplayerkit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Languages

> Switch PerPlayerKit to one of 14 bundled languages, or write your own language file to change every message the plugin sends.

All message text lives here, not in `config.yml`.

## Change the language

```yaml config.yml theme={null}
language: de
```

Set the code and restart.

| Key        | Type   | Default |                                                                                                         |
| ---------- | ------ | ------- | ------------------------------------------------------------------------------------------------------- |
| `language` | string | `en`    | Which file to load from `plugins/PerPlayerKit/lang/`. A bundled code, or one matching a file you added. |

## Bundled languages

| Code | Language               | Code | Language           |
| ---- | ---------------------- | ---- | ------------------ |
| `en` | English                | `it` | Italian (Italiano) |
| `zh` | Chinese (中文)           | `pl` | Polish (Polski)    |
| `es` | Spanish (Español)      | `ro` | Romanian (Română)  |
| `pt` | Portuguese             | `nl` | Dutch (Nederlands) |
| `fr` | French (Français)      | `de` | German (Deutsch)   |
| `uk` | Ukrainian (Українська) | `sv` | Swedish (Svenska)  |
| `da` | Danish (Dansk)         | `fi` | Finnish (Suomi)    |

## Existing translations after an update

Your language file takes priority, including empty strings and empty lists. Missing keys use the bundled version of the selected language, then English.

For example, an older `lang/es.yml` automatically gets new Spanish messages from the updated plugin. Your custom text stays unchanged. You do not need to delete your file.

## Write your own

<Steps>
  <Step title="Copy a file">
    Copy `lang/en.yml` to `lang/custom.yml`. Existing language files are preserved during updates.
  </Step>

  <Step title="Change the text">
    Edit values only; leave the <Tooltip tip="In YAML, the name to the left of the colon. The plugin looks each one up by name.">keys</Tooltip> unchanged. Text uses <Tooltip tip="The tag format Minecraft servers use to color and style text.">[MiniMessage](/settings/formatting)</Tooltip>.
  </Step>

  <Step title="Point config.yml at it">
    ```yaml config.yml theme={null}
    language: custom
    ```
  </Step>

  <Step title="Restart and check the console">
    Missing keys in custom languages fall back to English. Unknown keys with no English fallback are logged.
  </Step>
</Steps>

<Warning>
  Never translate a placeholder name. `{jugador}` prints as literal text.
</Warning>

## What is in the file

| Section               | Holds                                                     |
| --------------------- | --------------------------------------------------------- |
| `prefix`              | The `[Kits]` tag in front of plugin messages              |
| `motd`                | The join message                                          |
| `scheduled-broadcast` | The repeating reminder messages                           |
| `broadcast-messages`  | One line per action: kit loaded, gear repaired, and so on |
| `error`               | Every failure message, including `disabled-in-world`      |
| `success`             | Confirmations for saves, shares, deletes, imports         |
| `info`                | Status lines, such as migration progress                  |
| `command`             | Usage text shown when a command is typed wrong            |
| `welcome`             | Initial setup instructions for admins                     |
| `update`              | The new-version notice for admins                         |
| `about`               | What `/aboutperplayerkit` prints                          |
| `gui`                 | Menu titles and button labels                             |

## Contribute a translation

Translate `en.yml` and open a <Tooltip tip="A request on GitHub to add your changes to the project.">pull request</Tooltip> on [GitHub](https://github.com/rossnoah/PerPlayerKit) adding `lang/<code>.yml`.

<Card title="Messages and broadcasts" icon="message" href="/settings/messages" horizontal>
  Which messages fire and who sees them.
</Card>
