StringLane

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

    How-To

    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.

    Last updated

    A translation goes stale when someone edits the source text it was made from and nobody revisits it. With source stamps on, StringLane records which source text each translation was confirmed against, and marks every translation whose source changed since, so you check them before you ship instead of finding them in a screenshot.

    Source stamps are off until you turn them on, per project. The same stamps drive stringlane check on the command line, so the desktop app and your CI agree about what is stale. For the terminal and CI side, see Inspect and check a project.

    Turn on source stamps#

    1. Open Settings (⌘,) and choose Project → General.
    2. Under Source stamps, turn on Track stale translations. StringLane saves your pending edits first.
    3. The Turn on source stamps? dialog says how many translations, in how many locales, get a stamp now. StringLane treats each of them as current against today's source text, because it cannot know whether they were current before today. If you doubt some of them, check those first.
    4. Click Turn on.
    5. StringLane writes .stringlane/source-stamps.json, then adds sourceStamps: true to stringlane.yaml. The markers show at once; you do not need to reload.
    6. Commit both files with your locale files. A teammate, or a CI run of stringlane check, needs both: with the flag on and no stamps file, the check cannot run.
    Settings → Project → General with the Source stamps section: Track stale translations switched on, and under it On, 3 to check, and a Show them link

    Turning stamps on never stamps an empty cell, and a project needs a stringlane.yaml before the switch can write the flag. If it has none, run stringlane init or create the file. See sourceStamps in the stringlane.yaml reference.

    What Stale and Unconfirmed mean#

    Both are amber warnings on the cell, with a note under it:

    BadgeMeansThe note shows
    StaleThe source text changed since this translation was confirmedWas (the source text it was confirmed against, struck through) and Now (the source text today). When the old text is not stored, only Now
    UnconfirmedNobody confirmed this translation against the source text yet, or it changed after it was confirmed, for example in another editor or a git pullA sentence saying so, and the source text when it was confirmed once and then changed
    The key farewell with an amber 1 TO CHECK chip: English reads See you soon, and the German cell Auf Wiedersehen carries a STALE badge with a note showing Was Goodbye struck through, Now See you soon, and an Accept translation button. The Issues panel lists two stale translations and one unconfirmed translation

    A plural key gets a badge per form, so you can see which form is stale. A select key gets one badge for the whole message per locale.

    Confirm a translation that still fits#

    A stamp is confirmed in one of two ways:

    • Edit it. Type a change and let auto-save write it. That save confirms the translation against the source text you saw. You take no separate step.
    • Accept it as it stands. Click Accept translation in the note under the cell. The marker goes away and the translation's text does not change. For an ordinary cell, Accept writes only the stamps file.

    What does not confirm a translation:

    • an edit made outside StringLane, in another editor, a script or a git pull;
    • an edit to the source text itself, which makes that key's translations stale instead;
    • a repair from Fix param, the wrench, or Fix with AI, which keeps the cell stale or current as it was.

    A missing cell filled by ✨ Auto-translate, Fix all with AI or a translate dialog is confirmed, because you asked for that translation.

    Find every marked translation#

    • The sidebar filter. Open the filter popover next to the search box and tick Stale or unconfirmed to keep only the keys that have a marked cell. It combines with the other filters. See How to Search and Filter Translations.
    • The key header. A key with marked cells shows an amber "N to check" chip.
    • The sidebar dot. A key with a marked cell gets the amber warning dot.
    • The Issues panel. Each marked cell is a row titled "Stale translation" or "Unconfirmed translation". A plural form is written as key[quantity], such as items[one]. These rows have no fix button: the fix is your judgement.
    • The setting itself. With stamps on, Settings → Project → General shows N to check and a Show them link that switches to the list layout and applies the filter.
    The sidebar filter popover with Stale or unconfirmed ticked, described as keys with a translation to check against its base text. Behind it, the key subtitle with its German cell marked UNCONFIRMED and an Accept translation button

    Xcode String Catalogs#

    When Xcode marks a unit needs_review and its source text did not change, StringLane shows it as Stale with the note "Xcode marks this translation for review. Accept sets it to translated." There is no Was line, because there is nothing to compare. Accept translation on such a unit also sets it to translated in the .xcstrings file, in the same save.

    When the stamps file cannot be used#

    If stringlane.yaml turns stamps on but .stringlane/source-stamps.json is missing or unreadable, an amber banner says Source stamps are paused, names the file and says what to do. The markers and the filter are hidden meanwhile, and your edits still save to the locale files. An amber Stamps paused button in the status bar brings the banner back after you close it.

    • The file does not exist, for example because a teammate did not commit it: if a teammate has it, pull it. Otherwise click Create stamps file, read the Create the stamps file? dialog, and click Create. StringLane marks today's translations as confirmed against today's source text.
    • It is not valid JSON: restore it from version control, then reload the project.
    • It, or the .stringlane folder, is a symbolic link, or a folder where a file should be: replace it with a plain file or folder, then reload.

    The file watcher covers locale files only. After you run stringlane accept or stringlane update in a terminal, reload the project to see the cells they confirmed.

    Turn it off#

    Turn off Track stale translations. StringLane saves your pending edits and accepts first, then writes sourceStamps: false to stringlane.yaml. The markers go away, and .stringlane/source-stamps.json stays on disk, so turning stamps on again keeps every stamp it holds.

    Frequently asked questions

    How do I find translations that are out of date after I changed the source text?
    Turn on source stamps in the StringLane desktop app under Settings → Project → General → Source stamps, with the Track stale translations switch. StringLane then records which source text each translation was confirmed against, in .stringlane/source-stamps.json, and marks a translation Stale when its source text changes. The Stale or unconfirmed filter in the sidebar lists every marked key.
    What does Unconfirmed mean in StringLane?
    An Unconfirmed translation is one nobody has confirmed against the current source text, or one that changed after it was confirmed, for example in another editor or a git pull. Saving an edit to it in the StringLane desktop app confirms it, and so does the Accept translation button under the cell.
    Does turning on source stamps change my locale files?
    No. It writes two things: a new .stringlane/source-stamps.json file, and the line sourceStamps: true in stringlane.yaml. Commit both. Your locale files change only when you edit a translation, or when you accept a unit Xcode marks for review in a String Catalog.
    The StringLane app showing the key home.welcomeBack, used in three places in Swift files, with four locale cards: English, German and Japanese in place and French flagged PARAM.

    See every locale side by side

    The desktop app flags what is missing or broken on the cell, and saves to your files.

    Download for macOS

    14-day trial, no email