Skip to content

Catalog Modes

At the high-level catalog layer, Ferrocat keeps storage format and message semantics explicit so teams can reason about migrations and runtime behavior without hidden fallback rules.

The three supported modes

ModeStorage formatMessage modelUse when you want to...
Classic Gettext catalog modeGettext POGettext-compatible pluralsstay close to traditional gettext catalogs and msgid_plural / msgstr[n] workflows
ICU-native Gettext PO modeGettext POICU MessageFormatkeep Gettext PO files, comments, and tooling, but author messages with ICU plural/select/formatting features
ICU-native NDJSON catalog modeNDJSON catalog storageICU MessageFormatstore catalogs as line-oriented JSON records that are easier to diff, stream, batch, and hand to external services

There is intentionally no NDJSON + Gettext-compatible plurals mode.

Why the split matters

  • Gettext PO and NDJSON are storage decisions
  • gettext-compatible plurals and ICU MessageFormat are semantics decisions
  • explicit combinations make migrations and runtime compilation easier to reason about

Recommended reading paths