Reported issues for nuxt-i18n-mcp
Pod holds 23 of 143 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to nuxt-i18n-mcp.
Most discussed
Idea: layer-aware ESLint integration for monorepos (evaluate upstreaming to @intlify first)
Idea / not scheduled. Captured from the anny-ui lint evaluation (2026-08-11, MR anny-ui!2025).
Problem
@intlify/eslint-plugin-vue-i18n models one flat message catalog per locale. In layered monorepos (Nuxt layers, multi-app setups) that model breaks:
no-duplicate-keys-in-localereports the layer architecture itself as duplicates (measured: 2,620 warnings on anny-ui — override relationships are indistinguishable from mistakes).no-missing-keysonly works with union semantics (
Read the thread · 2026-08-11 · closed · 4 comments
Spec: AST-only scanning — flip the JS/TS/Vue default, add the PHP/Blade frontend, evacuate PHP from the core
Completes the migration #332 specifies. Phase gates were measured on real corpora before this was written; the numbers are in Further Notes.
Problem Statement
The scanner that decides which translation keys are alive — and therefore which ones remove-orphans may delete — has two answers to that question. The AST frontend answers by resolving what a name is bound to; the regex path answers by pattern-matching text, with heuristics whose failure modes are deleting a used key (#298) or prote
Read the thread · 2026-08-22 · open · 3 comments
Spec: adopt MCP 2026-07-28 once the TypeScript SDK ships it
Activation trigger: a @modelcontextprotocol/sdk release with LATEST_PROTOCOL_VERSION = '2026-07-28' (check: npm view @modelcontextprotocol/sdk version + the types.js constant). Until then this spec is blocked — do not start. Re-check in a few weeks; the revision is currently a draft.
Problem Statement
MCP 2026-07-28 (changelog, [Claude announcement](https://claude.com/blog/bringing-mcp-2026-07-28-to-claude
Read the thread · 2026-08-09 · closed · 3 comments
Layer logic: unify duplicated claim/ownership glue (has a silent-drop bug), add layer graph + find_duplicate_keys
From the 2026-08-09 layer-logic analysis, triggered by a real anny-ui finding: 14 keys duplicated between root and app-shop's layer (pages.account.settings.businessAccount.*), 8 with divergent German source text — an incomplete root→app migration that no current kit tool can detect.
Findings
- The alias/ownership claim logic is implemented twice and has silently diverged (
adapters/nuxt/index.ts~147-176 inloadAndMergeAppsvs ~349-381 indiscoverLocaleDirs): different takeo
Read the thread · 2026-08-09 · closed · 3 comments
Spec: replace MCP sampling with direct provider calls + agent fallback
MCP sampling is deprecated as of protocol 2026-07-28 (SEP-2577). This spec removes it entirely and replaces it with two first-class translation modes. Synthesized from the 2026-08-08 assessment and a field report from an agent using the MCP in Claude Code.
Problem Statement
The kit's headline feature — auto-translating missing keys — depends on MCP sampling, which is deprecated and was never supported by major hosts anyway (Claude Code among them). In such hosts, translate_missing reports
Read the thread · 2026-08-08 · closed · 3 comments
Generate the configuration reference from the shared schema
Parent
#300
What to build
The full configuration reference, generated from the shared zod schema.
Since #328 there are two hand-written config formats — the typed i18n-kit.config.ts and the older JSON file — plus policy declarable in nuxt.config.ts. The reference documents every field once and states which files it can be declared in.
Acceptance criteria
- Every config field is documented with its type, constraints and description
- Both hand-written config file formats a
Read the thread · 2026-08-16 · closed · 2 comments
ci: reference pipelines gate on exit codes instead of jq arithmetic
Parent
#246
What to build
Move the shipped reference pipelines off jq arithmetic and onto exit codes.
Both the GitHub Action and the two GitLab job templates currently decide success by reading JSON fields out of command output. That coupling to undocumented output shapes is the root cause of the anny-ui pipeline breakage — the templates read .summary.totalOrphans when the field is .summary.orphanCount, and treated orphanKeys as an array when it is an object keyed by layer. Thos
Read the thread · 2026-08-10 · closed · 2 comments
mcp: expose findEmptyTranslations as a tool (the CLI commands are restored)
Parent
#246
What to build
Make the whole command surface reachable and discoverable.
Correction to the parent spec, found while ticketing: detect, list-dirs, empty and scan are not merely hidden from --help. The CLI entry point filters them out of the subcommand map before it is handed to citty, so they are absent from the executed command map too — the-i18n-cli scan fails today. This is a restore, not an unhide. (#195 makes the same observation.)
Then close the MCP gap: `di
Read the thread · 2026-08-10 · closed · 2 comments
Most recent
Spec: @the-i18n-kit/eslint-plugin — contract rules and layer-aware scope rules, one plugin
Single spec for the ESLint plugin and all its rules. Folds in and supersedes #289 (layer-aware validation; the upstream-intlify evaluation is closed out below) and #421 (authoring rules). #420 motivates one rule. Measurement context: the anny-ui lint evaluation (2,620 false duplicate warnings from flat-catalog tooling) and the 2026-08-24 wire-driven-keys audit.
Problem Statement
Two classes of i18n mistakes surface only after they are expensive:
- **Authoring idioms that defeat the scanne
Read the thread · 2026-08-24 · closed · 1 comment
@the-i18n-kit/eslint-plugin: authoring rules that keep the scanner sound
Parent
#289 tracks the catalog-validation side of ESLint integration (layer-aware no-missing-keys etc., upstream-intlify evaluation first) — that stays open and unchanged. This ticket is the other half: authoring-idiom rules that keep the scanner sound, which no upstream can provide because they enforce this kit's contract. #420 motivates the second rule.
Note: #289 described a repo-local no-variable-prefix-i18n-keys rule in anny-ui. The audit found it was never actually implemented —
Read the thread · 2026-08-24 · closed · 1 comment
Evacuate PHP from the core: reader and patterns behind the optional-peer seam
Parent
#399 (Spec: AST-only scanning) — Phase 3.
What to build
A JavaScript-project install carries no PHP, in code or dependencies. The PHP locale-file reader moves from hard dependency to optional peer behind the same project-root dynamic-import seam the parser uses, joining the single "Laravel projects install these" story. The Laravel pattern set and the PHP bare-candidate shape move into the PHP frontend directory. The missing-dependency error for a php-array project names exactl
Read the thread · 2026-08-22 · closed · 1 comment
Flip the PHP default — the bookings-api gate, and the contract trial
Parent
#399 (Spec: AST-only scanning) — Phase 2 gate.
What to build
The PHP frontend becomes the default for php-array projects, gated the same way the JS flip was: evidence over a real corpus, not the technique's appeal. Extend the differential harness to run the Laravel pattern set, run it over the bookings-api corpus (~4,240 PHP files, 45 Blade templates, 30+ locales including a formal/informal pair sharing a language tag), and diff the operations — check, status, missing, dry-run
Read the thread · 2026-08-22 · closed · 0 comments
Blade lifting: directives and echoes parsed as the PHP they wrap
Parent
#399 (Spec: AST-only scanning) — Phase 2.
What to build
Blade templates understood as the PHP expressions they wrap: @lang(…), @choice(…) and {{ __(…) }} lifted lexically out of the template and handed to the PHP parser, flowing through the same rules as every other call site. The lifting regex frames text only — it never decides what a key is. A Blade construct the lifter does not recognise degrades to the pattern fallback for that file, never to silence.
Acceptance cr
Read the thread · 2026-08-22 · closed · 0 comments
PHP frontend: helpers, interpolation and concat as syntax, php-parser as optional peer
Parent
#399 (Spec: AST-only scanning) — Phase 2.
What to build
A PHP language frontend, opt-in and parallel to the JS flip: Laravel translation helpers (__, trans, trans_choice, Lang::get) recognised as syntax, double-quoted "prefix.{$var}" interpolation reported as a template argument, .-concatenation as a concat argument — the same call-site shapes every frontend emits, interpreted by the same rules. PHP-specific pressure on the contract (choice-call count arguments, Larav
Read the thread · 2026-08-22 · closed · 0 comments
Flip the JS/TS/Vue default to AST, delete the superseded heuristics — anny-ui gate
Parent
#399 (Spec: AST-only scanning) — Phase 1.
What to build
The AST frontend becomes the default scanner for JS/TS/Vue, with the pattern frontend running only for files the parser declines. In the same change, the heuristics the AST supersedes are deleted — the callee dot requirement, the textual const table and its substitution, static promotion of slotless dynamic matches — together with the test expectations that encoded their artifacts (the concat-prefix pseudo-key). Two mechanis
Read the thread · 2026-08-22 · closed · 0 comments
Write the translation modes concept page
Split out of #358.
Why separately
#358 bundled orphan detection and translation modes into one ticket, and they do not share a blocker:
- Orphan detection is blocked by #332, whose implementation (#345) is in flight and rewrites the subject — writing that page now means writing it twice.
- Translation modes was blocked by #261, which is an open spec with no implementation. It describes behaviour that ships today.
So translation modes was held back by the grouping rather than by an
Read the thread · 2026-08-22 · closed · 0 comments
docs + schema: the config surface still describes nuxt.config.ts policy that #372 removed
Problem
#372 made the config file the only place policy lives. ModuleOptions in @the-i18n-kit/nuxt is now exactly enabled and failOnInvalidConfig; the artifact carries no policy; nothing reads policy out of an i18nKit block.
Three declaration sites became two, and several places still say three. Two of them are user-facing.
The published JSON Schema — fix this one first
documentMeta.description in packages/cli/src/config/schema-json.ts reads:
Declare it as `.i18n-m
Read the thread · 2026-08-17 · closed · 0 comments
cli: export hiddenCommands so tooling need not regex-parse cli.ts
Context
packages/cli/src/cli.ts filters a module-private hiddenCommands set out of the registry before handing it to citty, so those names cannot be invoked at all. That is deliberate — discover covers detect and list-dirs, find_empty_translations covers empty — and #307 was the bug where scan got filtered by mistake and became a documented-but-unreachable command.
Problem
The set is the only source of truth for which commands are user-facing, and it is not exported. The
Read the thread · 2026-08-17 · closed · 0 comments
check: findings exit 1 as a failed run, not 2 as a tripped gate
Problem
The CLI has three exit codes, and the distinction between two of them is the whole point:
| Code | Means |
|---|---|
| 0 | Succeeded, no gate tripped |
| 1 | The run itself failed — bad API key, unreadable project |
| 2 | The run succeeded and a requested gate tripped — findings exist, the tool worked |
check does not honour it. Its failWhen routes through runFailed in resolveExitCode, so an undefined-key finding is reported as a failed run:
$ the-i18n-cli check --pr
[Read the thread](https://github.com/fabkho/the-i18n-kit/issues/369) · 2026-08-17 · closed · 0 comments
### config: examples entries without a key send "undefined" into the translation prompt
## Problem
`examples` is typed as `z.record(z.string(), z.string())` — a bare string map, requiring nothing. But the consumer treats `key` as mandatory:
return - ${ex.key}: ${pairs}${note}
An example entry without a `key` therefore renders as `- undefined: en: "…", de: "…"` and is sent to the provider as a style example. No validation error, no warning; the model is just handed the word `undefined` as a translation key to imitate.
`note` is genuinely optional and handled — `key` is
[Read the thread](https://github.com/fabkho/the-i18n-kit/issues/367) · 2026-08-17 · closed · 0 comments
### typed config: the self-alias and its error message only know the unscoped specifier
## Problem
`selfAlias()` in the typed-config loader resolves exactly one specifier:
{ 'the-i18n-cli/config': path }
That alias exists so a config file written against the docs works under `npx` in a project that never installed the package — the rescue path called out in #328.
Since the rename shipped (#315, #336), the documented package name is `@the-i18n-kit/cli`. A user following current docs writes:
```ts
import { defineI18nKitConfig } from '@the-i18n-kit/cli/config'
The al
Read the thread · 2026-08-16 · closed · 0 comments
Write the orphan detection concept page
Parent
#300
What to build
The two concept pages whose subject matter is actively changing, deliberately sequenced last among the prose.
Orphan detection — what evidence the scanner recognises, how findings are classified, and which classes are never removed. Its known blind spots matter more than its capabilities: the families it cannot see are exactly the ones a user must declare before trusting a cleanup. This is currently the deepest prose in the repository and it describes a scan
Read the thread · 2026-08-16 · open · 1 comment
Write the Getting Started paths and the home page
Parent
#300
What to build
The front door: the home page and the two on-ramps behind it.
This ticket supersedes #255, whose acceptance criteria are carried over here. The cold-start narrative it describes is the same content, retargeted from the README to the site, where it can be followed without assembling it from scattered flag tables.
The agent on-ramp takes a reader from nothing to a working MCP server, with configuration for each major host, and hands off to the tools reference
Read the thread · 2026-08-16 · open · 0 comments
The remaining reports are on the project's issue tracker.