> For the complete documentation index, see [llms.txt](https://edseries-plugins.gitbook.io/p/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://edseries-plugins.gitbook.io/p/edlang/getting-started/upgrading.md).

# Upgrading from EdLang 1

Replace the jar and restart. Everything keeps working:

* **config.yml** is upgraded once to the new layout with every value you set; the old file is kept as `config-1.x.yml`. `items.enabled` becomes `text-matching.enabled`, so already-translated item texts are still recognised. The /lang menu keeps using PinnaPrison where it is installed (`menu.provider: auto`).
* **Lang files**: `lang/<code>.yml` keeps loading as it is. You can move keys into `lang/<code>/` folders whenever you like; keys never depend on file or folder names, so nothing else changes.
* **EdLang's own texts**: new messages and menu texts come from the jar for any language that doesn't have them yet, so you don't have to add anything.
* **players.yml**: same format, nothing to convert.
* **Placeholders**: `%lang_key%`, `%rel_lang_key%` and `%edlang_code/name/auto%` work as before.
* **Plugins** using `EdLangAPI` or a LangHook need no change.

New requirements: Paper 1.21+ and Java 21.

## What is new for you

* Placeholders in **any** text players see are now translated, not only texts EdLang already knew: put `{lang:...}` or `%lang_...%` straight into other plugins' configs. Once your configs use placeholders, you can turn `text-matching` off for less work per packet.
* `{lang:key|arg1|arg2}` arguments.
* Built-in menus (`menus/`), `/lang settings`, `/lang list`.
* Chat translation (off by default).
* MySQL storage and `/edlang migrate`.
* Player-input protection and creative-mode safety.
