#15 i18n S1 — localize issues (Detail) slice (DE/EN)#63
Merged
Conversation
added 5 commits
July 14, 2026 20:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Session 1 of the #15 i18n full-rollout: localizes the S1
issues(Detail) slice. Extracts every user-facing string from the three in-scope components into a newissuesreact-i18next namespace (en/de), removes those files from the scanner allowlist, and flips S1 to ✅ in the coverage matrix.Plan:
docs/superpowers/plans/2026-07-13-i18n-s1-issues.md(executed via subagent-driven development: fresh implementer + task review per task, opus whole-branch review at the end).Changes
issuesnamespace (en/de, key-identical) +common:close/yes/no, registered ini18n/index.ts.IssueDialog.tsx— full-view link + close aria-label.IssueDetailContent.tsx— loading/not-found, Description/References headings, 12 sidebar field labels.IssueListPage.tsx— heading, create button, filter dropdowns/placeholders, create-form, empty state, and the DoD-requiredalert(...)(a scanner blind spot).frontend/scripts/i18n-allowlist.json(66 → 63).Out of scope (left unchanged, by design): raw priority enum
{issue.priority}(S2) and data-driven custom-field labels. The other three S1 files (IssueDetailPage,IssueDialogHost,InlineEditTitle) are already string-free and untouched.Verification
npm run test:i18n→ 17/17npm run lint:i18n→ scan OK (0 hardcoded, 63 allowlisted) + parity OK (en/de match)npm run build→ tsc + vite build succeededDeviation from plan
Dropped the plan's unused
issues:dialog.closekey (it duplicatedcommon:closeand violated the plan's own "shared terms live incommon" constraint); the dialog aria-label usescommon:close. Approved decision during execution.Still owed before merge
🤖 Generated with Claude Code