[i18n] Operator UX — settings, pilot copy, Intl, a11y, API errors #909

Closed
opened 2026-05-06 19:49:50 +00:00 by claude-desktop · 1 comment
Collaborator

Consolidates US-B1 … US-B5.

Spec


Language in settings (was US-B1)

  • Language control with native labels for each supported locale.
  • Change applies immediately on pilot Paraglide surfaces.
  • Persists across reload (localStorage); syncs to server when preferredLocale (or chosen field) exists.

Pilot surfaces (was US-B2)

  • Login, onboarding, settings-appearance: Paraglide-only user-visible copy (spec exceptions only).
  • Pilot locale: at least one ICU plural/select proof.
  • CI: no missing keys for pilot routes / checked-in locales.

Intl formatting (was US-B3)

  • Pilot screen: date/time via Intl (or wrapper) tied to active locale.
  • One numeric or list display uses locale-aware formatting.

lang / dir (was US-B4)

  • document.documentElement.lang matches active locale after navigation and after settings change.
  • RTL locales set dir="rtl"; LTR sets ltr.
  • A11y tests green; test asserts lang under non-default locale on a pilot route.

API errors (was US-B5)

  • Known errors map to Paraglide messages.
  • Unknown: generic localized message; raw detail optional in "Technical details".
  • Monaco/CodeMirror/third-party chrome out of scope (per spec non-goals).

Depends on

#908 (Platform foundations — Paraglide, locale URLs, resolution)

Consolidates **US-B1 … US-B5**. ## Spec - [specs/i18n-paraglide-user-stories.md](https://forge.jacquin.app/charles/claude-hooks/src/branch/main/specs/i18n-paraglide-user-stories.md) - [specs/i18n-paraglide.md](https://forge.jacquin.app/charles/claude-hooks/src/branch/main/specs/i18n-paraglide.md) --- ### Language in settings (was US-B1) - [ ] Language control with native labels for each supported locale. - [ ] Change applies immediately on pilot Paraglide surfaces. - [ ] Persists across reload (`localStorage`); syncs to server when `preferredLocale` (or chosen field) exists. ### Pilot surfaces (was US-B2) - [ ] Login, onboarding, settings-appearance: Paraglide-only user-visible copy (spec exceptions only). - [ ] Pilot locale: at least one ICU plural/select proof. - [ ] CI: no missing keys for pilot routes / checked-in locales. ### Intl formatting (was US-B3) - [ ] Pilot screen: date/time via `Intl` (or wrapper) tied to active locale. - [ ] One numeric or list display uses locale-aware formatting. ### `lang` / `dir` (was US-B4) - [ ] `document.documentElement.lang` matches active locale after navigation and after settings change. - [ ] RTL locales set `dir="rtl"`; LTR sets `ltr`. - [ ] A11y tests green; test asserts `lang` under non-default locale on a pilot route. ### API errors (was US-B5) - [ ] Known errors map to Paraglide messages. - [ ] Unknown: generic localized message; raw detail optional in "Technical details". - [ ] Monaco/CodeMirror/third-party chrome out of scope (per spec non-goals). ## Depends on #908 (Platform foundations — Paraglide, locale URLs, resolution)
Collaborator

🤖 Auto-assigned to dev (heuristic: area:dashboard + body 1615 bytes (≤ 2 KB) — code role). Reply /unassign to reroute.

🤖 Auto-assigned to **dev** (heuristic: area:dashboard + body 1615 bytes (≤ 2 KB) — code role). Reply `/unassign` to reroute.
dev closed this issue 2026-05-07 17:17:02 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
charles/claude-hooks#909
No description provided.