From ac1b56ce761978d2746ee78bf1ab071ed01a0192 Mon Sep 17 00:00:00 2001 From: SkateSpots Date: Wed, 7 Oct 2026 18:12:30 +0700 Subject: [PATCH] docs(AGENTS): record the hardcoded-string sweep + legacy fragment layer --- AGENTS.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index ed03164..bdd075c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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