i18n files, checked and maintained

x18n reads the locale files and the translate calls of your project. It reports missing, unused and broken keys, and changes locale files without breaking their format. For humans, CI and coding agents.
❯pnpx @x18n/cli check
src/App.vue:17:15
error"app.titel" is not defined in en.missing-key
16 │ <main>
17 │ <p>{{ $t('app.titel') }}</p>
│ ~~~~~~~~~
18 │ </main>
src/locales/en.json:18:4
warning"unused" is not used.unused-key
17 │ "app.save": "Save",
18 │ "unused": "Nobody uses me",
│ ~~~~~~
19 │ "app.title": "Welcome back"
✖ 1 error⚠ 1 warning2 files · 96ms

// Surfaces //

One engine, every place you work

Every surface reads the same config and reports the same diagnostics. The CLI in CI, the editor and the UI always agree.

CLI and x18n check
x18n check reports invalid, untranslated and unused keys like tsc --noEmit. Every command has JSON output.
VS Code
Translations in place of keys, go to definition, find references and rename across code and every locale file.
UI
Every key across every locale in one table. Edit values in the browser, or publish a static, read-only report.
Agents
Translate prompts, safe write commands and MCP tools let an agent translate, check and clean up messages.
Presets
One preset for each framework of i18n-ally, detected from your dependencies: vue-i18n, i18next, next-intl, ngx-translate, Laravel, Rails, Flutter and 21 others.
Plugins
Add a library, a file format or a check with a YAML file, or with a typed TypeScript plugin.

Supported Frameworks

Check full list

// Quick start //

No config to start

Run x18n in the root of a project. It detects the i18n library from your dependencies and finds the locale files. Read the guide.

my-app
❯pnpx @x18n/cli
x18n (my-app)
4 resources, 137 keys, 162 usages
en (source) ██████████████ 100% 137/137
de █████████████░ 96% 132/137
fr █████████████░ 91% 125/137
ja ██████████████ 100% 137/137
✖ 1 error ⚠ 2 warnings
Commands: check, keys, get, usages, set, rename, fill, ui

Coming from i18n-ally?

x18n migrate i18n-ally converts your settings and custom frameworks into an x18n config. x18n is in early development.