From c205ad34f03aa4627e3f08ed263ac5f6ba208aef Mon Sep 17 00:00:00 2001 From: SkateSpots Date: Thu, 1 Oct 2026 23:58:13 +0700 Subject: [PATCH] docs(i18n): record batch-1 coverage + checker, list remaining areas --- AGENTS.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 59ac5b7..51dc0ff 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1638,10 +1638,20 @@ similar are internal endpoints/hook names, not credits — leave them.) drift silent otherwise. - **User-generated content is never translated** (spot / listing / DM / crew text is whatever the author wrote). -- ⚠️ Coverage is **partial**: the framework + ~33 namespaces exist, but most files - are not yet wired to `t()`. Continue extracting area by area (Map/spots → - Marketplace/trades → Lab/crews → Settings/legal). Untranslated text falls back - to English, so it degrades gracefully. +- **Safety net:** `scripts/check-i18n.mjs` (wired into `npm test` as part of the + chain) fails the build if any literal `t('…')` key is missing from `en` OR `es`, + or if `en`/`es` drift. Dynamic template keys (`t(\`ns.${x}\`)`) are NOT checked — + keep those few in sync by hand. +- **Coverage (2026-10-01, batch 1 done):** ~1,680 new keys (2,297 total) and ~65 + files wired — **Map (`mapUi`)**, **spots (`spotUi`)** incl. detail/create/edit/ + chat, **Marketplace/trades/offers/escrow/shipping (`marketUi`)**, and **Lab/ + `/become/*`/coaches/skaters (`labUi`)**. **Still to do (batch 2+):** Settings, + auth (LoginArea/dialogs), Onboarding, Events, Shops, Tours, Crews, DMs/group, + Stash, Newsletter, Community Stats, legal (About/FAQ/Privacy/License/Glossary), + Wallet/Mints, App Shop, Food, Bounties/leaderboards, Admin review. Untranslated + text falls back to English, so partial coverage degrades gracefully. +- ⚠️ **When wiring a file, keep `en.ts`/`es.ts` key-for-key in sync** and run + `node scripts/check-i18n.mjs` before committing. ## Nostr Protocol Integration