Treat copy as product data
Source text, translator context, placeholders, tags, plural logic, and obsolete messages stay visible instead of disappearing into loose files.
Product-grade translation catalogs
Ferrocat is a Rust-native catalog engine for teams that want localized copy to be reviewable, testable, and ready for runtime delivery. It keeps source text, translator context, validation, QA, and compiled payloads in one inspectable layer.
cargo add ferrocatWhy Ferrocat
Source text, translator context, placeholders, tags, plural logic, and obsolete messages stay visible instead of disappearing into loose files.
Run structured audits for missing translations, empty strings, stale target entries, ICU drift, metadata conflicts, and fuzzy flags before release.
Keep machine-generated entries traceable with model, confidence, modified time, and a hash that clears stale metadata after human edits.
Compile locale-resolved artifacts with stable keys and explicit fallback behavior instead of reparsing translator files in production.
Performance
Ferrocat is designed for catalogs that grow with real products. Large translation sets get byte-oriented parsing, borrowed read paths, deterministic updates, structured diagnostics, runtime compilation, and benchmark coverage.
PO parsing works directly on byte sequences, keeping the hot path tight for large catalogs.
Read-heavy paths can borrow from the input buffer. Mutation flows use owned catalog structures.
Parser, serializer, merge, combine, and runtime paths are measured against repeatable fixtures.
Standards where they help
Ferrocat presents PO, ICU MessageFormat, and NDJSON as explicit choices instead of hidden implementation details. Use translator-friendly files when people need editing context, line-oriented records when teams need clean diffs, rich-message semantics when copy needs runtime values, and compiled artifacts when applications need fast loading.
Use the catalog shape many translation tools already understand, with comments, references, flags, and plural forms preserved.
Keep translator-facing PO files while authoring messages with placeholders, formatting, plurals, selects, and structural diagnostics.
Use one-message-per-line JSON records that are easier to review, merge, stream, batch, and hand to external systems.
Evidence
Start here
Install Ferrocat, parse your first catalog, and see the main product workflows.
OpenChoose between parsing, catalog updates, audit reports, runtime compilation, and rich-message diagnostics.
OpenBenchmark methodology, fixtures, and performance history.
OpenSee how the JS and TS framework can use Ferrocat as its shared catalog engine.
OpenADRs and engineering notes behind semantic choices, storage modes, and hot paths.
OpenAudit completeness, stale entries, ICU drift, metadata conflicts, obsolete entries, and visible fuzzy flags.
Open