Introduction

Architecture

There is one engine. Everything else is a way of reaching it.

One Engine, Five Surfaces

SurfacePackageWho invokes it
CLI@the-i18n-kit/cliYou, in a terminal
MCP server@the-i18n-kit/mcpYour AI agent, over the Model Context Protocol
Nuxt module@the-i18n-kit/nuxtNuxt, at prepare / dev / build
ESLint plugin@the-i18n-kit/eslint-plugin-vueESLint, in your editor and in lint runs
CI integrationsGitHub Action, GitLab CI templatesYour pipeline

The engine lives in @the-i18n-kit/cli, which ships both the the-i18n-cli binary and the library behind it. Before any command or tool runs, every surface resolves the same project model: an adapter detects the framework, reads the locales and locale directories your project already declares, and builds the layer graph from them.

@the-i18n-kit/mcp depends on @the-i18n-kit/cli and calls the same functions the commands call, so a count your agent reports and a count you get in the terminal are the same number.

Pin @the-i18n-kit/mcp and @the-i18n-kit/cli to matching versions, or install neither globally. A globally installed CLI of another version puts two engine versions on one machine.

Command and Tool Names

A command you learn in the terminal tells you what to ask your agent for, and a tool your agent used tells you what to type.

OperationCLI commandMCP tool
Project setup, layers and layer graphdiscoverdiscover
Read specific keysgetget_translations
Write exact valueswritewrite_translations
Missing translationsmissingget_missing_translations
Coverage per locale and layer, and empty valuesstatus (--listEmpty)get_translation_status (listEmpty)
Search keys and valuessearchsearch_translations
Delete keysremoveremove_translations
Move a key to another layer, another path, or bothmovemove_translation_key
Fill missing localestranslatetranslate_missing
Refresh one keytranslate-keytranslate_key
Orphan keys, and where keys are usedorphans (--remove, --usages)find_orphan_keys (remove)
Used but undefinedcheckfind_undefined_keys
Shadowed keys across layersfind-duplicatesfind_duplicate_keys
Add a localescaffoldscaffold_locale

The MCP tool translate_missing pairs with the CLI command translate: one operation, named for what it does on each surface.

The pairing is nearly total. One command is terminal-side only — init, which writes a .i18n-mcp.json from framework detection, and has no agent that needs it. One tool has no command — list_namespaces, which browses the key tree an agent cannot see. Everything else pairs, and where the names differ the table above is the mapping.

The Other Surfaces

@the-i18n-kit/nuxt writes the layer graph and locale table Nuxt resolved to .nuxt/i18n-kit.json, and the CLI reads that in preference to hand-written config. The GitHub Action and the GitLab CI templates run the same binary you run locally and decide job outcomes from its exit code, never by parsing counts out of the JSON result.

Copyright © 2026