viteTranslate for VS Code
The editor half of viteTranslate.
Every marked string and how its translation is doing, in a panel of its own. No more opening vite.config to remember whether autoWrap was on.

Library · Panel guide · Site · Issues

Preview. It reads your project and never writes to it. The only things that change files are Sync and the LLM actions, and they run the same CLI you'd type yourself.
🧩 One project, two halves
viteTranslate is a Vite plugin: you write sentences right in your JSX, it extracts them and keeps one .yml table per language in sync. This extension is its view from inside the editor, and it doesn't work without it.
| The library (npm) |
The extension (here) |
| Extracts marked strings, syncs the tables |
Lists them file by file, each with its status |
Fills null keys through an LLM, from the CLI |
Runs Sync and the LLM actions in one click |
Reads its options from vite.config |
Shows them as resolved, plus versions and the API key's whereabouts |
It doesn't re-implement anything: Results asks the library installed in your project, so the panel and npx vitetranslate never disagree.
✨ Features
- 🔍 Every marked string, at a glance. File by file, in source order. One glyph says how each one is doing: ‼️ malformed, 🔄 not synced, 🔸 untranslated, 🔹 partly translated, green when all is well. Filter, search (no case, no accents), click to jump.
- 🌍 Language files, one click away. Pick an entry, then a language: the file opens right on that key, cursor on the translation.
- 🖍️ Highlighting as you type.
_%_…_%_, <Translate>…</Translate> and ts`…` stand out in .js, .jsx, .ts and .tsx, with the extraction's own rules: what lights up gets translated. Fifteen styles, all in your theme's colors.
- 🤖 Sync and LLM, without typing. Sync and every
--llm-* action run the project's own CLI in a terminal. The LLM page first answers "can I go?": where the API key is (never what), which model, and whether it replies.
- ⚙️ Your setup, resolved. Plugin options, the dependencies that matter (declared → installed), Vite plugins in load order, library and extension versions.
- 📁 Monorepos welcome. Every Vite project in the workspace, and the panel follows the file you're editing.
 |
 |
| Results: filter, search, status glyphs |
LLM: key, model, ping, then the actions |

🚀 Getting started
Have viteTranslate in a Vite project, version 4.6.4 or later. New to it? The quick start takes two minutes.
npm install @sepoina/vitetranslate
Install the extension from the Marketplace, or:
code --install-extension sepoina.vitetranslate-ide
Click the % icon in the Activity Bar. Highlighting needs nothing: open a .jsx file and it's on.
Older library, or none? The panel says so and gives you the npm install that fixes it.
Requirements: VS Code 1.90+, a trusted workspace for anything beyond package.json, and on Windows a node in your PATH, so the CLI can ask you things (confirmations, the API key).
⌨️ Commands
From the panel, or the Command Palette under viteTranslate:
| Command |
Does |
| Sync language files |
Runs vitetranslate in a terminal: new keys in, stale ones out |
| LLM |
Opens the LLM page: readiness check and every --llm-* action |
| Settings |
Opens the settings page: options, files, versions |
| Choose highlight style… |
Tries every style live on your code: Enter keeps it, Esc changes nothing |
| Refresh |
Re-reads projects and rescans Results (it refreshes by itself on save too) |
🛠️ Settings
| Setting |
Default |
Does |
vitetranslate.highlightStyle |
framed-box |
How marked strings stand out, or off |
vitetranslate.detailCommand |
false |
Terminals also show how the CLI is really launched: folder, runtime, runner, CLI file |
🔒 Safe by design
- Read-only.
vite.config runs in a separate process, never through Vite: no plugin hook fires, nothing gets synced. A config that hangs is dropped after 15 seconds.
- Restricted Mode respected. Untrusted workspace? Nothing runs: you get
package.json only.
- Nothing heavy inside. No Babel bundled: it uses the one your project already has, and lets it go after two idle minutes.
- Secrets stay secret. The API key is located, never displayed.
📚 More
| |