**Why** The event was in Lisbon, and a lot of the community reads Portuguese first. **What to build** - i18n with a small runtime (for example `i18next`) and every UI string in `apps/web/src/components` and `pages` extracted into message files. - `pt-PT` as the first translation. - A language toggle in the footer (`components/layout/site-footer.tsx`), persisted with the existing `hooks/use-local-storage-state.ts`. - Project descriptions and chat answers are not translated. **Acceptance criteria** - No hardcoded English strings are left in `components/` and `pages/`, enforced by a check that runs in CI. - Switching the language updates the whole page without a reload. --- See [CONTRIBUTING.md](https://github.com/devodii/hackproof/blob/main/CONTRIBUTING.md) for conventions.
Activity