It scores your locale files, catches every missing key, broken placeholder and stale string, then fails CI the moment a language slips.
Every failure here is mechanical and easy to detect. Nothing in your stack was looking for them.
tools in a typical stack watch translation health. It lives in the gap between your linter and your tests.
The string was never translated, so your German checkout renders the key itself.
The translator renamed the token and the string crashed on render.
Half a feature never got translated and nobody noticed for three weeks.
You reworded the source weeks ago. The old copy is still live in four languages.
Paste your JSON or YAML, or pull straight from your Git repo. No SDK, no migration.
One number per language and one for the project, with every issue listed and ready to fix.
Fail the build on a regression and chart drift over time, so quality only climbs.
Edit the source and the German file, then scan. This is the real engine, the same one that watches your repo once you connect it.
Keys in the source but missing from a language, plus dead keys left behind after a refactor.
checkout.button.labelja{{count}} → {{nombre}}eslegacy.banner.v1allCatches {{name}}, {count}, %s and %{var} when they go missing or change between source and translation.
Flags plural and select blocks that get dropped or mangled in a target language.
Spots HTML tags that differ or fall out of balance and would break the rendered string.
Knows when the source changed but the translation stayed put, from scan history alone.
Surfaces real sentences left identical to the source, with no false flags on short tokens.
A translator lost the 30 in "30 days". Polylens diffs the numbers between source and target.
Replacement characters and control bytes in a translation are flagged as errors on sight.
TODO, FIXME, and lorem ipsum in a locale file never survive a scan unnoticed.
A sentence that ends with a period in the source and nothing in French gets a quiet flag.
Watch translation health from CI, from your Git repo, or through an AI agent. Pick one, or wire up all three.
One endpoint, one exit code. Drop it into GitHub Actions, GitLab CI, or any pipeline, and a slipped language breaks the build like a failing test. Tune it with FAIL_ON, MIN_SCORE and NO_REGRESSION.
Connect a public or private GitHub repo. Polylens pulls the newest locale files and rescans on a single click. No copy paste, no CLI.
Give Claude, Cursor, or any MCP client your translation tools over OAuth, with no API key to copy. They score files, list projects, and pull-and-rescan a connected repo.
"Translation drift is the bug class every multilingual team ships and almost none of them measure."
Why Polylens exists
A translation management system manages translators. Polylens watches the files your engineers already ship.
Color carries the meaning. Green is healthy, amber is drifting, red is broken. Click a language and every broken string is listed, ready to fix.
Start free. Upgrade when CI and history matter. Per organization, no per-seat fees, cancel anytime.
For a single project and the occasional check.
CI gate, drift history, and alerts for a shipping team.
Unlimited projects and full history for scaled products.
No. It doesn't replace your files or your translators. It's a quality gate and dashboard that watches the locale files you already keep in your repo. Think Codecov, but for translations.
Add a project, paste your locales, and get a health score in under a minute. Free to start.