Skip to content
Limited Edition DevTools

i18n-LE

Audit translation catalogues for missing keys, placeholder drift and structural mismatches.

FreeOpen sourceMITNo network access

The command-line tool and its MCP server are written and tested. The VS Code extension is not written yet, so there is nothing to install from the Marketplace or Open VSX — those links appear here when it ships rather than before.

No editor in the loop? i18n-le mcp runs the same engine as an MCP server, so an agent can call check_catalogues over stdio, with no editor and no Node, and cargo install i18n-le puts the same check in a terminal. Every way to install it.

i18n-le locales/
i18next ^26.2.0 — i18next in ../package.json, a directory of <locale>.json, double-brace
es.json: missing nav.settings
es.json: placeholder renamed metrics.headline (timeframe became periodo)
2 findings across 2 catalogues
exit 1
A real run against an English catalogue, its Spanish translation, and the package.json above them. The summary above is what a person reads; the same findings go to stdout as JSON, which is what a script reads.

What i18n-LE does

Spanish shipped last week and the metrics screen has been saying a Spanish-looking placeholder name to every user since: the catalogue had every key, it parsed, and the placeholder came back from machine translation with its name translated too. i18n-LE audits a set of catalogues against one of them and reports what is structurally wrong — keys missing or extra, placeholders dropped or renamed, constructs from the wrong convention, empty values, keys defined twice, and a path that is an object in one locale and a string in another. It works out which library the project uses first, from the manifest, the config, the directory layout, the catalogue syntax and the call sites, because the library is what decides the placeholder grammar. Only key names and structural facts are reported: no translated value ever reaches the output.

What people use it for

Catch a renamed placeholder

Same count, different names — the failure that compiles perfectly and renders the literal to every user of that locale.

See the one real break

A path that became a string reads as forty missing keys to a flatten-and-compare test, and as one finding here.

Audit copy you cannot read

Findings are proved by tokens, counts and byte offsets, so a vendor’s catalogue can be checked without seeing its prose.

Install i18n-LE

Command lineComing soon

cargo install i18n-le

Not on crates.io yet — v0.3.0 builds from the repository today, and this command starts working the day it publishes. Follow the repository.

VS CodeComing soon

ext install nolindnaidoo.i18n-le

The extension is not written yet, so this id resolves to nothing on the Marketplace. It is the id it will take. Follow the repository.

Cursor / VSCodiumComing soon

cursor --install-extension OffensiveEdge.i18n-le

Same again for the forks, which resolve Open VSX rather than the Marketplace. Follow the repository.

Zed

i18n-le mcp

Works in Zed today — add the command above as a custom MCP server from the agent panel, and check_catalogues appears in its tool list. There is no one-click listing in Zed's extension registry yet.

AI agents

i18n-le mcp

Runs i18n-LE's engine as an MCP server over stdio, so an agent can call check_catalogues with no editor and no Node. The binary is the server — there is nothing else to install.

Where it ships

One engine, 6 places to get it. The ids differ by registry — copy the one for the editor you use.

Where i18n-LE lives

The other 15

Extract string values from JSON, YAML, CSV, TOML, INI, and .env — for i18n.

Extract numeric values from JSON, YAML, CSV, TOML, INI, and .env.

Pull every file path out of JS/TS imports, JSON, HTML, CSS, TOML, CSV, and .env files.

Extract and analyze colors from CSS, SCSS, LESS, Stylus, HTML, JS/TS, and SVG.

Extract URLs from documentation, configs, and code.

Extract date and time data from logs, configs, and code.

Extract every quantity with its unit, normalised to one base unit so two configs can be compared.

Find every UUID, ULID, NanoID, ObjectId and Snowflake, and decode the time inside it.

Find every IP address, CIDR block and MAC address in a tree, normalized and classified.

Find, test, and validate the regular expressions in any file — match reports and built-in ReDoS screening.

Check whether a page is actually scrapeable before you burn hours debugging.

Find where the same dependency is constrained differently across a repository’s manifests.

Detect and sanitize credentials, tokens, API keys, and private keys locally — before you commit.

Spot missing keys across your .env files — automatic checks, a status bar counter, and a markdown report.

Find the Unicode that hides meaning — Trojan Source controls, invisibles, homoglyphs, mixed scripts.