feat(i18n): 라이브 모듈 하드코딩 문구를 I18n 키로 통일한다
This commit is contained in:
@@ -319,28 +319,28 @@
|
||||
|
||||
### Live (56)
|
||||
#### Group 1 (1-10)
|
||||
- [ ] `SodaLive/Sources/Live/Cancel/LiveCancelDialog.swift`
|
||||
- [ ] `SodaLive/Sources/Live/LatestFinishedLiveItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/LiveReplayListView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/LiveView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/LiveViewModel.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Now/All/LiveNowAllItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Now/All/LiveNowAllView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Now/LiveNowItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Now/SectionLiveNowView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/RecommendChannel/SectionRecommendChannelView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Cancel/LiveCancelDialog.swift`
|
||||
- [x] `SodaLive/Sources/Live/LatestFinishedLiveItemView.swift`
|
||||
- [x] `SodaLive/Sources/Live/LiveReplayListView.swift`
|
||||
- [x] `SodaLive/Sources/Live/LiveView.swift`
|
||||
- [x] `SodaLive/Sources/Live/LiveViewModel.swift`
|
||||
- [x] `SodaLive/Sources/Live/Now/All/LiveNowAllItemView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Now/All/LiveNowAllView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Now/LiveNowItemView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Now/SectionLiveNowView.swift`
|
||||
- [x] `SodaLive/Sources/Live/RecommendChannel/SectionRecommendChannelView.swift`
|
||||
|
||||
#### Group 2 (11-20)
|
||||
- [ ] `SodaLive/Sources/Live/Reservation/All/LiveReservationAllItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Reservation/All/LiveReservationAllView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Reservation/Complete/LiveReservationCompleteView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Reservation/LiveReservationItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Reservation/MyLiveReservationItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Reservation/SectionLiveReservationView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Room/Chat/LiveRoomChatItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Room/Chat/LiveRoomDonationChatItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Room/Chat/LiveRoomHeartDonationChatItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Live/Room/Chat/LiveRoomJoinChatItemView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Reservation/All/LiveReservationAllItemView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Reservation/All/LiveReservationAllView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Reservation/Complete/LiveReservationCompleteView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Reservation/LiveReservationItemView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Reservation/MyLiveReservationItemView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Reservation/SectionLiveReservationView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Room/Chat/LiveRoomChatItemView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Room/Chat/LiveRoomDonationChatItemView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Room/Chat/LiveRoomHeartDonationChatItemView.swift`
|
||||
- [x] `SodaLive/Sources/Live/Room/Chat/LiveRoomJoinChatItemView.swift`
|
||||
|
||||
#### Group 3 (21-30)
|
||||
- [ ] `SodaLive/Sources/Live/Room/Chat/LiveRoomRouletteDonationChatItemView.swift`
|
||||
@@ -892,3 +892,41 @@
|
||||
- 공통 키 재사용 정리: `I18n.Common.viewAll`, `I18n.Common.latestContent`, `I18n.Settings.companyInfo`, `I18n.Chat.Auth.*`, `I18n.LiveRoom.follow/following` 적용.
|
||||
- Oracle 후속 보정: 홈 FAB 버튼 문구를 제목형 키(`uploadTitle`)에서 CTA 전용 키(`I18n.CreateContent.uploadAction`)로 분리해 영문/일문 의미를 버튼 행동과 일치시킴.
|
||||
- Home Group 1 체크박스 9개 `- [x]` 완료 반영.
|
||||
|
||||
### 18차 구현 (Live 모듈 Group 1~2, 20개 파일 처리, 2026-04-01)
|
||||
- 무엇/왜/어떻게:
|
||||
- 무엇: `변경 대상 파일 전체 목록`의 `Live` Group 1~2(20개 파일)를 전수 점검하고, 런타임 사용자 노출 하드코딩 문구를 `I18n.*`로 전환했다.
|
||||
- 왜: Live 메인/실시간 목록/예약/채팅 아이템에 하드코딩 문구가 남아 있어 모듈 간 i18n 접근이 불일치했고, 동일 의미 문구가 ViewModel에 중복되어 유지보수 비용이 높았기 때문이다.
|
||||
- 어떻게: explore/librarian 병렬 탐색 + `grep`/`ast_grep_search` 직접 점검으로 대상 문자열을 분류한 뒤, `I18n.swift`에 Live 전용 키셋(`LiveMain`, `LiveNow`, `LiveReservation`, `LiveChat`)을 추가하고 호출부를 치환했다. 기존 공통 키(`I18n.Common`, `I18n.MemberChannel`, `I18n.Main.Auth`)는 재사용했다.
|
||||
- 실행 명령/도구:
|
||||
- `task(subagent_type="explore", ...)` x2 (`bg_d093725e`, `bg_d4acf3b2`)
|
||||
- `task(subagent_type="librarian", ...)` x2 (`bg_cfe29077`, `bg_b4c29632`)
|
||||
- `background_output(task_id=...)` x4 (위 4개 task 결과 수집)
|
||||
- `grep("\"[^\"]*[가-힣][^\"]*\"", include=대상파일, path=SodaLive/Sources/Live/**)`
|
||||
- `grep("String\\(localized:|LocalizedStringKey\\(|NSLocalizedString\\(", include=*.swift, path=SodaLive/Sources/Live)`
|
||||
- `ast_grep_search(pattern="Text(\"$TEXT\")", lang=swift, paths=[SodaLive/Sources/Live])`
|
||||
- `bash: rg -n ...` (`command not found` 확인)
|
||||
- `lsp_diagnostics(filePath=변경 파일 전체)`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test`
|
||||
- 결과:
|
||||
- `I18n.swift` 추가/확장 키셋:
|
||||
- 신규: `I18n.LiveMain`, `I18n.LiveReservation(Section/All/Item/Complete)`, `I18n.LiveChat`
|
||||
- 확장: `I18n.LiveNow(sectionTitle/emptyStateMessage/refreshButton/followingChannelsTitle/liveBadge/moreButton)`, `I18n.LiveCancel(title/cancelButton/confirmButton)`, `I18n.MemberChannel.alreadyEndedLive`
|
||||
- 치환 완료 파일(실치환 18개):
|
||||
- `LiveCancelDialog.swift`, `LiveReplayListView.swift`, `LiveView.swift`, `LiveViewModel.swift`
|
||||
- `LiveNowAllView.swift`, `LiveNowItemView.swift`, `SectionLiveNowView.swift`, `SectionRecommendChannelView.swift`
|
||||
- `LiveReservationAllItemView.swift`, `LiveReservationAllView.swift`, `LiveReservationCompleteView.swift`, `LiveReservationItemView.swift`, `MyLiveReservationItemView.swift`, `SectionLiveReservationView.swift`
|
||||
- `LiveRoomChatItemView.swift`, `LiveRoomDonationChatItemView.swift`, `LiveRoomHeartDonationChatItemView.swift`, `LiveRoomJoinChatItemView.swift`
|
||||
- 점검만 수행(실치환 없음, 체크 완료 2개):
|
||||
- `LatestFinishedLiveItemView.swift` (런타임 고정 문구 없음, 표시값은 API 기반)
|
||||
- `LiveNowAllItemView.swift` (런타임 문구가 기존 `I18n` 참조 또는 데이터 바인딩)
|
||||
- Group 1~2 체크박스 20개 `- [x]` 반영 완료.
|
||||
- 대상 재탐지 결과, 잔여 한글 리터럴은 Preview 샘플/SDK 입력값(`payload.pg`, `payload.method`, `payload.orderName`)/서버 메시지 분기 비교(`message.contains("종료")`)만 존재.
|
||||
- 빌드 검증:
|
||||
- `SodaLive` Debug 빌드 성공(`** BUILD SUCCEEDED **`).
|
||||
- `SodaLive-dev` Debug 빌드는 병렬 실행 시 `build.db` lock으로 1회 실패 후, 단독 재실행에서 성공(`** BUILD SUCCEEDED **`).
|
||||
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 테스트 액션 미구성 확인(코드 실패 아님, 스킴 제약).
|
||||
- LSP 진단: SourceKit 단독 해석 환경에서 외부 모듈/프로젝트 심볼 미해결 오류(`RefreshableScrollView`, `Kingfisher`, `AppState` 등)가 보고되나, 동일 변경셋은 `xcodebuild` 실컴파일 통과로 검증 완료.
|
||||
|
||||
Reference in New Issue
Block a user