feat(onboarding): add Spanish locale to the onboarding form - #1078
Open
RisingOrange wants to merge 2 commits into
Open
feat(onboarding): add Spanish locale to the onboarding form#1078RisingOrange wants to merge 2 commits into
RisingOrange wants to merge 2 commits into
Conversation
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.
✅ Deploy Preview for pauseai ready!
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).
RisingOrange
marked this pull request as ready for review
September 5, 2026 14:21
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Adds an
eslocale to the onboarding form, alongsideen,deandfr.Why
/embed/onboarding-formcurrently serves English to anyone whose locale isn't one of the three, silently:setOnboardingLocaleignores an unrecognised?locale=, so there is no error and no sign anything was requested.That blocks a specific migration.
pauseai.es/inscripcionstill 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
OnboardingMessagesinterface, 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 checkandpnpm lintboth 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=esis 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:
pauseai.info(/privacy,/volunteer-agreement,/code-of-conduct). The chapter's Tally form linked topauseai.esequivalents instead. The embed is served from pauseai.info so the canonical ones seem right, but it is a real decision.onboarding_step_intentis 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_5asks 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.tsdescribes 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.