feat(i18n): 사용자 화면 문구를 I18n 키로 통일한다

This commit is contained in:
Yu Sung
2026-03-31 17:37:29 +09:00
parent b2f66cf408
commit 8e4fe7a534
18 changed files with 551 additions and 256 deletions

View File

@@ -416,20 +416,17 @@
- [ ] `SodaLive/Sources/MyPage/ServiceCenter/ServiceCenterViewModel.swift`
### Notification (2)
- [ ] `SodaLive/Sources/Notification/List/PushNotificationListItemView.swift`
- [ ] `SodaLive/Sources/Notification/List/PushNotificationListView.swift`
### Onboarding (1)
- [ ] `SodaLive/Sources/Onboarding/OnboardingView.swift`
- [x] `SodaLive/Sources/Notification/List/PushNotificationListItemView.swift`
- [x] `SodaLive/Sources/Notification/List/PushNotificationListView.swift`
### Report (4)
- [ ] `SodaLive/Sources/Report/CheersReportDialogView.swift`
- [ ] `SodaLive/Sources/Report/ProfileReportDialogView.swift`
- [ ] `SodaLive/Sources/Report/ProfileReportMenuView.swift`
- [ ] `SodaLive/Sources/Report/UserReportDialogView.swift`
- [x] `SodaLive/Sources/Report/CheersReportDialogView.swift`
- [x] `SodaLive/Sources/Report/ProfileReportDialogView.swift`
- [x] `SodaLive/Sources/Report/ProfileReportMenuView.swift`
- [x] `SodaLive/Sources/Report/UserReportDialogView.swift`
### SearchChannel (1)
- [ ] `SodaLive/Sources/SearchChannel/SearchChannelView.swift`
- [x] `SodaLive/Sources/SearchChannel/SearchChannelView.swift`
### Settings (15)
- [ ] `SodaLive/Sources/Settings/Content/ContentSettingsView.swift`
@@ -457,14 +454,14 @@
- [ ] `SodaLive/Sources/UI/Component/SeriesListItemView.swift`
### User (8)
- [ ] `SodaLive/Sources/User/FindPassword/FindPasswordView.swift`
- [ ] `SodaLive/Sources/User/FindPassword/FindPasswordViewModel.swift`
- [ ] `SodaLive/Sources/User/Login/LoginView.swift`
- [ ] `SodaLive/Sources/User/Login/LoginViewModel.swift`
- [ ] `SodaLive/Sources/User/SignUp/SignUpView.swift`
- [ ] `SodaLive/Sources/User/SignUp/SignUpViewModel.swift`
- [ ] `SodaLive/Sources/User/UserTextField.swift`
- [ ] `SodaLive/Sources/User/UserViewModel.swift`
- [x] `SodaLive/Sources/User/FindPassword/FindPasswordView.swift`
- [x] `SodaLive/Sources/User/FindPassword/FindPasswordViewModel.swift`
- [x] `SodaLive/Sources/User/Login/LoginView.swift`
- [x] `SodaLive/Sources/User/Login/LoginViewModel.swift`
- [x] `SodaLive/Sources/User/SignUp/SignUpView.swift`
- [x] `SodaLive/Sources/User/SignUp/SignUpViewModel.swift`
- [x] `SodaLive/Sources/User/UserTextField.swift`
- [x] `SodaLive/Sources/User/UserViewModel.swift`
## 검증 기록
### 1차 계획 수립 (2026-03-31)
@@ -612,3 +609,19 @@
- 모듈 재검증 결과, 남은 한글 문자열은 Preview 샘플/`DEBUG_LOG`/SDK 입력값(비노출)만 존재.
- 빌드 검증: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 성공(`** BUILD SUCCEEDED **`).
- 테스트 검증: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`로 테스트 액션 미구성 확인(코드 실패 아님, 스킴 제약).
### 9차 구현 (User/SearchChannel/Report/Notification 15개 파일 i18n 전환, 2026-03-31)
- 무엇/왜/어떻게:
- 무엇: 변경 대상 목록 중 `User`, `SearchChannel`, `Report`, `Notification` 모듈의 15개 파일을 처리해 화면 문자열과 사용자 노출 에러 메시지를 `I18n.*`로 통일했다.
- 왜: 로그인/회원가입/비밀번호 재설정/채널 탐색/신고/알림 화면에 하드코딩 문구가 남아 있어 다국어 접근이 일관되지 않았기 때문이다.
- 어떻게: 관련 뷰와 뷰모델의 문자열을 교체하고, `I18n.swift``User`, `SignUp`, `FindPassword`, `SearchChannel`, `NotificationList`, `Report` 키를 보강했다.
- 실행 명령/도구:
- `rg -n 'Text\\(\"|SecureField\\(\"|TextField\\(\"|DetailNavigationBar\\(title: \\\"|String\\(localized: \\\"|errorMessage = \\\"|let reasons = \\[' SodaLive/Sources/User SodaLive/Sources/SearchChannel SodaLive/Sources/Report SodaLive/Sources/Notification -g '!**/generated/**'`
- `rg -n 'I18n\\.(User|SignUp|FindPassword|Login|SearchChannel|NotificationList|Report|Common)' SodaLive/Sources/User SodaLive/Sources/SearchChannel SodaLive/Sources/Report SodaLive/Sources/Notification -g '!**/generated/**'`
- `xcodebuild -project "SodaLive.xcodeproj" -scheme "SodaLive" -configuration Debug build`
- `HOME=/tmp/codexhome xcodebuild -project "SodaLive.xcodeproj" -scheme "SodaLive" -configuration Debug -derivedDataPath /tmp/SodaLiveDerivedData -clonedSourcePackagesDirPath /tmp/SodaLiveSPM build`
- 결과:
- `User` 8개 파일, `SearchChannel` 1개 파일, `Report` 4개 파일, `Notification` 2개 파일 체크박스를 완료 처리했다.
- `PushNotificationListItemView.swift`의 시간 구분자도 `I18n.NotificationList.timestampSeparator`로 이관했다.
- `xcodebuild`는 샌드박스 내 캐시/시뮬레이터 접근 제약과 이후 네트워크 차단으로 실패했다. 첫 시도는 workspace 인식 문제와 CoreSimulator 환경 오류가 섞여 있었고, 프로젝트 빌드로 전환한 뒤에는 Swift Package 의존성(`objectbox-swift-spm`)을 GitHub에서 가져오지 못해 중단되었다.
- 따라서 이번 턴에서는 정적 치환과 문서 동기화까지 완료했고, 실제 컴파일 성공 여부는 네트워크가 허용되는 환경에서 추가 확인이 필요하다.