For one developer, Crowdin's job is a table of source strings and their translations, machine translation for the gaps, a translation memory, a few QA checks and the files written back into the repo. An agent builds that in one sitting on SQLite with DeepL or an LLM. What stays behind is the people side: outside translators and volunteers working in a browser, proofreading and voting, plus hundreds of integrations and the in-context editor. If you need translators in the loop, self-hosting Weblate or Tolgee is the shorter road.
Before you buildCheck Crowdin Free first: one private project with 60,000 hosted words and Crowdin AI costs nothing if you translate alone. It stops being enough once outside translators need into a private project.
Build me a local translation workbench to replace Crowdin for my app's string files. Requirements:
- Node.js 22 + TypeScript: a Fastify server and a React UI built with Vite.
`npm start` serves everything on http://localhost:4700.
- Source of truth stays in my repo: LOCALES_DIR in .env points at a folder with en.json
and one file per target language. Also read nested YAML (`yaml`) and gettext .po
(`gettext-parser`), and write every file back in its original format and key order.
- Storage: better-sqlite3 in ./data/workbench.db for strings, edit history, a translation
memory (every approved source/target pair) and a glossary of terms per language.
- Editor: one row per key with the source text and a column per language; filters for
missing, outdated (source changed since approval) and failing QA; edit and approve inline.
- Fill gaps with DeepL (`deepl-node`) when DEEPL_API_KEY is set, otherwise any
OpenAI-compatible endpoint from .env. Show translation-memory matches (exact, then fuzzy
at 75% or more) before calling an API, and send glossary terms with every request.
- QA before export: placeholders ({name}, %s, {{count}}) and HTML tags must match the source,
ICU plurals must parse (`@messageformat/parser`), no leading or trailing space changes.
- XLIFF 1.2 export and import per language, so a hired translator can use their own CAT tool.
- Single user. No accounts, no telemetry, local-first: only machine-translation calls leave
the machine, and the README must say exactly what is sent.
- Out of scope: translator logins, comments and voting, Git host integrations, OTA delivery.
- README: setup, the .env keys, where the data lives and how to back it up.Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Crowdin.
Add a Crowdin importer to the translation workbench in this folder. Requirements: - A command `workbench import-crowdin` that takes three paths: the ZIP from Translations > Download as ZIP, a TMX file exported from Translation Memories, and a TBX or CSV glossary export. - Unpack the ZIP (one folder per language code), match files to LOCALES_DIR by name, and print a summary of new, changed and identical strings before writing anything. - Load every TMX unit into the translation memory with its languages; load glossary terms with their language and notes. Skip duplicates so running it twice is safe. - Mark imported translations as approved, and list files it could not map. - Update the README with the three Crowdin export steps.
Add Git sync to the translation workbench in this folder. Requirements: - A command `workbench sync` that runs `git pull` in the repo that holds LOCALES_DIR, re-reads the source file and marks changed keys as outdated in every language. - After I approve translations, `workbench sync --push` writes the files, commits them on a branch named l10n/YYYY-MM-DD and opens a pull request with the GitHub CLI (`gh pr create`). - Never commit to the default branch directly; abort if the working tree has unrelated changes. - A dry-run flag that prints the diff instead of committing. - Update the README with the gh login step and an example cron line.
Add guest translator links to the translation workbench in this folder. Requirements: - From the UI, create a link for one language: a random 32-byte token stored hashed in SQLite, with an expiry date and a revoke button. - The link opens the same editor limited to that language, without settings, export or machine-translation buttons. Every guest edit is saved as a suggestion I approve. - Guest routes only listen on a second port (GUEST_PORT in .env) so I can expose just that through a tunnel; the main UI stays on localhost. - Rate-limit guest requests per token and log every edit with the token id. - Update the README with how to expose the guest port through Cloudflare Tunnel.
Teams pay because developers, translators and reviewers meet in one place: new strings arrive from the repo on their own, translators get context, memory and glossary in the browser, and finished languages go back as pull requests. Swapping that for files passed around by email feels like a step backwards once a few languages are live.
Estimate · Runs on your machine. Machine translation is the only running cost: DeepL's free API tier or a few cents of LLM tokens per thousand strings. The build is token usage on your agent plan.
Checked 2026-10-13 against Crowdin's docs: 1, 2, 3, 4, 5, 6, 7
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 60K hosted words, 1 private project, unlimited public projects, 1 integration, 3 file formats, 1 branch. |
| Pro | $59 | $50 | 60K hosted words, 2 private projects, 2 integrations, 5 file formats, 2 branches, unlimited translators; no manager seats. |
| Team | $179 | $150 | 100K hosted words, 5 managers, unlimited private projects, 3 integrations, 15 file formats, in-context editor, webhooks. |
| Team+ (Crowdin Enterprise) | — | $450 | 500K hosted words, 5 managers, unlimited integrations, project groups, advanced workflows, data residency. |
| Business | custom | — | Custom hosted words, 10 managers, SSO, SCIM, teams, unlimited activity history. |
Free covers 60,000 hosted words, one private project and unlimited public ones, with Crowdin AI included.
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $59 a month on the Pro plan, $708 a year (checked 2026-10-13).
A browser editor where outside translators and volunteers can work; Proofreading, voting and approval steps between people; Ready-made sync with GitHub, GitLab, Figma and hundreds of other apps; The in-context editor and over-the-air updates for mobile apps; The translation vendor marketplace and Crowdin's shared memory. If any of those matter to you, keep paying.
Yes: Weblate (open source), Tolgee (open source), Pontoon (open source).