7.5 KiB
ISSUE-279 — i18n MVP close-out note
Issue: #279 ([READY][#175][P5] MVP close-out note: migration/changelog + release-readiness checklist for i18n)
Scope
Dette dokument lukker MVP-sporet for issue #175 med tre konkrete ting:
- en migrationsnote for release/deploy,
- changelog-indhold der kan genbruges i næste release-note,
- en release-readiness checkliste for i18n, forankret i et verificeret snapshot af
mainved reviewtidspunktet.
Repo-state ved review-opdatering:
mainpeger nu på merge commit1bc4c27(PR #283), og inkluderer også PR #282 via merge commit6ad5430.- Denne note er opdateret mod repo-tilstanden verificeret 2026-03-13 UTC, ikke en løbende garanti for senere
main-ændringer. - Der er ingen åbne release-afklaringer tilbage for PR #282/#283; begge er allerede landet på
main.
Current i18n MVP state on main
Følgende er allerede til stede på main:
- Shared contract i
shared/i18n/lobby.json- default locale:
en - supported locales:
en,da - fælles frontend/backend keyspace + fallback-regler
- default locale:
- Django bootstrap via
partyhub/i18n_bootstrap.pyogpartyhub/settings.pyLocaleMiddlewareaktivLANGUAGE_CODE+LANGUAGESbootstrappes fra shared catalog
- Backend locale/error flow via
lobby/i18n.py- normalisering af locale-tags
- locale-aware fejlpayload med
error_code,error,locale - fallback til
ennår locale eller oversættelse mangler
- Angular MVP wiring via
frontend/shared/i18n/lobby-loader.tsfrontend/angular/src/app/lobby-i18n.ts- host/player shells med locale switch og shared copy-opslag
- Drift/parity guardrails
shared/i18n/key-manifest.jsonscripts/check_i18n_drift.py- frontend parity/contract tests
- Existing documentation/artifacts
docs/I18N_ARCHITECTURE.mddocs/ISSUE-175-I18N-SHARED-CONTRACT-ARTIFACT.mddocs/ISSUE-225-BACKEND-I18N-BASELINE-ARTIFACT.mddocs/ISSUE-257-SHARED-I18N-KEYSPACE-FRONTEND-LOADER-ARTIFACT.mddocs/ISSUE-207-I18N-AUDIO-SMOKE-ARTIFACT.mddocs/i18n-drift-check.md
Migration note for release
Schema impact
Der er ingen nye Django-migrations i selve i18n-MVP-sporet på main.
Den i18n-relaterede leverance ligger i shared catalog, locale-bootstrap, error-payload-kontrakt, Angular wiring og test/documentation. Den kræver derfor ikke en særskilt i18n-database-migration for at gå i release.
Release/deploy expectation
Selv om issue #279 ikke introducerer schemaændringer, skal release-flow stadig følge repoets generelle migreringsgate:
python manage.py makemigrations --check --dry-run
python manage.py migrate --check --noinput
Hvorfor: release-policyen kræver, at vi undgår code/schema drift, og staging-smoke-suiten forventer eksplicit migration consistency check.
Praktisk migrationskonklusion
Til release-notes/deploy-runbook kan i18n-sporet beskrives sådan her:
- Migration impact: none for i18n MVP itself
- Deploy requirement: run standard Django migration consistency checks anyway
- Rollback note: rollback er primært kode-/asset-baseret (shared catalog, frontend bundles, backend locale resolver), ikke schema-baseret
Suggested changelog content
Følgende tekst kan bruges direkte i næste unreleased/release-sektion:
### i18n
- Shared da/en lobby i18n contract is now wired across Django and Angular MVP flows via `shared/i18n/lobby.json`.
- Backend error payloads expose stable locale-aware fields (`error_code`, `error`, `locale`) with fallback to English for unsupported locales.
- Angular host/player shells now consume shared i18n copy, persist preferred locale, and keep audio-policy messaging aligned with the shared catalog.
- Added repo guardrails for i18n drift/parity through the shared key manifest, drift checker, and focused frontend/backend contract tests.
- Release migration impact for the i18n MVP is **none** beyond the standard Django migration consistency checks.
Kort version til annoterede release-notes:
## i18n MVP close-out
- Shared da/en contract is active across backend + Angular MVP shell.
- Locale fallback remains `en` for unsupported requests and missing translations.
- No i18n-specific schema migration is required; keep standard `migrate --check --noinput` in release verification.
Release-readiness checklist for i18n
Status er vurderet mod verificeret snapshot main@1bc4c27 (reviewet 2026-03-13 UTC, inkl. PR #282/#283).
1) Shared contract and locale behavior
- Shared catalog findes i
shared/i18n/lobby.json. - Default/supported locales er dokumenteret og implementeret som
en+da. - Backend bruger shared contract til locale-aware fejlbeskeder.
- Frontend/Angular bruger shared loader + shared keyspace.
- Fallback-regel til
ener dokumenteret og testet.
2) Verification artifacts and local checks
- Arkitektur-note findes:
docs/I18N_ARCHITECTURE.md. - Baseline artifact for issue #175 findes.
- Backend artifact for issue #225 findes.
- Frontend/shared loader artifact for issue #257 findes.
- Drift-check dokumentation findes i
docs/i18n-drift-check.md. - Parity artifact fra issue #277 er på
mainvia PR #282 (merge commit6ad5430).
3) Code readiness on current branch topology
- Angular MVP host/player i18n flow er på
main(PR #281). - Shared locale/bootstrap wiring er på
main. - Django i18n hardening fra issue #275 er på
mainvia PR #283 (merge commit1bc4c27). - PR #283 er ikke længere en separat release-afklaring; hardeningen er allerede indarbejdet på
main.
4) Release gate before shipping i18n as “done”
- PR #282 er allerede merged, så parity-artifact-status er afklaret på
main. - PR #283 er allerede merged, så backend hardening-status er afklaret på
main. - Kør drift-check fra repo root:
python3 scripts/check_i18n_drift.py - Kør backend i18n regressions:
. .venv/bin/activate && python manage.py test \ partyhub.tests_i18n_bootstrap \ lobby.tests.I18nResolverTests - Kør frontend shared-contract/parity checks:
cd frontend && npm test -- --run \ tests/lobby-loader.parity.test.ts \ tests/lobby-i18n.contract.test.ts - Kør Angular MVP locale smoke:
cd frontend/angular && npm test -- --run \ src/app/lobby-i18n.spec.ts \ src/app/i18n-mvp-flow-smoke.spec.ts \ src/app/features/host/host-shell.component.spec.ts \ src/app/features/player/player-shell.component.spec.ts - Bekræft standard migration consistency gate:
. .venv/bin/activate && python manage.py makemigrations --check --dry-run . .venv/bin/activate && python manage.py migrate --check --noinput - Følg
docs/RELEASE_POLICY.md: staging deploy,/healthz, smoke-resultat og changelog-reference før tag.
Close-out conclusion
Konklusion: i18n-MVP'en er implementeret på main, og issue #279 leverer den manglende release-/migration-closeout dokumentation uden nye kodeændringer i app-logikken.
PR #282 (parity artifact) og PR #283 (Django i18n hardening) er nu begge merged på main, så close-out-noten, changelog-teksten og release-readiness-checklisten kan behandles som indbyrdes konsistente for det verificerede snapshot.
Det betyder, at de resterende release-gates for i18n nu er de almindelige verificeringstrin (drift-check, backend/frontend-smoke, migrations-konsistens, staging deploy og changelog-reference) — ikke længere afklaring af om #282/#283 skal lande.