feat(i18n): 메시지 모듈 하드코딩 문구를 I18n 키로 통일한다
This commit is contained in:
@@ -393,16 +393,16 @@
|
||||
|
||||
### Message (13)
|
||||
#### Group 1 (1-10)
|
||||
- [ ] `SodaLive/Sources/Message/MessageFilterTabView.swift`
|
||||
- [ ] `SodaLive/Sources/Message/MessageView.swift`
|
||||
- [ ] `SodaLive/Sources/Message/Text/Detail/TextMessageDetailView.swift`
|
||||
- [ ] `SodaLive/Sources/Message/Text/Detail/TextMessageDetailViewModel.swift`
|
||||
- [ ] `SodaLive/Sources/Message/Text/SelectRecipient/SelectRecipientView.swift`
|
||||
- [ ] `SodaLive/Sources/Message/Text/SelectRecipient/SelectRecipientViewModel.swift`
|
||||
- [ ] `SodaLive/Sources/Message/Text/TextMessageView.swift`
|
||||
- [ ] `SodaLive/Sources/Message/Text/Write/TextMessageWriteView.swift`
|
||||
- [ ] `SodaLive/Sources/Message/Voice/SoundManager.swift`
|
||||
- [ ] `SodaLive/Sources/Message/Voice/VoiceMessageItemView.swift`
|
||||
- [x] `SodaLive/Sources/Message/MessageFilterTabView.swift`
|
||||
- [x] `SodaLive/Sources/Message/MessageView.swift`
|
||||
- [x] `SodaLive/Sources/Message/Text/Detail/TextMessageDetailView.swift`
|
||||
- [x] `SodaLive/Sources/Message/Text/Detail/TextMessageDetailViewModel.swift`
|
||||
- [x] `SodaLive/Sources/Message/Text/SelectRecipient/SelectRecipientView.swift`
|
||||
- [x] `SodaLive/Sources/Message/Text/SelectRecipient/SelectRecipientViewModel.swift`
|
||||
- [x] `SodaLive/Sources/Message/Text/TextMessageView.swift`
|
||||
- [x] `SodaLive/Sources/Message/Text/Write/TextMessageWriteView.swift`
|
||||
- [x] `SodaLive/Sources/Message/Voice/SoundManager.swift`
|
||||
- [x] `SodaLive/Sources/Message/Voice/VoiceMessageItemView.swift`
|
||||
|
||||
#### Group 2 (11-13)
|
||||
- [ ] `SodaLive/Sources/Message/Voice/VoiceMessageView.swift`
|
||||
@@ -746,3 +746,32 @@
|
||||
- 빌드 검증: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 성공(`** BUILD SUCCEEDED **`).
|
||||
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 테스트 액션 미구성 확인(코드 실패 아님, 스킴 제약).
|
||||
- LSP 진단: SourceKit 단독 해석 환경에서 외부 모듈/심볼(`Kingfisher`, `RichText`, 앱 내부 타입) 미해결 오류가 대량 보고되나, 동일 변경셋은 `xcodebuild` 실컴파일 통과로 검증 완료.
|
||||
|
||||
### 13차 구현 (Message 모듈 Group 1, 10개 파일 처리, 2026-03-31)
|
||||
- 무엇/왜/어떻게:
|
||||
- 무엇: `변경 대상 파일 전체 목록`의 `Message` Group 1(10개 파일)에서 사용자 노출 하드코딩 문구를 `I18n.*` 참조로 전환하고 체크박스를 완료 처리.
|
||||
- 왜: Message 탭/필터/상세/수신자 검색/텍스트 작성/녹음 오류 메시지에 하드코딩 문자열이 남아 있어 `I18n.swift` 단일 접근 원칙과 불일치했기 때문.
|
||||
- 어떻게: explore/librarian 병렬 탐색 + `grep`/`ast_grep_search` 직접 점검으로 치환 범위를 확정하고, `I18n.swift`에 `I18n.Message` 네임스페이스를 추가한 뒤 Group 1 파일 호출부를 치환.
|
||||
- 실행 명령/도구:
|
||||
- `task(subagent_type="explore", ...)` x2 (`bg_21246137`, `bg_bc8d6ca7`)
|
||||
- `task(subagent_type="librarian", ...)` x2 (`bg_fdbe065d`, `bg_ce19e89c`)
|
||||
- `grep("\"[^\"]*[가-힣][^\"]*\"", include=*.swift, path=SodaLive/Sources/Message)`
|
||||
- `grep("NSLocalizedString\\(|String\\(localized:|LocalizedStringKey\\(", include=*.swift, path=SodaLive/Sources/Message)`
|
||||
- `ast_grep_search(pattern="Text(\"$TEXT\")", lang=swift, paths=[SodaLive/Sources/Message])`
|
||||
- `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.Message`(`Tab`, `FilterTab`, `Text.SelectRecipient`, `Text.Write`, `Text.Detail`, `Voice.Sound`) 키셋 추가.
|
||||
- Oracle 후속 보정: `TextMessageDetailViewModel` 삭제 실패 fallback 키를 `keepFailed` → `deleteFailed`로 수정, `TextMessageWriteView` 수신자 라벨을 placeholder 키와 분리(`I18n.Message.Text.Write.recipientLabel`), Message 보관 관련 영문/일문 용어를 `Archive/Archived` 기준으로 통일.
|
||||
- 실치환 파일: `MessageFilterTabView.swift`, `MessageView.swift`, `TextMessageDetailView.swift`, `TextMessageDetailViewModel.swift`, `SelectRecipientView.swift`, `SelectRecipientViewModel.swift`, `TextMessageView.swift`, `TextMessageWriteView.swift`, `SoundManager.swift`.
|
||||
- 점검만 수행(실치환 없음): `VoiceMessageItemView.swift` (사용자 노출 한글 하드코딩 없음, 시간 표기 `00:00` 숫자 포맷만 존재).
|
||||
- Message Group 1 체크박스 10개 `- [x]` 완료 반영.
|
||||
- Group 1 재탐지 결과 한글 리터럴은 `TextMessageDetailView.swift` Preview 샘플 2건(`"누군가"`, `"테스터"`)만 잔존.
|
||||
- `TextMessageDetailView` 날짜 표기는 기존 `convertDateFormat` 경로를 유지해 현재 기기 locale 기준으로 출력됨(앱 언어 설정과 다른 locale일 경우 혼합 표기 가능성은 후속 정리 체크포인트로 유지).
|
||||
- Message 모듈 내 `String(localized:)`/`NSLocalizedString`/`LocalizedStringKey` 직접 참조 0건 확인.
|
||||
- 빌드 검증: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 성공(`** BUILD SUCCEEDED **`).
|
||||
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 테스트 액션 미구성 확인(코드 실패 아님, 스킴 제약).
|
||||
- LSP 진단: SourceKit 단독 해석 환경에서 외부 모듈/프로젝트 심볼 미해결 오류(`Kingfisher`, `MessageRepository` 등)가 보고되나, 동일 변경셋은 `xcodebuild` 실컴파일 통과로 검증 완료.
|
||||
|
||||
Reference in New Issue
Block a user