2026-07-23 사용성 감사(A그룹 5건 + 지시 추가분)를 한 번에 반영.
[테마] '시스템 설정 따름' 추가 + 기본값 light→system. "system"은 스킴을
강제하지 않아(preferredColorScheme nil) 앱·위젯('앱 일치' 옵션,
WidgetThemeOption.scheme: ColorScheme?)·DEBUG 위젯 미리보기까지
시스템 라이트/다크를 그대로 따른다
[온보딩] 첫 실행 3장 소개(OnboardingView — 행동→목표·다짐→정리).
데이터가 하나도 없고 본 적 없을 때만 1회(건너뛰기 포함 재표시 없음,
onboarding.done), 시드·마케팅 촬영 플로우는 자동 건너뜀.
설정 → 지원 '앱 소개 다시 보기'로 재열람
[일기 잠금] 설정 → 일기(iPad 전용 표시) 토글 — DiaryLock이
.deviceOwnerAuthentication으로 Face ID/Touch ID/Optic ID+암호 폴백을
기기별 분기 없이 처리. 일기 탭 진입 게이트(DiaryLockGateView),
백그라운드 재잠금, 토글 변경 시 인증 요구, 잠글 수단 없는 기기는
통과(영구 잠김 방지). NSFaceIDUsageDescription 추가(Info.plist+
InfoPlist.xcstrings ko/en/ja)
[통계] 이전 기간 비교 카드(맨 위) — 총 시간·횟수를 어제/지난주/지난달과
비교(▲▼%, 이전 기록 없으면 상태 문구). 이전 기간은 관계 기반
Aggregator로 직접 집계, 필터 반영. 화면 전용(내보내기 미포함 의도)
[스플래시] 1.2→0.7초 단축 (하루에도 여러 번 여는 앱)
[워치] 행동 실행 탭 시 WKInterfaceDevice.play(.click) 햅틱 — 화면을
안 보고 탭해도 접수 확인
[컴플리케이션] rectangular 빈 상태에 해결 안내("목표 편집에서
'애플워치에서 보기'를 켜면 나타나요") — 옵트인 발견성 보완
[문구] 행동 편집기 꼬리표 색 규칙(여러 개면 가장 먼저 만든 꼬리표),
새로고침 버튼 accessibilityHint
- 도움말 3주제 추가(새로고침 버튼·일기 잠금·이전 기간과 비교)
- 신규 문구 31키 en/ja 완역 + 워치 카탈로그 2키, missing/stale 0
- CLAUDE.md §6·§6.6·§6.7·§6.8·§10·§11·§14 갱신, DEBUG 인자
-showOnboarding·-diaryLockScreen 추가
- 검증: Debug/워치/Store 빌드, 온보딩·설정·비교 카드·잠금 게이트·
컴플리케이션 스크린샷
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
648 lines
15 KiB
Plaintext
648 lines
15 KiB
Plaintext
{
|
|
"sourceLanguage" : "ko",
|
|
"strings" : {
|
|
"%@" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%@"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%@"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"%@ %@" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%@ %@"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%@ %@"
|
|
}
|
|
},
|
|
"ko" : {
|
|
"stringUnit" : {
|
|
"state" : "new",
|
|
"value" : "%1$@ %2$@"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"%@ %lld%%" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%@ %lld%%"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%@ %lld%%"
|
|
}
|
|
},
|
|
"ko" : {
|
|
"stringUnit" : {
|
|
"state" : "new",
|
|
"value" : "%1$@ %2$lld%%"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"%@ +%lld" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%@ +%lld"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%@ +%lld"
|
|
}
|
|
},
|
|
"ko" : {
|
|
"stringUnit" : {
|
|
"state" : "new",
|
|
"value" : "%1$@ +%2$lld"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"%lld" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%lld"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%lld"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"%lld%%" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%lld%%"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "%lld%%"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"+%lld" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "+%lld"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "+%lld"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"기간" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Period"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "期間"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"다짐" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Quest"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "クエスト"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"다짐 달성률" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Quest Progress"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "クエスト達成率"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"다짐 없음" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "No quest"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "クエストなし"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"독서" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Reading"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "読書"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"목표" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Goals"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "目標"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"목표 달성률" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Goal Progress"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "目標達成率"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"목표 없음" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "No goal"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "目標なし"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"새로고침" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Refresh"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "更新"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"선택한 다짐의 달성률을 표시해요. 한도형 다짐은 상태로 표시돼요. (프리미엄)" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Shows the selected quest's progress. Limit quests show their status. (Premium)"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "選択したクエストの達成率を表示します。上限型はステータス表示になります。(プレミアム)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"선택한 목표의 하루/주간/월간 달성률을 표시해요. (프리미엄)" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Shows the selected goal's daily/weekly/monthly progress. (Premium)"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "選択した目標の日/週/月の達成率を表示します。(プレミアム)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"실행 중 아님" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Not running"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "実行中なし"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"앱을 열면 새로고침돼요" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Open the app to refresh"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "アプリを開くと更新されます"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"없음" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "None"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "なし"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"월간" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Monthly"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "月間"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"주간" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Weekly"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "週間"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"초과" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Over"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "超過"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"측정 중" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Tracking"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "計測中"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"측정 중인 행동과 경과 시간을 표시해요. (프리미엄)" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Shows the running action and elapsed time. (Premium)"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "計測中のアクションと経過時間を表示します。(プレミアム)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"측정 표시 새로고침 필요" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Timer display needs a refresh"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "計測表示の更新が必要"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"측정 표시가 오래됐어요" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Timer display is out of date"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "計測表示が古くなっています"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"표시할 다짐과 기간을 선택하세요." : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Choose a quest and period to display."
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "表示するクエストと期間を選んでください。"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"표시할 다짐이 없어요 — iPhone 목표 편집에서 '애플워치에서 보기'를 켜면 나타나요" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "No quests to show — turn on 'Show on Apple Watch' when editing a goal on iPhone"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "表示するクエストがありません — iPhoneの目標編集で「Apple Watchで表示」をオンにすると表示されます"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"표시할 목표가 없어요 — iPhone 목표 편집에서 '애플워치에서 보기'를 켜면 나타나요" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "No goals to show — turn on 'Show on Apple Watch' when editing a goal on iPhone"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "表示する目標がありません — iPhoneの目標編集で「Apple Watchで表示」をオンにすると表示されます"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"표시할 목표와 기간을 선택하세요." : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Choose a goal and period to display."
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "表示する目標と期間を選んでください。"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"프리미엄" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Premium"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "プレミアム"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"하루" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Daily"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "1日"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"하루 다님" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Haru Danim"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Haru Danim"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"한도" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Limit"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "上限"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"한도 안" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Within"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "上限内"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"한도 초과" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Over limit"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "上限超過"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"현재 현황" : {
|
|
"localizations" : {
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Current Status"
|
|
}
|
|
},
|
|
"ja" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "現在の状況"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"version" : "1.0"
|
|
} |