CLI

Managing Strings

Local-first string editing with CSVs, sections, and the text and icu formats.

The local-first model

strings set and strings rm edit the CSV files in your workspace. They never touch the platform unless you pass --push. Work offline, review your changes, then sync everything in one step with push. Add --push to any single edit to sync that one key immediately while editing.

Reading strings

CommandWhat it does
airstrings strings lsList all strings from the platform (pages automatically)
airstrings strings ls --locale en --limit 50Filter by locale, bound the page size
airstrings strings ls --key-prefix home.Filter by key prefix
airstrings strings ls --localList local workspace strings (offline, no credentials needed)
airstrings strings ls --local --section onboardingList one section, offline
airstrings strings get welcome.titleGet a single string from the platform

Writing strings

Set values for multiple locales in one call:

airstrings strings set welcome.title en="Hello" es="Hola" --format text
airstrings strings set onboarding.welcome en="Welcome!" it="Benvenuto!" --format text --section onboarding
airstrings strings set app.tagline en="The best app" --format text --push
  • --format is required and must be text or icu. There is no default: a missing or invalid format is rejected before anything is written.
  • --section places the key in a section.

Choosing a format

  • text: plain text, served exactly as written.
  • icu: ICU MessageFormat with plurals, select, number and date formatting, interpolation.

Braces in text are served verbatim. A text value containing {…} triggers a non-fatal warning: the braces are not interpolated, and your app will display them literally. Use icu when you need interpolation.

Removing strings

airstrings strings rm old.unused.key
airstrings strings rm old.unused.key --push
airstrings strings rm welcome.title --locale es --push

Without --locale, the whole key is removed. With --locale, only that locale's value is removed.

Sections

Sections group related strings: each section gets its own subdirectory and CSV file, while unsectioned strings live in the root strings.csv.

airstrings sections list
airstrings sections create onboarding --description "Onboarding flow strings"
airstrings sections delete sec_xxxxx

Locales

airstrings locales

Lists the project's locales with string counts per locale.

The CSV format

Workspace CSVs use one row per key + locale pair:

key,locale,value,format
  • RFC-4180 quoting.
  • Deterministically sorted by key, then locale (diffs stay stable).

Edit via commands, not by hand. strings set and strings rm write atomically, handle RFC-4180 quoting, and validate formats for you. Hand-editing CSVs and bulk pushing skips those checks.

On this page