feat(i18n): 시리즈 리스트 하드코딩 문구를 I18n 키로 통일한다
This commit is contained in:
@@ -29,15 +29,15 @@ struct SeriesListItemView: View {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
HStack(spacing: 3.3) {
|
||||
if !item.isComplete && item.isNew {
|
||||
SeriesItemBadgeView(title: "신작", backgroundColor: .button)
|
||||
SeriesItemBadgeView(title: I18n.Series.new, backgroundColor: .button)
|
||||
}
|
||||
|
||||
if item.isComplete {
|
||||
SeriesItemBadgeView(title: "완결", backgroundColor: Color(hex: "002abd"))
|
||||
SeriesItemBadgeView(title: I18n.Series.complete, backgroundColor: Color(hex: "002abd"))
|
||||
}
|
||||
|
||||
if item.isPopular {
|
||||
SeriesItemBadgeView(title: "인기", backgroundColor: Color(hex: "ec6033"))
|
||||
SeriesItemBadgeView(title: I18n.Series.popular, backgroundColor: Color(hex: "ec6033"))
|
||||
}
|
||||
|
||||
Spacer()
|
||||
@@ -48,7 +48,7 @@ struct SeriesListItemView: View {
|
||||
HStack {
|
||||
Spacer()
|
||||
|
||||
SeriesItemBadgeView(title: "총 \(item.numberOfContent)화", backgroundColor: Color.gray33.opacity(0.7))
|
||||
SeriesItemBadgeView(title: I18n.Series.totalEpisodes(item.numberOfContent), backgroundColor: Color.gray33.opacity(0.7))
|
||||
}
|
||||
}
|
||||
.padding(3.3)
|
||||
|
||||
@@ -496,12 +496,12 @@
|
||||
|
||||
### UI (6)
|
||||
#### Group 1 (1-6)
|
||||
- [ ] `SodaLive/Sources/UI/Component/SelectedButtonView.swift`
|
||||
- [ ] `SodaLive/Sources/UI/Component/SeriesDetailTabView.swift`
|
||||
- [ ] `SodaLive/Sources/UI/Component/SeriesItemBadgeView.swift`
|
||||
- [ ] `SodaLive/Sources/UI/Component/SeriesKeywordChipView.swift`
|
||||
- [ ] `SodaLive/Sources/UI/Component/SeriesListBigItemView.swift`
|
||||
- [ ] `SodaLive/Sources/UI/Component/SeriesListItemView.swift`
|
||||
- [x] `SodaLive/Sources/UI/Component/SelectedButtonView.swift`
|
||||
- [x] `SodaLive/Sources/UI/Component/SeriesDetailTabView.swift`
|
||||
- [x] `SodaLive/Sources/UI/Component/SeriesItemBadgeView.swift`
|
||||
- [x] `SodaLive/Sources/UI/Component/SeriesKeywordChipView.swift`
|
||||
- [x] `SodaLive/Sources/UI/Component/SeriesListBigItemView.swift`
|
||||
- [x] `SodaLive/Sources/UI/Component/SeriesListItemView.swift`
|
||||
|
||||
### User (8)
|
||||
- [x] `SodaLive/Sources/User/FindPassword/FindPasswordView.swift`
|
||||
@@ -691,3 +691,29 @@
|
||||
- 그룹 재배치 적용 모듈: `Content(78)`, `Explorer(40)`, `Home(9)`, `Live(56)`, `Message(13)`, `MyPage(41)`, `Settings(15)`, `UI(6)`.
|
||||
- 총 `#### Group` 헤더 29개를 삽입해 미완료 항목을 10개 단위(마지막 그룹은 잔여 수)로 분할 완료.
|
||||
- 체크 상태 정합성 유지 확인: 미완료 258개, 완료 71개(기존 총합과 동일).
|
||||
|
||||
### 11차 구현 (UI 모듈 Group 1, 6개 파일 처리, 2026-03-31)
|
||||
- 무엇/왜/어떻게:
|
||||
- 무엇: 변경 대상 목록의 `UI` 모듈 Group 1(6개 파일)을 점검하고, 런타임 사용자 노출 하드코딩 문구를 `I18n.*`로 전환했다.
|
||||
- 왜: 공용 시리즈 카드 컴포넌트 중 `SeriesListItemView.swift`에 배지/회차 문구 하드코딩이 남아 있어 `I18n.swift` 단일 접근 원칙과 불일치했기 때문이다.
|
||||
- 어떻게: explore/librarian 병렬 탐색 결과를 바탕으로 6개 파일 전수 분류(런타임 노출 vs Preview 샘플) 후, 런타임 노출 문자열만 `I18n.Series`로 치환했다.
|
||||
- 실행 명령/도구:
|
||||
- `task(subagent_type="explore", ...)` x2 (`bg_f61d6b84`, `bg_9364b9d5`)
|
||||
- `task(subagent_type="librarian", ...)` x2 (`bg_83bba666`, `bg_3a95eb36`)
|
||||
- `grep("\"[^\"]*[가-힣][^\"]*\"", include=*.swift, path=SodaLive/Sources/UI/Component)`
|
||||
- `ast_grep_search(pattern="Text(\"$TEXT\")", lang=swift, paths=[SodaLive/Sources/UI/Component])`
|
||||
- `lsp_diagnostics(filePath=SodaLive/Sources/UI/Component/SeriesListItemView.swift)`
|
||||
- `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`
|
||||
- 결과:
|
||||
- 실치환 파일: `SodaLive/Sources/UI/Component/SeriesListItemView.swift`
|
||||
- `"신작"` → `I18n.Series.new`
|
||||
- `"완결"` → `I18n.Series.complete`
|
||||
- `"인기"` → `I18n.Series.popular`
|
||||
- `"총 \(item.numberOfContent)화"` → `I18n.Series.totalEpisodes(item.numberOfContent)`
|
||||
- 점검만 수행(실치환 없음): `SelectedButtonView.swift`, `SeriesDetailTabView.swift`, `SeriesItemBadgeView.swift`, `SeriesKeywordChipView.swift`, `SeriesListBigItemView.swift` (남은 한글은 Preview 샘플 데이터/Preview 라벨).
|
||||
- 빌드 검증: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 성공(`** BUILD SUCCEEDED **`).
|
||||
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 테스트 액션 미구성 확인(코드 실패 아님, 스킴 제약).
|
||||
- LSP 진단: `No such module 'Kingfisher'` 1건 확인. 해당 모듈 해석은 SourceKit 인덱싱 환경 제약으로 재현되며, 동일 파일은 실제 `xcodebuild`에서 컴파일 성공 확인.
|
||||
|
||||
Reference in New Issue
Block a user