docs: record i18n batch 4 (Lab labels, Sasquatch FAQ, fees)

This commit is contained in:
SkateSpots 2026-10-02 15:58:15 +07:00
parent 7347f874ad
commit 2ac2605f57

View file

@ -1756,7 +1756,7 @@ similar are internal endpoints/hook names, not credits — leave them.)
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-02, batches 1–3 done):** **~6,460 keys** (EN=ES) and ~230
- **Coverage (2026-10-04, batches 1–4 done):** **~7,030 keys** (EN=ES) and ~250
files wired. Namespaces: batch 1 — `mapUi`, `spotUi`, `marketUi`, `labUi`;
batch 2 — `nav` (header/More/burger labels) + `chromeUi` (footer, toolbar
widgets, spot-type labels), `placesUi` (events/shops/tours/food), `socialUi`
@ -1793,13 +1793,29 @@ similar are internal endpoints/hook names, not credits — leave them.)
first paint is in-language. **Import from `@/lib/dateFnsI18n`, not
`date-fns`.** Number `.toLocaleString()` calls are deliberately left on the
runtime default.
- **Still to translate (batch 4):** the **Lab `*_LABELS`/`*_DESCRIPTIONS` maps**
in `src/lib/types.ts` (coach/filmer/editor/photo/builder/artist/graffiti/tattoo/
trainer/musician/judge/organizer/barber — ~35 maps), `TOUR_SKILL_LEVELS`, the
Sasquatch **static FAQ / local-result chat bodies** and `usePurchasePro` receipt
prose, and remaining **feed-supplied vs app-word** distinctions. `TagCategory`
names/descriptions have keys but no component renders them. Grep a module
before assuming it is translated.
- **Batch 4 (2026-10-04) — done.** Fragment layer `src/i18n/batch4/`
(spread as `batch4En`/`batch4Es` alongside batch 3).
- `labOptions.*` (430 keys) — every Lab `*_LABELS`/`*_DESCRIPTIONS` map in
`src/lib/types.ts` (coach/filmer/editor/photo/builder/artist/graffiti/tattoo/
trainer/musician/judge/organizer/barber) + `TOUR_SKILL_LEVELS`; **51 shared
key maps appended to `src/lib/labelKeys.ts`**. Consumers: `becomeRoles.tsx`,
`CraftProfileForm` (`SkillSection` gained a `keyMap`), `LabPage`,
`CoachDetailPage`, the five bespoke `/become/*` pages, `TourCard`/
`TourDetailPage`/`CreateTourPage`/`EventsPage`. Trick names and tool/brand
nouns intentionally stay English.
- `sasquatchChat.*` (83 keys) — the free-tier `STATIC_FAQ` (English matcher →
`sasquatchChat.faq.*` key) and local-result/fallback chat bodies. Live AI is
already language-directed; **prompts stay English**.
- `feesUi.*` (57 keys) — `usePurchasePro` receipt prose/errors and
`PlatformFeePayment` fee/duration tiers (`LabProUpgrade`/`FeaturedEventUpgrade`
were already `labUi`/`placesUi`).
- ✅ **Not translated, deliberately:** LLM system/synthesis prompts and
tool-result instruction strings (model-facing), feed-supplied data (line
names, headsigns, roads, stops, weather condition labels, operator names),
brand/proper nouns, and the separate `src/lib/glossary.ts` trick glossary.
`TagCategory` names/descriptions and `MUSICIAN_ACT_LABELS` have keys but no
rendering consumer. Number `.toLocaleString()` stays on the runtime default.
Grep a module before assuming it is untranslated.
- ⚠️ A batch-2 agent dropped the `socialUi.` namespace prefix in ~36 files — the
`check:i18n` guard caught all 738 usages. **Always run `node scripts/check-i18n.mjs`
(it's in `npm test`) after wiring a file.**