Skip to content

Latest commit

 

History

History
55 lines (43 loc) · 2.69 KB

File metadata and controls

55 lines (43 loc) · 2.69 KB

i18n status: Applies — deferred to first public release

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.

Current boundary

  • 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.

Implementation entry point

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.

Release gate

The first public tagged release is blocked until:

  1. the gettext entry point and extraction configuration are merged;
  2. English and Spanish catalogs compile with complete key and placeholder parity;
  3. a qualified Spanish-language reviewer approves CEQA terminology and the advisory/non-legal framing;
  4. console and HTML report tests cover English, Spanish, and deterministic fallback; and
  5. the central applicability registry marks CEQA Preflight as I18N applies.

Declared: 2026-07-23 · Owner: Maintainer · Review by: 2026-10-23