feat(i18n): 주요 UI 하드코딩 문구를 I18n 키로 통일한다
This commit is contained in:
@@ -220,17 +220,17 @@
|
||||
- [ ] `SodaLive/Sources/Content/Series/SeriesListAllViewModel.swift`
|
||||
|
||||
### CustomView (3)
|
||||
- [ ] `SodaLive/Sources/CustomView/ChatTextFieldView.swift`
|
||||
- [ ] `SodaLive/Sources/CustomView/ExpandableTextView.swift`
|
||||
- [ ] `SodaLive/Sources/CustomView/IconAndTitleToggleButton.swift`
|
||||
- [x] `SodaLive/Sources/CustomView/ChatTextFieldView.swift`
|
||||
- [x] `SodaLive/Sources/CustomView/ExpandableTextView.swift`
|
||||
- [x] `SodaLive/Sources/CustomView/IconAndTitleToggleButton.swift`
|
||||
|
||||
### Dialog (6)
|
||||
- [ ] `SodaLive/Sources/Dialog/ApplyAuditionCompleteDialog.swift`
|
||||
- [ ] `SodaLive/Sources/Dialog/CommunityPostPurchaseDialog.swift`
|
||||
- [ ] `SodaLive/Sources/Dialog/CreatorFollowNotifyDialog.swift`
|
||||
- [ ] `SodaLive/Sources/Dialog/LivePaymentDialog.swift`
|
||||
- [ ] `SodaLive/Sources/Dialog/LiveRoomPasswordDialog.swift`
|
||||
- [ ] `SodaLive/Sources/Dialog/MemberProfileDialog.swift`
|
||||
- [x] `SodaLive/Sources/Dialog/ApplyAuditionCompleteDialog.swift`
|
||||
- [x] `SodaLive/Sources/Dialog/CommunityPostPurchaseDialog.swift`
|
||||
- [x] `SodaLive/Sources/Dialog/CreatorFollowNotifyDialog.swift`
|
||||
- [x] `SodaLive/Sources/Dialog/LivePaymentDialog.swift`
|
||||
- [x] `SodaLive/Sources/Dialog/LiveRoomPasswordDialog.swift`
|
||||
- [x] `SodaLive/Sources/Dialog/MemberProfileDialog.swift`
|
||||
|
||||
### Explorer (40)
|
||||
- [ ] `SodaLive/Sources/Explorer/ExplorerSectionView.swift`
|
||||
@@ -275,7 +275,7 @@
|
||||
- [ ] `SodaLive/Sources/Explorer/Profile/UserProfileViewModel.swift`
|
||||
|
||||
### Follow (1)
|
||||
- [ ] `SodaLive/Sources/Follow/FollowCreatorView.swift`
|
||||
- [x] `SodaLive/Sources/Follow/FollowCreatorView.swift`
|
||||
|
||||
### Home (9)
|
||||
- [ ] `SodaLive/Sources/Home/HomeAuditionView.swift`
|
||||
@@ -289,10 +289,10 @@
|
||||
- [ ] `SodaLive/Sources/Home/RecommendChannel/RecommendChannelItemView.swift`
|
||||
|
||||
### IAP (1)
|
||||
- [ ] `SodaLive/Sources/IAP/StoreManager.swift`
|
||||
- [x] `SodaLive/Sources/IAP/StoreManager.swift`
|
||||
|
||||
### ImagePicker (1)
|
||||
- [ ] `SodaLive/Sources/ImagePicker/ImagePicker.swift`
|
||||
- [x] `SodaLive/Sources/ImagePicker/ImagePicker.swift`
|
||||
|
||||
### Live (56)
|
||||
- [ ] `SodaLive/Sources/Live/Cancel/LiveCancelDialog.swift`
|
||||
@@ -353,9 +353,9 @@
|
||||
- [ ] `SodaLive/Sources/Live/SectionLatestFinishedLiveView.swift`
|
||||
|
||||
### Main (3)
|
||||
- [ ] `SodaLive/Sources/Main/EventPopupDialogView.swift`
|
||||
- [ ] `SodaLive/Sources/Main/Home/BottomTabView.swift`
|
||||
- [ ] `SodaLive/Sources/Main/Home/HomeView.swift`
|
||||
- [x] `SodaLive/Sources/Main/EventPopupDialogView.swift`
|
||||
- [x] `SodaLive/Sources/Main/Home/BottomTabView.swift`
|
||||
- [x] `SodaLive/Sources/Main/Home/HomeView.swift`
|
||||
|
||||
### Message (13)
|
||||
- [ ] `SodaLive/Sources/Message/MessageFilterTabView.swift`
|
||||
@@ -587,3 +587,28 @@
|
||||
- Chat 모듈 하드코딩 한글 재검증 결과, 남은 문자열은 Preview 샘플/SDK 입력값/비노출 분기 로직만 존재.
|
||||
- 빌드 검증: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 성공(`** BUILD SUCCEEDED **`).
|
||||
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 테스트 액션 미구성 확인(코드 실패 아님, 스킴 제약).
|
||||
|
||||
### 8차 구현 (ImagePicker/CustomView/IAP/Follow/Main/Dialog 15개 파일 i18n 전환, 2026-03-31)
|
||||
- 무엇/왜/어떻게:
|
||||
- 무엇: 변경 대상 목록 중 `ImagePicker`, `CustomView`, `IAP`, `Follow`, `Main`, `Dialog` 모듈의 15개 파일을 처리해 사용자 노출 하드코딩 문구를 `I18n.*` 참조로 정리.
|
||||
- 왜: 주요 공통 UI(버튼/다이얼로그/토스트/탭 라벨/인증 안내)에 하드코딩 문자열이 남아 있어 모듈 간 다국어 일관성이 깨지는 상태였기 때문.
|
||||
- 어떻게: explore/librarian 병렬 탐색 + `grep`/`ast_grep_search` 직접 검증으로 치환 대상을 확정하고, `I18n.swift`에 모듈별 네임스페이스(`ImagePicker`, `CustomView`, `IAP`, `Follow`, `Main`, `Dialog`)를 추가한 뒤 호출부를 교체.
|
||||
- 실행 명령/도구:
|
||||
- `task(subagent_type="explore", ...)` x2 (`bg_da05186f`, `bg_81c85d58`)
|
||||
- `task(subagent_type="librarian", ...)` x2 (`bg_4b24d2ad`, `bg_d8b1253f`)
|
||||
- `grep("\"[^\"]*[가-힣][^\"]*\"", include=*.swift, path=SodaLive/Sources/{ImagePicker,CustomView,IAP,Follow,Main,Dialog})` (모듈별 개별 실행)
|
||||
- `grep("String\\(localized:|LocalizedStringKey\\(|NSLocalizedString\\(", include=*.swift, path=...)` (모듈별 개별 실행)
|
||||
- `ast_grep_search(pattern="Text(\"$TEXT\")", lang=swift, paths=[...])`
|
||||
- `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`
|
||||
- 결과:
|
||||
- 호출부 치환 완료 파일: `ImagePicker.swift`, `ExpandableTextView.swift`, `StoreManager.swift`, `FollowCreatorView.swift`, `EventPopupDialogView.swift`, `BottomTabView.swift`, `HomeView.swift`, `ApplyAuditionCompleteDialog.swift`, `CommunityPostPurchaseDialog.swift`, `CreatorFollowNotifyDialog.swift`, `LivePaymentDialog.swift`, `LiveRoomPasswordDialog.swift`, `MemberProfileDialog.swift`.
|
||||
- 점검만 수행(실치환 없음) 파일: `ChatTextFieldView.swift`, `IconAndTitleToggleButton.swift` (Preview 샘플 문자열만 존재, 런타임 노출 문자열 없음).
|
||||
- `I18n.swift` 추가 키셋: `I18n.ImagePicker`, `I18n.CustomView`, `I18n.IAP`, `I18n.Follow`, `I18n.Main`(EventPopup/Tab/Auth), `I18n.Dialog`(ApplyAuditionComplete/CommunityPostPurchase/LivePayment/LiveRoomPassword/MemberProfile).
|
||||
- `Main/Home/HomeView.swift`의 Bootpay 입력값(`payload.pg`, `payload.method`, `payload.orderName`)은 SDK 입력값 유지 원칙에 따라 비노출 고정값으로 유지.
|
||||
- 모듈 재검증 결과, 남은 한글 문자열은 Preview 샘플/`DEBUG_LOG`/SDK 입력값(비노출)만 존재.
|
||||
- 빌드 검증: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 성공(`** BUILD SUCCEEDED **`).
|
||||
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 테스트 액션 미구성 확인(코드 실패 아님, 스킴 제약).
|
||||
|
||||
Reference in New Issue
Block a user