Skip to content

Phase 9: /om explanation page + public strings file with English translation - #23

Closed
ArneeMe wants to merge 1 commit into
claude/phase-8-e2efrom
claude/phase-9-om-i18n
Closed

Phase 9: /om explanation page + public strings file with English translation#23
ArneeMe wants to merge 1 commit into
claude/phase-8-e2efrom
claude/phase-9-om-i18n

Conversation

@ArneeMe

@ArneeMe ArneeMe commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Stacked on #22 (chain: #16#17#20#21#22 → this). Retarget bases downward as parents merge.

/om — the "what does attester.no actually store?" page

A plain-language explanation for volunteers and verifiers:

  • the submission lifecycle, including the 24h expiry and the delete-at-issuance transaction
  • a side-by-side stored vs. never stored comparison
  • how verification works without stored contents (the QR code carries the data; the database only holds the fingerprint), and what that means if the database ever leaks
  • how to verify a certificate, and contact info

Linked from the landing page's privacy card, the volunteer form's help dialog, and the verify page.

One strings file, Norwegian + English

  • Every user-facing string on the public surface (landing, /om, form, verify, login/glemt/reset/registrer) lives in src/strings.ts, typed so both languages must stay in sync.
  • Language is URL-based: ?lang=en, Norwegian default — works identically in server and client components and survives link sharing. A Norsk | English toggle sits on each public page.
  • Validation messages and the confirm-dialog cancel label are parameterized with Norwegian defaults, so admin surfaces are untouched.
  • Deliberately out of scope: the admin UI stays Norwegian for now (orgs administering it are Norwegian); translating it later is mechanical now that the pattern exists.

Verification

  • Typecheck, lint, 108 unit tests, production build pass.
  • 7/7 E2E pass, including a new test walking the English landing page → /om → toggling back to Norwegian.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BFHkXUuHJME4cF9AJWbavB


Generated by Claude Code

/om explains to end users exactly what attester.no stores and how
verification works: the submission lifecycle (incl. the 24h expiry and
delete-at-issuance), a stored/never-stored comparison, how the QR code
carries the data while the database only holds a fingerprint, and how
to verify. Linked from the landing page, the form's help dialog, and
the verify page.

Every user-facing string on the public surface (landing, /om, form,
verify, login/glemt/reset/registrer) now lives in src/strings.ts in
both Norwegian and English. Language is URL-based (?lang=en, Norwegian
default) so it works in server and client components and in shared
links; a Norsk|English toggle sits on each public page. Validation
messages and the confirm-dialog cancel label are parameterized with
Norwegian defaults so admin surfaces are unchanged — the admin UI is
deliberately not localized yet.

New e2e test walks the English landing → /om → toggle back to Norwegian.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFHkXUuHJME4cF9AJWbavB
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying inf319-certificate with  Cloudflare Pages  Cloudflare Pages

Latest commit: 1894411
Status: ✅  Deploy successful!
Preview URL: https://8e532bad.inf319-certificate.pages.dev
Branch Preview URL: https://claude-phase-9-om-i18n.inf319-certificate.pages.dev

View logs

ArneeMe commented Jul 12, 2026

Copy link
Copy Markdown
Owner Author

Superseded by the review-ordered stack #25#29 (/om + strings/EN landed in #26, the content tier). Closing.


Generated by Claude Code

@ArneeMe ArneeMe closed this Jul 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants