fix(donation): 후원 문구에 다국어를 적용한다

This commit is contained in:
Yu Sung
2026-08-26 13:18:27 +09:00
parent e46198f87a
commit e3642b3f1b
6 changed files with 267 additions and 8 deletions

View File

@@ -263,3 +263,54 @@
- 2026-08-14: 사용자 인터뷰로 후원 탭 empty 문구의 ko/en/ja 값을 확정하고 기존 후원 버튼 title 재사용을 Phase 6 미완료 후속 Task로 추가했다. 이번 작업은 문서만 보강했으며 Swift 구현과 빌드는 수행하지 않았다.
- 2026-08-14: Phase 6 구현을 완료했다. 후원 탭 empty 문구를 ko/en/ja I18n으로 교체하고 버튼은 기존 `I18n.ContentDetail.DonationDialog.title`을 재사용했으며 `Color.soda400` 배경과 white 아이콘·텍스트를 유지했다. 23개 정적 계약, `git diff --check`, iPhone 16 Pro 시뮬레이터 Debug 빌드가 통과했고, 세 언어 캡처와 두 독립 색상·CJK 리뷰에서 차단 항목 없이 PASS를 확인했다.
### Phase 7: 후원 랭킹·공용 카드 다국어 회귀 수정
**Phase 결과:** 후원 랭킹과 홈·후원 탭 공용 후원 카드의 고정 UI 문구가 ko/en/ja 앱 언어에 맞게 표시된다.
**선행조건:** `REV-P3-001`, `REV-P3-002` 확정과 PRD의 `DEC-DONATION-I18N-001`, `DEC-DONATION-I18N-002`.
#### Task 7.1: 랭킹·공용 카드의 런타임 하드코딩 제거
**Goal 실행 `P7-R1`:** 확정된 네 런타임 하드코딩을 기존 I18n 재사용과 하나의 카드 전용 fallback 문구로 교체한다.
- **시작 조건:** `docs/20260704_크리에이터_채널_후원_탭/reviews/phase3-donation-localization-audit.md``REV-P3-001`, `REV-P3-002`.
- **완료 증거:** 정적 계약 검사, ko/en/ja 수동 확인, Debug 빌드, 검증 기록 누적.
- **범위 밖:** Preview fixture 번역, 신규 dependency·formatter abstraction, 호출 화면의 레이아웃·action 변경.
- **TDD 예외 사유:** 현재 프로젝트에 테스트 번들 타깃이 없고 변경 대상은 분기 없는 I18n 문구 연결이다.
- **대체 검증 방법:** 하드코딩 부재와 I18n 참조를 `rg`로 확인하고, ko/en/ja Simulator에서 두 호출 화면을 수동 확인한다.
**Files:**
- Modify: `SodaLive/Sources/I18n/I18n.swift`
- Modify: `SodaLive/Sources/V2/CreatorChannel/Donation/Components/CreatorChannelDonationRankingSection.swift`
- Modify: `SodaLive/Sources/V2/CreatorChannel/Donation/Components/CreatorChannelDonationCard.swift`
- Verify: `SodaLive/Sources/V2/CreatorChannel/Donation/CreatorChannelDonationTabView.swift`
- Verify: `SodaLive/Sources/V2/CreatorChannel/Home/Components/CreatorChannelDonationSection.swift`
- [x] 랭킹 title을 `I18n.Explorer.donationRankingTitle`로 교체한다.
- [x] 전체보기 action 문구를 `I18n.CreatorChannelHome.viewAll`로 교체한다.
- [x] can pill을 `I18n.LiveChat.canWithUnit(_:)`으로 교체한다.
- [x] 빈 메시지용 `I18n.CreatorChannelDonation.defaultMessage(_:)`를 ko/en/ja로 추가하고 공용 카드에서 사용한다.
- [x] 아래 Gate 결과를 검증 기록에 누적한다.
#### Phase 7 Gate
```bash
rg -n "I18n\.Explorer\.donationRankingTitle|I18n\.CreatorChannelHome\.viewAll" SodaLive/Sources/V2/CreatorChannel/Donation/Components/CreatorChannelDonationRankingSection.swift
rg -n "I18n\.LiveChat\.canWithUnit|I18n\.CreatorChannelDonation\.defaultMessage" SodaLive/Sources/V2/CreatorChannel/Donation/Components/CreatorChannelDonationCard.swift
rg -n "defaultMessage|Donated .* cans|サポートしました" SodaLive/Sources/I18n/I18n.swift
git diff --check
xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build
```
**Expected:** 기존 I18n 3개와 신규 fallback 1개가 연결되고 런타임 한국어 하드코딩이 제거되며 `git diff --check`와 Debug 빌드가 성공한다.
수동 검증:
- [x] ko/en/ja에서 후원 탭 랭킹 title과 전체보기 action을 확인한다.
- [x] ko/en/ja에서 빈 메시지·메시지 있음 카드를 후원 탭과 홈 탭에서 각각 확인한다.
- 2026-08-26: `CreatorChannelDonationRankingSection`, `CreatorChannelDonationCard`와 직접 호출 경로를 점검해 `REV-P3-001`, `REV-P3-002`를 확정하고 `P7-R1`을 추가했다. 사용자 요청에 따라 이번 작업에서는 문서만 작성했으며 Swift·I18n 구현과 Gate 실행은 남겨 두었다.
- 2026-08-26: Phase 7 구현을 완료했다. 랭킹 title·전체보기·can pill은 기존 I18n을 재사용하고, 공용 카드의 빈 메시지 fallback만 ko/en/ja로 추가했다. 변경 전 정적 계약은 두 항목 모두 exit 1, 변경 후 Gate와 `git diff --check`는 exit 0, `SodaLive-dev` Debug 빌드는 `BUILD SUCCEEDED`, 독립 리뷰는 `APPROVED`였다. 사용자 요청에 따라 visual QA는 실행하지 않았으므로 실제 화면 ko/en/ja 수동 검증 두 항목은 미완료로 유지한다.
- 2026-08-26: 사용자 수동 테스트 완료 확인에 따라 Phase 7의 ko/en/ja 실제 화면 검증 두 항목을 완료 처리했다.