Participants can't read a signup in their own language when it isn't the organizer's
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 36/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- next.js, playwright, postgresql, typescript
調査の方向性
Read the middleware path-and-query header behavior from #628 and the signup, edit, and unsubscribe URL handling named in the issue. Trace the existing participant INSERT or UPDATE and email locale selection; keep the signup route within its stated statement budget. Done means the e2e scenario stores the chosen locale and sends the confirmation in that language, with the listed checks passing.
索引モデルが issue の本文から書いたものです。
説明
Needs your OK: this lets a participant switch a signup's page, and their own emails, into another language OpenSignup has. It's separate from #619, which shows every participant the signup's language. Swap pipeline:proposed for pipeline:ready to have it built.
What happens
Once #619 ships, participants see a signup in the signup's language. That's right for most people, but mixed audiences include people it doesn't serve: an international school, Swedish-speaking families in Finland, Spanish-speaking parents at a US school. Browser translation helps on the page, but not in the confirmation and reminder emails, which carry the link to change or cancel.
Fix, in outline
- Offer a switch. When the visitor's browser prefers another language in
SHIPPED.participant, show a small link, such as "View in English" or "Visa på svenska", with no script. - The page follows. It renders in the chosen language;
<html lang>follows the reader, and the signup's content keeps its ownlang. - Emails follow too. A
participants.localecolumn records the choice at sign-up, and emails useparticipant.locale ?? signup.locale. - The privacy page says we store it.
Watch for
- How the choice travels. A
?lang=query is the obvious carrier, but the root layout can't readsearchParams. It can read the path-and-query header the middleware sets (#628).- Several places drop the query and need to keep it: the edit and unsubscribe pages rebuild their URL when the slug doesn't match,
commitmentEditUrl, and "Back to the signup". - The sign-up POST must send the chosen
locale. - After sign-up, the stored
participants.localecarries it for emails.
- Several places drop the query and need to keep it: the edit and unsubscribe pages rebuild their URL when the slug doesn't match,
- Budgets. The sign-up route's statement budget (14, or 12 without an email) must not move, so write the language in the participant INSERT or UPDATE the route already does.
- A choice lasts for one signup. Participant rows are per signup; remembering it across signups would need a cookie, which is out of scope.
Choices this makes
- Offer, don't switch automatically. Default: offer. Switching automatically would give every Swede with an English phone English buttons on a Swedish school's page.
Order
After #639, because there's only one language to switch to until Swedish ships.
Done when
- An e2e test: a Swedish signup visited with an English browser shows the link; following it renders English; signing up stores
en; the confirmation email is in English. pnpm lint && pnpm typecheck && pnpm knip && pnpm test,pnpm test:dbandpnpm test:e2epass.
Planned with the owner in https://claude.ai/code/session_01EFKmj716ZY3b3SwR8TV8Y2, where it was split out of #619 as separate work. Checked against the code on main at 35288fa. The localization plan, private to the owner's account: https://claude.ai/artifact/VgQH6U2s2EVx3LX991fJi8 (a Claude session on that account can open it with the Artifact tool's read action).
- 主要言語
- TypeScript
- スター
- 19
- フォーク
- 4
- 平均マージ
- 20時間 9分
- マージ済み PR(30日)
- 156
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
richshaw/OpenSignup のほかの issue
-
enhancement pipeline:proposed pipeline:ux
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
richshaw/OpenSignup#654 ·
メンテナーはふだん 1 日以内に返信
-
enhancement pipeline:proposed pipeline:ux
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
richshaw/OpenSignup#653 ·
メンテナーはふだん 1 日以内に返信
-
enhancement pipeline:proposed pipeline:ux
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
richshaw/OpenSignup#652 ·
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue pipeline:ready
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
richshaw/OpenSignup#645 ·
メンテナーはふだん 1 日以内に返信
-
bug good first issue pipeline:ready pipeline:ux
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
richshaw/OpenSignup#644 ·
メンテナーはふだん 1 日以内に返信
richshaw/OpenSignup の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
openremote/openremote#3487 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
coollabsio/jean#867 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
ehmpathy/rhachet-roles-bhuild#616 ·
メンテナーはふだん 1 日以内に返信
-
📘 Docs supabase/cli
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
メンテナーはふだん 1 日以内に返信
-
bug(cli): theme file home-directory check uses startsWith (sibling dirs pass, Windows casing fails)オープンarea/core kind/bug priority/p2 status/bot-triaged
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
google-gemini/gemini-cli#29955 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信