ferrocat
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:
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 APIsserde: serde support in the re-exportedferrocat-poandferrocat-icutypescompile,mt, andplurals: reserved subsystem aliases that currently implycatalog; 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: