StringLane

One loop. Two ways to run it.

StringLane adds keys and languages, translates with the model you already have, checks every locale against the rules its format actually requires, and writes the result into the files already in your repository. Whether that happens in a window or in a terminal is a question about your afternoon, not about the answer you get.

Choose where to start

Desktop app

The whole job in one window: add, translate, check, ship.

  • Add: Into every locale file at once
  • Translate: Your own provider key
  • Check: Flagged on the cell as you type
  • Price: One-time licence, 14-day trial

CLI & agents

The same job from your terminal, your CI, and your coding agent.

  • Add: Into the base locale, the rest on the next pass
  • Translate: Your agent’s model, or your own key
  • Check: An exit code your CI can branch on
  • Price: Free, no key, no activation

Shared foundation

The same answer, whichever surface asks

The desktop app moved onto the same shared code in August 2026, so this is one implementation with two front doors rather than two tools that agree most of the time.

  • One project config

    stringlane.yaml records the format, where the locale files live, your product context, the terms that must never be translated and per-key length limits. The app writes it, the CLI reads it, and it is a committed file your team shares.

  • One parser per format

    Each of the five formats has its own parser, built and tested independently rather than shimmed onto a JSON converter. Escaping, plural categories and file layout are handled once, so a value means the same thing in a window and in a pipe.

  • One validator

    Missing keys, placeholder mismatches, ICU and plural structure against the target language’s CLDR categories, guarded terminology, length limits. A clean project window and a green stringlane check are the same statement.

  • Your files, reviewed as a diff

    There is no import, no export and no database. Both surfaces edit the localization files already in your repository, so every change StringLane makes is a line in git diff that you review like any other.

Together

Most people end up using both

One project and one stringlane.yaml, read by whichever surface is in front of you.

  1. In your editor

    Your coding agent adds a feature and a handful of new strings. Through the MCP server it creates the keys with their descriptions, plans exactly what is missing, translates it, and your agent asks you before a single file is written.

  2. In CI

    stringlane check runs on the pull request. A missing key or a broken placeholder fails the build with a report naming the key and the locale, instead of shipping as English fallback that nobody notices.

  3. In the app

    Before a release you open the project and read the languages side-by-side. This is the part a report cannot do for you: seeing that a German string is twice as long as the button it sits in, and fixing it with the context in front of you.

Formats

Five formats, both surfaces

Every format is first-class in the app, in the CLI and over MCP. Plurals work in each format’s native shape rather than being converted to a common one.

Priced separately, on purpose

The desktop app is a one-time purchase with a 14-day trial. The CLI is free, with no key and no activation. Neither includes the other, and neither is a trial of the other.