Skip to content

feat(onboarding): add Spanish locale to the onboarding form - #1078

Open
RisingOrange wants to merge 2 commits into
PauseAI:mainfrom
RisingOrange:onboarding-es-locale
Open

feat(onboarding): add Spanish locale to the onboarding form#1078
RisingOrange wants to merge 2 commits into
PauseAI:mainfrom
RisingOrange:onboarding-es-locale

Conversation

@RisingOrange

@RisingOrange RisingOrange commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

Adds an es locale to the onboarding form, alongside en, de and fr.

Why

/embed/onboarding-form currently serves English to anyone whose locale isn't one of the three, silently: setOnboardingLocale ignores an unrecognised ?locale=, so there is no error and no sign anything was requested.

That blocks a specific migration. pauseai.es/inscripcion still embeds a retired Tally form, and signups through it arrive with no Intent, so they are not counted as volunteers. The fix is to point that page at this embed, but the chapter's current form is fully in Spanish (their own translation, living only inside Tally), so switching today would replace Spanish content with English. This locale removes that trade-off. Context: PauseAI/pauseai-civicrm#594.

What's here

All 174 keys. TypeScript enforces completeness against the OnboardingMessages interface, so a missing or misnamed key fails the build rather than falling back silently. Both function-valued entries (onboarding_lead_title, onboarding_lead_has_chapter) keep their interpolation.

pnpm check and pnpm lint both pass; the only warnings in either are pre-existing and in other files.

Try it

deploy-preview-1078--pauseai.netlify.app/embed/onboarding-form?locale=es

?locale=es is required; without it the preview shows English.

The preview runs in stub mode, which it logs to the browser console: submissions are captured at /embed/onboarding-form/stub, with no Airtable write and no Substack subscription. So it is safe to click all the way through Submit and read the confirmation screens, which is where several of the translated strings only become visible.

One thing a reviewer will notice and this PR cannot fix: the country list renders in English. Those are stored values in options.ts, not translatable strings. The Tally form this replaces had the same limitation and said so, with "(listados en inglés)".

Draft, because the Spanish needs a human

This is machine-translated and has not been reviewed by a native speaker. The copy is consent-bearing (GDPR line, Volunteer Agreement, Code of Conduct, critical-alert notice), so it should not ship on my say-so. Marking ready for review once a Spanish speaker has been through it, ideally someone from PauseAI en Español, since they will be the main consumer.

Four choices worth confirming in that review:

  • Register: informal throughout, matching the register of the chapter's existing Spanish form.
  • Neutral Spanish rather than peninsular-specific. The chapter's territory is a language, not a country, so it also serves Latin America.
  • Consent links point at pauseai.info (/privacy, /volunteer-agreement, /code-of-conduct). The chapter's Tally form linked to pauseai.es equivalents instead. The embed is served from pauseai.info so the canonical ones seem right, but it is a real decision.
  • onboarding_step_intent is rendered as Interés. Intención is more literal but reads oddly as a step heading.

Two things left faithful to the English that a reviewer may still flag: the zip-code helper says "5 dígitos", which is US-specific, and onboarding_lead_looking_5 asks for fluency in English, which may surprise Spanish-speaking applicants. Both match the source rather than being translation artifacts.

Note on where this lives

messages.ts describes itself as a temporary stand-in until the paraglide l10n cage is accessible. Adding a fourth locale here does add to whatever migration eventually happens, but the file's own header says translations "live here and are reviewable/shippable via normal PRs" until then, and holding a chapter's signup quality behind an undecided refactor seemed the worse trade. Happy to redirect this into the cage instead if that's closer than it looks.

Adds `es` alongside en/de/fr so chapters serving Spanish speakers can embed
the form in Spanish. All 174 keys translated; TypeScript enforces completeness
against the OnboardingMessages interface.

Machine-translated and not yet reviewed by a native speaker, hence draft.
@netlify

netlify Bot commented Sep 5, 2026

Copy link
Copy Markdown

Deploy Preview for pauseai ready!

Name Link
🔨 Latest commit e8b16eb
🔍 Latest deploy log https://app.netlify.com/projects/pauseai/deploys/6a9c0dcd56fd050008e9e948
😎 Deploy Preview https://deploy-preview-1078--pauseai.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 61 (🔴 down 11 from production)
Accessibility: 91 (no change from production)
Best Practices: 100 (no change from production)
SEO: 82 (no change from production)
PWA: -
View the detailed breakdown and full score reports
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Two outright errors:
- `abrid` was a vosotros imperative, inconsistent with the tú register used
  everywhere else and Spain-only.
- "Más de 20 horas" excluded exactly 20, where the English "20+ hours"
  includes it.

Also: removed male-default phrasings that a general volunteer audience should
not have to read past ("Bienvenido", "voluntario", "Estoy listo"), replaced
Spain-leaning wording that travels badly in Latin America ("hazte con",
"merchandising", "captación de fondos", "contacta con", the compound perfect
in the error strings), and fixed meaning drift where the Spanish had softened
or dropped the English ("critical alert", "passion", "lobby", the
Microcommit product name).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant