From 8e69bbb25f096603e649de093216f0e5c0813c26 Mon Sep 17 00:00:00 2001 From: songyc macbook Date: Fri, 10 Jul 2026 09:04:33 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20=EC=8A=A4=ED=8E=99=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=C2=B7=EB=A1=9C=EC=BB=AC=EB=9D=BC=EC=9D=B4=EC=A0=9C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EA=B0=B1=EC=8B=A0=20=EB=B0=8F=20xcuserdat?= =?UTF-8?q?a=EB=A5=BC=20gitignore=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7 --- .gitignore | 4 +- myApp/HaruDanim/CLAUDE.md | 72 ++-- .../UserInterfaceState.xcuserstate | Bin 30001 -> 0 bytes .../xcschemes/xcschememanagement.plist | 19 - myApp/HaruDanim/IOS/Localizable.xcstrings | 381 +++++++++++++++++- 5 files changed, 414 insertions(+), 62 deletions(-) delete mode 100644 myApp/HaruDanim/Haru_Danim.xcodeproj/project.xcworkspace/xcuserdata/ceuak.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 myApp/HaruDanim/Haru_Danim.xcodeproj/xcuserdata/ceuak.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.gitignore b/.gitignore index 8803bd6..ad2257d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,6 @@ java/Main.java **/package-lock.json **/package.json **/tsconfig.json -node_modules/ \ No newline at end of file +node_modules/ +# Xcode 사용자별 IDE 상태 (커밋 불필요) +**/xcuserdata/ diff --git a/myApp/HaruDanim/CLAUDE.md b/myApp/HaruDanim/CLAUDE.md index de76d26..3333e71 100644 --- a/myApp/HaruDanim/CLAUDE.md +++ b/myApp/HaruDanim/CLAUDE.md @@ -15,7 +15,7 @@ | 기본 언어 | 한국어 (설정에서 영어 / 일본어 전환 가능) | | 핵심 콘셉트 | 시간 추적형 타임 트래커 + 습관 카운터/스트릭 관리를 하나로 합친 앱. 행동을 버튼 한 번으로 기록하고, 그 기록들이 모여 목표 달성률로 이어지는 구조 | | 수익 모델 | 부분 유료화 (무료 사용 + 프리미엄 결제 시 제한 해제 및 확장 기능) | - +| 결제 형태 | 월구독, 년구독, 일회성 결제이며 확정된 가격은 아니고 임시 가격으로는 월 구독은 월 5000원, 년 구독은 월 50000원, 일회성 결제는 80000원 이다. 금액은 추후 수정될 예정 | --- ## 2. 개발 환경 및 기술 스택 @@ -198,7 +198,7 @@ ### 7.2 프리미엄 결제 시 - 위 개수 제한 **전부 해제 (무제한)** - **홈 화면 및 잠금화면 위젯** 사용 가능 -- **아이패드 앱과의 데이터 동기화** (iCloud) +- **아이패드, 맥북 앱과의 데이터 동기화** (iCloud) - **애플워치 앱** + 워치 페이스 **컴플리케이션** 사용 가능 --- @@ -211,28 +211,36 @@ 2. 라이트 고정 / 다크 고정 3. **리퀴드 글라스(Liquid Glass) 스타일** — 유리 질감 배경 위에서 잘 보이도록 별도 디자인 변형 필요 -### 8.2 행동 실행 위젯 (홈 화면) +### 8.2 행동 실행 및 표기 위젯 (홈 화면) | 크기 | 구성 | |---|---| -| 소형 A | 행동 **1개**의 실행 버튼. 시간 추적형은 탭으로 시작/종료 토글 + 누적 시간 표시, 횟수 추적형은 누적 횟수 표시. **표시 기간을 옵션에서 선택: 오늘 / 이번 주 / 이번 달** | -| 소형 B | 소형 A를 축소·간소화한 셀을 2×2로 배치 → **행동 4개** | -| 중형 A | 소형 A 스타일 셀 **3개** | -| 중형 B | 소형 B 스타일 셀 **8개** | -| 대형 | 중형 기준으로 동일한 방식으로 확장 (중형 A 확장형 / 중형 B 확장형) | +| 소형 A | 행동 **1개**의 실행 버튼. 시간 추적형은 탭으로 시작/종료 토글 + 누적 시간 표시, 횟수 추적형은 누적 횟수 표시. **표시 기간을 옵션에서 선택: 오늘 / 이번 주 / 이번 달**. 위젯에 기간도 표기되어야함.| +| 소형 B | 특정 목표1개의 하루, 주간, 월별 진행률을 표시. 가로 형태의 진행바 사용.| +| 소형 C | 특정 목표의 특정 다짐 **1개**를 골라서 소형 A와 동일한 기능을 하도록. 이때 소형 A와 다르게 누적 값을 표기하는게 아닌 진행률을 원형 진행바를 활용해서 표현(진행율을 하루일지, 주간일지, 월간일지 옵션 선택)| +| 소형 D | 특정 목표의 다짐을 4개까지 가운데에 아이콘이 있고 그것을 원형 진행바가 감싸는 형태의 객체를 2 * 2 형태로 배치하고 최상단에 목표 이름이 적혀지게 한 위젯. 추가적인 기능은 없음 | +| 중형 A | 소형 A 스타일 셀 **3개**, Interactive Widgets 기능으로 3개 영역으로 나뉜(각 영역 명확히 구분되게) 영역별로 누르면 각 실행버튼의 실행동작을 수행.| +| 중형 B | 소형 B 스타일 셀 **2개** | +| 중형 C | 소형 C 스타일 셀 **2개**, Interactive Widgets 기능으로 3개 영역으로 나뉜(각 영역 명확히 구분되게) 영역별로 누르면 각 실행버튼의 실행동작을 수행.| +| 중형 D | 소형 D 스타일인데 각 객체를 좀 더 크게 해서 1 * 4 형태로 나열, 혹 4개 이상일 경우 2줄로 객체 크기를 줄여서 최대 8개까지 표시 | +| 대형 A | 소형 A 스타일 셀 **4개**(2 by 2) | +| 대형 B | 소형 B 스타일 셀 **4개** | +| 대형 C | 소형 C 스타일 셀 **4개** | +| 대형 D | 중형 D 스타일 셀 **2개** 목표 2개를 중형 B 형태로 해서 2줄로 하거나 혹은 목표 1개에 대해 다짐을 크게 8개 혹은 작게 16개까지 표기 가능하도록| -### 8.3 목표/다짐 통계 위젯 (홈 화면) -- 옵션에서 **어떤 목표를 표시할지 선택** 가능. **목표 전체** 또는 **그 목표의 특정 다짐만** 표시하는 것도 가능 -- 진행 정보는 **하루 / 주간 / 월간 진행률** 등으로 표기 +### 8.3 통계 위젯 (홈 화면) +- 옵션에서 어떤 행동의 통계를 보여줄지 선택(일주일 통계(가로축이 하루하루인 그래프), 한달 통계(가로축이 각 주인 그래프, 혹은 하루하루인 그래프)) +- 선택한 행동의 누적값 꺾은선 그래프를 위젯으로 보여줌. | 크기 | 구성 | |---|---| -| 소형 | 목표 1개의 달성률/통계 | -| 중형 | ① 목표 1개를 소형보다 상세하게, 또는 ② 목표 2개를 소형처럼 간단하게 | -| 대형 | ① 목표 2개를 중형 수준으로 상세하게, 또는 ② 목표 4개를 간단하게 | +| 소형 | 선택한 행동들의 통계그래프(앱의 통계탭에 있는 꺾은선 그래프처럼 여러 행동들 각각 다르게 해서 같은 그래프에 그려지게)(이때 한달 통계의 경우 가로축이 하루하루인 그래프는 제외)| +| 중형 | 소형과 동일한데 사이즈를 더 키워서, 그리고 한달 통계를 선택했을 경우 가로축이 하루하루인 그래프 선택 가능)| +| 대형 | 중형에서 사이즈를 더 키운 형태 | ### 8.4 잠금화면 위젯 - **소형(1칸) 위주로 최소한만** 구성 - 종류: 특정 목표 1개의 달성률 / 해당 목표에 속한 다짐들의 달성 여부 표시 등 간단한 정보 위주 +- 점박이로 표기하거나 혹은 원형 진행바 사용하거나 아니면 단순하게 숫자만 적혀져있게 하던가 등등 간단하면서도 다양한 옵션 제공 --- @@ -249,32 +257,18 @@ - 표시 기준은 다이나믹 아일랜드/잠금화면과 **동일한 설정을 따름** (여러 개면 설정된 기준의 대표 1개 + 추가 실행 개수 별도 표시, 추가 개수가 없으면 개수 표시 생략) - 실행 중인 것이 없으면 "실행 중 아님" 상태로 표시 2. **목표 달성률 컴플리케이션** - - 지정한 특정 목표의 달성률 표시 - - **"넘기면 안 되는" 목표**(시간/횟수 상한형)의 경우 일반 달성형과 **다른 시각 표현** 사용 (예: 한도 대비 사용량으로 표시) + - 지정한 특정 목표의 달성률 표시(이떄 하루 달성일지 주간 달성일지 월간 달성일지 선택가능) +3. **다짐 달성률 컴플리케이션** + - 특정 목표의 특정 다짐 1개만의 하루 혹은 주간, 혹은 월간 달성 정보 표기(크기에 따라서 3개 모두 표기하는 컴플리케이션도 추가) + - **"넘기면 안 되는" 다짐**(시간/횟수 상한형)의 경우 일반 달성형과 **다른 시각 표현** 사용 (예: 한도 대비 사용량으로 표시) --- -## 10. 데이터 모델 (SwiftData 설계 제안) +## 10. 시리 단축어 (프리미엄) -> 사용자가 기술한 기능을 구현하기 위한 권장 모델 구조. 세부 필드는 구현 시 조정 가능. - -- **Tag**: id, 이름, 색상, 생성일 -- **Action**: id, 이름, SF Symbol 이름, 추적방식(`time` | `count`), 태그들(다대다), 메인 화면 정렬 순서 -- **TimeSession** (시간 기록): id, action 참조, 시작 시각, 종료 시각(진행 중이면 nil) -- **CountEntry** (횟수 기록): id, action 참조, 기록 시각, 수량(기본 1) -- **Goal**: id, 내용 텍스트, 아이콘, 색, 시작일, 종료일(옵션), 상태(`진행중` | `달성` | `미달성` | `확인필요`) -- **Quest**: id, goal 참조, 대상(행동 또는 태그), 주기 유형(일/주/월/기간), 주기 상세(요일 배열, 날짜 배열, 몇째주+요일 등), 목표값(시간 또는 횟수), 방향(`이상` | `이하`) -- **AppSettings**: 테마, 언어, 주 시작 요일, 하루 시작 시간, Live Activity 대표 시간 기준, 프리미엄 여부 - ---- - -## 11. 문서에서 확정한 기본값 (원문에 명시되지 않아 합리적으로 정한 것) - -| 항목 | 확정값 | 근거 | -|---|---|---| -| 하루 시작 시간 기본값 | 00:00 | 설정에서 변경 가능하므로 표준값으로 시작 | -| 주 시작 요일 기본값 | 월요일 | 한국 사용 관행, 설정에서 변경 가능 | -| 다이나믹 아일랜드 대표 시간 기본값 | 가장 나중에 시작한 행동 | 워치 컴플리케이션 설명에서 "여러 개면 가장 나중 것"이라 언급된 것에 맞춤 | -| 하루 경계 걸침 세션 처리 | 저장은 1개 세션, 집계 시 경계 기준 분할 | 원문 데이터 보존 + 일간 통계 정확성 양립 | -| 테마 컬러 값 | §5.2의 제안 팔레트 | "흔하지 않은 초록/노랑" 요구 반영, 조정 가능 | -| 동시 추적 개수 | 제한 없음 | 원문에 제한 언급 없음 | +### 10.1 단축어 앱에서 동작 가능한 기능 나열 +- 특정 목표의 하루/주간/월간 진행률 데이터 가져오기 +- 특정 목표에 소속된 다짐의 하루/주간/월간 진행률 데이터 가져오기 +- 특정 행동의 하루/주간/월간 누적값 데이터 가져오기 +- 시간 측정 타입 행동 시작하기, 종료하기 +- 횟수 측정 타입 행동의 횟수 바로 추가하기 \ No newline at end of file diff --git a/myApp/HaruDanim/Haru_Danim.xcodeproj/project.xcworkspace/xcuserdata/ceuak.xcuserdatad/UserInterfaceState.xcuserstate b/myApp/HaruDanim/Haru_Danim.xcodeproj/project.xcworkspace/xcuserdata/ceuak.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index f3269335a7f4971675de27a99d5c137bf3f8bd36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30001 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 z%0D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 Q31jJ - - - - SchemeUserState - - Haru_Danim.xcscheme_^#shared#^_ - - orderHint - 0 - - Haru_DanimWidgets.xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/myApp/HaruDanim/IOS/Localizable.xcstrings b/myApp/HaruDanim/IOS/Localizable.xcstrings index dd96b52..e9b44ff 100644 --- a/myApp/HaruDanim/IOS/Localizable.xcstrings +++ b/myApp/HaruDanim/IOS/Localizable.xcstrings @@ -1,6 +1,29 @@ { "sourceLanguage" : "ko", "strings" : { + "" : { + + }, + "'%@ · %@' %@ 진행률: %@" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "new", + "value" : "'%1$@ · %2$@' %3$@ 진행률: %4$@" + } + } + } + }, + "'%@' %@ 진행률은 %lld%%예요." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "new", + "value" : "'%1$@' %2$@ 진행률은 %3$lld%%예요." + } + } + } + }, "‘%@’ 꼬리표를 삭제할까요? 행동은 삭제되지 않아요." : { }, @@ -9,9 +32,31 @@ }, "‘%@’ 목표를 삭제할까요? 다짐도 함께 삭제됩니다." : { + }, + "'%@' 목표에는 아직 다짐이 없어요." : { + }, "‘%@’ 행동을 삭제할까요? 기록도 함께 삭제됩니다." : { + }, + "'%@'은(는) 시간 측정 행동이에요. 측정 시작/종료를 사용해 주세요." : { + + }, + "'%@'은(는) 횟수 기록 행동이에요. 횟수 추가를 사용해 주세요." : { + + }, + "%@" : { + + }, + "%@ · %@" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@ · %2$@" + } + } + } }, "%@ · %@ %@" : { "localizations" : { @@ -23,6 +68,56 @@ } } }, + "%@ %@" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@ %2$@" + } + } + } + }, + "%@ %@ 누적 시간은 %@이에요." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@ %2$@ 누적 시간은 %3$@이에요." + } + } + } + }, + "%@ %@ 누적 횟수는 %lld회예요." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@ %2$@ 누적 횟수는 %3$lld회예요." + } + } + } + }, + "%@ %lld회" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@ %2$lld회" + } + } + } + }, + "%@ %lld회 추가했어요. 오늘 총 %lld회예요." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@ %2$lld회 추가했어요. 오늘 총 %3$lld회예요." + } + } + } + }, "%@ ~ %@" : { "localizations" : { "ko" : { @@ -41,9 +136,31 @@ }, "%@ 측정 완료" : { + }, + "%@ 측정을 시작했어요." : { + + }, + "%@ 측정을 종료했어요. %@ 기록했어요." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@ 측정을 종료했어요. %2$@ 기록했어요." + } + } + } + }, + "%@ 측정을 종료했어요. 너무 짧은 기록이라 저장하지 않았어요." : { + }, "%@요일" : { + }, + "%@은(는) 이미 측정 중이에요." : { + + }, + "%@은(는) 측정 중이 아니에요." : { + }, "%lld" : { @@ -57,6 +174,9 @@ } } } + }, + "%lld%%" : { + }, "%lld개" : { @@ -91,7 +211,10 @@ "③ 목표량과 방향" : { }, - "iCloud 동기화는 준비 중이에요." : { + "iCloud로 아이패드 등 다른 기기와 데이터가 동기화돼요. 변경 사항은 앱을 완전히 종료했다가 다시 실행하면 적용돼요." : { + + }, + "값" : { }, "건너뛰기" : { @@ -99,6 +222,9 @@ }, "결제 기능은 App Store 배포 준비와 함께 제공될 예정이에요." : { + }, + "그래프로 보여줄 행동과 기간을 선택하세요." : { + }, "기간" : { @@ -195,21 +321,72 @@ }, "다짐 %lld개" : { + }, + "다짐 1" : { + + }, + "다짐 2" : { + + }, + "다짐 3" : { + + }, + "다짐 4" : { + }, "다짐 수정" : { + }, + "다짐 점 표시" : { + + }, + "다짐 진행률" : { + + }, + "다짐 진행률 가져오기" : { + + }, + "다짐 진행률 위젯" : { + }, "다짐 추가" : { + }, + "다짐 현황" : { + + }, + "다짐 현황 위젯" : { + + }, + "다짐들의 진행률 링을 표시할 목표와 기간을 선택하세요." : { + + }, + "다짐을 찾을 수 없어요. 앱에서 삭제됐을 수 있어요." : { + + }, + "다짐의 진행률을 원형 링으로 보고, 눌러서 바로 실행해요. (프리미엄)" : { + + }, + "다짐의 하루/주간/월간 진행률(%)을 가져와요." : { + }, "다짐이 없는 목표예요. 달성했나요?" : { + }, + "다짐이 없어요" : { + }, "다크" : { }, "닫기" : { + }, + "달성률 기간" : { + + }, + "달성하거나 종료한 목표가 여기에 모여요." : { + }, "달성하지 못했어요" : { @@ -275,9 +452,27 @@ }, "목표" : { + }, + "목표 1" : { + + }, + "목표 2" : { + + }, + "목표 2 (대형 전용)" : { + + }, + "목표 3" : { + + }, + "목표 4" : { + }, "목표 내용" : { + }, + "목표 달성률 (잠금화면)" : { + }, "목표 삭제" : { @@ -287,9 +482,21 @@ }, "목표 수정" : { + }, + "목표 없음" : { + }, "목표 진행 현황" : { + }, + "목표 진행률" : { + + }, + "목표 진행률 가져오기" : { + + }, + "목표 진행률 위젯" : { + }, "목표 추가" : { @@ -303,10 +510,19 @@ "목표 횟수" : { }, - "목표가 없어요" : { + "목표를 지금 종료할까요?" : { }, - "목표를 지금 종료할까요?" : { + "목표를 찾을 수 없어요. 앱에서 삭제됐을 수 있어요." : { + + }, + "목표에 속한 다짐들의 진행률을 원형 링으로 한눈에 봐요. (프리미엄)" : { + + }, + "목표의 하루·주간·월간 진행률을 진행바로 확인해요. (프리미엄)" : { + + }, + "목표의 하루/주간/월간 진행률(%)을 가져와요. 소속 다짐들의 진행률 평균이에요." : { }, "무료 버전에서는 목표당 다짐을 최대 %lld개까지 만들 수 있어요." : { @@ -369,6 +585,9 @@ }, "새 꼬리표 만들기" : { + }, + "새 목표를 세우거나, 아래에서 완료된 목표를 확인해 보세요." : { + }, "색" : { @@ -381,6 +600,9 @@ }, "선택한 탭(최대 %lld개)이 하단 탭바에 바로 표시되고, 나머지 탭은 ‘더보기’에서 열 수 있어요." : { + }, + "선택한 행동들의 통계 꺾은선 그래프를 확인해요. (프리미엄)" : { + }, "설정" : { @@ -396,6 +618,9 @@ }, "순서" : { + }, + "숫자만" : { + }, "시각" : { @@ -414,9 +639,24 @@ }, "시간 기록이 없어요" : { + }, + "시간 측정 시작" : { + + }, + "시간 측정 종료" : { + + }, + "시간 측정 행동은 시작/종료를 전환하고, 횟수 기록 행동은 횟수를 1 추가해요." : { + + }, + "시간 측정 행동의 측정을 시작해요." : { + }, "시간(h)" : { + }, + "시리 단축어는 프리미엄 기능이에요. 하루 다님 앱의 설정 → 프리미엄에서 잠금 해제해 주세요." : { + }, "시작" : { @@ -444,6 +684,24 @@ }, "아직 등록된 행동이 없어요" : { + }, + "앱에서 행동을 만들고 기록하면 그래프가 표시돼요." : { + + }, + "앱에서 행동을 만들면 여기서 실행할 수 있어요." : { + + }, + "앱의 목표 탭에서 다짐을 만들면 진행률이 표시돼요." : { + + }, + "앱의 목표 탭에서 목표를 만들면 진행률이 표시돼요." : { + + }, + "앱의 목표 탭에서 목표와 다짐을 만들어 보세요." : { + + }, + "앱의 설정 → 프리미엄에서\n잠금 해제해 주세요" : { + }, "언어" : { @@ -465,12 +723,30 @@ }, "오른쪽 위 + 버튼으로 행동을 추가하세요." : { + }, + "오른쪽 핸들을 끌어서 순서를 바꾼 뒤 ‘완료’를 누르세요. 순서는 저장되어 유지돼요." : { + }, "완료" : { + }, + "완료된 목표" : { + + }, + "완료된 목표 보기" : { + + }, + "완료된 목표가 없어요" : { + }, "요일" : { + }, + "원형 게이지" : { + + }, + "원형 진행률로 표시할 다짐과 기간을 선택하세요." : { + }, "이 기록에 대한 메모 (선택)" : { @@ -483,12 +759,30 @@ }, "이번 기록에 대한 메모 (선택)" : { + }, + "이번 달" : { + + }, + "이번 주" : { + }, "이번 측정에 대한 메모 (선택)" : { }, "일주일" : { + }, + "일주일 (하루 단위)" : { + + }, + "잠금화면 목표 위젯" : { + + }, + "잠금화면에 표시할 목표와 기간, 표시 방식을 선택하세요." : { + + }, + "잠금화면에서 목표 달성률과 다짐 현황을 확인해요. (프리미엄)" : { + }, "저장" : { @@ -552,6 +846,12 @@ }, "진행 중" : { + }, + "진행 중인 목표가 없어요" : { + + }, + "진행률 기간" : { + }, "짧은 기록 무시" : { @@ -573,6 +873,15 @@ }, "측정 기준" : { + }, + "측정 시작" : { + + }, + "측정 종료" : { + + }, + "측정 중인 행동의 시간 측정을 종료해요." : { + }, "켜면 시간 측정을 종료할 때 메모 창이 떠요. 건너뛸 수 있어요." : { @@ -591,18 +900,33 @@ }, "통계" : { + }, + "통계 기간" : { + }, "통계 보기" : { + }, + "통계 위젯" : { + }, "특정 시각 지정" : { + }, + "표시 기간" : { + }, "표시 방식" : { + }, + "표시 방식 (원형 크기)" : { + }, "표시할 기록이 없어요" : { + }, + "표시할 행동과 누적 기간을 선택하세요." : { + }, "프리미엄" : { @@ -618,6 +942,12 @@ }, "하루" : { + }, + "하루 다님 · 목표 없음" : { + + }, + "하루 다님 · 프리미엄 기능" : { + }, "하루 시작 시간" : { @@ -627,6 +957,9 @@ }, "하루 평균" : { + }, + "하루·주간·월간 진행률을 표시할 목표를 선택하세요." : { + }, "하루다님" : { "comment" : "앱 이름", @@ -644,6 +977,12 @@ } } } + }, + "한 달 (주 단위)" : { + + }, + "한 달 (하루 단위, 중형 이상)" : { + }, "한 줄에 표시할 개수" : { @@ -666,6 +1005,21 @@ }, "행동 %lld개" : { + }, + "행동 1" : { + + }, + "행동 2" : { + + }, + "행동 3" : { + + }, + "행동 4" : { + + }, + "행동 누적값 가져오기" : { + }, "행동 버튼의 색은 지정한 꼬리표의 색을 따라요." : { @@ -678,6 +1032,12 @@ }, "행동 수정" : { + }, + "행동 실행" : { + + }, + "행동 실행 위젯" : { + }, "행동 이름 (예: 독서)" : { @@ -687,6 +1047,18 @@ }, "행동 탭에서 추적할 행동을 추가해 보세요." : { + }, + "행동 통계" : { + + }, + "행동을 위젯에서 바로 실행하고 누적값을 확인해요. (프리미엄)" : { + + }, + "행동을 찾을 수 없어요. 앱에서 삭제됐을 수 있어요." : { + + }, + "행동의 하루/주간/월간 누적 시간(초) 또는 횟수를 가져와요." : { + }, "현재 진행 중" : { @@ -708,6 +1080,9 @@ }, "횟수 기록 수정" : { + }, + "횟수 기록 행동의 횟수를 바로 추가해요." : { + }, "횟수 기록이 없어요" : {