Skip to content

iOS .strings · .xcstrings · Flutter ARB · Android XML · i18next JSON

One place for every locale
No more file-by-file

Going wide with AI is the easy part. Checking it is not. StringLane shows every locale side-by-side, adds a new key to all of them at once, flags missing keys, broken placeholders and wrong plural forms as you type, and saves straight to your source files: no cloud, no export step

IDE for localization files · Local-first · Works offline

No email · No credit card · Full app for 14 days

Side by side

See every locale at once. Trust what you ship.

Sync, verify, and fill every language from a single view.

Know every gap before you submit

Missing keys, broken placeholders, ICU syntax errors, plural forms the target locale still needs: flagged the moment they exist, as one list across every locale. You see what's wrong before you touch the build command, not after a 1-star review.

Edit, save, commit, nothing else

StringLane writes directly to your ARB, .strings, XML, or JSON files the moment you leave the cell. Your git workflow stays exactly as it is. There is no export step, no sync button, no intermediate format to manage.

Add a key once: every locale, one view

StringLane opens your folder, groups keys by namespace in the sidebar, and renders every locale for the active key side-by-side. Create a key and it lands in all of them at once, ready to fill: no pasting the same key name into five files, no toggling between editor tabs.

AI fill when you want it. Your key, checked before it lands

Bring your own key (OpenAI, Anthropic, Gemini, or fully local via Ollama) and sweep every missing string in one pass. Results land in the same validation view, checked before they ship. No per-character credits, no context limits, no copy-paste loops.

The keys nothing calls any more

StringLane reads your code and shows where every key is called, and which ones nothing calls. Reported, never a delete list.

Your files

The diff shows your strings, and nothing else

StringLane edits the files already in your repo. There is no import step, no project database, and no copy of your strings anywhere else.

> git statusOn branch mainChanges not staged for commit:        modified:   lib/l10n/en.arb        modified:   lib/l10n/de.arb        modified:   lib/l10n/uk.arb > git add lib/l10n/> git commit -m "l10n: add missing translations"[main 4a2f91c] l10n: add missing translations 3 files changed, 24 insertions(+), 2 deletions(-)
Three locale files edited in StringLane, committed from the same shell.

Nothing is reformatted on the way through.

Each edit is written back to the original file in its own format when you leave the cell. Key order, comments, quoting and indentation are preserved, so a reviewer sees the strings you changed and not a rewritten file. Uninstall StringLane and your project is exactly as it was: it reads and writes the files on disk, and keeps nothing of its own.

How it works

From open folder to ship-ready in minutes

Features

The localization IDE: built for locale files, not bolted onto a generic editor

Pricing

One purchase, and then it is yours

A perpetual licence for the desktop app. No subscription, no seat fee, no annual renewal.

$49once

Early-adopter price, $79 after launch. Updates within the major version, three machine activations. The 14-day trial is the full app, with no email and no credit card.

Working from a terminal, your CI, or a coding agent instead of a window? The stringlane CLI runs the same checks and writes the same files, and it is free today: no key, no activation.

FAQ

Frequently asked questions

Will StringLane modify or reformat my localization files?
No, not in any of the five formats. StringLane reads your files, writes your edits back, and leaves everything else alone: ARB @key descriptions and key order, iOS .strings quoting style and comments, .xcstrings JSON shape, Android XML formatting and <plurals> ordering, i18next nested-vs-flat layout and CLDR suffix convention. It saves in the same format it found. Open the same file in VS Code before and after: the diff shows only the lines you actually changed.
What happens to my files if I uninstall StringLane?
Nothing. They stay exactly where they are, valid and unmodified. StringLane writes directly to your source files the whole time, so there is no export step and no proprietary format to escape. Your Flutter project, Xcode project, or Android project has no idea StringLane ever existed. It works fine without it.
I already translate with ChatGPT or Claude. Why would I need this?
Keep doing that. StringLane is the layer that workflow is missing. It opens every locale file in your project at once, so there's no context window to overflow and no truncated output at 40 languages. Gaps, broken placeholders, and ICU errors are flagged live, and bulk-fill runs on your own key from the same provider (a one-time setup): no per-language copy-paste loop, no re-sending whole files through a chat window. Every change is written straight into your files, so your git diff shows exactly what the AI changed.
Where do my strings go when I use AI translation?
Directly to whichever of the eight providers you configure: OpenAI, Anthropic, Google Gemini, Groq, Mistral, DeepSeek, xAI, or the Local LLM provider (any OpenAI-compatible runner: Ollama, LM Studio, Jan, llama.cpp, vLLM). The cloud providers use your own API key. StringLane has no server. Your strings never pass through StringLane infrastructure because there is no StringLane infrastructure. Pick the Local LLM provider and your data never leaves your machine. All eight providers use structured-output enforcement (JSON Schema, tool calls, or response schema) so bulk translations parse reliably end-to-end. Setting up AI translation takes about five minutes.
Is ARB the main format and everything else an afterthought?
All five formats are first-class: ARB (Flutter), .strings (iOS), .xcstrings (Xcode 15+ String Catalog), Android XML, and i18next JSON. The core parser for each was built and tested independently, not shimmed on top of a JSON converter. You can open a mixed project and see missing keys flagged the same way across all of them. Plurals work per-format in their native shape: ICU for ARB and i18next, Apple variations for xcstrings, .stringsdict for iOS, and <plurals> for Android. If you're new to either: what the .xcstrings format is and what an ARB file is.
Does StringLane run on Windows and Linux, or just macOS?
All three, today: macOS (Apple Silicon and Intel, signed and notarised by Apple), Windows x64, and Linux (a self-updating AppImage, or a .deb if you prefer your package manager). One honest caveat: the Windows build isn't code-signed yet, so SmartScreen shows an “unknown publisher” warning on first run: click “More info” → “Run anyway”. Checksums for every build are published alongside the downloads.

Still have questions? Email us at support@stringlane.app

Know what every locale says before your users do

StringLane adds a key to every locale at once, shows them side-by-side, and flags what's missing or broken before you ship. Edits saved straight to your source files, no cloud, no export step. One purchase, no subscription, yours to keep.

Download the app

Early-adopter price: $49 one-time. Full price is $79.