docs(AGENTS): record the hardcoded-string sweep + legacy fragment layer

This commit is contained in:
SkateSpots 2026-10-07 18:12:30 +07:00
parent 0339395036
commit ac1b56ce76

View file

@ -2209,6 +2209,26 @@ similar are internal endpoints/hook names, not credits — leave them.)
renders plain buttons (no portal) instead. The mobile nav sheet uses `inline`;
the header keeps the dropdown (it is not inside a dialog). Same trap applies to
any portaled popover/menu placed inside a dialog.
### Hardcoded-string sweep (2026-10-07) — 7,889 → 8,337 keys
`check:i18n` only sees keys wired through `t()`, so **hardcoded English that never
called `t()` stayed English in EVERY locale** (es/th/ja included). Those are now
keyed. New namespaces live in **`src/i18n/legacy/`** as `{ en, es }` fragments
composed in `legacy/index.ts` and spread into `en`/`es` (same pattern as
`batch3/`–`batch4/`); the `th`/`ja` fragments mirror them:
- `deckCostUi` — the whole `/diy/deck-cost` calculator (170 keys)
- `becomeRolesUi` — `/become/*` role forms + `CraftProfileForm` (123 keys; added
`*Key` fields to `becomeRoles.tsx`)
- `weatherUi` — weather/AQI/skateability labels (60 keys; `weather.ts` gained
`*Key` fields, consumers updated: SpotDetailPage, SpotMap, TripItineraryCard,
the Sasquatch weather tool)
- `skaterLabelsUi` (21) — skater stance/style/level + sponsor tiers in `types.ts`
- `notifyUi` (28) — OS notification titles/bodies (`OsNotificationBridge`)
- `legacyMiscUi` (46) — scattered component/page literals
⚠️ Still English by design: the `src/i18n/glossary.ts` trick glossary, image
`alt`/`aria-label` (mostly brands or shadcn internals), example placeholders
(`you@example.com`, `npub1…`), and generated export-document bodies (PDF/XLSX).
Re-scan with `grep -rnP ">\s*[A-Z][A-Za-z][A-Za-z ,.!?&*()'-]{3,}<" src --include=*.tsx`.
- **Katakana/English for skate vocabulary** (spot→スポット, park→パーク, crew→クルー;
Stash/The Lab/Nostr/Lightning/Zap/sats stay English). Trick names stay English.
- **Castellano term change (2026-10-07):** crew is **"peña"** in `es.ts`, not