diff --git a/AGENTS.md b/AGENTS.md
index 51dc0ff..7d3cfcc 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1642,14 +1642,23 @@ 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-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.
+- **Coverage (2026-10-02, batches 1–2 done):** **~5,770 keys** (EN=ES) and ~180
+ 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`
+ (crews/DMs/notifications/collectives), `settingsUi` (settings/auth/signup/
+ onboarding/profile/legal), `walletUi` (wallet/Cashu, stash, mints, app shop,
+ newsletter, community stats, leaderboards, profile page).
+- **Still to translate (batch 3):** `RouteDialog`/`StopDepartures`/`TripItineraryCard`
+ (routing UI), the Sasquatch panel/dialogs (`SasquatchGuide`, `SasquatchProDialog`,
+ `SasquatchActionCard`, `SasquatchAiStatusCard`), `AddToCollectionDialog` edge
+ copy, `SplashScreen`/`LazyMount`, and **shared data-module labels** that live
+ outside components (`SPOT_TYPE_LABELS`/`SPOT_CATEGORIES` in `src/lib/types.ts`,
+ `src/lib/skateTags.ts`, `src/lib/spotStatus.ts`, `src/lib/sortOptions.ts`).
+ **Dates & relative times** are still English (no localized date layer yet).
+- ⚠️ 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.**
- ⚠️ **When wiring a file, keep `en.ts`/`es.ts` key-for-key in sync** and run
`node scripts/check-i18n.mjs` before committing.
diff --git a/src/components/AddToCalendar.tsx b/src/components/AddToCalendar.tsx
index fc52a6f..1eaf391 100644
--- a/src/components/AddToCalendar.tsx
+++ b/src/components/AddToCalendar.tsx
@@ -12,6 +12,7 @@ import {
type CalendarEventInput,
} from '@/lib/calendar';
import { cn } from '@/lib/utils';
+import { useTranslation } from '@/contexts/language';
interface AddToCalendarProps {
event: CalendarEventInput;
@@ -25,6 +26,7 @@ interface AddToCalendarProps {
* Offers a native .ics download (Apple/Outlook) and a Google Calendar link.
*/
export function AddToCalendar({ event, color = '#06b6d4', className }: AddToCalendarProps) {
+ const { t } = useTranslation();
return (
Please log in to save spots to collections {t('walletUi.addToCollection.loginRequired')}
You don't have any collections yet
-Create your first one below!
+{t('walletUi.addToCollection.noCollections')}
+{t('walletUi.addToCollection.createFirst')}