Reason: The pre-alpha report strings are still embedded in source and require a gettext extraction seam plus qualified Spanish-language terminology review.
CEQA Preflight produces natural-language console and HTML reports for planners, clerks, consultants, and reviewers working in a California civic process. That surface does not qualify for the portfolio standard's single-developer-operator exemption. The current English-only implementation is therefore a known pre-release gap, not an N/A control.
- Command names, machine-readable JSON field names, rule IDs, and source citations remain stable, untranslated identifiers.
- Console messages, HTML report prose, finding summaries, remediation guidance, CLI help, and user-visible errors are localizable content.
- Filing-package text is user data. It must never be sent to a translation service or added to a message catalog.
- No language may imply that an advisory finding is a legal determination.
The opt-in ai commands (ADR 0002) added
user-facing prose. Until the gettext seam exists, every such string lives in
ceqa_preflight.ai.messages so the seam can wrap it in one pass; none of it
may imply that an advisory result is a legal determination. The Spanish
phrasings in the refusal suite (evals/refusal/cases.json) were written by
the maintainer and await the qualified review named below.
Introduce a small ceqa_preflight.i18n module backed by Python gettext. Wrap
localizable source strings in _() and plural forms in ngettext(), extract a
committed POT file, and ship reviewed en and es catalogs. Locale selection
must be explicit at the CLI boundary, with deterministic English fallback; it
must not use network, IP, or document-content inference.
make verify must then enforce catalog compilation, EN/ES key and placeholder
parity, BCP 47 locale validity, and extraction freshness. Report-schema tests
must prove that locale selection changes human-readable prose but never
machine-readable keys, rule IDs, finding status values, or citations.
The first public tagged release is blocked until:
- the gettext entry point and extraction configuration are merged;
- English and Spanish catalogs compile with complete key and placeholder parity;
- a qualified Spanish-language reviewer approves CEQA terminology and the advisory/non-legal framing;
- console and HTML report tests cover English, Spanish, and deterministic fallback; and
- the central applicability registry marks CEQA Preflight as I18N
applies.
Declared: 2026-07-23 · Owner: Maintainer · Review by: 2026-10-23