Skip to content

fix: 데스크톱 쉘 카피 현지화#545

Open
seonghobae wants to merge 1 commit into
developfrom
codex/localize-shell-copy
Open

fix: 데스크톱 쉘 카피 현지화#545
seonghobae wants to merge 1 commit into
developfrom
codex/localize-shell-copy

Conversation

@seonghobae

Copy link
Copy Markdown
Collaborator

요약

  • 데스크톱 앱 쉘/네비게이션/상태 헤더/프로젝트 버튼/메트릭 카드의 하드코딩 영어 카피를 기존 i18n 계약으로 이동했습니다.
  • ko-KR 환경에서 구매자 데모 첫 화면의 주요 쉘 카피가 한국어로 렌더되는 회귀 테스트를 추가했습니다.
  • fix: keep disabled nav items tooltipable #530 disabled tooltip 접근성 보강과 충돌하지 않도록 구조/스타일 변경 없이 문자열 계약만 다룹니다.

20억 KRW sale-readiness 연결

  • Product Design audit 기준의 언어 일관성, 로컬-퍼스트 신뢰 문구, 첫 화면 buyer-demo polish 갭을 닫는 작은 PR입니다.
  • 리뷰 프로세스와 queued checks는 blocker로 보지 않고, 현재 head에서 로컬 검증을 완료했습니다.

검증

  • npm ci (Node 24 로컬 엔진 경고만 발생: repo requires >=22.13 <23)
  • npm --workspace @bandscope/desktop run typecheck
  • npm --workspace @bandscope/desktop exec -- vitest run src/App.test.tsx src/i18n/index.test.ts (66 tests)
  • npm --workspace @bandscope/desktop run lint
  • npm --workspace @bandscope/desktop run build
  • python3 scripts/checks/verify_supply_chain.py
  • git diff --check

Copilot AI review requested due to automatic review settings July 3, 2026 00:02
@seonghobae seonghobae enabled auto-merge (squash) July 3, 2026 00:02

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot couldn't run its full agentic review because no GitHub Actions runner was available. Make sure your repository has a runner available to run Copilot's review, or add a copilot-setup-steps.yml file specifying one with the runs-on attribute. See the docs for more details.

Hardcoded desktop shell copy (nav/shell/status/header/metric cards) is moved into the existing i18n contract, plus a regression test ensuring the buyer-demo shell renders in Korean under ko-KR.

Changes:

  • Added new shell/navigation/status/metric translation keys to en and ko common locale files
  • Updated App.tsx UI strings to use the translator (t(...)) instead of inline English copy
  • Added a Vitest regression test for Korean localized shell surfaces

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.

File Description
apps/desktop/src/locales/ko/common.json Adds Korean translations for newly externalized shell/navigation/status/metric copy
apps/desktop/src/locales/en/common.json Adds English translations for newly externalized shell/navigation/status/metric copy
apps/desktop/src/App.tsx Replaces hardcoded strings with i18n keys across shell/nav/status/metrics and localizes error prefixes
apps/desktop/src/App.test.tsx Adds regression test to confirm ko-KR renders Korean shell copy

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

"importYoutube": "Import YouTube",
"importingYoutube": "Importing...",
"youtubeImportFailed": "Failed to import YouTube URL."
"youtubeImportFailed": "Failed to import YouTube URL.",
"importYoutube": "유튜브 가져오기",
"importingYoutube": "가져오는 중...",
"youtubeImportFailed": "유튜브 URL 가져오기에 실패했습니다."
"youtubeImportFailed": "유튜브 URL 가져오기에 실패했습니다.",
Comment thread apps/desktop/src/App.tsx
Comment on lines 56 to 66
const NAV_ITEMS = [
{ label: "Workspace", icon: Home, active: true },
{ label: "Import", icon: Upload, active: false },
{ label: "Export", icon: Save, active: false },
{ label: "Sections", icon: ListMusic, active: false },
{ label: "Roles", icon: Users, active: false },
{ label: "Stem Lab", icon: AudioWaveform, active: false },
{ label: "Cues", icon: Sparkles, active: false },
{ label: "Transpose", icon: SlidersHorizontal, active: false },
{ label: "Notes", icon: FileMusic, active: false }
{ labelKey: "navWorkspace", icon: Home, active: true },
{ labelKey: "navImport", icon: Upload, active: false },
{ labelKey: "navExport", icon: Save, active: false },
{ labelKey: "navSections", icon: ListMusic, active: false },
{ labelKey: "navRoles", icon: Users, active: false },
{ labelKey: "navStemLab", icon: AudioWaveform, active: false },
{ labelKey: "navCues", icon: Sparkles, active: false },
{ labelKey: "navTranspose", icon: SlidersHorizontal, active: false },
{ labelKey: "navNotes", icon: FileMusic, active: false }
] as const;
Comment thread apps/desktop/src/App.tsx
Comment on lines +505 to +507
<nav aria-label={t("primaryRehearsalViewsAriaLabel")} className="space-y-2">
{NAV_ITEMS.map(({ labelKey, icon: Icon, active }) => {
const label = t(labelKey as TranslationKey);
Comment thread apps/desktop/src/App.tsx
Comment on lines +180 to +188
function sectionCountDetail(t: ReturnType<typeof createTranslator>, sectionCount: number): string {
if (sectionCount === 0) {
return t("metricConfidenceLocalAnalysis");
}
if (sectionCount === 1) {
return `1 ${t("metricConfidenceSectionSingular")}`;
}
return `${sectionCount} ${t("metricConfidenceSectionPlural")}`;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants