ferrocat 2.2.0

Rust-first gettext and ICU toolkit for PO parsing, catalog updates, and MessageFormat parsing.
Documentation

ferrocat

crates.io docs.rs

Public umbrella crate for the ferrocat workspace.

Ferrocat is a Rust-native translation catalog engine. It gives applications and host-language adapters one place to parse, update, audit, validate, and compile translation catalogs into runtime-ready data.

Add it with:

cargo add ferrocat

It re-exports the stable Rust API from ferrocat-po and ferrocat-icu.

Feature flags

ferrocat enables full by default. full currently means catalog plus serde, so the default build exposes the complete current API surface.

  • catalog: high-level catalog parse, update, combine, audit, metadata, FCL, plural, and runtime compile APIs
  • serde: serde support in the re-exported ferrocat-po and ferrocat-icu types
  • compile, mt, and plurals: reserved subsystem aliases that currently imply catalog; they do not reduce or split the catalog API surface yet

Use default-features = false for low-level PO and ICU parsing without the catalog layer. Enabling compile, mt, or plurals currently has the same dependency effect as enabling catalog.

Use the umbrella crate when you want one dependency for the full catalog workflow:

  • translator-friendly catalog parsing and serialization
  • deterministic catalog updates and combination
  • AI translation metadata for machine-generated entries, including stale-metadata cleanup after manual edits
  • release QA through structured audit reports
  • rich-message diagnostics for placeholders, plural/select logic, formatters, and tags
  • host-neutral runtime artifact compilation

At the catalog layer, ferrocat supports three explicit modes:

  • classic Gettext catalog mode: Gettext PO + gettext-compatible plurals
  • ICU-native Gettext PO mode: Gettext PO + ICU MessageFormat
  • ICU-native FCL catalog mode: FCL (Ferrocat Catalog Lines) storage + ICU MessageFormat

FCL + gettext-compatible plurals is intentionally unsupported.

See the repository's FCL format specification for the line format and escaping rules behind ICU-native FCL storage.

Repository, docs, and contribution guidelines: