feat(i18n): 콘텐츠 모듈 그룹1 하드코딩 문구를 I18n 키로 통일한다
This commit is contained in:
@@ -141,16 +141,16 @@
|
||||
|
||||
### Content (78)
|
||||
#### Group 1 (1-10)
|
||||
- [ ] `SodaLive/Sources/Content/All/ByTheme/ContentAllByThemeView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/All/ByTheme/ContentAllByThemeViewModel.swift`
|
||||
- [ ] `SodaLive/Sources/Content/All/ContentAllView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/All/ContentNewAllItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/All/ContentNewAllView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/All/ContentRankingAllView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/All/ContentRankingAllViewModel.swift`
|
||||
- [ ] `SodaLive/Sources/Content/Category/ContentListCategoryView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/ContentItemView.swift`
|
||||
- [ ] `SodaLive/Sources/Content/ContentListItemView.swift`
|
||||
- [x] `SodaLive/Sources/Content/All/ByTheme/ContentAllByThemeView.swift`
|
||||
- [x] `SodaLive/Sources/Content/All/ByTheme/ContentAllByThemeViewModel.swift`
|
||||
- [x] `SodaLive/Sources/Content/All/ContentAllView.swift`
|
||||
- [x] `SodaLive/Sources/Content/All/ContentNewAllItemView.swift`
|
||||
- [x] `SodaLive/Sources/Content/All/ContentNewAllView.swift`
|
||||
- [x] `SodaLive/Sources/Content/All/ContentRankingAllView.swift`
|
||||
- [x] `SodaLive/Sources/Content/All/ContentRankingAllViewModel.swift`
|
||||
- [x] `SodaLive/Sources/Content/Category/ContentListCategoryView.swift`
|
||||
- [x] `SodaLive/Sources/Content/ContentItemView.swift`
|
||||
- [x] `SodaLive/Sources/Content/ContentListItemView.swift`
|
||||
|
||||
#### Group 2 (11-20)
|
||||
- [ ] `SodaLive/Sources/Content/ContentListView.swift`
|
||||
@@ -975,3 +975,40 @@
|
||||
- 빌드 검증: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 성공(`** BUILD SUCCEEDED **`).
|
||||
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 test action 미구성 확인(코드 실패 아님, 스킴 제약).
|
||||
- LSP 진단 참고: SourceKit 단독 해석에서 외부 모듈/프로젝트 심볼(`Moya`, `Kingfisher`, `I18n` 등) 미해결 오류가 보고되었으나, 동일 변경셋은 `xcodebuild` 실컴파일 통과로 검증했다.
|
||||
|
||||
### 21차 구현 (Content 모듈 Group 1, 10개 파일 처리, 2026-04-01)
|
||||
- 무엇/왜/어떻게:
|
||||
- 무엇: `변경 대상 파일 전체 목록`의 `Content` Group 1(10개 파일)을 전수 점검하고, 런타임 사용자 노출 하드코딩 문구를 `I18n.*` 참조로 전환했다.
|
||||
- 왜: 콘텐츠 전체/신규/랭킹/테마별 목록 구간에 하드코딩 문자열, `String(localized:)` 직접 참조, ViewModel 공통 오류 문구가 혼재되어 `I18n.swift` 단일 접근 원칙과 불일치했기 때문이다.
|
||||
- 어떻게: explore/librarian 병렬 탐색 + `grep`/`ast_grep_search`/`lsp_symbols` 직접 점검으로 치환 대상을 확정하고, `I18n.swift`에 `I18n.Content` 네임스페이스를 추가한 뒤 Group 1 호출부를 교체했다.
|
||||
- 실행 명령/도구:
|
||||
- `task(subagent_type="explore", ...)` x2 (`bg_65648347`, `bg_d4b726f6`)
|
||||
- `task(subagent_type="librarian", ...)` x2 (`bg_c8e277d6`, `bg_a66e0329`)
|
||||
- `background_output(task_id=...)` x4 (위 4개 task 결과 수집)
|
||||
- `grep("\"[^\"]*[가-힣][^\"]*\"", include=Group1 대상 파일)`
|
||||
- `grep("String\\(localized:|NSLocalizedString\\(|LocalizedStringKey\\(", include=Group1 대상 파일)`
|
||||
- `ast_grep_search(pattern="Text(\"$TEXT\")", lang=swift, paths=[SodaLive/Sources/Content])`
|
||||
- `lsp_symbols(filePath=I18n.swift, scope=document, query=Content)`
|
||||
- `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` 키셋 추가:
|
||||
- `All(title/freeTitle/pointRentalTitle)`
|
||||
- `New(title/freeTitle/recentTwoWeeksNotice)`
|
||||
- `Ranking(title/weeklyUpdateNotice)`
|
||||
- `Sort(newest/popularity/priceHigh/priceLow)`
|
||||
- `Count(totalPrefix/countUnit)`
|
||||
- `Status(owned/rented/soldOut)`
|
||||
- 치환 완료 파일(실치환 9개):
|
||||
- `ContentAllByThemeView.swift`, `ContentAllByThemeViewModel.swift`, `ContentAllView.swift`, `ContentNewAllItemView.swift`, `ContentNewAllView.swift`, `ContentRankingAllView.swift`, `ContentRankingAllViewModel.swift`, `ContentListCategoryView.swift`, `ContentListItemView.swift`
|
||||
- 점검만 수행(실치환 없음, 체크 완료 1개):
|
||||
- `ContentItemView.swift` (런타임 하드코딩 문구 없음, Preview 샘플 문자열만 존재)
|
||||
- Group 1 체크박스 10개 `- [x]` 완료 반영.
|
||||
- Group 1 재탐지 결과, 남은 한글 리터럴은 `ContentRankingAllViewModel.swift`의 API 정렬 파라미터 기본값(`"매출"`)과 Preview 샘플(`ContentItemView.swift`, `ContentListItemView.swift`)만 존재.
|
||||
- `ContentAllView.swift`의 `String(localized:)` 직접 참조(내비게이션 타이틀)를 `I18n.Content.All.*`로 전환해 호출 경로를 통일.
|
||||
- LSP 진단: SourceKit 단독 해석 환경에서 외부 모듈/프로젝트 심볼 미해결 오류(`Kingfisher`, `BaseView`, `I18n` 등)가 보고되나, 동일 변경셋은 `xcodebuild` 실컴파일 통과로 검증 완료.
|
||||
- 빌드 검증: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 성공(`** BUILD SUCCEEDED **`).
|
||||
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 test action 미구성 확인(코드 실패 아님, 스킴 제약).
|
||||
|
||||
Reference in New Issue
Block a user