The edit, cancel and unsubscribe pages are English-only
メンテナーはふだん 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 の本文から書いたものです。
説明
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.tsxandcancelled-message.ts;src/app/s/[slug]/unsubscribe/page.tsx;- both
not-found.tsxfiles.
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.tsxgoes insideClientMessages. - The edit page's language.
getOwnCommitmentalready joinssignups, so have it also returnsignupLocale: the rawsettings.localestring, 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 intoeditLimitsForCommitment(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.tsxstays 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'sgetLocale(), whichrequest.tsresolves from the path header (#628). Its test becomesrender(await Page())withnext/headersmocked.
- Turn on the lint rules for
c/andunsubscribe/.
Watch for
- Specs that import app copy.
tests/e2e/edit-token.spec.tsandresponses.spec.tsimportCANCELLED_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 nosettingskey. - A not-found page's
langis 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-
settingsassertion passes. pnpm lint && pnpm typecheck && pnpm knip && pnpm test,pnpm test:dbandpnpm test:e2epass.
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
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
richshaw/OpenSignup のほかの issue
-
enhancement pipeline:proposed pipeline:ux
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
richshaw/OpenSignup#654 ·
メンテナーはふだん 1 日以内に返信
-
The help pages never say "pause", so organizers looking for it miss Close or reopen a signup対応中かも @richshaw が 1 日前に担当しました。 オープンenhancement pipeline:building pipeline:ux
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
richshaw/OpenSignup#653 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
enhancement pipeline:proposed pipeline:ux
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
richshaw/OpenSignup#652 ·
メンテナーはふだん 1 日以内に返信
-
SMTP timeout notes in smtp.ts and the changelog describe nodemailer 10.0, not 10.1対応中かも @agammann が 2 日前に担当しました。 オープンenhancement good first issue pipeline:ready
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
richshaw/OpenSignup#645 ·
メンテナーはふだん 1 日以内に返信
-
enhancement pipeline:proposed pipeline:ux
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
richshaw/OpenSignup#589 ·
メンテナーはふだん 1 日以内に返信
richshaw/OpenSignup の issue をすべて見る
似ている issue
-
[Bug]: Pen taps on sidebar rows start a drag and lose their click対応中かも @makhnatkin が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
b310-digital/teammapper#1515 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
puckeditor/puck#1884 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
outline/outline#14378 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
nicobailon/pi-web-access#642 ·
メンテナーはふだん 1 日以内に返信