> For the complete documentation index, see [llms.txt](https://lethium.gitbook.io/lethium-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lethium.gitbook.io/lethium-docs/configuration/language-and-text.md).

# Language and text

Editing every message, name and tooltip, text formatting, currency names, and player languages.

All text players read is in `plugins/ClickEmCore/lang/`. The default file is **`en_us.yml`**. Nothing in a module file is hard-coded English: names and descriptions are **language keys** that point into this file.

### How a key works

```yaml
# modules/upgrades.yml
display-name: "clickem.upgrades.power.name"
```

```yaml
# lang/en_us.yml  (the real text)
clickem:
  upgrades:
    power:
      name: "<gradient:#1a56b7:#7c9cd1:#1a56b7>Power</gradient>"
```

`clickem.upgrades.power.name` is the path `clickem` then `upgrades` then `power` then `name`. To rename Power to "Strength", edit that one line and run `/clickem reload`.

{% hint style="info" %}
If a key is missing from your file, the plugin falls back to the text built into the jar, so nothing breaks after an update. To see the new default, compare with a fresh `en_us.yml` from the jar.
{% endhint %}

### Formatting

Text can mix three styles. Use whichever is easiest.

| Style               | Example                                                           |
| ------------------- | ----------------------------------------------------------------- |
| Legacy colour codes | `&a` green, `&c` red, `&7` grey, `&f` white, `&l` bold            |
| Hex colours         | `&#1A56B7`                                                        |
| MiniMessage tags    | `<gradient:#1a56b7:#7c9cd1>Text</gradient>`, `<bold>`, `<yellow>` |

* A **new line** inside one value is `\n`. Every line becomes a tooltip line.
* **Placeholders** in a message are written with angle brackets, for example `<player>`, `<amount>`. Keep them exactly as they are in the original text.
* `&f` on its own line is a blank spacer line in a tooltip.

#### Icons and emoji in text

Two kinds of glyph are used:

| Token                                                                              | Meaning                                                               |
| ---------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `:left_click:`, `:right_click:`, `:middle_click:`, `:shift:`                       | Click icons                                                           |
| `:clickem_menu_<name>:`                                                            | The custom menu title picture (for example `:clickem_menu_settings:`) |
| `:element_Fire:`, `:element_Water:` ...                                            | Element icons                                                         |
| `%img_checkmark%`, `%img_crossmark%`, `%img_gold_bars%`, `%img_essence%` and so on | Icons from the ItemsAdder font                                        |

These are pictures supplied by your **resource pack** (ItemsAdder). They only display for players who have the pack.

### The style used in the default text

The default text follows one house style so every menu looks the same:

* **Titles** are the blue gradient `#1A56B7 to #7C9CD1 to #1A56B7`. A window's own title is bold. A button name is not bold.
* **Body text** is `&#C4D5F1`, secondary text `&7`, icons `&#1A56B7`.
* A button's tooltip is: name, small-caps subtitle such as `&7[ǫᴜᴇꜱᴛꜱ]`, a spacer, one to three description lines, a spacer, then the **click line**: `&8[&f:left_click:&8] &aLeft-Click to Access.`
* Success is `&f%img_checkmark% &atext` and failure is `&f%img_crossmark% &ctext`.
* Stats, currencies, rarities and elements keep **their own colours** instead of blue.
* Keep each tooltip line short. Inside a rarity frame a line may hold at most **22 visible characters**, otherwise the frame breaks.
* Echo and pet tooltip lines are kept to 27 characters.

### Naming things

| To change                                      | Edit this key in `en_us.yml`                                       |
| ---------------------------------------------- | ------------------------------------------------------------------ |
| The currency name ("Coins", "Gems", "Essence") | `clickem.currency-names.*` and `clickem.currency-names-singular.*` |
| A stat's name and colour                       | `clickem.stats.<stat>.name`                                        |
| Number suffixes (K, M, B, T, Q...)             | `clickem.number-suffix.*`                                          |
| A mob's player-facing name                     | `clickem.mobs.<MythicMobsId>.name`                                 |
| A zone's name                                  | `clickem.zones.<zone id>.name`                                     |
| A pet's name                                   | `clickem.pets.<pet id>.name`                                       |
| The chat prefix                                | `clickem.prefix`                                                   |
| The word shown when a value is empty           | `clickem.placeholder-values.none`                                  |
| Menu titles                                    | `clickem.<module>.menu.title` or `...title`                        |

{% hint style="info" %}
In the default text, the main currency is displayed as **Gold** in stat lines and **Coins** in currency names. Change both if you rename it.
{% endhint %}

#### Mob names in placeholders

`%clickem_combat_target_display_name%` and similar use the friendly name from each MythicMobs mob's `Display` line (for example `Oak Whelp`), not the internal id `W1Z1f1`.

### Player language (`/language`)

Players choose the language ClickEm shows them:

| Command           | Effect                                         |
| ----------------- | ---------------------------------------------- |
| `/language`       | Opens the language menu.                       |
| `/language auto`  | Follow the player's Minecraft client language. |
| `/language de_de` | A specific language.                           |

```yaml
locale:
  default: en_us
  sync-lethium-language: true
```

* `locale.default` is used when a player's client language has no translation.
* The shipped languages are: English (`en_us`), German (`de_de`), Spanish (`es_es`), French (`fr_fr`), Hungarian (`hu_hu`), Indonesian (`id_id`), Dutch (`nl_nl`), Polish (`pl_pl`), Brazilian Portuguese (`pt_br`), Russian (`ru_ru`), Thai (`th_th`), Turkish (`tr_tr`) and Vietnamese (`vi_vn`).
* Players only see languages their **licence** includes. The base licence is English. Language add-ons unlock two, four or six more languages of your choice. See [Licensing and languages](/lethium-docs/getting-started/licensing-and-languages.md).
* A key missing from a language file falls back to the default language.
* `/language reload` (staff) re-reads the language files and the licence.

#### Translating other plugins

With `sync-lethium-language: true`, a player's ClickEm language is also pushed to the **LethiumLanguage** plugin (if installed) and to **LethiumMessages**, so TAB, holograms, crates and announcements follow the same language. See [LethiumLanguage and LethiumMessages](/lethium-docs/server-setup/lethium-plugins.md).

### Changing a translation

Translations for the licensed languages are **built into the jar**. Only `en_us.yml` is written to your `lang/` folder.

To change a line in another language, create `lang/de_de.yml` (use the language code) that contains **only the lines you want to change**, in the same nested format as `en_us.yml`. Your lines win over the built-in ones for that language, and everything else stays as shipped. Then run `/language reload`.

A language file for a language that is **not on your licence** is ignored.

### Quick checks before you reload

* Every `"` opened is closed.
* Nothing is indented with a tab.
* `<placeholders>` are unchanged.
* After `/clickem reload`, look in the console for lines starting with `Could not load` or a YAML error with a line number.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://lethium.gitbook.io/lethium-docs/configuration/language-and-text.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
