Detect untranslated strings, wrap them, and translate them from the command line. No SaaS dashboard to babysit, no copy-paste into Google Translate, no broken builds from a missing key.
Polyglot fits the workflow you already have — your editor, your repo, your CI. Run it locally or in a pipeline; the output is plain JSON your runtime library already reads.
Tree-sitter parses your actual source — JSX, attributes, template literals — and finds hardcoded strings. Not a regex; an AST walk.
Rewrites string literals into t() calls and adds the imports, with a --dry-run to preview the diff before it touches a file.
Sends new strings to the translation API with component context and your glossary. Translation memory means you never pay to translate the same string twice.
Spins up your app with translations injected so you catch truncation, layout breaks, and RTL issues before they ship.
Most i18n tools manage strings after you've already extracted them — finding what needs translating is left to you. Polyglot parses your source with tree-sitter and finds the strings a grep would miss and the ones it would wrongly flag: it knows a className isn't user-facing and a button's text is.
Add the open Polyglot Action for a differential check you configure in your repo, or use Polyglot Automation (early access) for native GitHub Checks and shared policy. Establish the baseline once and every run afterward separates new findings from the debt you already had. Policies that block a merge are in early access.
# .github/workflows/i18n.yml
- uses: polyglot-i18n/polyglot-action@v1
with:
check-mode: differential
✗ 2 new untranslated strings in this PR:
src/checkout.tsx:44 "Pay now"
src/checkout.tsx:51 "Order total"
Check failed — wrap them or mark them as ignored.
Local scan, wrap & preview
Frameworks detected
Dashboard visits for local work
Incremental scans
Same outcome. One of them eats a sprint.
Only when you run polyglot wrap, and only after you've seen the diff with --dry-run. It rewrites string literals into t() calls and adds the necessary imports — nothing else. Detection (scan) and translation are read-only with respect to your components; they write to locale JSON files, not your code.
Start with the CLI and open GitHub Action on any plan. Team adds managed checks, catalog sync, and verified translation PRs.
For individual developers
For growing teams
Polyglot Automation is in early access. Setup and availability
For large projects
Polyglot Automation is in early access. Setup and availability
Try it out — no card, no commitment.
Start in your terminal
Your first 50 translations are free, no account required. Install the CLI and run a scan against your own code. A free account takes you to 500 strings; when a real migration outgrows that, Pro covers 10,000 — self-serve, no sales call.