Documentation
StringLane Documentation
StringLane reads and writes the localization files already in your repository: ARB, Apple .strings, .xcstrings, Android XML and i18next JSON. These guides cover both surfaces: the desktop editor, where you see every locale side-by-side, and the stringlane CLI, which runs the same loop in your terminal, in CI, and inside a coding agent.
Desktop app
Opening a project, editing side-by-side, and fixing what the app flags.
Step-by-step walkthroughs. Start here if you are new.
Getting Started
Download, install, and make your first translation edit in under 10 minutes.
Set Up AI Translation in 5 Minutes
Configure a provider, add your API key, and translate your first key: no cloud account required beyond the AI provider itself.
Localize Your Flutter App End to End
A complete workflow from Flutter ARB setup through AI translation, validation, and running flutter gen-l10n.
Task-focused guides: find what you need and get it done.
How to Open a Localization Project
Three ways to open a localization folder in StringLane, what auto-detection covers, and how multi-module Android + namespaced i18next projects load.
How to Add a New Locale
Create a new locale in StringLane by entering its BCP 47 code. What file gets created, and what happens on multi-package projects.
How to Use Locale Presets
StringLane ships built-in cultural context for 50 locales and applies it to AI translation automatically. What each preset covers, which locales have one, and how to override it.
How to Configure Guarded Words and Product Context
Tell StringLane what not to translate and how your product sounds, so AI translations match your brand.
How to Configure Locale Context for Better AI Output
Add per-locale cultural notes so AI translations feel natural for each region, not just grammatically correct.
How to Use the List View Editor
Navigate the key sidebar and detail pane: switch between Grid and List layouts, track validation at a glance, and edit every locale for one key in one place.
How to Use the Format Editor
Format-specific editing helpers for iOS .strings, Android XML, and i18next JSON projects in StringLane.
How to Use the Command Palette
Press ⌘P to open one searchable menu for every StringLane action: add keys, translate, jump to a key, toggle panels, open settings.
How to Customize Keybindings
Rebind any of StringLane's in-app keyboard shortcuts from Settings → Keybindings. Export / import JSON to share setups across machines.
How to Search and Filter Translations
Find keys by name or content, filter to issues only, show only the keys missing in one locale, or, with source stamps on, list the translations that went stale.
How to Translate Individual Keys
Use the per-cell AI translate button to translate a single key in any locale.
How to Translate All Missing Cells at Once
Fill every gap across every non-base locale in one pass. Palette-driven, progress-tracked, cancellable.
How to Bulk-Translate a Locale
Fill all missing translations in a locale with one click, with progress tracking and cancel support.
Translate App Strings with a Local LLM (Ollama, LM Studio)
Translate your app's localization files with Ollama, LM Studio or Jan on your own machine. Base URLs, setup, model choice, and the speed to expect.
How to Read Validation Badges
What each validation badge means (Missing, Same, Param, Length, ICU, Guarded, Malformed, Stale, Unconfirmed) and how to fix it, including the wrench autofix.
How to Use the Issues Panel
Press ⌘J to open one panel listing every validation problem across the project: click to jump, fix per row, or sweep all with AI.
How to Find Translations That Went Stale
Turn on source stamps and StringLane marks every translation whose source text changed since it was confirmed, so you can check those before your next release.
How to Fix Placeholder Mismatches
Understand and resolve the Param validation badge: when a placeholder like {name} or %@ is missing or wrong in a translation.
How to Fix Issues with AI
Repair ICU syntax errors, missing plural categories, and placeholder mismatches without retranslating: per row or across the project.
Edit ICU select and selectordinal
The Selectors view gives every branch of an ICU select or selectordinal its own row, so you translate one branch at a time instead of retyping the syntax around it. Ordinal branches come from the target language CLDR rules.
How to Add Key Descriptions and Limits on Any Format
Add a description, character limit and translation rules to a key in an .xcstrings, .strings, Android XML or i18next project, not only ARB.
How to Reload Files from Disk
Press ⌘R to discard pending writes and re-read every locale file from disk: useful after git checkout, branch switch, or external edits.
How to Activate Your License Key
Enter your StringLane license key to unlock the full app: one-time purchase, no subscription, your key lives in your OS keychain.
How to Use the Free Trial
Every StringLane feature is available during the 14-day free trial: no email, no credit card, no missing functionality.
How to Turn Off Usage Analytics
What StringLane sends, what it never sends, and where the one toggle is that stops it. Your translation content never leaves your machine either way.
Find Keys Your Code No Longer Uses
StringLane reads your source and shows where each key is called, plus a filter for the ones nothing calls. What the scan can see, the four ways a live key lands in that list, and why not scanned is different from nothing found.
CLI & agents
The same loop from your terminal and CI, and serving the project to a coding agent over MCP.
Step-by-step walkthroughs. Start here if you are new.
CLI: Getting Started
Install the stringlane CLI, point it at a project, and get your first report. About five minutes, and nothing is written to your repository unless you say so.
Let a Coding Agent Translate Safely
Serve your localization files to Claude, Codex or any MCP host with stringlane mcp. Your agent does the translating; StringLane does the reading, the validating and the writing, and refuses anything it cannot verify.
Task-focused guides: find what you need and get it done.
Install and Update the CLI
Install the stringlane CLI globally or run it without installing, keep it current, pin it in CI, and remove it cleanly. Node 22 or newer, on macOS, Windows and Linux.
Inspect and Check a Project
The two reporting commands that write nothing into your repository, what the difference between them is, and how to adopt a check gate on a project that is already carrying hundreds of missing keys.
Run Localization Checks in CI
Gate a pull request on missing keys and broken placeholders with stringlane check. Exit codes, a machine-readable report, a baseline for an unclean repository, and the state-directory setting CI runners need.
Set Up StringLane From Your Coding Agent
One paste. Hand this page to Claude Code, Codex, Cursor, Gemini or any MCP host and it works out which host it is in, installs what that host takes, and stops at every point where you should decide.
Set Up StringLane in Any MCP Host
The host-neutral way to wire stringlane mcp into a coding agent: what the server is, what configuration it needs, how to scope it to a project or a machine, and how to check it connected.
StringLane in Claude Code
Install the plugin: an MCP server over your locale files, four slash commands, the skills, and a write guard that asks before Claude hand-edits a locale file. What the guard covers, what it deliberately does not, and how to remove it.
Find Unused and Undefined Keys
stringlane scan reads your source code and reports keys nothing calls, and keys your code calls that do not exist. What it can see, how a live key lands in that list, and why it refuses rather than guessing.
Translate With Your Own Provider Key
stringlane update fills the missing strings using an API key you supply through the environment. StringLane never stores it, every translation goes through the same validation gate, and the write is all or nothing.
CLI Troubleshooting
Command not found, no files detected, exit code 2, a stale or empty plan, a busy project, an MCP server that will not start, and a CI runner with no writable home.
Background on the formats and the rules behind the checks.
The stringlane CLI
Check, plan, translate, add keys and locales, and write back through the same checks the desktop app runs, from your terminal, in CI, and inside a coding agent. Free, local, and it writes nothing into your repository that you did not ask for.
How the Write Gate Works
What plan, validate and apply each guarantee, why a clean validate grants nothing, what STALE_PLAN and PROJECT_BUSY mean, and how to review or undo a write.
Every command, tool, flag and exit code, as shipped.
CLI Command Reference
Every stringlane command and flag, what each one writes, and the exit code it sets. Transcribed from the shipped binary at version 0.9.0.
MCP Tool Reference
The eleven tools stringlane mcp exposes, what each returns, which six write, and why the approval prompt your agent host shows is the gate. Read from the live tool registry at CLI version 0.9.0.
Exit Codes and the JSON Report
What each of the four stringlane exit codes means, the shape of the --json envelope, and the machine-readable refusal codes apply can return.
Agent Hosts: What Yours Gets
StringLane installs into eight coding agents. Which ones take a plugin, which take a pasted config, and what write guard each one can actually run, including the one where the honest answer is "nothing yet".