StringLane

Browse docsHow to Use the Format Editor
How-To

How to Use the Format Editor

Format-specific editing helpers for iOS .strings, Android XML, and i18next JSON projects in StringLane.

StringLane supports four file formats and adjusts its editing behavior for each one. The format is detected automatically from your project files — no configuration required.

Supported formats

FormatFile typeUsed in
Flutter ARBapp_*.arb (JSON)Flutter, Dart
iOS StringsLocalizable.stringsiOS, macOS (UIKit/AppKit)
Android XMLres/values*/strings.xmlAndroid
i18next JSON*.json in locale foldersReact, Node.js, web apps

Flutter ARB

ARB (Application Resource Bundle) is a JSON format with a specific structure. StringLane:

  • Reads and writes the @key metadata objects (@description, x-max-length, x-guarded) without touching them
  • Preserves key order exactly as it appears in the source file
  • Handles ICU MessageFormat strings in values (see Working with ICU Plurals)
  • Shows {placeholder} names as Param badges when they're mismatched between locales

See How to Work with ARB Metadata Annotations for details on the @key system.

iOS .strings

Standard iOS .strings format uses "key" = "value"; pairs, one per line. StringLane:

  • Preserves all /* comment */ blocks above each key — they're not editable in StringLane but are passed through intact
  • Reads .lproj-based locale structure (en.lproj/, fr.lproj/, etc.)
  • Handles format specifiers like %@, %d, %1$@ — mismatches between locales are flagged as Param badges
  • Does not support .stringsdict (plural files) directly — these are distinct files; work on them in the ARB view if your project uses a dual system
Table View with an iOS .strings project loaded showing format specifiers in cells

Android XML

Android resources use <string> tags in res/values/strings.xml. StringLane:

  • Reads all <string name="...">value</string> entries
  • Handles <plurals> elements as multi-value entries, one per quantity (zero, one, two, few, many, other)
  • Preserves <![CDATA[...]]> wrappers and XML special characters (&amp;, &lt;, etc.)
  • Maps locale variants to values-fr/, values-de/, etc.
  • Format specifiers (%s, %d, %1$s) are treated like ARB placeholders for Param validation
Table View with an Android strings.xml project loaded

i18next JSON

i18next uses JSON files with locale code as the folder name (en/translation.json, fr/translation.json). StringLane:

  • Supports nested key paths using dot notation (e.g. settings.account.title appears as a single row)
  • Handles {{variable}} interpolation syntax — mismatches flagged as Param badges
  • Preserves key order and nesting structure when writing back to disk
  • Does not flatten nested keys — they stay nested
Table View with an i18next project showing nested keys as dot-notation paths

Format detection

If StringLane loads a mixed folder (multiple formats), each format is shown in a separate section or you're prompted to select which to work with. Most projects use a single format throughout.