Stupid Simple
Android Localization

Finds every missing translation in your strings.xml and fills them in with one click.

Free & open source·bring your own Anthropic API key

macOS, Windows and Linux · GPL-3.0

Used to localize CrookCatcher — 1M+ active users

Built for real Android projects

Detects missing strings

Scans every values-xx folder and diffs against your base locale. Only translates what's actually missing.

Writes directly to your files

No copy-paste. Updated strings.xml files are written directly to your project.

Preserves placeholders

Handles %1$s, %2$d, and other Android format specifiers correctly.

Escapes special characters

Apostrophes, quotes, and other characters are escaped correctly for Android.

Detects modified strings

Changed a string after translating? LynString detects it and offers to re-translate just that string across all languages.

Every Android locale

Powered by Claude. Supports every language and locale Android supports, and checks that each language comes back in the right script.

Why not just ask an LLM directly?

You can — for small apps. But when you're adding a new language to a project with 200+ strings, LLMs reliably miss a few. They don't have a systematic view of what's already translated vs. missing across all your values-xx folders.

LynString diffs every locale against your base strings and only translates exactly what's missing. Nothing gets skipped.

If you've ever shipped and found a raw string key showing up in production for one specific language, you know the pain.

Frequently asked questions