Before · Now
Every text change used to need a developer. Now your translators ship it.
BeforeA ticket, a developer, a JSON file, a release.
NowA translator writes it, a moderator or admin approves it. No developer involved.
When your app loads its strings from the dashboard. Strings bundled into your build still ship with your next release.
From your source code to shipped translations
Four steps, one loop. Your locale files go in, translated locale files come back out — and nothing in between is a place your content gets stuck.
- Scan
Find every translation key in your codebase
Point us to your project folder or a Git repo. The scanner reads your source files and extracts keys the way your framework uses them. No config, no plugins to install.
LoginView.vue <template>
<div class="login">
<h1>{{ $t('auth.login.title') }}</h1>
<button @click="submit">
{{ $t('auth.login.submit') }}
</button>
<a>{{ $t('auth.login.forgot') }}</a>
</div>
</template>Detected keys6
auth.login.titlenewauth.login.submitseenauth.login.forgotseennav.homenewnav.settingsseenerrors.requirednew
- Translate
Auto-translate in batch. Pick your engine.
Translate one key or thousands at once. Bring your own API key for DeepL, Google, OpenAI, Anthropic, Gemini or Mistral, or run free with LibreTranslate or Google Translate — pick the provider per project, override the model at any time. We never proxy or meter your calls.
Translating to Français
6 / 6nav.homeHomeAccueilnav.settingsSettingsParamètresauth.login.titleWelcome backContent de vous revoirauth.login.submitSign inSe connectererrors.requiredThis field is requiredCe champ est requisactions.saveSaveEnregistrer
- Review
Built-in review workflow
Translators save drafts, moderators review, admins approve. The locale API only serves approved content — work-in-progress drafts never leak to your end users.
- Draft
- Reviewed
- Approved
enWelcome backfrContent de vous revoir- Translator saved a draft18m
- Moderator reviewed the translation10m
- Admin approved the translation2m
- Sync
Your JSON files stay the source of truth
Pull new keys from your locale files into the dashboard, and write edited translations straight back to them. Your JSON files stay the source of truth — the dashboard never becomes a place your translations are trapped in.
src/locales/
- en.json132 keys
- fr.json128 keys
- de.json120 keys
- ja.json86 keys
Dashboard DB
24pulled48written back156totalSync complete
Yours to run, yours to keep.
What comes with the dashboard, on every plan.
Runs where you decide
Your machine or your server
A desktop app for macOS, Windows and Linux, or one Docker image on your own server. There is no hosted version: your projects and translations are stored on your own machine or infrastructure.
- Desktop app
- Docker
- SQLite
- PostgreSQL
- MySQL
Your key, your provider
8 translation providers
- Google Translate no key
- LibreTranslate no key
- Google Translate API
- DeepL
- Gemini
- Mistral
- Claude
- OpenAI
You pay your provider directly. No auto-translate quota on any plan.
A team, with roles
Who can do what
- Translator
- writes and edits
- Moderator
- approves what goes live
- Admin
- runs the project
Roles and review apply on a shared server (server mode).
Catches i18n bugs
Before your users do
{nom}Missing placeholder{name}Ajouter l'article au panier d'achatOver 1.5× the length of the source
Warnings, never blockers: you decide what ships.
Right to left
مرحبًا بعودتك
Arabic, Hebrew and 7 more read the right way, with their own preview.
Your files stay yours
Export anytime
- JSON
- CSV
- XLSX
- Full project snapshot
Your data leaves as plain JSON.
Free plan
Free
Free for 1 project, with every feature. Need more? Pro gives one developer 5 projects.
Same job, a fraction of the price.
| Feature | i18n Dashboard | Lokalise | Crowdin | Tolgee |
|---|---|---|---|---|
| Cheapest paid plan | i18n Dashboard€4/mo | Lokalise$149/mo | CrowdinFrom €46/mo | Tolgee€58/mo |
| Free plan | i18n DashboardYes | LokaliseYes · after a 14-day trial | CrowdinYes | TolgeeYes |
| Runs on your own server | i18n DashboardYes | LokaliseNot mentioned | CrowdinNot mentioned | TolgeeYes |
| Machine translation included | i18n DashboardUnlimited, with your own key | Lokalise20,000 words a month | CrowdinNot mentioned | Tolgee400,000 credits |
| Review before it goes live | i18n DashboardYes | LokaliseYes | CrowdinYes | TolgeeYes |
| File formats They're ahead | i18n DashboardJSON, plus CSV, Excel and XLIFF import | LokaliseAbout 30 | Crowdin50 | TolgeeAbout 18 |
| Apps for iOS and Android (SDK) They're ahead | i18n DashboardComing later | LokaliseYes | CrowdinYes | TolgeeYes |
| Figma plugin They're ahead | i18n DashboardComing later | LokaliseYes | CrowdinYes | TolgeeYes |
Where they are ahead More file formats, apps for iOS and Android, a Figma plugin.
Prices and features from each company's public pages, read on October 2, 2026, October 8, 2026:
- Lokalise: lokalise.com/pricingdocs.lokalise.com/en/articles/6854191-translation-editordevelopers.lokalise.com/reference/api-file-formatslokalise.com/product/for-developers
- Crowdin: crowdin.com/pricingsupport.crowdin.com/introductionsupport.crowdin.com/supported-formatssupport.crowdin.com/cdn-distributions
- Tolgee: tolgee.io/pricingtolgee.io/tolgee-vs-locizedocs.tolgee.io/platform/translation_process/translation_statesdocs.tolgee.io/platform/supported_formatsdocs.tolgee.io/android-sdkdocs.tolgee.io
Their prices are billed yearly, as each page shows by default; monthly billing costs more (Lokalise $169, Crowdin €54). EUR prices as shown from Europe. Ours: €4 billed monthly, €3 yearly.
JSON files and Git work. Here is what they don't do.
Your translations already live in your repo: it works, it's free, and nobody had to learn a new tool. Pasting strings into ChatGPT or DeepL works too, and you can plug the same engines into the dashboard as providers.
| Capability | JSON + Git + ChatGPT/DeepL | i18n Dashboard |
|---|---|---|
| Placeholder and length warnings | JSON + Git + ChatGPT/DeepL Not out of the box: you add and maintain your own linter. | i18n Dashboard In the editor, warns when a placeholder or an HTML tag is missing, or when a translation runs well past the source length, without blocking the save. Automatic translation retries once, then refuses a result that drops a placeholder. |
| Unused keys | JSON + Git + ChatGPT/DeepL Searching the code by hand, key after key. | i18n Dashboard A scan flags the keys your code no longer uses. |
| Coverage per language | JSON + Git + ChatGPT/DeepL Count the missing keys yourself. | i18n Dashboard Coverage in percent for each language, with the number of missing keys. |
| Review status | JSON + Git + ChatGPT/DeepL Review per file, in pull requests. | i18n Dashboard Draft, Reviewed, Approved for each translation, in server mode only. Local and desktop modes approve everything automatically. |
| Machine translation | JSON + Git + ChatGPT/DeepL Copy the strings out, paste the results back. | i18n Dashboard Use your own key, or your own instance for LibreTranslate, with DeepL, OpenAI, Claude, Gemini, Mistral or Google. With paid providers, you pay them directly. |
Translating your app in four steps.
Create your account
Free to start: 30 days of any plan, no card. Stays free for 1 project.
Install it
On your own server. Then open localhost:6001.
Self-hosting guidedocker compose pull && docker compose up -dmacOS, Windows or Linux. It runs its own local server.
Download the appConnect your project
Point it at a folder or a Git repository. It finds your framework and your locale files.
Translate
Pick one of 8 providers and translate a whole language at once. Google Translate works without a key.

