Nifty i18n
See translations inline next to t('key') calls, find missing keys and translations, complete and jump to keys, and extract strings into your locale files.
Maintained. No sign-in. No telemetry. Works in VS Code, Cursor, Windsurf, VSCodium and other editors that use Open VSX.
Features



- Read your code, not your keys. Next to every
t('checkout.total') you see the actual text, "Total to pay", in your source language (or any locale you pick). Keys that don't exist show a warning instead.
- Every locale on hover. Hover a key to see its translation in each locale, with missing ones marked and a link straight to the line in each locale file.
- Catch missing translations. A key that isn't in your source locale is a warning with a quick fix to add it. A key some locales haven't translated yet is pointed out, so nothing ships half-translated.
- Complete and jump. Get key completion inside
t('…'), $t('…') and i18nKey="…", and Go to Definition opens the key in every locale file.
- Extract strings in one step. Put the cursor in a string (or select text) and choose Extract to Translation Key (
Ctrl+Alt+T or the light bulb). A key is suggested from the text, the text is added to your source locale file, and the string is replaced with t('your.key') ($t in Vue, __ in PHP; configurable).
- Translation coverage. See how many keys each locale has and which ones are missing, and fill them in one by one.
- Fits your setup. Finds locale files in
locales/, i18n/, lang/, translations/ and messages/ folders, as JSON or YAML, nested or flat, one file per locale (en.json) or per namespace (en/common.json). Understands i18next namespaces (common:key) and next-intl's useTranslations('Home').
- Works in the browser on vscode.dev and github.dev.
Commands
| Command |
What it does |
Nifty i18n: Extract to Translation Key |
Move a string into your locale file (Ctrl+Alt+T) |
Nifty i18n: Add Translation Key… |
Add a key to the source locale |
Nifty i18n: Translation Coverage… |
Keys and gaps per locale |
Nifty i18n: Reload Locale Files |
Read locale files again (they're also watched) |
Settings
| Setting |
Default |
What it does |
nifty.i18n.localesPaths |
locales, i18n, lang, translations, messages folders |
Where locale files are |
nifty.i18n.sourceLocale |
en |
The locale you write first |
nifty.i18n.displayLocale |
"" |
Locale shown inline (default: source) |
nifty.i18n.inlineValues |
true |
Show text next to keys |
nifty.i18n.reportMissingTranslations |
true |
Point out untranslated keys |
nifty.i18n.functions |
t, $t, i18n.t, __, trans, … |
Functions that take a key |
nifty.i18n.defaultNamespaces |
translation, common, messages |
Namespaces usable without a prefix |
nifty.i18n.extractTemplates |
{} |
The call written when extracting, per language |
nifty.i18n.keyPrefixFromFile |
true |
Suggest keys starting with the file name |
Install
- VS Code: search for "Nifty i18n" in the Extensions view, or install from the Visual Studio Marketplace.
- Cursor, Windsurf, VSCodium, Kiro, Antigravity: install from Open VSX.
Privacy
This extension collects no telemetry and needs no account.
- Nifty Beautify: Format HTML in PHP, Blade & Twig: Format HTML inside PHP, Blade, Twig, Jinja, Handlebars, ERB and Liquid templates without breaking the template tags. (Open VSX)
- Nifty Code Metrics: Complexity & Hotspots: Complexity and size for every function in any language, as CodeLens and warnings, plus a hotspots view of the complex files that change most often. (Open VSX)
- Nifty Licenses: Dependency License Checker & SBOM: See the license of every dependency (npm, Python, Cargo, Go, NuGet, Composer), get warned about GPL and unknown licenses, and export an SBOM or third-party notices. (Open VSX)
- Nifty OpenAPI: Outline, Checks and Try It for API Specs: Edit OpenAPI and Swagger files with an outline, $ref navigation and completion, error checking, example payloads, and Try it requests for your REST client. (Open VSX)
- Nifty Pretty Errors: Readable Error Messages: Readable error messages for every language: TypeScript types formatted as code, long C++ and Rust types folded, and a docs link for every error code, in the hover and a side panel. (Open VSX)
- Nifty Problems: Project-Wide TypeScript Errors: See TypeScript and ESLint errors for your whole project in the Problems panel, not just open files. (Open VSX)
See all 100+ Nifty extensions and web tools at https://getnifty.dev
| |