ZephMC Docs

Languages

Add a language by dropping one file into a folder.

Only English ships with the plugin. Every other language is a file you write, and adding one takes no code change, no configuration edit and no restart beyond /ah reload.

Adding a language

  1. Open plugins/ZyAuctions/lang/.
  2. Copy en_US.reference.yml to a new file named after the locale — de_DE.yml, fr_FR.yml, pt_BR.yml, or just de.yml for a language with no region.
  3. Translate the values. Leave the keys alone.
  4. Run /ah reload.

That is all of it.

Never edit en_US.reference.yml. It is rewritten from the jar on every startup, so your changes will be silently lost. It exists to be copied from.

Changing the English wording

Same procedure: copy en_US.reference.yml to en_US.yml and edit that. Your file takes precedence key by key over the bundled English, so you can override two lines and leave the rest alone.

Partial translations are fine

Any key you leave out falls back to the bundled English. Nothing errors, nothing goes blank, and the console tells you what is missing:

[ZyAuctions] lang/de_DE.yml is missing 4 key(s); those fall back to English.
             First few: zyauctions.tip.has_bids, zyauctions.reason.won, ...

So you can ship a half-finished translation, use it, and fill in the rest later.

Which language a player sees

Controlled by language in config.yml:

config.yml
language: auto
  • auto — each player sees their own client language. The lookup order is: their exact locale (de_AT), then the language alone (de), then English.
  • Any locale name — everyone sees that language whatever their client is set to. Useful for a single-language community whose members play with English clients.

What the file looks like

lang/de_DE.yml
zyauctions:
  prefix: "<muted>[</muted><primary>Auktionen</primary><muted>]</muted> "
  error:
    no_permission: "<prefix><error>❌</error> <text>Dazu hast du keine Berechtigung.</text>"
  buy:
    success: "<prefix><success>✔</success> <text><emphasis><amount>x <item></emphasis> von <emphasis><seller></emphasis> für <emphasis><price></emphasis> gekauft.</text>"

Three things to know:

Arguments are named. <price>, <seller>, <amount> are filled in by the plugin. They are named rather than numbered specifically so you can reorder a sentence — German word order is not English word order, and a translation should not be forced into it. Use each one at most once, and it is fine to leave one out if your sentence does not need it.

Colours are tokens, never hex codes. <primary>, <error>, <muted> and the rest. See Appearance for the full list. Writing <red> will render the tag as literal text.

<prefix> is itself a key. It expands to whatever zyauctions.prefix says in the same language, so translating the prefix once rebrands every chat message in that locale. Put it only on chat lines — never on item lore, menu titles or button text.

Characters

Use whatever your language needs. Accented Latin, Greek, Cyrillic, Armenian, Georgian and Hebrew all render in Minecraft's normal font.

Japanese, Chinese, Korean, Thai and Devanagari fall back to a different, thinner font built into the game. That is a Minecraft limitation, not a plugin one, and there is nothing either of us can do about it — the text is perfectly readable, it just looks different from the surrounding interface.

The ✔ ❌ ⚠ ℹ markers at the start of messages are there so that success and failure are distinguishable without relying on colour. Please keep them.

Startup output

[ZyAuctions] Loaded 3 locale(s): de_DE, en_US, fr_FR

If a file is missing from that list, check:

  • the name is a locale (de_DE.yml, not german.yml);
  • it ends in .yml, not .yaml;
  • it is not named something.reference.yml, which is deliberately skipped;
  • it contains at least one key under zyauctions:.

Each of those cases logs its own line saying which one it was.

On this page