i18n-LE
Identify the i18n library a project uses, then audit its catalogs by that library's rules
No editor in the loop? npx -y i18n-le-mcp runs the same engine as an MCP server, so an agent can call check_catalogues with nothing else installed, and cargo install i18n-le puts the same check in a terminal. Every way to install it.
Overview
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.
Palette
3 commands
Open the command palette and type the name. Nothing is bound to a shortcut by default — the editor's keymap is the user's, not ours.
- Audit Catalogues
i18n-le.audit - Open Settings
i18n-le.openSettings - Help & Troubleshooting
i18n-le.help
Install
Install i18n-LE
VS Code
ext install nolindnaidoo.i18n-leOpen Quick Open (Cmd/Ctrl+P) and paste.
Cursor / Windsurf
cursor --install-extension nolindnaidoo.i18n-leCursor, Windsurf, VSCodium and the other VS Code forks pull from Open VSX. The id is the same as on the Marketplace.
AI agents
npx -y i18n-le-mcpRuns i18n-LE's engine as an MCP server, so an agent can call check_catalogues with no editor involved. VS Code 1.101+ needs nothing — the extension registers it for you.
Channels
Where it ships
One engine, 5 places to get it. Copy the one for the editor you use.
Links
Where i18n-LE lives
- VS Code Marketplacei18n-le
- Open VSXfor Cursor, Windsurf and VSCodium
- npmi18n-le-mcp
- GitHubsource, issues, changelog
- MCP registryio.github.nolindnaidoo/i18n-le
The family
The other 16
String-LEExtract every string in a codebase, so a person can read them
Numbers-LEExtract every hardcoded number in a codebase, so a person can check them
Paths-LEExtract every file path in a codebase, and say whether it still points at anything
Colors-LEExtract every color in a codebase, and say which ones are not in your palette
URLs-LEExtract every URL in a codebase, with its protocol and exact position
Dates-LEExtract every date and timestamp, and the exact instant each one resolves to
Units-LEExtract every quantity with its unit, normalized, and refuse the ambiguous ones by name
IDs-LEExtract every UUID, ULID, NanoID, ObjectId and Snowflake, and decode the time inside
IPs-LEExtract every IP address, CIDR block and MAC, normalized and classified by scope
Regex-LEFind every regex in a codebase, and report which can be driven into catastrophic backtracking
Scrape-LECheck whether a page is scrapeable before the scraper is written, and say when it cannot tell
Versions-LEFind where one dependency is constrained differently across a repository's manifests
DecisionLintLint Jev and Luna questions before they are sent: the questions you write for TypeSafe's Jev, OpenAI's Decisions API (gpt-6-luna) or any platform that serves one, as you type, with no API key and no network calls. An optional command asks the model itself to check a file
Secrets-LEFind hardcoded credentials in a codebase, and never print one into the report
EnvSync-LECompare the dotenv files in a tree, and say which keys are missing from which
Unicode-LEFind the Unicode that hides meaning — bidi controls, invisibles, homoglyphs, mixed scripts
