Epic: OpenSignup in Swedish, and other languages after it
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 20/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- next.js, typescript
- Ambito
- internationalization
Direzione di ricerca
Read the phase order and the referenced sub-issues, starting with #620; #621 and #622 can proceed alongside it. The issue describes a multi-phase localization plan but leaves decisions open about Swedish review, legal translations, existing signups, and later languages. Done means completing the scoped sub-issues and having a native speaker review Swedish before it becomes selectable.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
This tracks the plan for translating OpenSignup, starting with Swedish. Each sub-issue carries its own pipeline:proposed label and needs your OK on its own.
The problem
Everything OpenSignup says is English: the buttons, the sign-up form, error messages, the confirmation and reminder emails, and the dates and times ("Sat, May 3", "6:30 PM"). Organizers are already writing signups in Swedish. That was seen in production; the figures stay out of this public repo. So their participants get Swedish content wrapped in English, on pages that say lang="en", which screen readers and browser translation trust.
How language works in this plan
- The organizer has a language, saved on their account. Until they save one, it's the instance's language if the operator set
DEFAULT_LOCALE, else their browser's first language, else English. Once the organizer side is translated, it's the app's language too. - A new signup starts in its organizer's language. There's nothing to pick when creating one; an organizer changes a signup's language in its Settings tab.
- Participants see the signup's language, on its pages and in every email.
- AI drafts are written in the organizer's language.
- A language can be chosen only when its translation is complete for that audience and a native speaker has reviewed it.
Technical choices
- next-intl 4.x, pinned, with its core (
use-intl/core) for server code, emails and the worker. Its client runtime measured 11.6 KB gzipped, or 2.8 KB with itsprecompileoption. For comparison: Lingui 3.4 KB, react-intl 14.9 KB, i18next 17.2 KB. - ICU messages in
src/messages/*.json. - Three root layouts, so a signup's pages can say
lang="sv"while help and legal stay static. This was spiked on Next 15.5.27 in Chromium. - Storage. The signup's language lives in its
settings(no migration); the organizer's is a new column.
Order
Phase 0, groundwork, with no visible change. #620 comes first; #621 and #622 can be built alongside it.
- #620 OpenSignup has no message catalogs or translator
- #621 Every page is marked
lang="en"(three root layouts) - #622 Slot dates and times can only be shown in US English
- #623 Nothing checks the message catalogs, or catches new hard-coded text
- #624 Translated client components would add about 12 KB of JavaScript (precompile)
Phase 1, participants in Swedish. The language reaches the pages before the text does, and Swedish can be chosen only at the end (#639).
- #625 A signup has no language, and an instance has no default language
- #626 Organizers have no saved language
- #627 New signups don't start in their organizer's language
- #628 Public signup pages always say
lang="en" - #629 The public signup page and the sign-up dialog are English-only
- #630 The edit, cancel and unsubscribe pages are English-only
- #631 Sign-up errors can show participants the server's English text
- #632 Participant emails are English-only
- #633 The calendar file and share text are English
- #634 New signups get English column names
- #635 Magic Compose drafts in whatever language the model picks
- #637 There's no guide for translating OpenSignup, and no Swedish glossary
- #639 Signups can't be in Swedish yet (translation, native review, launch)
- #640 Signups made before Swedish shipped stay in English (optional; decide after #639)
Later, filed once phase 1 has landed:
- Phase 2: the organizer app in Swedish.
- The app follows the organizer's saved language.
- Organizer text moves into the catalog area by area, one PR each: the chrome and dashboard; account settings and connected apps; the signup header, tabs, banners and status labels; the Build tab; Responses and the CSV headers; New signup and Magic Compose; the sign-in pages and email; OAuth consent.
- Organizer errors become codes; signup content shown to organizers is marked with its own
lang. - Swedish translation and review.
- Phase 3: landing, help and legal pages in other languages, under
/sv/...URLs, kept static. Help articles per language, and legal translations if the operator wants them. - Phase 4: more languages, with Weblate once there's a third. #641 should land before Danish or Norwegian.
Not in this plan
- Participants switching a page into their own language: #642, separate work.
- Translating organizers' own content, timezones (#319), and right-to-left scripts.
- API error text and MCP tool descriptions, which stay English for developers and models.
Open questions
- Who reviews the Swedish translation? It can't ship without a native speaker.
- Should opensignup.org's privacy policy and terms be translated, and which version would be binding?
- Should #640 be built, or should signups made before Swedish shipped stay as they are?
- Which languages come after Swedish?
The plan
The full plan is private to the owner's account: https://claude.ai/artifact/VgQH6U2s2EVx3LX991fJi8. Its decisions, risks and step-by-step detail are there, and a Claude session on that account can open it with the Artifact tool's read action. Two Fable reviewers went over it in seven rounds against the code. Checked against main at 35288fa.
Planned in https://claude.ai/code/session_01EFKmj716ZY3b3SwR8TV8Y2
- Lingua principale
- TypeScript
- Stelle
- 19
- Fork
- 4
- Merge medio
- 22h 10m
- PR unite (30g)
- 168
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di richshaw/OpenSignup
-
Participant name and notes limits are typed twice, in the schemas and on the participant pagesForse già presa @bfs2021 l’ha presa oggi. Apertaenhancement good first issue pipeline:ready
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
richshaw/OpenSignup#705 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
richshaw/OpenSignup#654 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
richshaw/OpenSignup#652 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
richshaw/OpenSignup#589 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
richshaw/OpenSignup#588 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di richshaw/OpenSignup
Issue simili
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
lingdojo/kana-dojo#33286 · 1 commento · 5 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
friction
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 77/100
kentcdodds/kody#4499 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
hemilabs/ui-monorepo#2605 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 6 giorni
-
build.yml: macOS arm64 DMG fails, cargo missing on the macos-26 runner imageForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
getopenscreen/openscreen#1423 ·
I maintainer di solito rispondono entro 1 giorno