StringLane

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

    How-To

    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.

    Last updated

    The Issues Panel is the project-wide view of every validation problem StringLane has detected. Press ⌘J (or Ctrl+J on Windows/Linux) to open it. Once a project has any issues, it opens on first load too.

    Issues Panel docked to the right rail showing a mix of Missing, Param, and ICU issues

    What you see#

    One row per (locale, key) issue:

    • Severity dot: red for errors, amber for warnings, blue for info.
    • Title: short summary ("Missing translation", "Placeholder mismatch", "Guarded word", "Malformed placeholder", "ICU syntax error", "Count without plural forms", "Stale translation").
    • Locale · key: quick context for which file and which key the row belongs to.
    • Per-row action: ✨ Auto-translate, Fix param, Fix syntax, Fix with AI or Add plural forms…, depending on the issue type. Some rows have none.

    The panel header shows a total count badge (Issues · N); the footer shows Fix all with AI when there's at least one AI-addressable row.

    What you can do#

    ActionHow
    Jump the editor to that keyClick the row
    Auto-translate a Missing or Same-as-source rowClick ✨ Auto-translate on the row
    Fix a placeholder mismatch in placeClick Fix param
    Fix a malformed {placeholder} in placeClick Fix syntax
    Fix an ICU syntax error or missing plural categoryClick Fix with AI
    Give an i18next count its plural formsClick Add plural forms… on a Count without plural forms row
    Confirm a Stale or Unconfirmed translationNo row action: edit the cell, or click Accept translation under it
    Sweep every AI-addressable issueClick footer Fix all with AI
    Toggle the panel⌘J
    Switch dock between right rail and bottom drawerCommand Palette → "Toggle Issues panel orientation"

    Add plural forms to a count#

    An i18next base string that shows {{count}} followed by a word, such as {{count}} genres, with no plural forms in any language, reads "1 genres" for every count. Its row is Count without plural forms, reported once on your base language.

    1. Click Add plural forms… on the row. The Add plural forms dialog opens with one field per plural category your base language needs, such as one and other in English.
    2. Type each form.
    3. Click Write plural forms. If you have unsaved edits, the button reads Save and write plural forms, and StringLane saves them first; if that save fails, nothing is written.

    The forms are written to that key's base file only. No AI is involved, and Fix all with AI leaves these rows out. Other languages keep their text, and the panel then lists the forms each of them still needs, which you can fill like any missing plural form.

    Rows with no fix button#

    • Stale translation and Unconfirmed translation appear when the project has source stamps on. Whether a translation still fits its changed source text is your call, so the row offers no fix. Edit the cell, or click Accept translation under it. See How to Find Translations That Went Stale.
    • A language's own plural, width or device forms. A language can hold a string as plural, width or device forms while the base holds one string, in a String Catalog, an iOS .stringsdict, or an i18next file under a base that shows {{count}}. StringLane does not write over those forms yet, so their rows cannot be fixed here, and Fix all with AI leaves them out. Edit them in the locale file.
    • Info rows, with a blue dot, are there to be read, not swept.

    Fix-with-AI: what it does and doesn't change#

    Fix-with-AI is structural: the AI corrects the broken syntax (an unclosed brace, a missing other plural category, a renamed {name} placeholder) and preserves the rest of your translation. It does not retranslate. If a slot is genuinely empty, use ✨ Auto-translate instead. That's what fills missing translations.

    The bulk Fix all with AI button at the footer applies the same logic across every affected row in one pass. Like the Command Palette's "Translate all missing", it batches per locale and per issue class for speed; failures on one bucket don't stop the others.

    Right rail vs bottom drawer#

    Pick the orientation that fits your screen:

    • Right rail (default, 280px wide): best on wide monitors. Drag the divider to resize.
    • Bottom drawer (220px tall): best on narrow laptops; gives the detail pane more horizontal space. Drag the top edge to resize.

    Toggle from the Command Palette: type panel orientation and pick "Toggle Issues panel orientation". State persists per project.

    Tips#

    • The panel defaults open only when the project actually has issues, so clean projects don't see empty chrome.
    • The status-bar error and warning chips ("3 errors", "5 warnings") toggle the panel on click.
    • The sidebar's Issues only filter narrows the key list by keys that have any issue. The Issues Panel lists each individual (locale, issue) row: use whichever fits the task.
    • The ⌘J shortcut is rebindable under Customize keybindings.
    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