Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Participants can't read a signup in their own language when it isn't the organizer's

オープン
#642 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 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 の本文から書いたものです。

説明

enhancement pipeline:proposed pipeline:ux

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 own lang.
  • Emails follow too. A participants.locale column records the choice at sign-up, and emails use participant.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 read searchParams. 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.locale carries it for emails.
  • 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:db and pnpm test:e2e pass.

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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

richshaw/OpenSignup のほかの issue

richshaw/OpenSignup の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。