# forge i18n

> The translation commands: interface strings, guide texts in other languages, and English left on screen.

Page: https://polestar.guide/docs/contributors/forge/i18n (Polestar docs > Contributors > Polestar Forge)

`forge i18n` checks and edits Polestar's translations: the interface strings of Polestar and the
Recorder (`addon/<addon>/Locales/<locale>.lua`), a pack's guide texts in other languages
(`<pack>/locales/<locale>/`) and the English a non-English client would still show. It is the
`forge-i18n` crate (`rust/crates/forge-i18n`). [Translating](https://polestar.guide/docs/authors/translating) is the
translators' guide; this page has the commands.

| Command | What it does |
|---|---|
| `forge i18n status [--markdown]` | every language: its status, translators and how much of it is translated |
| `forge i18n check [<locale>...]` | fails (exit 1) on a file Lua cannot load, a stale key, a key set twice or a broken format; glossary drift only warns. CI runs it |
| `forge i18n sync [<locale>...]` | adds the keys the code gained, commented out, and moves translations of keys it lost to the end; never rewrites a translation |
| `forge i18n keys` | every interface key with where it is used |
| `forge i18n import <locale> <file.lua>...` | merges translations written apart into a locale's file |
| `forge i18n leaks [<locale>...]` | runs the addon on the client stub in each language and lists the English left on screen |
| `forge i18n guides sync\|check\|stats` | a pack's texts files: write them, check them, size the work |

Every command reads the checkout above the working directory (or above the forge binary); `--root
<dir>` names another one. `--json` prints one document; `--addon Polestar_Recorder` limits status,
check, sync, keys and import to the Recorder.

<!-- ci -->
```sh
forge i18n --help
forge i18n status
forge i18n check
forge i18n keys
```

The data the commands read is in `data/i18n/`: the glossary (`glossary/<locale>.json`), the leaks
allow list (`leaks-allow.json`) and the names no source has in a language (`leaks-baseline.json`).
`forge i18n leaks` needs the Codex and the quest database built (`forge data codex`,
`forge data questdb`); without them every scene is skipped.

The names addons are `forge data names` ([Forge data](https://polestar.guide/docs/contributors/forge/data)). One subcommand still runs on the JS
tools: `node tools/polestar.js i18n fit` (it needs the preview renderer).

---

Next page: [Forge internals](https://polestar.guide/docs/contributors/forge/internals.md) · Every docs page: https://polestar.guide/llms.txt · All docs in one file: https://polestar.guide/llms-full.txt
