feat(i18n): 콘텐츠 모듈 그룹2 하드코딩 문구를 I18n 키로 통일한다
This commit is contained in:
@@ -153,16 +153,16 @@
|
||||
- [x] `SodaLive/Sources/Content/ContentListItemView.swift`
|
||||
|
||||
#### Group 2 (11-20)
|
||||
- [ ] `SodaLive/Sources/Content/ContentListView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/ContentPlayManager.swift`
|
||||
- [ ] `SodaLive/Sources/Content/ContentRepository.swift`
|
||||
- [ ] `SodaLive/Sources/Content/Create/ContentCreateSelectThemeView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/Create/ContentCreateSelectThemeViewModel.swift`
|
||||
- [ ] `SodaLive/Sources/Content/Create/ContentCreateView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/Create/ContentCreateViewModel.swift`
|
||||
- [ ] `SodaLive/Sources/Content/Create/QuarterTimePickerView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/Create/SelectDatePicker.swift`
|
||||
- [ ] `SodaLive/Sources/Content/Curation/ContentCurationView.swift`
|
||||
- [x] `SodaLive/Sources/Content/ContentListView.swift`
|
||||
- [x] `SodaLive/Sources/Content/ContentPlayManager.swift`
|
||||
- [x] `SodaLive/Sources/Content/ContentRepository.swift`
|
||||
- [x] `SodaLive/Sources/Content/Create/ContentCreateSelectThemeView.swift`
|
||||
- [x] `SodaLive/Sources/Content/Create/ContentCreateSelectThemeViewModel.swift`
|
||||
- [x] `SodaLive/Sources/Content/Create/ContentCreateView.swift`
|
||||
- [x] `SodaLive/Sources/Content/Create/ContentCreateViewModel.swift`
|
||||
- [x] `SodaLive/Sources/Content/Create/QuarterTimePickerView.swift`
|
||||
- [x] `SodaLive/Sources/Content/Create/SelectDatePicker.swift`
|
||||
- [x] `SodaLive/Sources/Content/Curation/ContentCurationView.swift`
|
||||
|
||||
#### Group 3 (21-30)
|
||||
- [ ] `SodaLive/Sources/Content/Curation/ContentCurationViewModel.swift`
|
||||
@@ -1012,3 +1012,41 @@
|
||||
- LSP 진단: SourceKit 단독 해석 환경에서 외부 모듈/프로젝트 심볼 미해결 오류(`Kingfisher`, `BaseView`, `I18n` 등)가 보고되나, 동일 변경셋은 `xcodebuild` 실컴파일 통과로 검증 완료.
|
||||
- 빌드 검증: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 성공(`** BUILD SUCCEEDED **`).
|
||||
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 test action 미구성 확인(코드 실패 아님, 스킴 제약).
|
||||
|
||||
### 22차 구현 (Content 모듈 Group 2, 10개 파일 처리, 2026-04-01)
|
||||
- 무엇/왜/어떻게:
|
||||
- 무엇: `변경 대상 파일 전체 목록`의 `Content` Group 2(11~20, 10개 파일)를 전수 점검하고, 런타임 사용자 노출 하드코딩 문구를 `I18n.*` 참조로 전환했다.
|
||||
- 왜: 콘텐츠 목록/큐레이션/생성 플로우 구간에서 하드코딩 문자열이 남아 있어 `I18n.swift` 단일 접근 원칙과 불일치했기 때문이다.
|
||||
- 어떻게: Group 2 대상 파일을 병렬 탐색한 뒤(`explore`/`librarian`), `grep`/`ast_grep_search`/`lsp_diagnostics`로 치환 대상을 확정하고 `I18n.Content.*`, `I18n.CreateContent.*` 키를 추가·연결했다. 동적 글자수 표기는 함수형 키(`characterCount(_:)`)로 처리했다.
|
||||
- 실행 명령/도구:
|
||||
- `task(subagent_type="explore", ...)` x2 (`bg_70fab19d`, `bg_9fe99782`)
|
||||
- `task(subagent_type="librarian", ...)` x2 (`bg_934b15f1`, `bg_faea5e5d`)
|
||||
- `background_output(task_id=...)` x4 (위 4개 task 결과 수집)
|
||||
- `grep("\"[^\"]*[가-힣][^\"]*\"", include=Group2 대상 파일)`
|
||||
- `grep("String\\(localized:|NSLocalizedString\\(|LocalizedStringKey\\(", include=Group2 대상 파일)`
|
||||
- `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.Content.List.*`(목록 섹션/필터/정렬 라벨)
|
||||
- `I18n.Content.Playback.playFailed`
|
||||
- `I18n.CreateContent.*`(테마 선택/입력 폼/알림/검증 문구)
|
||||
- `I18n.CreateContent.characterCount(_ count: Int)`
|
||||
- 치환 완료 파일(실치환 9개):
|
||||
- `ContentListView.swift`, `ContentPlayManager.swift`
|
||||
- `ContentCreateSelectThemeView.swift`, `ContentCreateSelectThemeViewModel.swift`
|
||||
- `ContentCreateView.swift`, `ContentCreateViewModel.swift`
|
||||
- `QuarterTimePickerView.swift`, `SelectDatePicker.swift`
|
||||
- `ContentCurationView.swift`
|
||||
- 점검만 수행(실치환 없음, 체크 완료 1개):
|
||||
- `ContentRepository.swift` (사용자 노출 문구 없음; API 정렬 기본 파라미터 `"매출"`만 존재)
|
||||
- Group 2 체크박스 10개 `- [x]` 완료 반영.
|
||||
- Group 2 재탐지 결과, 남은 한글 리터럴은 `ContentPlayManager.swift`의 디버그 `print` 로그 3건 및 `ContentRepository.swift`의 API 파라미터 기본값 1건(비노출)만 확인.
|
||||
- 직접 로컬라이제이션 API(`String(localized:)`, `NSLocalizedString`, `LocalizedStringKey`)는 Group 2 대상 파일에서 0건으로 확인.
|
||||
- 빌드 검증: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 성공(`** BUILD SUCCEEDED **`).
|
||||
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 test action 미구성 확인(코드 실패 아님, 스킴 제약).
|
||||
- 수동 QA(문구 경로 수동 점검): Group 2 변경 파일에서 사용자 노출 텍스트가 `I18n.*` 경유인지 라인 단위 검토 완료. 비노출 문자열(디버그 로그/API 파라미터)은 예외로 문서화했다.
|
||||
- LSP 진단 참고: SourceKit 단독 해석 환경에서 외부 모듈/프로젝트 심볼(`Kingfisher`, `ObjectBox`, `I18n`, `AppState` 등) 미해결 오류가 보고되나, 동일 변경셋은 `xcodebuild` 실컴파일 통과로 검증했다.
|
||||
|
||||
Reference in New Issue
Block a user