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 you did not ask for.
Last updated
The desktop app tells you what is wrong with your translations while you are looking at them. The CLI tells your build.
It is the same engine underneath: the same parsers, the same validation rules, the same completion figures — one implementation, called from both surfaces rather than two copies that drift apart.
stringlane check .What you get#
Point it at a project folder and it reports which locales are behind, which keys are missing, which translations are structurally broken, and sets an exit code your pipeline can branch on.
xcstrings · single-origin · base en
4 locales · 10 keys · 64% complete
de 9/11 2 missing
en 11/11 complete
fr 9/12 3 missing
uk 1/13 12 missing
8 errors · 3 warnings · 0 info
Beyond that report, the CLI is also how a coding agent gets safe access to your localization files. stringlane mcp serves the project over the Model Context Protocol, so your agent can find exactly what needs translating and write it back through the same validation gate, instead of hand-editing files whose escaping it will get subtly wrong.
The commands#
Full flags and behaviour per command are in the CLI reference.
What it will not do#
The four read-only commands are read-only with respect to your repository. inspect, check, plan and validate write nothing inside your project: not a lock file, not a re-saved locale file, not a byte. The test suite snapshots every file's contents, size and modification time before and after, on Linux, macOS and Windows. What check and scan keep between runs is a cache of which source files they have already scanned, and it lives in StringLane's own state directory, never in your repository.
The commands that do write ask before they do, and refuse outright when there is no terminal to ask at unless you passed --yes. A CI job cannot accidentally commit a decision nobody made.
Nothing follows a symbolic link out of your project root: not the config, not the baseline, not --output, and not a path named inside a plan file. A repository that ships a redirect does not get to choose where an agent's translations land.
Where to go next#
- Getting started walks from install to your first report.
- Inspect and check covers the day-to-day reporting commands and the baseline.
- Run it in CI covers exit codes and the JSON report.
- The agent workflow covers MCP, agent setup is the one-paste route, and agent hosts says what each of the eight actually gets.
- Translate with your own key covers
stringlane update.
Frequently asked questions
- Is the stringlane CLI free?
- Yes. There is no licence key and no activation, and it does not read one: use it on as many machines, projects and CI runners as you like, including at work. It is versioned and licensed separately from the desktop app, and buying the app grants nothing on the CLI in either direction.
- Does the CLI need the desktop app installed?
- No. It is a standalone package with no dependency on the app, and the two never talk to each other. They agree because they run the same engine over the same files and the same stringlane.yaml, not because one is driving the other.
- Which file formats does the CLI support?
- The same five as the app: iOS .strings with its companion .stringsdict, Xcode .xcstrings String Catalogs, Flutter ARB, Android XML, and i18next JSON.
CLI Troubleshooting
Next →How the Write Gate Works