chore(l10n): purge stale catalog entries + per-target stringsdata sync routine
전체 코드 점검 중 발견한 번역 카탈로그 정리: - IOS 카탈로그의 stale 항목 2건 삭제 — "다른 행동 %lld개도 함께 추적 중"은 위젯 타깃 전용 문자열(위젯 카탈로그에 번역 완료 상태로 존재)이고, "프리미엄 상태 (테스트)"는 DEBUG 전용 문구 - DEBUG 프리미엄 토글 라벨을 Text(verbatim:)으로 — 개발용 문구는 카탈로그로 추출하지 않는 컨벤션(§15-6)에 맞춤 (같은 섹션의 다른 문구와 동일) - CLAUDE.md l10n 루틴 수정: 카탈로그마다 자기 타깃의 stringsdata만 sync하도록 경로 필터 추가 — 전 타깃을 한꺼번에 넣으면 위젯 전용 문자열이 IOS 카탈로그에 미번역으로 재유입되던 오염의 근본 원인 제거 (이번 stale의 발생 경로) 검증: 전 카탈로그(9개) missing/stale 0건, 카탈로그 의미 diff = stale 2건 삭제뿐 (번역 변경 없음), Debug·Store 스킴 빌드 성공 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7
This commit is contained in:
parent
aa1c098d98
commit
3f518aa91b
@ -62,9 +62,13 @@ xcodebuild -project Haru_Danim.xcodeproj -scheme Haru_Danim-Store \
|
||||
새 `String(localized:)` 문자열 추가 후:
|
||||
|
||||
```zsh
|
||||
# 1) Debug 빌드 → 2) stringsdata 동기화
|
||||
files=(${(f)"$(find ~/Library/Developer/Xcode/DerivedData/Haru_Danim-*/ -name '*.stringsdata' -path '*Debug-iphonesimulator*')"})
|
||||
xcrun xcstringstool sync IOS/Localizable.xcstrings --stringsdata "${files[@]}"
|
||||
# 1) Debug 빌드 → 2) stringsdata 동기화 — ⚠️ 카탈로그마다 "자기 타깃"의 stringsdata만 넣을 것
|
||||
# (경로의 <타깃명>.build로 구분. 전체를 한꺼번에 넣으면 위젯 전용 문자열이
|
||||
# IOS 카탈로그에 미번역으로 추가됐다가 Xcode 재저장 때 stale로 남는 오염이 생긴다)
|
||||
app_files=(${(f)"$(find ~/Library/Developer/Xcode/DerivedData/Haru_Danim-*/ -name '*.stringsdata' -path '*Debug-iphonesimulator/Haru_Danim.build/*')"})
|
||||
xcrun xcstringstool sync IOS/Localizable.xcstrings --stringsdata "${app_files[@]}"
|
||||
widget_files=(${(f)"$(find ~/Library/Developer/Xcode/DerivedData/Haru_Danim-*/ -name '*.stringsdata' -path '*Debug-iphonesimulator/Haru_DanimWidgets.build/*')"})
|
||||
xcrun xcstringstool sync Widgets/Localizable.xcstrings --stringsdata "${widget_files[@]}"
|
||||
# 3) python으로 en/ja 번역 채움 → 4) sync 재실행으로 포맷 정규화 → 5) missing 확인
|
||||
```
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -442,10 +442,13 @@ struct PremiumView: View {
|
||||
}
|
||||
#if DEBUG
|
||||
Section {
|
||||
Toggle("프리미엄 상태 (테스트)", isOn: Binding(
|
||||
// 개발용 문구는 카탈로그로 추출하지 않는다 (컨벤션 §15-6 — 이 섹션의 다른 문구와 동일)
|
||||
Toggle(isOn: Binding(
|
||||
get: { premium.isPremium },
|
||||
set: { premium.setMockPremium($0) }
|
||||
))
|
||||
)) {
|
||||
Text(verbatim: "프리미엄 상태 (테스트)")
|
||||
}
|
||||
Button {
|
||||
Task {
|
||||
await premium.clearMockOverride()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user