ADR-0013 — Bilingual routing: PT-BR default, EN first-class
Status: Accepted (implemented 2026-10-10, DS-0)
Context
Portuguese is the site’s primary language, and English must be equally complete.
Decision
- Astro i18n with
prefixDefaultLocale: false: PT-BR at/, EN under/en/. - Paths are localized per page (
/creditos/↔/en/credits/) through a single route map (apps/site/src/i18n/routes.ts). Every page declares its alternates, which drivehreflang(+x-default→ PT) and the DSLocaleSwitch. - The locale contract (
Locale,htmlLang,localeNames,t()for the DS’s own strings) lives in@400/ds. Page copy never does: components take it via props/slots. - Content that exists in one language only is served with the correct
langand labeled as such, never machine-translated silently.
Consequences
- Artifact write-ups are EN-only until the site phase (S-1) adds PT versions. A CI check for one-locale-only entries lands with that content model.
/system/*specimens are English-chrome andnoindex(internal tooling for now). Their specimens show both languages.- Astro’s sitemap pairs alternates only by identical paths, so localized slugs rely on
the in-page
hreflanglinks.