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

The edit, cancel and unsubscribe pages are English-only

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

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
34/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
next.js, nextjs, typescript

調査の方向性

Start with the named participant pages and components, then compare their translation approach with #629; inspect the existing signup locale queries, API route, and tests mentioned in the issue. Add catalog messages while preserving English, pass only the locale string where specified, and add the API leak assertion. Done when the pages render in Swedish and English is unchanged, the assertion passes, and the listed checks succeed.

索引モデルが issue の本文から書いたものです。

説明

enhancement pipeline:proposed pipeline:ux

Needs your OK: this moves the participant's edit, cancel and unsubscribe pages, and the two not-found pages, into the catalog. English stays word for word the same. Swap pipeline:proposed for pipeline:ready to have it built.

What happens

These files hold about 50 English strings:

  • src/app/s/[slug]/c/[id]/page.tsx, edit-form.tsx and cancelled-message.ts;
  • src/app/s/[slug]/unsubscribe/page.tsx;
  • both not-found.tsx files.

Some are glued from pieces, and one is wrong already:

  • "You can have up to {spotsMax} spots on this slot" reads "up to 1 spots" after a capacity error;
  • ` for ${email}` and ` at ${email}` clauses are spliced into sentences.

Fix, in outline

  • The same pattern as #629. Server components stay synchronous and use getTranslator; edit-form.tsx goes inside ClientMessages.
  • The edit page's language.
    • getOwnCommitment already joins signups, so have it also return signupLocale: the raw settings.locale string, never the settings object. GET /api/commitments/[id] returns that value wholesale to anyone holding an edit link, and settings carry organizer-only keys.
    • Pass the language as a parameter into cancelledCommitmentState, and into editLimitsForCommitment (which already reads the signup), for their slot names. No new query.
  • The unsubscribe page takes the language from the rows its preview already loads.
  • The not-found pages.
    • s/[slug]/not-found.tsx stays synchronous and uses the participant default. An unknown or deleted slug has no language anyone may read.
    • s/[slug]/c/[id]/not-found.tsx, for a bad edit link on a live signup, calls next-intl's getLocale(), which request.ts resolves from the path header (#628). Its test becomes render(await Page()) with next/headers mocked.
  • Turn on the lint rules for c/ and unsubscribe/.

Watch for

  • Specs that import app copy. tests/e2e/edit-token.spec.ts and responses.spec.ts import CANCELLED_PAGE; they build an English translator.
  • Assert the leak can't happen. Add a db test on GET /api/commitments/[id] asserting the body has no settings key.
  • A not-found page's lang is right only after hydration in Next 15.5. That's the same today.

Order

After #629, because ClientMessages, messagesFor and the Swedish test signup come from it.

Done when

  • The edit, cancel, unsubscribe and both not-found pages render in Swedish for the Swedish test signup (e2e), and English is unchanged.
  • The no-settings assertion passes.
  • 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 and checked against the code on main at 35288fa. The full plan is 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). This is part of step 1.2 there.

主要言語
TypeScript
スター
19
フォーク
4
平均マージ
21時間 3分
マージ済み PR(30日)
176

環境構築

はじめの一歩

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

richshaw/OpenSignup のほかの issue

richshaw/OpenSignup の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

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

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