Step 1: i18n foundation (@angular/localize) + data inventory
Domain reference data already lives in the backend (per ADR-0001); the only residual "move" was ~90 inlined Dutch UI strings with no i18n layer. - Wire @angular/localize ($localize) — Angular first-party, no third-party lib - Pin the pattern on shared/ui/async: Dutch fallbacks → language-agnostic input()s with localizable $localize defaults (English-shared-UI rule) - CLAUDE.md: drop i18n (now in scope) + stale "real backend"/"OpenAPI codegen" (both already shipped); document the $localize convention Bulk string sweep deferred to Step 2 to avoid touching ~36 files twice. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
11
CLAUDE.md
11
CLAUDE.md
@@ -122,6 +122,13 @@ not heavy component tests.
|
||||
- **Naming:** shared/reusable UI is **English** (language-agnostic: `button`,
|
||||
`wizard-shell`); domain contexts are **Dutch** (`registratie`, `herregistratie`,
|
||||
`*.machine.ts`). Pick the language by which side of the seam the code is on.
|
||||
- **User-facing copy = `$localize`.** Every user-visible string is wrapped in Angular's
|
||||
first-party `$localize` (no third-party i18n lib), with a stable custom id
|
||||
(`` $localize`:@@context.key:Tekst` ``). Source locale is `nl`; a second locale is a
|
||||
translation file, not a code change (the seam). Shared/English components must **not**
|
||||
hardcode Dutch — expose copy as `input()`s with localizable defaults; the domain caller
|
||||
supplies the text (see `shared/ui/async`). Format-validation messages in
|
||||
`domain/value-objects/` stay co-located but are still `$localize`-wrapped.
|
||||
- **Forms = one idiom.** Any form with validation or submission uses a `*.machine.ts`
|
||||
(Model/Msg/reduce) + value objects + a `submit-*` command returning `Result` — the
|
||||
same shape as the wizards, whether it's one step or many. Don't hand-roll mutable
|
||||
@@ -148,5 +155,5 @@ dispatch messages). Worked example: the intake wizard (`herregistratie/`).
|
||||
|
||||
## Out of scope (POC, don't build unprompted)
|
||||
|
||||
Real auth/DigiD, real backend, i18n, NgRx, licensed Rijkshuisstijl font/logo,
|
||||
runtime DTO validation on every endpoint, multi-tab session sync, OpenAPI codegen.
|
||||
Real auth/DigiD, NgRx, licensed Rijkshuisstijl font/logo,
|
||||
runtime DTO validation on every endpoint, multi-tab session sync.
|
||||
|
||||
Reference in New Issue
Block a user