StringLane

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.

Start with the appStart with the CLI

    Type to search titles, sections and body text across all 58 pages.

    Desktop app

    Opening a project, editing side-by-side, and fixing what the app flags.

    How-Tos26 pages

    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.

    How-Tos9 pages

    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.

    Formats & concepts

    What the file formats are and how they behave, true of both surfaces.

    Concepts7 pages

    Background on the formats and the rules behind the checks.