From 9929e6631e8a01a0941cf313f7a764bc4d9c70a2 Mon Sep 17 00:00:00 2001 From: songyc macbook Date: Sat, 22 Aug 2026 06:28:11 +0900 Subject: [PATCH] =?UTF-8?q?feat(1.5-p4):=20=EC=8B=A0=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=86=8C=EA=B0=9C=20=ED=8C=9D=EC=97=85=20+=20=EB=8F=84?= =?UTF-8?q?=EC=9B=80=EB=A7=90=20=EC=A0=84=EB=A9=B4=20=EC=9E=90=EC=97=B0?= =?UTF-8?q?=ED=99=94=C2=B7=EC=8B=A0=EA=B7=9C=20=EC=A3=BC=EC=A0=9C=203?= =?UTF-8?q?=EA=B0=9C=20+=20l10n=20=EC=A0=84=EB=9F=89=20=EC=99=84=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WhatsNewView(버전당 1회·신규 설치 시드·온보딩 우선·全기기 업데이트 안내·-showWhatsNew) - HelpView: 전 주제 ko 자연화(오타 '남긴 하지만'·번역투·'완료 보관함'→'완료된 목표' 정정, 1.1 맥 일기 반영), 신규 주제 3개(행동 컴플리케이션·건강 보기·건강 다짐), 건강 그룹은 지원 기기에서만 노출 - l10n: 4개 카탈로그 sync·en/ja 신규 208건+본문 재번역·용어 통일(Action/アクション· Quest/クエスト·Home/ホーム)·stale 43 청소 → 전 카탈로그 missing/stale 0, InfoPlist에 NSHealthShareUsageDescription 3언어 - 검증: Debug/Store/워치 빌드, 자가 검증 61·20·27·10 ALL PASS, ja 도움말 실렌더 확인 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6 --- myApp/HaruDanim/CLAUDE.md | 2 +- myApp/HaruDanim/Docs/plan-1.5.md | 4 +- .../Localizable.xcstrings | 1386 +++++++----- .../Localizable.xcstrings | 1040 +++++---- myApp/HaruDanim/IOS/ContentView.swift | 14 + myApp/HaruDanim/IOS/InfoPlist.xcstrings | 181 +- myApp/HaruDanim/IOS/Localizable.xcstrings | 1868 +++++++++++++++-- myApp/HaruDanim/IOS/Views/HelpView.swift | 115 +- myApp/HaruDanim/IOS/Views/WhatsNewView.swift | 131 ++ myApp/HaruDanim/Widgets/Localizable.xcstrings | 560 +++++ 10 files changed, 4071 insertions(+), 1230 deletions(-) create mode 100644 myApp/HaruDanim/IOS/Views/WhatsNewView.swift diff --git a/myApp/HaruDanim/CLAUDE.md b/myApp/HaruDanim/CLAUDE.md index d82b488..98195d3 100644 --- a/myApp/HaruDanim/CLAUDE.md +++ b/myApp/HaruDanim/CLAUDE.md @@ -354,7 +354,7 @@ xcrun xcstringstool sync Widgets/Localizable.xcstrings --stringsdata "${widget_f | 측정 알림 | `-settings.longSessionAlertHours `(설정 주입) `-longSessionAlertTestSeconds `(시간 대신 N초 발화, provisional 권한 자동) `-alertDump`(예약 상태 → Documents/session-alerts.txt) | | 목표 | `-goalShowEditor` `-goalShowFinished` `-goalReorder` `-goalScrollBottom` `-questShowEditor`(다짐 편집기 표시 — 마감 시각 다짐 우선, 없으면 첫 다짐. `-questShowEditorHealth`를 함께 주면 건강 다짐 우선 — 1.5) `-endGoalYesterday "제목"`(종료일을 어제로 — 실행 시점 자동 판정 검증) `-watchGoals `(생성순 목표 N개를 '애플워치에서 보기'로 설정, 0=전체 해제 — 설정 후 스냅숏 즉시 푸시, 컴플리케이션 필터 검증용) `-watchActions `(1.5 — 배치순 행동 N개를 '행동 기록' 컴플리케이션에 올림. 표시 기간은 하루→이번 주→이번 달→지난 7일→지난 30일 순환, 스냅숏 즉시 푸시) `-streakDump`(모든 다짐의 연속 계산 결과 → Documents/streak-dump.txt) `-progressSelfTest`(spanProgress 수치 49건 자가 검증[환산 캡·수행일 집계·마감·atMost·custom·주기 몫 완료+목표 하루 평균+과거 기준 소급 차단] → Documents/progress-self-test.txt — 인메모리 컨테이너·설정 고정이라 실데이터/기기 설정 무영향) `-seedPeriodFulfilled YES`(주기 몫을 이미 채운 주간·월간 다짐 목표 1개 시드 — '이번 주/달 달성' 표기 검증용, 기본 시드와 분리·이름 비현지화. 기록은 주/달 첫날 09:00이라 실행일이 첫날이면 오늘 기록이 되지만 완료 표기는 동일) | | 기록/통계 | `-historyMode timetable` `-historyWeekly` `-historyDaysAgo `(N일 전 날짜로 시작 — 지난주 등 과거 주 표시, 마케팅 촬영용) `-excludeActions "이름,이름"` `-historyShowFilter` `-statShowFilter` `-statSpan ` `-statRolling`('오늘 기준' 롤링 토글 켠 상태로 시작 — 1.4) `-statScrollBottom` `-showExport` `-exportDump`(Documents/export-dump.png) `-recordShowEditor `(최신 기록 수정 시트) | -| 설정/기타 | `-settingsScrollGoal` `-settingsScrollPremium` `-settingsScrollMeasure`(측정 섹션 — 짧은 기록 무시 푸터 검증) `-settingsShowDayStartWheel`(하루 시작 시간 휠 펼침 시작) `-premiumPreview` `-helpPreview`(+`-helpExpandAll`: 전 주제 펼침, `-helpScrollTo `: 이미지 주제로 스크롤) `-dataExportPreview`(+`-dataExportRun`이면 CSV 자동 생성 후 Documents 복사, `-dataExportRangeDays `이면 최근 N일 구간 지정 상태로 시작 — 1.4) `-dataImportPreview`(가져오기 화면 직접 표시 — -premium과 함께) `-csvImportTest`(CSV 가져오기 자가 검증 20건[파서·판별·연결·중복·멱등] → Documents/csv-import-test.txt — 인메모리 컨테이너라 실데이터 무영향) `-dataResetPreview`(데이터 정리·초기화 화면 직접 표시 — 1.4. +`-dataResetBackupRun pdf|image`면 백업 3종 자동 생성 후 Documents 복사, `-dataResetRangeDays `이면 날짜 지정[오늘-N일까지], `-dataResetScope diary`면 '일기만' 선택으로 시작) `-dataResetTest`(초기화 자가 검증 27건[범위 삭제 경계·보존·cascade·전체 초기화·일기만] → Documents/data-reset-test.txt — 인메모리·설정 고정, 실데이터 무영향) `-seedHealthCache`(1.5 — 건강 스토어를 합성 값으로 대체[HK 비의존]·과거 7일+운동 종목·수면 구간 키까지 캐시 기록, 건강 타일·다짐 렌더 검증용) `-seedHealthQuest`(1.5 — 건강 다짐 목표 1개 시드: 걸음 8000·수면 8h·달리기 30분·물 2L, 멱등) `-healthQuestDump`(1.5 — 건강 다짐들의 캐시 키·오늘 값·하루 진행률 → Documents/health-quest-dump.txt) `-healthShowGuide`(1.5 — 건강 안내 시트 표시) `-healthShowMetricPicker`(1.5 — 건강 지표 선택 시트 표시) `-symbolAuditDump`(아이콘 카탈로그 중 현재 OS에 없는 심볼 → Documents/symbol-audit.txt — 하위 OS QA, 1.4) `-actionShowFavoriteOrder`(행동 탭 즐겨찾기 순서 시트 — `-startTab action`과 함께) `-actionShowEditor`(1.5 — 첫 행동의 편집 시트를 열고 애플워치 섹션까지 자동 스크롤, `-startTab action`과 함께) `-showOnboarding`(온보딩 강제 표시) `-widgetPreview YES|lock|marketing`(marketing = 디버그 라벨 없는 위젯 실렌더 모아 보기 — 마케팅 스크린샷 05-widgets/06-widgets 촬영용, Marketing/README 참고) `-widgetPreviewScroll <앵커>` `-widgetRenderMode accented|vibrant`(틴트/투명 홈 렌더링 분기 검증) `cloudSync`(standard bool로 강제) `-intentSmokeTest`(시리 인텐트 10개 시나리오 실행 → Documents/intent-smoke-test.txt, -seedDemo·-premium과 함께) | +| 설정/기타 | `-settingsScrollGoal` `-settingsScrollPremium` `-settingsScrollMeasure`(측정 섹션 — 짧은 기록 무시 푸터 검증) `-settingsShowDayStartWheel`(하루 시작 시간 휠 펼침 시작) `-premiumPreview` `-helpPreview`(+`-helpExpandAll`: 전 주제 펼침, `-helpScrollTo `: 이미지 주제로 스크롤) `-dataExportPreview`(+`-dataExportRun`이면 CSV 자동 생성 후 Documents 복사, `-dataExportRangeDays `이면 최근 N일 구간 지정 상태로 시작 — 1.4) `-dataImportPreview`(가져오기 화면 직접 표시 — -premium과 함께) `-csvImportTest`(CSV 가져오기 자가 검증 20건[파서·판별·연결·중복·멱등] → Documents/csv-import-test.txt — 인메모리 컨테이너라 실데이터 무영향) `-showWhatsNew`(1.5 — 신기능 소개 팝업 강제 표시) `-dataResetPreview`(데이터 정리·초기화 화면 직접 표시 — 1.4. +`-dataResetBackupRun pdf|image`면 백업 3종 자동 생성 후 Documents 복사, `-dataResetRangeDays `이면 날짜 지정[오늘-N일까지], `-dataResetScope diary`면 '일기만' 선택으로 시작) `-dataResetTest`(초기화 자가 검증 27건[범위 삭제 경계·보존·cascade·전체 초기화·일기만] → Documents/data-reset-test.txt — 인메모리·설정 고정, 실데이터 무영향) `-seedHealthCache`(1.5 — 건강 스토어를 합성 값으로 대체[HK 비의존]·과거 7일+운동 종목·수면 구간 키까지 캐시 기록, 건강 타일·다짐 렌더 검증용) `-seedHealthQuest`(1.5 — 건강 다짐 목표 1개 시드: 걸음 8000·수면 8h·달리기 30분·물 2L, 멱등) `-healthQuestDump`(1.5 — 건강 다짐들의 캐시 키·오늘 값·하루 진행률 → Documents/health-quest-dump.txt) `-healthShowGuide`(1.5 — 건강 안내 시트 표시) `-healthShowMetricPicker`(1.5 — 건강 지표 선택 시트 표시) `-symbolAuditDump`(아이콘 카탈로그 중 현재 OS에 없는 심볼 → Documents/symbol-audit.txt — 하위 OS QA, 1.4) `-actionShowFavoriteOrder`(행동 탭 즐겨찾기 순서 시트 — `-startTab action`과 함께) `-actionShowEditor`(1.5 — 첫 행동의 편집 시트를 열고 애플워치 섹션까지 자동 스크롤, `-startTab action`과 함께) `-showOnboarding`(온보딩 강제 표시) `-widgetPreview YES|lock|marketing`(marketing = 디버그 라벨 없는 위젯 실렌더 모아 보기 — 마케팅 스크린샷 05-widgets/06-widgets 촬영용, Marketing/README 참고) `-widgetPreviewScroll <앵커>` `-widgetRenderMode accented|vibrant`(틴트/투명 홈 렌더링 분기 검증) `cloudSync`(standard bool로 강제) `-intentSmokeTest`(시리 인텐트 10개 시나리오 실행 → Documents/intent-smoke-test.txt, -seedDemo·-premium과 함께) | | 버블 | `-radialExpanded` `-radialDoubleTapTest`(2초 뒤 FAB 더블탭 재현 — `-settings.radialDoubleTapTab <탭>`과 함께) | | 일기 | `-diarySeed`(필기 획 2줄 포함 — 달력 화면에서 먼저 시드 후 재실행으로 열 것) `-diaryDrawMode`(맥 분기에서 '그리기' 토글 켠 채 시작) `-diaryOpenToday`(**`-startTab diary` 필수**) `-diaryPage ` `-diaryZoomScale <배>`(2.5초 뒤 fit×N 프로그램 줌 — 획 유지·선명도 확인) `-diaryShowConfig` `-diaryShowExport`(달력 화면 onAppear — `-diaryOpenToday`와 함께 쓰면 안 뜸) `-diaryExportRun pdf|image`(결과를 Documents로 복사) `-diaryShowCalendarPicker` `-diarySeedEvents` `-diaryHideFirstAction` `-diaryShowActionFilter` `-diaryHideFirstGoal` `-diaryShowGoalFilter` `-diaryShowDefaults`(기본 표시 설정 시트) `-diaryDefaultsSeed`(첫 목표·첫 행동 기본 숨김+캘린더 기본 '모든 캘린더' 주입 — 기본값 적용 검증용) `-diarySeedPhoto`(오늘=이모지+사진·어제=사진만 기분 사진 시드 — 달력 백레이어 검증) `-diarySeedTemplate`(2쪽 샘플 PDF 양식 생성) `-diaryLockScreen`(잠금 게이트 화면 강제 — 인증 없이 표시) `-diaryShowTemplates`(양식 관리 시트) `-diaryShowPageChooser`(페이지 추가 선택 시트) `-diaryApplyTemplate`(첫 양식으로 페이지 추가) `-diaryShapeEdit`(활성 노트 페이지 첫 도형 선택+'도형 수정' 시트 — `-diarySeed`·`-diaryOpenToday`·`-diaryPage 1`과 함께. 시드 요소들이 스타일 필드[굵기·둥글기·채움·자유 비율·회전·글자 크기·정렬·테두리 색]를 전부 렌더) `-diaryTextEdit`(첫 텍스트 상자를 제자리 입력 상태로 — 같은 조합) `-diaryStrokeTest`(3초 뒤 프로그램 획 추가로 디바운스 저장 파이프라인 검증 → Documents/diary-stroke-test.txt[strokes·delivered] — `-diaryOpenToday`와 함께, 1.4) `-diaryExportDeleteTest`(내보내기 완료 후 '삭제' 버튼과 같은 가드·경로로 삭제 실행 — `-diaryShowExport -diaryExportRun`과 함께, 재실행 후 달력 마커 소멸로 판정, 1.4) / 섹션 강제: `-diary.sectionOrder "timetable,hero,goals"` `-diary.hiddenSections "mood,todos,records,bars"` | | 워치 | `-complicationPreview` `-complicationScroll` `-complicationScrollTo ` `-autoRunFirstAction` `-autoStopRunning`(측정 중 행 탭과 동일 경로로 대표 측정 종료 — 페어링 심 E2E용) `-watchOpenActionDetail`(1.5 — 스냅숏 수신 후 첫 옵트인 행동의 미니 행동 화면을 딥링크와 같은 경로로 push, 착지·뒤로가기 검증) | diff --git a/myApp/HaruDanim/Docs/plan-1.5.md b/myApp/HaruDanim/Docs/plan-1.5.md index 75032ec..3189576 100644 --- a/myApp/HaruDanim/Docs/plan-1.5.md +++ b/myApp/HaruDanim/Docs/plan-1.5.md @@ -91,7 +91,7 @@ 2026-08-20 검토 후 사용자 철회. 근거(재검토 시 참고): ①iOS 17·18은 지원 아이폰 목록 동일(XS/XR 이후) → 인하해도 신규 커버 아이폰 0대, 노치 중 미지원은 iPhone X(iOS 16 최대)뿐 ②iPadOS 17 인하 시 추가는 iPad 6세대·Pro 10.5"·Pro 12.9" 2세대(2017~18) 3기종뿐 ③iOS 16 이하는 SwiftData(17+)라 데이터층 재작성 = 불가 ④17 지원 실비용: `LiveActivityIntent`(17.2 도입) 채택 인텐트 4종 구조 수술 + 제어 센터 API 3곳·ControlWidget 18 가드 + 심볼 감사·QA 라인 추가 + 17 SwiftData 안정성 리스크. **재검토 트리거**: 구형 기기 사용자의 실제 설치 문의 발생 시(아이패드만 따로 인하 불가 — 배포 타깃 공용 유의). -## 5. 기능 3 — 도움말 한국어 자연화 (예약분, 사용자 지시 2026-08-12) +## 5. 기능 3 — 도움말 한국어 자연화 (예약분, 사용자 지시 2026-08-12) ✅구현 완료(2026-08-22 — 전 주제 자연화[오타·번역투·UI 명칭 정정 포함]+신규 주제 3개[행동 컴플리케이션·건강 2종], en/ja 전면 재번역·용어 통일[アクション·クエスト 등], 전 카탈로그 missing/stale 0) - HelpView 전체 문구를 **한국어 기준으로 재작성** — 말투 컨셉(~해요체) 유지, 번역투·어색한 단어 선택·문장 구성 정리. en/ja도 함께 재검토. - 1.5 신규 기능 주제 추가와 병행: 행동 컴플리케이션(워치 그룹), 건강 타일·건강 다짐(그룹 배치는 구현 시 결정, 이미지는 그룹당 대표 1주제 원칙 유지). **건강 주제는 특성 설명을 상세히(사용자 요구 2026-08-22)**: 하루 경계 처리, 수면 구간·깨어난 날 귀속, 위젯 신선도(실시간 아님), 기기별 편차(아이폰/아이패드/맥), 판정 보류 규칙, 데이터가 기기 밖으로 나가지 않는다는 점 — 모음 탭 가이드 문구(§3.3)와 동일 내용의 확장판. @@ -152,7 +152,7 @@ 2. **단계 게이트**: §7 순서의 각 단계 끝마다 자가 검증 전체(기존 49·20·27·10 + 신규) ALL PASS + Debug/Store/워치 빌드 + 26·18.5 심(워치 11.5·26.2) 시각 QA + 커밋. 이전 단계 그린 없이 다음 단계 진입 금지 3. **출시 게이트**: 전 단계 완료 후 TestFlight 실기기 소킹(사용자) → PRIVACY.md·심사 체크(§3.5) 동반 제출 -## 11. 기능 4 — 업데이트 신기능 소개 팝업 (2026-08-22 사용자 추가) +## 11. 기능 4 — 업데이트 신기능 소개 팝업 (2026-08-22 사용자 추가) ✅구현 완료(2026-08-22 — WhatsNewView·버전당 1회·신규 설치 시드·온보딩 우선·-showWhatsNew, 3언어) - 업데이트 후 첫 실행 시 스플래시 뒤 **버전당 1회** 표시되는 신기능 소개 시트(통상의 "이번 업데이트" 팝업 관습): 1.5 신기능 카드(행동 컴플리케이션·건강 타일·건강 다짐·도움말 개편) + **"여러 기기를 쓰신다면 모든 기기에서 업데이트해 주세요" 안내 1줄**(혼합 버전 완화 — §10 R16 연계). - 표시 규칙: standard defaults에 마지막 표시 버전 기록(예: `whatsnew.lastShownVersion`) — 저장된 버전과 현재 버전이 다르고 소개 콘텐츠가 있는 버전일 때만 표시, 닫는 즉시 기록(재표시 없음). **신규 설치는 미표시**(첫 실행 안내는 온보딩 담당 — 최초 실행 시 현재 버전을 시드). 온보딩과 동시 표시 금지(온보딩이 우선). diff --git a/myApp/HaruDanim/Haru_DanimWatch Watch App/Localizable.xcstrings b/myApp/HaruDanim/Haru_DanimWatch Watch App/Localizable.xcstrings index 89d1bf1..a61a05c 100644 --- a/myApp/HaruDanim/Haru_DanimWatch Watch App/Localizable.xcstrings +++ b/myApp/HaruDanim/Haru_DanimWatch Watch App/Localizable.xcstrings @@ -1,890 +1,1162 @@ { - "sourceLanguage" : "ko", - "strings" : { - "%@" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@" + "sourceLanguage": "ko", + "strings": { + "%@": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@" } } } }, - "%@ %@" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ %@" + "%@ %@": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ %@" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ %@" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@ %@" } }, - "ko" : { - "stringUnit" : { - "state" : "new", - "value" : "%1$@ %2$@" + "ko": { + "stringUnit": { + "state": "new", + "value": "%1$@ %2$@" } } } }, - "%@ %lld%%" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ %lld%%" + "%@ %lld%%": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ %lld%%" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ %lld%%" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@ %lld%%" } }, - "ko" : { - "stringUnit" : { - "state" : "new", - "value" : "%1$@ %2$lld%%" + "ko": { + "stringUnit": { + "state": "new", + "value": "%1$@ %2$lld%%" } } } }, - "%@ +%lld" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ +%lld" + "%@ +%lld": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ +%lld" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ +%lld" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@ +%lld" } }, - "ko" : { - "stringUnit" : { - "state" : "new", - "value" : "%1$@ +%2$lld" + "ko": { + "stringUnit": { + "state": "new", + "value": "%1$@ +%2$lld" } } } }, - "%@ 측정 종료" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Stop tracking %@" + "%@ 측정 종료": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Stop tracking %@" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@の計測を終了" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@の計測を終了" } } } }, - "%lld" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld" + "%lld": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld" } } } }, - "%lld%%" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld%%" + "%lld%%": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld%%" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld%%" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld%%" } } } }, - "%lld분" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lldm" + "%lld분": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lldm" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld分" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld分" } } } }, - "%lld시간" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lldh" + "%lld시간": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lldh" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld時間" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld時間" } } } }, - "%lld시간 %lld분" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lldh %lldm" + "%lld시간 %lld분": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lldh %lldm" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld時間%lld分" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld時間%lld分" } }, - "ko" : { - "stringUnit" : { - "state" : "new", - "value" : "%1$lld시간 %2$lld분" + "ko": { + "stringUnit": { + "state": "new", + "value": "%1$lld시간 %2$lld분" } } } }, - "%lld초" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%llds" + "%lld초": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%llds" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld秒" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld秒" } } } }, - "+%lld" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "+%lld" + "%lld회": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld times" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "+%lld" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld回" } } } }, - "iPhone 앱의 설정 → 프리미엄에서 잠금 해제해 주세요" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Unlock in the iPhone app: Settings → Premium" + "+%lld": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "+%lld" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "iPhoneアプリの設定→プレミアムでロックを解除してください" + "ja": { + "stringUnit": { + "state": "translated", + "value": "+%lld" } } } }, - "iPhone과 연결 중..." : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Connecting to iPhone..." + "1회 추가": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Add 1" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "iPhoneに接続中..." + "ja": { + "stringUnit": { + "state": "translated", + "value": "1回追加" } } } }, - "iPhone에 연결할 수 없어요. 근처에 있는지 확인해 주세요." : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Can't reach your iPhone. Make sure it's nearby." + "iPhone 앱의 설정 → 프리미엄에서 잠금 해제해 주세요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Unlock in the iPhone app: Settings → Premium" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "iPhoneに接続できません。近くにあるか確認してください。" + "ja": { + "stringUnit": { + "state": "translated", + "value": "iPhoneアプリの設定→プレミアムでロックを解除してください" } } } }, - "기간" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Period" + "iPhone과 연결 중...": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Connecting to iPhone..." } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "期間" + "ja": { + "stringUnit": { + "state": "translated", + "value": "iPhoneに接続中..." } } } }, - "꼬리표 없음" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "No tag" + "iPhone에 연결할 수 없어요. 근처에 있는지 확인해 주세요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Can't reach your iPhone. Make sure it's nearby." } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "タグなし" + "ja": { + "stringUnit": { + "state": "translated", + "value": "iPhoneに接続できません。近くにあるか確認してください。" } } } }, - "누르면 측정이 종료돼요" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tap to stop tracking" + "iPhone에서 삭제되었거나 아직 연결되지 않았어요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "It was deleted on iPhone, or the watch isn't connected yet" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "タップすると計測が終了します" + "ja": { + "stringUnit": { + "state": "translated", + "value": "iPhoneで削除されたか、まだ接続されていません" } } } }, - "다짐" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Quest" + "기간": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Period" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "クエスト" + "ja": { + "stringUnit": { + "state": "translated", + "value": "期間" } } } }, - "다짐 달성률" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Quest Progress" + "꼬리표 없음": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No tag" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "クエスト達成率" + "ja": { + "stringUnit": { + "state": "translated", + "value": "タグなし" } } } }, - "다짐 없음" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "No quest" + "누르면 측정이 종료돼요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Tap to stop tracking" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "クエストなし" + "ja": { + "stringUnit": { + "state": "translated", + "value": "タップすると計測が終了します" } } } }, - "독서" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Reading" + "다짐": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Quest" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "読書" + "ja": { + "stringUnit": { + "state": "translated", + "value": "クエスト" } } } }, - "목표" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Goals" + "다짐 달성률": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Quest Progress" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "目標" + "ja": { + "stringUnit": { + "state": "translated", + "value": "クエスト達成率" } } } }, - "목표 달성률" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Goal Progress" + "다짐 없음": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No quest" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "目標達成率" + "ja": { + "stringUnit": { + "state": "translated", + "value": "クエストなし" } } } }, - "목표 없음" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "No goal" + "독서": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Reading" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "目標なし" + "ja": { + "stringUnit": { + "state": "translated", + "value": "読書" } } } }, - "새로고침" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Refresh" + "목표": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Goals" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "更新" + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標" } } } }, - "선택한 다짐의 달성률을 표시해요. 한도형 다짐은 상태로 표시돼요. (프리미엄)" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Shows the selected quest's progress. Limit quests show their status. (Premium)" + "목표 달성률": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Goal Progress" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "選択したクエストの達成率を表示します。上限型はステータス表示になります。(プレミアム)" + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標達成率" } } } }, - "선택한 목표의 하루/주간/월간 달성률을 표시해요. (프리미엄)" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Shows the selected goal's daily/weekly/monthly progress. (Premium)" + "목표 없음": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No goal" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "選択した目標の日/週/月の達成率を表示します。(プレミアム)" + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標なし" } } } }, - "실행 중 아님" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Not running" + "새로고침": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Refresh" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "実行中なし" + "ja": { + "stringUnit": { + "state": "translated", + "value": "更新" } } } }, - "앱을 열면 새로고침돼요" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Open the app to refresh" + "선택한 다짐의 달성률을 표시해요. 한도형 다짐은 상태로 표시돼요. (프리미엄)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Shows the selected quest's progress. Limit quests show their status. (Premium)" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "アプリを開くと更新されます" + "ja": { + "stringUnit": { + "state": "translated", + "value": "選択したクエストの達成率を表示します。上限型はステータス表示になります。(プレミアム)" } } } }, - "없음" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "None" + "선택한 목표의 하루/주간/월간 달성률을 표시해요. (프리미엄)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Shows the selected goal's daily/weekly/monthly progress. (Premium)" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "なし" + "ja": { + "stringUnit": { + "state": "translated", + "value": "選択した目標の日/週/月の達成率を表示します。(プレミアム)" } } } }, - "오늘 %@" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Today %@" + "선택한 행동의 기간 누적 기록을 표시해요. 기간은 iPhone 행동 편집에서 지정해요. (프리미엄)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Shows the accumulated record of the chosen action. The period is set in the action editor on iPhone. (Premium)" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "今日 %@" + "ja": { + "stringUnit": { + "state": "translated", + "value": "選んだアクションの期間累計を表示します。期間はiPhoneのアクション編集で指定します。(プレミアム)" } } } }, - "오늘 %lld회" : { - "localizations" : { - "en" : { - "variations" : { - "plural" : { - "one" : { - "stringUnit" : { - "state" : "translated", - "value" : "Today %lld time" + "실행 중 아님": { + "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": "Today" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "今日" + } + } + } + }, + "오늘 %@": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Today %@" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "今日 %@" + } + } + } + }, + "오늘 %lld회": { + "localizations": { + "en": { + "variations": { + "plural": { + "one": { + "stringUnit": { + "state": "translated", + "value": "Today %lld time" } }, - "other" : { - "stringUnit" : { - "state" : "translated", - "value" : "Today %lld times" + "other": { + "stringUnit": { + "state": "translated", + "value": "Today %lld times" } } } } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "今日%lld回" + "ja": { + "stringUnit": { + "state": "translated", + "value": "今日%lld回" } } } }, - "월간" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Monthly" + "월간": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Monthly" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "月間" + "ja": { + "stringUnit": { + "state": "translated", + "value": "月間" } } } }, - "주간" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Weekly" + "이번 달": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "This month" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "週間" + "ja": { + "stringUnit": { + "state": "translated", + "value": "今月" } } } }, - "즐겨찾기" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Favorites" + "이번 주": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "This week" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "お気に入り" + "ja": { + "stringUnit": { + "state": "translated", + "value": "今週" } } } }, - "초과" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Over" + "주간": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Weekly" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "超過" + "ja": { + "stringUnit": { + "state": "translated", + "value": "週間" } } } }, - "측정 중" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tracking" + "즐겨찾기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Favorites" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "計測中" + "ja": { + "stringUnit": { + "state": "translated", + "value": "お気に入り" } } } }, - "측정 중인 행동과 경과 시간을 표시해요. (프리미엄)" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Shows the running action and elapsed time. (Premium)" + "지난 30일": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Last 30 days" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "計測中のアクションと経過時間を表示します。(プレミアム)" + "ja": { + "stringUnit": { + "state": "translated", + "value": "過去30日間" } } } }, - "측정 표시 새로고침 필요" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Timer display needs a refresh" + "지난 7일": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Last 7 days" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "計測表示の更新が必要" + "ja": { + "stringUnit": { + "state": "translated", + "value": "過去7日間" } } } }, - "측정 표시가 오래됐어요" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Timer display is out of date" + "초과": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Over" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "計測表示が古くなっています" + "ja": { + "stringUnit": { + "state": "translated", + "value": "超過" } } } }, - "표시할 다짐과 기간을 선택하세요." : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Choose a quest and period to display." + "측정 시작": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Start" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "表示するクエストと期間を選んでください。" + "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" + "측정 종료": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Stop" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "表示するクエストがありません — iPhoneの目標編集で「Apple Watchに表示」をオンにすると表示されます" + "ja": { + "stringUnit": { + "state": "translated", + "value": "計測終了" } } } }, - "표시할 목표가 없어요 — iPhone 목표 편집에서 '애플워치에서 보기'를 켜면 나타나요" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "No goals to show — turn on 'Show on Apple Watch' when editing a goal on iPhone" + "측정 중": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Tracking" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "表示する目標がありません — iPhoneの目標編集で「Apple Watchに表示」をオンにすると表示されます" + "ja": { + "stringUnit": { + "state": "translated", + "value": "計測中" } } } }, - "표시할 목표와 기간을 선택하세요." : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Choose a goal and period to display." + "측정 중인 행동과 경과 시간을 표시해요. (프리미엄)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Shows the running action and elapsed time. (Premium)" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "表示する目標と期間を選んでください。" + "ja": { + "stringUnit": { + "state": "translated", + "value": "計測中のアクションと経過時間を表示します。(プレミアム)" } } } }, - "프리미엄" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Premium" + "측정 표시 새로고침 필요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Timer display needs a refresh" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "プレミアム" + "ja": { + "stringUnit": { + "state": "translated", + "value": "計測表示の更新が必要" } } } }, - "프리미엄 기능" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Premium Features" + "측정 표시가 오래됐어요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Timer display is out of date" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "プレミアム機能" + "ja": { + "stringUnit": { + "state": "translated", + "value": "計測表示が古くなっています" } } } }, - "하루" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Daily" + "표시할 다짐과 기간을 선택하세요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Choose a quest and period to display." } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "1日" + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示するクエストと期間を選んでください。" } } } }, - "하루 다님" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Haru Danim" + "표시할 다짐이 없어요 — 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" : "Haru Danim" + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示するクエストがありません — iPhoneの目標編集で「Apple Watchに表示」をオンにすると表示されます" } } } }, - "한도" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Limit" + "표시할 목표가 없어요 — 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" : "上限" + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示する目標がありません — iPhoneの目標編集で「Apple Watchに表示」をオンにすると表示されます" } } } }, - "한도 안" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Within" + "표시할 목표와 기간을 선택하세요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Choose a goal and period to display." } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "上限内" + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示する目標と期間を選んでください。" } } } }, - "한도 초과" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Over limit" + "표시할 행동을 선택하세요. 표시 기간은 iPhone 행동 편집에서 지정해요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Choose an action to display. The period is set in the action editor on iPhone." } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "上限超過" + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示するアクションを選んでください。表示期間はiPhoneのアクション編集で指定します。" } } } }, - "현재 현황" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Current Status" + "표시할 행동이 없어요 — iPhone 행동 편집에서 '애플워치 컴플리케이션'을 켜면 나타나요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No actions to show — turn on \"Apple Watch complication\" in the action editor on iPhone" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "現在の状況" + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示できるアクションがありません — iPhoneのアクション編集で「Apple Watchコンプリケーション」をオンにすると表示されます" + } + } + } + }, + "프리미엄": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Premium" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "プレミアム" + } + } + } + }, + "프리미엄 기능": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Premium Features" + } + }, + "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": "Action" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクション" + } + } + } + }, + "행동 기록": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Action Log" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクションの記録" + } + } + } + }, + "행동 없음": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No actions" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクションなし" + } + } + } + }, + "행동을 찾을 수 없어요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Action not found" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクションが見つかりません" + } + } + } + }, + "현재 현황": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Current Status" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "現在の状況" } } } } }, - "version" : "1.0" -} + "version": "1.0" +} \ No newline at end of file diff --git a/myApp/HaruDanim/Haru_DanimWatchWidgets/Localizable.xcstrings b/myApp/HaruDanim/Haru_DanimWatchWidgets/Localizable.xcstrings index 317f081..f7961f8 100644 --- a/myApp/HaruDanim/Haru_DanimWatchWidgets/Localizable.xcstrings +++ b/myApp/HaruDanim/Haru_DanimWatchWidgets/Localizable.xcstrings @@ -1,648 +1,878 @@ { - "sourceLanguage" : "ko", - "strings" : { - "%@" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@" + "sourceLanguage": "ko", + "strings": { + "%@": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@" } } } }, - "%@ %@" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ %@" + "%@ %@": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ %@" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ %@" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@ %@" } }, - "ko" : { - "stringUnit" : { - "state" : "new", - "value" : "%1$@ %2$@" + "ko": { + "stringUnit": { + "state": "new", + "value": "%1$@ %2$@" } } } }, - "%@ %lld%%" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ %lld%%" + "%@ %lld%%": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ %lld%%" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ %lld%%" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@ %lld%%" } }, - "ko" : { - "stringUnit" : { - "state" : "new", - "value" : "%1$@ %2$lld%%" + "ko": { + "stringUnit": { + "state": "new", + "value": "%1$@ %2$lld%%" } } } }, - "%@ +%lld" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ +%lld" + "%@ +%lld": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ +%lld" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ +%lld" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@ +%lld" } }, - "ko" : { - "stringUnit" : { - "state" : "new", - "value" : "%1$@ +%2$lld" + "ko": { + "stringUnit": { + "state": "new", + "value": "%1$@ +%2$lld" } } } }, - "%lld" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld" + "%lld": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld" } } } }, - "%lld%%" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld%%" + "%lld%%": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld%%" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%lld%%" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld%%" } } } }, - "+%lld" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "+%lld" + "%lld분": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld min" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "+%lld" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld分" } } } }, - "기간" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Period" + "%lld시간": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld hr" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "期間" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld時間" } } } }, - "다짐" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Quest" + "%lld시간 %lld분": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%1$lld hr %2$lld min" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "クエスト" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%1$lld時間%2$lld分" + } + }, + "ko": { + "stringUnit": { + "state": "new", + "value": "%1$lld시간 %2$lld분" } } } }, - "다짐 달성률" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Quest Progress" + "%lld회": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld times" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "クエスト達成率" + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld回" } } } }, - "다짐 없음" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "No quest" + "+%lld": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "+%lld" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "クエストなし" + "ja": { + "stringUnit": { + "state": "translated", + "value": "+%lld" } } } }, - "독서" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Reading" + "기간": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Period" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "読書" + "ja": { + "stringUnit": { + "state": "translated", + "value": "期間" } } } }, - "목표" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Goals" + "다짐": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Quest" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "目標" + "ja": { + "stringUnit": { + "state": "translated", + "value": "クエスト" } } } }, - "목표 달성률" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Goal Progress" + "다짐 달성률": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Quest Progress" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "目標達成率" + "ja": { + "stringUnit": { + "state": "translated", + "value": "クエスト達成率" } } } }, - "목표 없음" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "No goal" + "다짐 없음": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No quest" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "目標なし" + "ja": { + "stringUnit": { + "state": "translated", + "value": "クエストなし" } } } }, - "새로고침" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Refresh" + "독서": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Reading" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "更新" + "ja": { + "stringUnit": { + "state": "translated", + "value": "読書" } } } }, - "선택한 다짐의 달성률을 표시해요. 한도형 다짐은 상태로 표시돼요. (프리미엄)" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Shows the selected quest's progress. Limit quests show their status. (Premium)" + "목표": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Goals" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "選択したクエストの達成率を表示します。上限型はステータス表示になります。(プレミアム)" + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標" } } } }, - "선택한 목표의 하루/주간/월간 달성률을 표시해요. (프리미엄)" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Shows the selected goal's daily/weekly/monthly progress. (Premium)" + "목표 달성률": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Goal Progress" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "選択した目標の日/週/月の達成率を表示します。(プレミアム)" + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標達成率" } } } }, - "실행 중 아님" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Not running" + "목표 없음": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No goal" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "実行中なし" + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標なし" } } } }, - "앱을 열면 새로고침돼요" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Open the app to refresh" + "새로고침": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Refresh" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "アプリを開くと更新されます" + "ja": { + "stringUnit": { + "state": "translated", + "value": "更新" } } } }, - "없음" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "None" + "선택한 다짐의 달성률을 표시해요. 한도형 다짐은 상태로 표시돼요. (프리미엄)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Shows the selected quest's progress. Limit quests show their status. (Premium)" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "なし" + "ja": { + "stringUnit": { + "state": "translated", + "value": "選択したクエストの達成率を表示します。上限型はステータス表示になります。(プレミアム)" } } } }, - "월간" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Monthly" + "선택한 목표의 하루/주간/월간 달성률을 표시해요. (프리미엄)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Shows the selected goal's daily/weekly/monthly progress. (Premium)" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "月間" + "ja": { + "stringUnit": { + "state": "translated", + "value": "選択した目標の日/週/月の達成率を表示します。(プレミアム)" } } } }, - "주간" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Weekly" + "선택한 행동의 기간 누적 기록을 표시해요. 기간은 iPhone 행동 편집에서 지정해요. (프리미엄)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Shows the accumulated record of the chosen action. The period is set in the action editor on iPhone. (Premium)" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "週間" + "ja": { + "stringUnit": { + "state": "translated", + "value": "選んだアクションの期間累計を表示します。期間はiPhoneのアクション編集で指定します。(プレミアム)" } } } }, - "초과" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Over" + "실행 중 아님": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Not running" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "超過" + "ja": { + "stringUnit": { + "state": "translated", + "value": "実行中なし" } } } }, - "측정 중" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tracking" + "앱을 열면 새로고침돼요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Open the app to refresh" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "計測中" + "ja": { + "stringUnit": { + "state": "translated", + "value": "アプリを開くと更新されます" } } } }, - "측정 중인 행동과 경과 시간을 표시해요. (프리미엄)" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Shows the running action and elapsed time. (Premium)" + "없음": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "None" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "計測中のアクションと経過時間を表示します。(プレミアム)" + "ja": { + "stringUnit": { + "state": "translated", + "value": "なし" } } } }, - "측정 표시 새로고침 필요" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Timer display needs a refresh" + "월간": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Monthly" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "計測表示の更新が必要" + "ja": { + "stringUnit": { + "state": "translated", + "value": "月間" } } } }, - "측정 표시가 오래됐어요" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Timer display is out of date" + "이번 달": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "This month" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "計測表示が古くなっています" + "ja": { + "stringUnit": { + "state": "translated", + "value": "今月" } } } }, - "표시할 다짐과 기간을 선택하세요." : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Choose a quest and period to display." + "이번 주": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "This week" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "表示するクエストと期間を選んでください。" + "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" + "주간": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Weekly" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "表示するクエストがありません — iPhoneの目標編集で「Apple Watchで表示」をオンにすると表示されます" + "ja": { + "stringUnit": { + "state": "translated", + "value": "週間" } } } }, - "표시할 목표가 없어요 — iPhone 목표 편집에서 '애플워치에서 보기'를 켜면 나타나요" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "No goals to show — turn on 'Show on Apple Watch' when editing a goal on iPhone" + "지난 30일": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Last 30 days" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "表示する目標がありません — iPhoneの目標編集で「Apple Watchで表示」をオンにすると表示されます" + "ja": { + "stringUnit": { + "state": "translated", + "value": "過去30日間" } } } }, - "표시할 목표와 기간을 선택하세요." : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Choose a goal and period to display." + "지난 7일": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Last 7 days" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "表示する目標と期間を選んでください。" + "ja": { + "stringUnit": { + "state": "translated", + "value": "過去7日間" } } } }, - "프리미엄" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Premium" + "초과": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Over" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "プレミアム" + "ja": { + "stringUnit": { + "state": "translated", + "value": "超過" } } } }, - "하루" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Daily" + "측정 중": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Tracking" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "1日" + "ja": { + "stringUnit": { + "state": "translated", + "value": "計測中" } } } }, - "하루 다님" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Haru Danim" + "측정 중인 행동과 경과 시간을 표시해요. (프리미엄)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Shows the running action and elapsed time. (Premium)" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "Haru Danim" + "ja": { + "stringUnit": { + "state": "translated", + "value": "計測中のアクションと経過時間を表示します。(プレミアム)" } } } }, - "한도" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Limit" + "측정 표시 새로고침 필요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Timer display needs a refresh" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "上限" + "ja": { + "stringUnit": { + "state": "translated", + "value": "計測表示の更新が必要" } } } }, - "한도 안" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Within" + "측정 표시가 오래됐어요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Timer display is out of date" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "上限内" + "ja": { + "stringUnit": { + "state": "translated", + "value": "計測表示が古くなっています" } } } }, - "한도 초과" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Over limit" + "표시할 다짐과 기간을 선택하세요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Choose a quest and period to display." } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "上限超過" + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示するクエストと期間を選んでください。" } } } }, - "현재 현황" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Current Status" + "표시할 다짐이 없어요 — 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" : "現在の状況" + "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": "表示する目標と期間を選んでください。" + } + } + } + }, + "표시할 행동을 선택하세요. 표시 기간은 iPhone 행동 편집에서 지정해요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Choose an action to display. The period is set in the action editor on iPhone." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示するアクションを選んでください。表示期間はiPhoneのアクション編集で指定します。" + } + } + } + }, + "표시할 행동이 없어요 — iPhone 행동 편집에서 '애플워치 컴플리케이션'을 켜면 나타나요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No actions to show — turn on \"Apple Watch complication\" in the action editor on iPhone" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示できるアクションがありません — iPhoneのアクション編集で「Apple Watchコンプリケーション」をオンにすると表示されます" + } + } + } + }, + "프리미엄": { + "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": "Action" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクション" + } + } + } + }, + "행동 기록": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Action Log" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクションの記録" + } + } + } + }, + "행동 없음": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No actions" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクションなし" + } + } + } + }, + "현재 현황": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Current Status" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "現在の状況" } } } } }, - "version" : "1.0" + "version": "1.0" } \ No newline at end of file diff --git a/myApp/HaruDanim/IOS/ContentView.swift b/myApp/HaruDanim/IOS/ContentView.swift index 0854e5b..598dcb9 100644 --- a/myApp/HaruDanim/IOS/ContentView.swift +++ b/myApp/HaruDanim/IOS/ContentView.swift @@ -13,6 +13,7 @@ struct ContentView: View { @AppStorage(SettingsKeys.theme, store: AppGroup.defaults) private var theme: String = "system" @State private var showSplash = true @State private var showOnboarding = false + @State private var showWhatsNew = false var body: some View { ZStack { @@ -54,6 +55,10 @@ struct ContentView: View { .fullScreenCover(isPresented: $showOnboarding) { OnboardingView { showOnboarding = false } } + // 1.5: 업데이트 신기능 소개 팝업 (버전당 1회 — 닫는 즉시 기록, plan §11) + .sheet(isPresented: $showWhatsNew, onDismiss: WhatsNewView.markShown) { + WhatsNewView() + } // 맥(Designed for iPad)은 아이패드 포인트가 축소 매핑돼 글자가 작게 보임 — // 전역 글자 크기를 한 단계 키운다. 사용자가 시스템에서 더 크게 쓰면 그 값을 존중 .transformEnvironment(\.dynamicTypeSize) { size in @@ -106,6 +111,15 @@ struct ContentView: View { ((try? context.fetchCount(FetchDescriptor())) ?? 0) == 0 { showOnboarding = true } + // 1.5: 업데이트 신기능 소개 팝업 — 신규 설치는 현재 버전을 시드해 건너뛰고 + // (첫 안내는 온보딩 담당), 온보딩이 뜨는 실행에서는 표시하지 않는다 (plan §11) + WhatsNewView.markSeededIfFreshInstall(context: context) + #if DEBUG + if UserDefaults.standard.bool(forKey: "showWhatsNew") { showWhatsNew = true } + #endif + if !showOnboarding, WhatsNewView.shouldShow { + showWhatsNew = true + } } } } diff --git a/myApp/HaruDanim/IOS/InfoPlist.xcstrings b/myApp/HaruDanim/IOS/InfoPlist.xcstrings index 46c638f..f68574b 100644 --- a/myApp/HaruDanim/IOS/InfoPlist.xcstrings +++ b/myApp/HaruDanim/IOS/InfoPlist.xcstrings @@ -1,122 +1,145 @@ { - "sourceLanguage" : "ko", - "strings" : { - "CFBundleDisplayName" : { - "comment" : "홈 화면에 표시되는 앱 이름", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Haru Danim" + "sourceLanguage": "ko", + "strings": { + "CFBundleDisplayName": { + "comment": "홈 화면에 표시되는 앱 이름", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Haru Danim" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "Haru Danim" + "ja": { + "stringUnit": { + "state": "translated", + "value": "Haru Danim" } }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "하루 다님" + "ko": { + "stringUnit": { + "state": "translated", + "value": "하루 다님" } } } }, - "CFBundleName" : { - "comment" : "Bundle name", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Haru Danim" + "CFBundleName": { + "comment": "Bundle name", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Haru Danim" } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "Haru Danim" + "ja": { + "stringUnit": { + "state": "translated", + "value": "Haru Danim" } }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "하루 다님" + "ko": { + "stringUnit": { + "state": "translated", + "value": "하루 다님" } } } }, - "NSCalendarsFullAccessUsageDescription" : { - "comment" : "Privacy - Calendars Full Access Usage Description", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Needed to show your calendar events alongside the diary timetable." + "NSCalendarsFullAccessUsageDescription": { + "comment": "Privacy - Calendars Full Access Usage Description", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Needed to show your calendar events alongside the diary timetable." } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "日記のタイムテーブルにカレンダーの予定を一緒に表示するために必要です。" + "ja": { + "stringUnit": { + "state": "translated", + "value": "日記のタイムテーブルにカレンダーの予定を一緒に表示するために必要です。" } }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "일기 타임테이블에 캘린더 일정을 함께 표시하기 위해 필요해요." + "ko": { + "stringUnit": { + "state": "translated", + "value": "일기 타임테이블에 캘린더 일정을 함께 표시하기 위해 필요해요." } } } }, - "NSFaceIDUsageDescription" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Used to unlock your diary." + "NSFaceIDUsageDescription": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Used to unlock your diary." } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "日記のロック解除に使用されます。" + "ja": { + "stringUnit": { + "state": "translated", + "value": "日記のロック解除に使用されます。" } }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "일기 잠금을 해제하는 데 사용돼요." + "ko": { + "stringUnit": { + "state": "translated", + "value": "일기 잠금을 해제하는 데 사용돼요." } } } }, - "NSPhotoLibraryAddUsageDescription" : { - "comment" : "이미지 내보내기 → 사진에 저장 권한 문구", - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Needed to save exported report images to your photo library." + "NSHealthShareUsageDescription": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Health data like steps, exercise and sleep is read to display it in the app and to calculate quest achievement. It never leaves this device." } }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "書き出したレポート画像を写真アルバムに保存するために必要です。" + "ja": { + "stringUnit": { + "state": "translated", + "value": "歩数・運動・睡眠などのヘルスデータを、アプリでの表示とクエスト達成の計算のために読み取ります。データがこの端末の外に出ることはありません。" } }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "내보낸 리포트 이미지를 사진 앨범에 저장하기 위해 필요해요." + "ko": { + "stringUnit": { + "state": "translated", + "value": "걸음·운동·수면 같은 건강 데이터를 앱에서 보여주고 다짐 달성 계산에 쓰기 위해 읽어요. 데이터는 이 기기 밖으로 나가지 않아요." + } + } + } + }, + "NSPhotoLibraryAddUsageDescription": { + "comment": "이미지 내보내기 → 사진에 저장 권한 문구", + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Needed to save exported report images to your photo library." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "書き出したレポート画像を写真アルバムに保存するために必要です。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "내보낸 리포트 이미지를 사진 앨범에 저장하기 위해 필요해요." } } } } }, - "version" : "1.0" + "version": "1.0" } \ No newline at end of file diff --git a/myApp/HaruDanim/IOS/Localizable.xcstrings b/myApp/HaruDanim/IOS/Localizable.xcstrings index 2f797dd..57790bd 100644 --- a/myApp/HaruDanim/IOS/Localizable.xcstrings +++ b/myApp/HaruDanim/IOS/Localizable.xcstrings @@ -579,6 +579,54 @@ } } }, + "%@L": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ L" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@L" + } + } + } + }, + "%@kcal": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ kcal" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@kcal" + } + } + } + }, + "%@km": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ km" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@km" + } + } + } + }, "%@까지": { "localizations": { "en": { @@ -627,6 +675,22 @@ } } }, + "%@보": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ steps" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@歩" + } + } + } + }, "%@요일": { "localizations": { "en": { @@ -1168,6 +1232,22 @@ } } }, + "'매일 8,000보', '수면 8시간', '달리기 30분'처럼 건강 데이터를 목표로 삼는 다짐을 만들 수 있어요. 운동은 종목별로도 돼요. (프리미엄)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Build quests around health data — \"8,000 steps a day,\" \"8 hours of sleep,\" \"30 minutes of running.\" Workouts can even be tracked by type. (Premium)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "「毎日8,000歩」「睡眠8時間」「ランニング30分」のように、ヘルスデータを目標にしたクエストを作れます。運動は種目別でもOK。(プレミアム)" + } + } + } + }, "'이 날의 목표' 카드": { "localizations": { "en": { @@ -1184,6 +1264,22 @@ } } }, + "'행동 기록' 컴플리케이션이 새로 생겼어요. 행동 편집에서 켜면 워치 페이스에서 누적 기록을 바로 보고, 눌러서 바로 실행할 수 있어요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Meet the new Action Log complication. Turn it on in the action editor to see your running total right on the watch face — and tap it to act right away." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "新しい「アクションの記録」コンプリケーションが登場。アクション編集でオンにすると、ウォッチフェイスで累計をすぐ確認でき、タップしてそのまま実行できます。" + } + } + } + }, "'행동'을 만들면 탭 한 번으로 시간 측정을 시작·종료하거나 횟수를 +1 기록할 수 있어요. 여러 행동을 동시에 측정해도 돼요.": { "localizations": { "en": { @@ -1328,6 +1424,22 @@ } } }, + "2": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "2" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "2" + } + } + } + }, "2시간": { "localizations": { "en": { @@ -1392,6 +1504,38 @@ } } }, + "5": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "5" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "5" + } + } + } + }, + "500": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "500" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "500" + } + } + } + }, "5초": { "localizations": { "en": { @@ -1424,6 +1568,22 @@ } } }, + "8000": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "8000" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "8000" + } + } + } + }, "CSV 가져오기": { "localizations": { "en": { @@ -1646,18 +1806,18 @@ } } }, - "iCloud 동기화는 네트워크 상황에 따라 몇 초에서 몇 분까지 걸릴 수 있어요. 다른 기기의 기록이 안 보이면 모음 탭 왼쪽 위 새로고침 버튼을 눌러 주세요. 그래도 안 보이면 잠시 후 다시 시도하거나 두 기기 모두 인터넷 연결을 확인해 주세요.": { + "iCloud 동기화는 네트워크 상황에 따라 몇 초에서 몇 분까지 걸릴 수 있어요. 다른 기기의 기록이 안 보이면 모음 탭 왼쪽 위의 새로고침 버튼을 눌러 보세요. 그래도 안 보이면 잠시 뒤 다시 시도하거나, 두 기기 모두 인터넷에 연결되어 있는지 확인해 주세요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "iCloud sync can take from a few seconds to a few minutes depending on the network. If records from another device are missing, tap the refresh button at the top left of the Home tab. If they still don’t appear, try again shortly or check the internet connection on both devices." + "value": "iCloud sync can take anywhere from a few seconds to a few minutes depending on your network. If records from another device aren't showing up, tap the refresh button at the top left of the Home tab. Still nothing? Try again in a moment, or make sure both devices are online." } }, "ja": { "stringUnit": { "state": "translated", - "value": "iCloud同期はネットワーク状況により数秒〜数分かかることがあります。ほかのデバイスの記録が見えないときは、ホームタブ左上の更新ボタンをタップしてください。それでも表示されない場合は、しばらくしてから再試行するか、両方のデバイスのインターネット接続を確認してください。" + "value": "iCloudの同期は、ネットワーク状況により数秒から数分かかることがあります。ほかの端末の記録が見えないときは、ホームタブ左上の更新ボタンを押してみてください。それでも見えない場合は、少し待ってからもう一度試すか、両方の端末がインターネットに接続されているか確認してください。" } } } @@ -2116,6 +2276,38 @@ } } }, + "값이 계속 비어 있나요?": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Numbers staying empty?" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "値がずっと空のままですか?" + } + } + } + }, + "값이 실시간이 아닐 수 있어요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Values may not be real-time" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "値はリアルタイムではないことがあります" + } + } + } + }, "개수 제한 해제": { "localizations": { "en": { @@ -2164,6 +2356,182 @@ } } }, + "건강 다짐은 프리미엄 기능이에요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Health quests are a Premium feature" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスクエストはプレミアム機能です" + } + } + } + }, + "건강 데이터": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Health data" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスデータ" + } + } + } + }, + "건강 데이터 안내": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "About health data" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスデータについて" + } + } + } + }, + "건강 데이터 접기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Collapse health data" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスデータをたたむ" + } + } + } + }, + "건강 데이터 펼치기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Expand health data" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスデータを開く" + } + } + } + }, + "건강 데이터 표시": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Show health data" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスデータを表示" + } + } + } + }, + "건강 데이터는 애플이 기기별로 관리해요. 아이패드는 시스템 설정에서 건강 iCloud 동기화를 켠 경우에만 아이폰과 같은 값이 보이고, 맥에서는 건강 데이터를 지원하지 않아요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Health data is managed per device by Apple. An iPad shows the same values as your iPhone only when Health iCloud sync is on in system settings, and the Mac doesn't support health data at all." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスデータはAppleが端末ごとに管理しています。iPadは、システム設定でヘルスケアのiCloud同期をオンにした場合のみiPhoneと同じ値が表示され、Macではヘルスデータ自体に対応していません。" + } + } + } + }, + "건강 데이터로 다짐 만들기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Quests from health data" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスデータでクエストを" + } + } + } + }, + "건강 데이터로 다짐 만들기 (프리미엄)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Quests from Health Data (Premium)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスデータでクエストを作る(プレミアム)" + } + } + } + }, + "건강 앱에 기록된 운동 중 선택한 종목의 시간을 세요. '운동 시간' 지표(활동 링 기준)와는 값이 다를 수 있어요. 값은 기기 밖으로 나가지 않아요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Counts time from workouts of the chosen type recorded in the Health app. This can differ from the Exercise Time metric (based on the activity ring). Values never leave this device." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスケアアプリに記録された運動のうち、選んだ種目の時間を数えます。「運動時間」指標(アクティビティリング基準)とは値が異なることがあります。値がこの端末の外に出ることはありません。" + } + } + } + }, + "건강 지표": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Health Metrics" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルス指標" + } + } + } + }, "건강한 생활 습관": { "localizations": { "en": { @@ -2235,6 +2603,86 @@ } } }, + "걷기 운동": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Walking" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ウォーキング" + } + } + } + }, + "걸음 수": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Steps" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "歩数" + } + } + } + }, + "걸음 수·운동 시간 같은 값은 설정의 '하루 시작 시간'을 기준으로 한 오늘 하루의 합이에요. 수면은 조금 달라요 — 잠은 보통 전날 밤에 시작되니까, 전날 밤부터 오늘 아침까지의 수면 구간을 통째로 '오늘 잔 것'으로 세요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Steps, exercise time and similar values are today's total based on the Day Start Time in Settings. Sleep works a little differently — since sleep usually starts the night before, the whole sleep window from last night to this morning counts as \"today's sleep.\"" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "歩数や運動時間などは、設定の「1日の開始時刻」を基準にした今日1日の合計です。睡眠だけは少し違います — 眠りはたいてい前夜に始まるので、前夜から今朝までの睡眠時間帯をまるごと「今日眠った分」として数えます。" + } + } + } + }, + "걸음·운동·수면 같은 애플 건강 앱의 오늘 데이터를 모음 탭 타일로 볼 수 있어요. 값은 기기 밖으로 나가지 않아요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "See today's Apple Health data — steps, exercise, sleep and more — as tiles on the Home tab. Values never leave your device." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "歩数・運動・睡眠など、Appleヘルスケアの今日のデータをホームタブのタイルで見られます。値が端末の外に出ることはありません。" + } + } + } + }, + "걸음·운동·수면 같은 오늘 데이터를 여기서 볼 수 있어요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "See today's steps, exercise, sleep and more right here" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "歩数・運動・睡眠など今日のデータをここで見られます" + } + } + } + }, "결과물은 일기 상세와 같은 구성(요약 + 노트 페이지)으로 만들어져요.": { "localizations": { "en": { @@ -2251,6 +2699,38 @@ } } }, + "고강도 인터벌(HIIT)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "HIIT" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "HIIT" + } + } + } + }, + "골프": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Golf" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ゴルフ" + } + } + } + }, "공부": { "extractionState": "manual", "localizations": { @@ -2460,6 +2940,22 @@ } } }, + "근력 운동": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Strength training" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "筋力トレーニング" + } + } + } + }, "글래스 버블 메뉴": { "localizations": { "en": { @@ -2605,18 +3101,34 @@ } } }, - "기기를 바꿨거나 앱을 다시 설치했다면 설정 → 프리미엄의 '구매 복원'을 눌러 주세요. 구독 해지나 플랜 변경은 '구독 관리'에서 언제든 할 수 있고, 해지해도 결제한 기간이 끝날 때까지는 계속 쓸 수 있어요.": { + "기기를 바꿨거나 앱을 다시 깔았다면 설정 → 프리미엄에서 '구매 복원'을 눌러 주세요. 구독 해지나 플랜 변경은 '구독 관리'에서 언제든 할 수 있고, 해지해도 이미 결제한 기간이 끝날 때까지는 그대로 쓸 수 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "If you changed devices or reinstalled the app, tap 'Restore Purchases' in Settings → Premium. You can cancel or change plans anytime in 'Manage Subscription', and premium stays active until the paid period ends." + "value": "Switched devices or reinstalled the app? Tap Restore Purchases under Settings → Premium. You can cancel or change your plan anytime in Manage Subscription — and even after canceling, everything keeps working until the period you paid for ends." } }, "ja": { "stringUnit": { "state": "translated", - "value": "機種変更やアプリの再インストールをした場合は、設定→プレミアムの「購入を復元」をタップしてください。解約やプラン変更は「サブスクリプション管理」からいつでもでき、解約しても支払い済みの期間が終わるまで利用できます。" + "value": "端末を替えたりアプリを入れ直したりしたら、設定 → プレミアムで「購入を復元」を押してください。解約やプラン変更は「サブスクリプション管理」からいつでもでき、解約しても支払い済みの期間が終わるまではそのまま使えます。" + } + } + } + }, + "기기마다 값이 다를 수 있어요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Values can differ between devices" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "端末ごとに値が違うことがあります" } } } @@ -2765,18 +3277,18 @@ } } }, - "기록 탭은 하루의 모든 기록을 보여줘요. 상단 화살표로 날짜를 이동하고, 기록을 탭하면 바로 수정할 수 있어요. 타임테이블 보기로 전환하면 하루 또는 일주일을 24시간 축 위에서 한눈에 볼 수 있어요.": { + "기록 탭에는 하루의 모든 기록이 모여요. 위쪽 화살표로 날짜를 옮기고, 기록을 누르면 바로 고칠 수 있어요. 타임테이블 보기로 바꾸면 하루나 일주일을 24시간 축 위에서 한눈에 볼 수 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The History tab shows all records for a day. Move between dates with the arrows at the top, and tap any record to edit it. Switch to the timetable view to see a day or a week on a 24-hour axis at a glance." + "value": "The History tab gathers everything you recorded that day. Move between dates with the arrows at the top, and tap any record to edit it on the spot. Switch to the Timetable view to see a day or a week laid out on a 24-hour axis." } }, "ja": { "stringUnit": { "state": "translated", - "value": "記録タブでは1日のすべての記録を確認できます。上部の矢印で日付を移動し、記録をタップするとすぐ修正できます。タイムテーブル表示に切り替えると、1日または1週間を24時間軸で一目で見られます。" + "value": "記録タブには、その日のすべての記録が集まります。上の矢印で日付を移動し、記録をタップすればその場で修正できます。タイムテーブル表示に切り替えると、1日や1週間を24時間の軸の上でひと目で見渡せます。" } } } @@ -2861,18 +3373,18 @@ } } }, - "기록·통계 탭 오른쪽 위 내보내기 버튼으로 지금 보고 있는 기간의 리포트를 고해상도 이미지로 만들 수 있어요. 라이트·다크 테마를 골라 공유하거나 사진에 저장해요.": { + "기록·통계 탭 오른쪽 위의 내보내기 버튼을 누르면, 지금 보고 있는 기간이 그대로 고화질 이미지 리포트가 돼요. 라이트·다크 테마를 골라 공유하거나 사진 앱에 저장해 두세요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Use the export button at the top right of the History or Stats tab to turn the current period into a high-resolution report image. Choose a light or dark theme, then share it or save it to Photos." + "value": "Tap the export button at the top right of the History or Stats tab, and the period you're looking at becomes a crisp image report. Pick a light or dark theme, then share it or save it to Photos." } }, "ja": { "stringUnit": { "state": "translated", - "value": "記録・統計タブ右上の書き出しボタンで、表示中の期間のレポートを高解像度画像にできます。ライト・ダークテーマを選んで共有するか、写真に保存しましょう。" + "value": "記録・統計タブの右上にある書き出しボタンを押すと、いま見ている期間がそのまま高画質の画像レポートになります。ライト・ダークテーマを選んで、共有したり写真アプリに保存したりしてください。" } } } @@ -2925,18 +3437,18 @@ } } }, - "기록이 오래 쌓여 정리하고 싶다면 설정 → 데이터 → '데이터 정리·초기화'를 써 보세요. 전체를 비우거나, 처음부터 지정한 날짜까지의 기록·일기만 삭제할 수 있어요 — 이때 행동·꼬리표·목표·다짐과 일기 양식은 남고, 지정한 날짜에 걸쳐 있는 측정과 진행 중인 측정도 남아요. '일기만'을 고르면 기록은 그대로 두고 일기만 지울 수도 있어요 — 사진·필기로 커진 일기 용량만 줄일 때 좋아요. 삭제 전에 CSV 백업과, 삭제할 기록을 한눈에 정리한 '정리 리포트'(PDF·이미지)를 만들어 보관할 수 있어요 — 백업을 켰다면 파일을 만든 뒤에만 삭제로 진행할 수 있어요. 과거 기록이 사라지면 다짐의 연속 달성 기록은 끊겨요. iCloud 동기화를 켰다면 다른 기기에서도 함께 삭제되니 백업을 꼭 저장해 두세요.": { + "기록이 오래 쌓여 정리하고 싶다면 설정 → 데이터 → '데이터 정리·초기화'를 써 보세요. 전체를 비우거나, 처음부터 정한 날짜까지의 기록·일기만 지울 수 있어요 — 이때 행동·꼬리표·목표·다짐과 일기 양식은 남고, 그 날짜에 걸쳐 있는 측정과 진행 중인 측정도 남아요. '일기만'을 고르면 기록은 그대로 두고 일기만 지워요 — 사진과 필기로 커진 일기 용량만 줄이고 싶을 때 좋아요. 지우기 전에 CSV 백업과, 지울 기록을 한눈에 담은 '정리 리포트'(PDF·이미지)를 만들어 보관할 수 있어요. 백업을 켰다면 파일을 만든 뒤에만 삭제로 넘어갈 수 있고요. 과거 기록이 사라지면 다짐의 연속 달성은 끊겨요. iCloud 동기화 중이면 다른 기기에서도 함께 지워지니 백업을 꼭 저장해 두세요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "If records have piled up, try Settings → Data → Data Cleanup & Reset. You can clear everything, or delete only records and diaries from the beginning through a chosen date — actions, tags, goals, quests, and diary templates remain, and sessions spanning the chosen date or still running are kept too. Choose 'Diaries only' to delete just the diaries while keeping records — handy for freeing up space taken by photos and handwriting. Before deleting, you can create a CSV backup plus a summary report (PDF/image) that sums up what will be removed at a glance — if backups are on, deletion proceeds only after the files are created. Removing past records breaks quest streaks. With iCloud sync on, deletion applies to your other devices too, so be sure to save the backups." + "value": "When old records pile up, try Settings → Data → Data Cleanup & Reset. You can wipe everything, or delete only the records and diaries up to a chosen date — your actions, tags, goals, quests and diary templates stay, and so do sessions that straddle that date or are still running. Choose \"Diaries only\" to keep all records and delete just the diaries — handy when photos and handwriting have made them heavy. Before deleting you can create a CSV backup and a Cleanup Report (PDF or image) that captures what's about to go; with backups on, deletion unlocks only after the files are made. Note that erasing past records breaks quest streaks, and with iCloud sync on the deletion reaches your other devices too — so do save those backups." } }, "ja": { "stringUnit": { "state": "translated", - "value": "記録がたまって整理したいときは、設定 → データ → 「データ整理・リセット」を試してください。全体を空にするか、最初から指定した日付までの記録・日記だけを削除できます — アクション・タグ・目標・クエストと日記テンプレートは残り、指定日をまたぐ計測や進行中の計測も残ります。「日記のみ」を選ぶと、記録はそのままに日記だけを削除することもできます — 写真や手書きで大きくなった日記の容量だけを減らしたいときに便利です。削除前にCSVバックアップと、削除する記録をひと目でまとめた「整理レポート」(PDF・画像)を作成して保管できます — バックアップをオンにした場合は、ファイルを作成した後にのみ削除に進めます。過去の記録が消えるとクエストの連続達成は途切れます。iCloud同期がオンの場合は他のデバイスでも削除されるため、必ずバックアップを保存してください。" + "value": "記録がたまって整理したくなったら、設定 → データ → 「データ整理・リセット」を使ってみてください。全部を空にすることも、最初から指定した日付までの記録・日記だけを消すこともできます — このときアクション・タグ・目標・クエスト・日記のテンプレートは残り、その日付をまたぐ計測や進行中の計測も残ります。「日記のみ」を選ぶと記録はそのままに日記だけを消せます — 写真や手書きで大きくなった日記の容量だけ減らしたいときに便利です。消す前にCSVバックアップと、消す記録をひと目でまとめた「整理レポート」(PDF・画像)を作って保管できます。バックアップをオンにした場合は、ファイルを作った後にだけ削除に進めます。過去の記録が消えるとクエストの連続達成は途切れます。iCloud同期中はほかの端末からも一緒に消えるので、バックアップは必ず保存しておいてください。" } } } @@ -3091,6 +3603,22 @@ } } }, + "기타 운동": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Other workouts" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "その他の運動" + } + } + } + }, "기호": { "localizations": { "en": { @@ -3331,18 +3859,18 @@ } } }, - "꼬리표는 행동을 묶는 태그예요. 고유의 색을 가지며, 행동 버튼의 색은 지정한 꼬리표의 색을 따라요. 하나의 행동에 여러 꼬리표를 붙일 수 있고, 꼬리표 탭이나 행동 만들기 화면에서 바로 추가할 수 있어요.": { + "꼬리표는 행동을 묶어 주는 이름표예요. 꼬리표마다 고유한 색이 있어서 행동 버튼의 색도 지정한 꼬리표의 색을 따라가요. 한 행동에 꼬리표를 여러 개 붙여도 되고, 꼬리표 탭이나 행동 만들기 화면에서 바로 새로 만들 수도 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Tags group your actions. Each tag has its own color, and action buttons take the color of their tag. One action can have multiple tags, and you can add tags from the Tags tab or right inside the action editor." + "value": "Tags are labels that group your actions. Each tag has its own color, and action buttons take on the color of their tag. One action can carry several tags, and you can create new ones right from the Tags tab or while making an action." } }, "ja": { "stringUnit": { "state": "translated", - "value": "タグはアクションをまとめるラベルです。タグごとに固有の色があり、アクションボタンの色は指定したタグの色になります。1つのアクションに複数のタグを付けられ、タグタブやアクション作成画面からすぐ追加できます。" + "value": "タグはアクションをまとめるラベルです。タグごとに固有の色があり、アクションのボタンも指定したタグの色になります。1つのアクションに複数のタグを付けてもよく、タグタブやアクション作成画面からすぐに新しく作ることもできます。" } } } @@ -3860,18 +4388,34 @@ } } }, - "노트 페이지 도구 줄에서 '사진'·'도형'·'텍스트'를 추가한 뒤 '배치 모드'에서 꾸며요 — 드래그로 옮기고, 핀치로 크기를(모양 비율은 그대로), 두 손가락 돌리기로 회전을 바꿔요. 선택하면 나타나는 손잡이로 모양을 다듬어요: 사각형은 꼭짓점을 끌면 그 모서리만 움직이고, 원은 상하좌우 손잡이로 늘리거나 눌러 타원을 만들고, 화살표·선은 양 끝점을 끌어 길이와 방향을 바꿔요. 조절 중에 정사각형·정원이 되는 순간 손잡이가 노란색으로 변하며 살짝 붙잡아 줘요. 텍스트 상자는 선택된 상태에서 한 번 더 탭하면 바로 그 자리에서 키보드로 입력·줄바꿈이 되고, '스타일'에서 글자 색·크기·굵게·정렬·테두리(색·굵기 포함)를 바꿀 수 있어요. 도형은 '도형 수정'에서 색·선 굵기·채우기·모서리 둥글기·회전을 바꿔요.": { + "노트 페이지 도구 줄에서 '사진'·'도형'·'텍스트'를 더한 뒤 '배치 모드'에서 꾸며요 — 끌어서 옮기고, 두 손가락으로 오므리거나 벌려 크기를(모양 비율은 그대로), 돌려서 회전을 바꿔요. 요소를 선택하면 손잡이가 나타나요. 사각형은 꼭짓점을 끌면 그 모서리만 움직이고, 원은 상하좌우 손잡이로 늘리고 눌러 타원을 만들고, 화살표·선은 양 끝점을 끌어 길이와 방향을 함께 바꿔요. 조절하다 정사각형·정원이 되는 순간 손잡이가 노랗게 변하며 살짝 붙잡아 줘요. 텍스트 상자는 선택된 채 한 번 더 누르면 그 자리에서 바로 키보드 입력·줄바꿈이 되고, '스타일'에서 글자 색·크기·굵기·정렬·테두리(색·굵기까지)를 바꿔요. 도형은 '도형 수정'에서 색·선 굵기·채우기·모서리 둥글기·회전을 다듬어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Add 'Photos', 'Shapes', and 'Text' from the note page toolbar, then style them in 'Arrange mode' — drag to move, pinch to resize (keeping the shape's proportions), and twist with two fingers to rotate. Use the handles that appear when selected to refine the shape: drag a rectangle's corner to move just that corner, use a circle's top/bottom/left/right handles to stretch or squash it into an ellipse, and drag either end of an arrow or line to change its length and direction. The moment it becomes a perfect square or circle while adjusting, the handles turn yellow and gently snap into place. Tap a selected text box once more to type right in place with the keyboard, line breaks included, and use 'Style' to change text color, size, bold, alignment, and the border (including its color and width). For shapes, 'Edit Shape' changes color, line width, fill, corner radius, and rotation." + "value": "Add photos, shapes and text from the note page toolbar, then arrange them in Layout mode — drag to move, pinch to resize (proportions stay true), and twist to rotate. Selecting an element reveals handles: drag a rectangle's corner to move just that corner, stretch a circle by its four handles to make an ellipse, and pull either end of an arrow or line to change length and direction together. The moment a shape snaps to a perfect square or circle, the handles turn yellow and hold it gently in place. Tap a selected text box once more to type and add line breaks right there, and use Style to change text color, size, weight, alignment and border (color and thickness included). For shapes, Edit Shape adjusts color, line width, fill, corner radius and rotation." } }, "ja": { "stringUnit": { "state": "translated", - "value": "ノートページのツールバーから「写真」「図形」「テキスト」を追加したら「配置モード」で仕上げます — ドラッグで移動し、ピンチでサイズを変え(形の比率はそのまま)、2本指でひねって回転します。選択すると現れるハンドルで形を整えられます: 四角形は角をドラッグするとその角だけが動き、円は上下左右のハンドルで伸ばしたりつぶしたりして楕円にでき、矢印・線は両端をドラッグして長さと向きを変えられます。調整中に正方形・正円になった瞬間、ハンドルが黄色に変わりそっと吸い付きます。選択中のテキストボックスをもう一度タップすると、その場でキーボード入力・改行ができ、「スタイル」で文字の色・サイズ・太字・配置・枠線(色・太さを含む)を変えられます。図形は「図形を編集」で色・線の太さ・塗りつぶし・角の丸み・回転を変更します。" + "value": "ノートページのツールバーから「写真」「図形」「テキスト」を追加し、「配置モード」で飾りましょう — ドラッグで移動、2本指でつまんだり広げたりしてサイズを(形の比率はそのまま)、ひねって回転を変えます。要素を選ぶとハンドルが現れます。四角形は頂点をドラッグするとその角だけが動き、円は上下左右のハンドルで伸ばしたり押したりして楕円を作り、矢印・線は両端をドラッグして長さと向きを同時に変えます。調整中に正方形・正円になった瞬間、ハンドルが黄色に変わってそっと固定してくれます。テキストボックスは選択したままもう一度タップすると、その場でキーボード入力・改行ができ、「スタイル」で文字色・サイズ・太さ・揃え・枠線(色・太さまで)を変えられます。図形は「図形を編集」で色・線の太さ・塗りつぶし・角の丸み・回転を整えます。" + } + } + } + }, + "농구": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Basketball" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "バスケットボール" } } } @@ -4348,18 +4892,18 @@ } } }, - "다짐마다 하루·주간·월간 진행률이 표시돼요. 주간·월간 진행률은 하루 초과 달성이 다른 날의 미달을 가리지 않도록 하루 목표량까지만 인정해 합산하고, 요일·날짜를 정한 다짐은 수행일의 기록만 집계해요 — 수행일이 아닌 날의 '하루' 진행률은 '수행일 아님'으로 표시돼요. 주간·월간 다짐이 이번 주(이번 달) 몫을 이미 채웠다면 '하루' 진행률은 0% 대신 '이번 주 달성'·'이번 달 달성'으로 표시되고 목표의 하루 진행률에도 달성으로 반영돼요 — 오늘은 더 하지 않아도 된다는 뜻이에요. 다짐 자신의 주기(하루 다짐의 '하루' 등)에서는 100%를 넘는 초과 달성이 그대로 표시되지만, 주간 다짐의 '하루'처럼 주기와 다른 기간은 목표를 그 기간 몫으로 나눈 페이스 기준이라 최대 100%까지만 표시돼요. '이하 유지' 다짐은 한도 안이면 100%, 넘으면 0%예요 — 주간·월간 한도 다짐의 '하루'는 하루 몫 한도 기준이라, 주간 한도가 남았어도 오늘 많이 쓰면 먼저 알려주는 경고 역할을 해요.": { + "다짐마다 하루·주간·월간 진행률이 보여요. 주간·월간 진행률은 어느 하루의 초과 달성이 다른 날의 미달을 가리지 않도록 하루 목표량까지만 인정해서 더하고, 요일·날짜를 정한 다짐은 수행일의 기록만 세요 — 수행일이 아닌 날의 '하루' 칸에는 '수행일 아님'이 표시돼요. 주간·월간 다짐이 이번 주(이번 달) 몫을 이미 채웠다면 '하루'는 0% 대신 '이번 주 달성'·'이번 달 달성'으로 바뀌고 목표의 하루 진행률에도 달성으로 들어가요 — 오늘은 더 하지 않아도 된다는 뜻이에요. 다짐 자신의 주기(하루 다짐의 '하루' 같은)에서는 100%를 넘는 초과 달성이 그대로 보이지만, 주간 다짐의 '하루'처럼 주기와 다른 기간은 목표를 그 기간 몫으로 나눈 페이스 기준이라 100%까지만 보여요. '이하 유지' 다짐은 한도 안이면 100%, 넘으면 0%예요 — 주간·월간 한도 다짐의 '하루'는 하루 몫 기준이라, 주간 한도가 아직 남았어도 오늘 많이 쓰면 먼저 알려 주는 경고 역할을 해요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Each quest shows daily, weekly and monthly progress. Weekly and monthly progress count each day only up to its daily target, so one big day can't hide shortfalls on other days — and quests set to specific weekdays or dates only count records on their scheduled days, with the 'Daily' bar showing 'Not scheduled' on other days. If a weekly or monthly quest has already met this week's (or this month's) target, the 'Daily' bar shows 'Done this week' or 'Done this month' instead of 0% and counts as achieved in the goal's daily progress — meaning nothing more is needed today. On a quest's own cycle (like 'Daily' for a daily quest), overachievement above 100% is shown as is, but periods other than its cycle — like the 'Daily' bar of a weekly quest — are pace guides that split the target across the period, so they show at most 100%. 'Stay under' quests show 100% within the limit and 0% over it — for weekly or monthly limits, the 'Daily' bar uses the day's share, so it warns you early even while the weekly limit still has room." + "value": "Every quest shows daily, weekly and monthly progress. Weekly and monthly progress counts each day only up to its daily target, so one big day can't hide another day's shortfall — and quests set to specific weekdays or dates count scheduled days only, with \"Not scheduled\" shown in the Day slot on off days. If a weekly or monthly quest has already met this week's (or month's) share, its Day slot reads \"Done this week\" or \"Done this month\" instead of 0% and counts as achieved in the goal's daily progress — meaning you don't have to do more today. In a quest's own period (like Day for a daily quest) overachievement past 100% shows as is, but periods other than its own — like Day on a weekly quest — are pace guides with the target split per period, so they cap at 100%. A Stay-under quest shows 100% while within its limit and 0% once over — and its Day slot uses the daily share of the limit, so it warns you early on a heavy day even if the weekly limit still has room." } }, "ja": { "stringUnit": { "state": "translated", - "value": "クエストごとに1日・週間・月間の進捗が表示されます。週間・月間の進捗は、1日の超過達成がほかの日の未達を隠さないよう1日の目標量までを合算し、曜日・日付を決めたクエストは実行日の記録だけを集計します — 実行日でない日の「1日」は「実行日ではありません」と表示されます。週間・月間クエストが今週(今月)の分をすでに満たしている場合、「1日」は0%の代わりに「今週分達成」・「今月分達成」と表示され、目標の1日進捗にも達成として反映されます — 今日はやらなくてもよいという意味です。クエスト自身の周期(毎日クエストの「1日」など)では100%を超える超過達成がそのまま表示されますが、週間クエストの「1日」のように周期と異なる期間は、目標をその期間分に割ったペース基準のため最大100%までの表示になります。「以下をキープ」のクエストは上限内なら100%、超えると0%です — 週間・月間上限の「1日」は1日分の上限が基準のため、週の上限が残っていても使いすぎを早めに知らせてくれます。" + "value": "クエストごとに1日・週間・月間の進捗が表示されます。週間・月間の進捗は、ある1日の超過達成が別の日の未達を覆い隠さないよう、1日分の目標量までだけ認めて合算し、曜日・日付を決めたクエストは実行日の記録だけを数えます — 実行日でない日の「1日」欄には「実行日ではありません」と表示されます。週間・月間のクエストが今週(今月)の分をすでに満たしていれば、「1日」は0%の代わりに「今週分達成」「今月分達成」に変わり、目標の1日進捗にも達成として反映されます — 今日はこれ以上やらなくていい、という意味です。クエスト自身の周期(1日クエストの「1日」など)では100%を超える超過達成がそのまま表示されますが、週間クエストの「1日」のように周期と違う期間は、目標をその期間分に割ったペース基準なので100%までしか表示されません。「以下を維持」クエストは上限内なら100%、超えたら0%です — 週間・月間の上限クエストの「1日」は1日分の上限基準なので、週の上限がまだ残っていても今日たくさん使うと早めに知らせてくれる警告の役割をします。" } } } @@ -4380,18 +4924,34 @@ } } }, - "다짐을 끊기지 않고 지키면 불꽃과 함께 '연속 3일'처럼 표시돼요. 요일이나 날짜를 정한 다짐은 그 수행일만 세고, 주간·월간 다짐은 '연속 N주·N달'로 세요. 계산은 목표 시작일부터 시작하고, 아직 끝나지 않은 오늘(이번 주기)은 못 채웠어도 끊기지 않아요. '이하 유지' 다짐은 한도를 넘는 순간 끊겨요.": { + "다짐을 끊기지 않고 지키면 불꽃과 함께 '연속 3일'처럼 표시돼요. 요일이나 날짜를 정한 다짐은 그 수행일만 세고, 주간·월간 다짐은 '연속 몇 주·몇 달'로 세요. 세는 건 목표 시작일부터고, 아직 끝나지 않은 오늘(이번 주기)은 못 채웠어도 끊긴 걸로 치지 않아요. '이하 유지' 다짐은 한도를 넘는 순간 끊겨요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Keep a quest going without a break and a flame appears with a streak like \"3-day streak\". Quests set for specific weekdays or dates count only their scheduled days, and weekly/monthly quests count as \"N-week / N-month streaks\". Counting starts from the goal's start date, and today (or the current period) never breaks the streak while it's still in progress. \"Stay under\" quests break the moment you exceed the limit." + "value": "Keep a quest going without a miss and a flame appears with something like \"3-day streak.\" Quests set to weekdays or dates count only their scheduled days, and weekly or monthly quests count streaks in weeks or months. Counting starts from the goal's start date, and today (or the current period) doesn't break the streak just because it isn't filled yet. A Stay-under quest breaks the moment you cross the limit." } }, "ja": { "stringUnit": { "state": "translated", - "value": "クエストを途切れず守ると、炎マークと「連続3日」のような表示が付きます。曜日や日付を決めたクエストは実行日だけを数え、週間・月間クエストは「連続N週・Nか月」で数えます。計算は目標の開始日から始まり、まだ終わっていない今日(今の期間)は未達でも途切れません。「以下をキープ」のクエストは上限を超えた瞬間に途切れます。" + "value": "クエストを途切れず守ると、炎とともに「3日連続」のように表示されます。曜日や日付を決めたクエストはその実行日だけを数え、週間・月間クエストは「連続◯週・◯か月」で数えます。数え始めは目標の開始日からで、まだ終わっていない今日(今の周期)は満たしていなくても途切れた扱いにはなりません。「以下を維持」クエストは上限を超えた瞬間に途切れます。" + } + } + } + }, + "다짐을 만들 때 대상에서 '건강'을 고르면 '매일 8,000보', '수면 8시간 이상', '달리기 30분'처럼 건강 데이터를 목표로 삼을 수 있어요. 걸음 수·운동 시간·수면·활동 에너지·이동 거리·일어서기·마음챙김·물 섭취를 고를 수 있고, 운동은 달리기·수영·근력 운동 같은 종목별로도 만들 수 있어요 — 종목별 시간은 건강 앱에 기록된 운동 기준이라 활동 링의 '운동 시간'과는 값이 다를 수 있어요. 건강 다짐은 하루 단위로만 반복돼요(요일 지정은 돼요).\n수면 다짐은 '수면 구간'(기본 저녁 9시~다음 날 아침 9시)을 정해 두면 그 안에서 잔 시간을 통째로 그날 것으로 세요 — 자정을 넘겨 자도 하루가 쪼개지지 않아요. 진행률·연속 달성·목표 판정은 다른 다짐과 똑같은 규칙으로 계산돼요. 건강 데이터가 없는 기기(맥 등)에서는 건강 다짐이 '데이터 없음'으로 보이고 목표 진행률에서 빠져요 — 아이폰에서 보면 정상으로 보여요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Pick Health as the target when creating a quest, and health data becomes your goal — \"8,000 steps a day,\" \"at least 8 hours of sleep,\" \"30 minutes of running.\" You can choose steps, exercise time, sleep, active energy, distance, stand hours, mindfulness or water intake, and workouts can be tracked by type, like running, swimming or strength training — type-based time comes from workouts logged in the Health app, so it can differ from the activity ring's Exercise Time. Health quests repeat daily only (weekday schedules are fine).\nFor a sleep quest, set a sleep window (9 PM to 9 AM the next morning by default) and everything you sleep within it counts as that day's sleep — crossing midnight doesn't split your night. Progress, streaks and goal judgment follow exactly the same rules as other quests. On devices without health data (like the Mac), health quests show \"No data\" and drop out of goal progress — they look normal again on your iPhone." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "クエストを作るとき対象で「ヘルス」を選ぶと、「毎日8,000歩」「睡眠8時間以上」「ランニング30分」のように、ヘルスデータを目標にできます。歩数・運動時間・睡眠・アクティブエネルギー・移動距離・スタンド時間・マインドフルネス・水分摂取から選べて、運動はランニング・水泳・筋力トレーニングのような種目別でも作れます — 種目別の時間はヘルスケアアプリに記録された運動が基準なので、アクティビティリングの「運動時間」とは値が異なることがあります。ヘルスクエストは1日単位でのみ繰り返されます(曜日指定はできます)。\n睡眠クエストは「睡眠時間帯」(デフォルトは夜9時〜翌朝9時)を決めておくと、その中で眠った時間をまるごとその日の分として数えます — 日付をまたいで眠っても1日が分割されません。進捗・連続達成・目標判定はほかのクエストとまったく同じルールで計算されます。ヘルスデータのない端末(Macなど)ではヘルスクエストが「データなし」と表示され目標の進捗から外れます — iPhoneで見れば通常どおり表示されます。" } } } @@ -4524,18 +5084,18 @@ } } }, - "단축어 앱에서 '하루 다님'을 검색하면 측정 시작·종료, 횟수 추가, 행동 누적값 가져오기, 목표·다짐 진행률 가져오기 동작을 조합해 나만의 자동화를 만들 수 있어요. \"시리야, 하루 다님에서 측정 시작\"처럼 말로도 실행할 수 있고, 어떤 행동인지 물으면 이름으로 대답하면 돼요. 진행률 동작은 값을 돌려주므로 다른 단축어와 이어 붙일 수 있어요.": { + "단축어 앱에서 '하루 다님'을 찾으면 측정 시작·종료, 횟수 추가, 행동 누적값 가져오기, 목표·다짐 진행률 가져오기 동작으로 나만의 자동화를 만들 수 있어요. \"시리야, 하루 다님에서 측정 시작\"처럼 말로도 되고, 어떤 행동인지 물으면 이름으로 답하면 돼요. 진행률 동작은 값을 돌려주니 다른 단축어와 이어 붙이기 좋아요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Search for 'HaruDanim' in the Shortcuts app to combine actions — start/stop tracking, add counts, get an action's totals, and get goal or quest progress — into your own automations. You can also just say \"Hey Siri, start tracking in HaruDanim\"; when Siri asks which action, answer with its name. The progress actions return a value, so you can chain them into other shortcuts." + "value": "Find Haru Danim in the Shortcuts app and build your own automations with actions for starting and stopping a session, adding counts, getting an action's total, and getting goal or quest progress. Voice works too — \"Hey Siri, start tracking in Haru Danim\" — and when Siri asks which action, just answer with its name. The progress actions return values, so they chain nicely into other shortcuts." } }, "ja": { "stringUnit": { "state": "translated", - "value": "ショートカットアプリで「Haru Danim」を検索すると、計測の開始・終了、回数の追加、アクションの累計取得、目標・クエストの達成率取得を組み合わせて自分だけの自動化が作れます。「Hey Siri、Haru Danimで計測開始」のように声でも実行でき、どのアクションか聞かれたら名前で答えるだけ。達成率のアクションは値を返すので、他のショートカットにつなげられます。" + "value": "ショートカットアプリで「Haru Danim」を探すと、計測の開始・終了、回数の追加、アクションの累計取得、目標・クエストの進捗取得のアクションで自分だけの自動化を作れます。「Hey Siri、Haru Danimで計測開始」のように声でも実行でき、どのアクションかと聞かれたら名前で答えるだけです。進捗のアクションは値を返すので、ほかのショートカットとつなげやすいです。" } } } @@ -4556,34 +5116,34 @@ } } }, - "달력 화면 오른쪽 위 내보내기 버튼에서 기간(며칠부터 며칠까지)이나 여러 날짜를 골라 PDF 또는 이미지로 저장해요. 요약 페이지와 노트 페이지가 그대로 담겨요.\n파일을 만든 뒤에는 '내보낸 날짜의 일기 삭제'로 방금 저장한 일기들을 앱에서 지워 저장 공간을 줄일 수 있어요. 필기·사진이 함께 지워지고 iCloud 동기화 중이면 다른 기기에서도 삭제되니, 공유로 파일을 먼저 저장했는지 확인해 주세요.": { + "달력 화면 오른쪽 위의 내보내기 버튼에서 기간(며칠부터 며칠까지)이나 여러 날짜를 골라 PDF나 이미지로 저장해요. 요약 페이지와 노트 페이지가 보이는 그대로 담겨요.\n파일을 만든 다음에는 '내보낸 날짜의 일기 삭제'로 방금 내보낸 일기들을 앱에서 지워 저장 공간을 되찾을 수 있어요. 필기와 사진이 함께 지워지고 iCloud 동기화 중이면 다른 기기에서도 지워지니, 공유로 파일부터 저장해 뒀는지 꼭 확인해 주세요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Use the export button at the top right of the calendar to pick a range or multiple dates and save them as a PDF or images. Summary and note pages are included as they are.\nAfter creating the file, 'Delete Exported Diaries' removes those diaries from the app to free up space. Handwriting and photos are deleted too, and with iCloud sync on they are removed from other devices as well — make sure you have saved the file via Share first." + "value": "From the export button at the top right of the calendar, pick a date range or multiple dates and save them as a PDF or images. Summary pages and note pages are captured exactly as they appear.\nAfter the file is made, \"Delete exported diaries\" removes those diary entries from the app to reclaim space. Handwriting and photos go with them, and with iCloud sync on they're removed from your other devices too — so make sure you've saved the file via Share first." } }, "ja": { "stringUnit": { "state": "translated", - "value": "カレンダー右上のエクスポートボタンで期間または複数の日付を選び、PDFや画像として保存できます。サマリーページとノートページがそのまま含まれます。\nファイル作成後は「書き出した日の日記を削除」で、保存した日記をアプリから消して容量を減らせます。手書きや写真も一緒に削除され、iCloud同期中は他のデバイスからも削除されるため、先に共有でファイルを保存したか確認してください。" + "value": "カレンダー画面右上の書き出しボタンから、期間(何日から何日まで)や複数の日付を選んでPDFか画像で保存します。サマリーページもノートページも、見えているそのままの姿で収められます。\nファイルを作った後は「書き出した日付の日記を削除」で、いま書き出した日記をアプリから消して容量を取り戻せます。手書きと写真も一緒に消え、iCloud同期中はほかの端末からも消えるので、共有でファイルを先に保存したか必ず確認してください。" } } } }, - "달력 화면 오른쪽 위 양식 버튼에서 PDF나 사진을 노트 배경 양식으로 가져올 수 있어요. 가져온 양식은 페이지를 추가할 때 빈 캔버스·줄 노트와 함께 고를 수 있고, 여러 쪽 PDF는 원하는 쪽을 골라 써요. 양식은 필기 아래에 깔리고 확대해도 선명하게 보여요. 양식을 삭제하면 그 양식을 쓰던 페이지는 빈 캔버스로 표시되지만 필기는 그대로 남아요.\n양식이 깔린 페이지에서는 펜 색이 화면 모드(라이트·다크)와 상관없이 고른 색 그대로 고정돼요 — 양식은 항상 밝은 배경이라, 어떤 기기·모드에서 봐도 필기가 같은 색으로 보여요.": { + "달력 화면 오른쪽 위의 양식 버튼에서 PDF나 사진을 노트의 배경 양식(속지)으로 가져올 수 있어요. 가져온 양식은 페이지를 더할 때 빈 캔버스·줄 노트와 나란히 고를 수 있고, 여러 쪽짜리 PDF는 원하는 쪽만 골라 써요. 양식은 필기 아래에 깔리고, 확대해도 흐려지지 않아요. 양식을 지우면 그 양식을 쓰던 페이지는 빈 캔버스로 보이지만 필기는 그대로 남아요.\n양식이 깔린 페이지의 펜 색은 라이트·다크 모드와 상관없이 고른 색 그대로 고정돼요 — 양식은 늘 밝은 배경이라, 어느 기기 어느 모드에서 봐도 필기가 같은 색으로 보이게 하기 위해서예요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Use the templates button at the top right of the calendar screen to import PDFs or photos as note background templates. When adding a page, you can choose an imported template alongside the blank canvas and lined paper, and for multi-page PDFs you pick the page you want. Templates sit underneath your handwriting and stay sharp even when zoomed in. If you delete a template, pages that used it show as a blank canvas, but your handwriting is kept.\nOn pages with a template, pen colors stay exactly as you picked them regardless of Light or Dark Mode — templates always have a bright background, so your handwriting looks the same color on every device and in every mode." + "value": "Use the template button at the top right of the calendar to bring in a PDF or photo as a note background (paper template). Imported templates appear alongside the blank canvas and lined paper when adding a page, and for multi-page PDFs you pick just the pages you want. Templates sit beneath your handwriting and stay sharp when zoomed. Deleting a template turns its pages into blank canvases — the handwriting stays.\nOn template pages, pen colors are fixed to exactly what you picked, regardless of light or dark mode — templates always have a bright background, so your writing looks the same color on every device and in every mode." } }, "ja": { "stringUnit": { "state": "translated", - "value": "カレンダー画面右上のテンプレートボタンから、PDFや写真をノートの背景テンプレートとして読み込めます。ページを追加するとき、白紙・罫線ノートと一緒に読み込んだテンプレートを選べ、複数ページのPDFは使いたいページを選びます。テンプレートは手書きの下に敷かれ、拡大しても鮮明に表示されます。テンプレートを削除しても、使っていたページは白紙として表示されるだけで、手書きはそのまま残ります。\nテンプレートが敷かれたページでは、ライト・ダークモードに関係なくペンの色が選んだ色のまま固定されます — テンプレートは常に明るい背景なので、どの端末・モードで見ても手書きが同じ色で表示されます。" + "value": "カレンダー画面右上のテンプレートボタンから、PDFや写真をノートの背景テンプレート(用紙)として取り込めます。取り込んだテンプレートはページを追加するとき空白キャンバス・罫線ノートと並んで選べて、複数ページのPDFは使いたいページだけ選んで使います。テンプレートは手書きの下に敷かれ、拡大してもぼやけません。テンプレートを削除すると、それを使っていたページは空白キャンバスとして表示されますが、手書きはそのまま残ります。\nテンプレートを敷いたページのペンの色は、ライト・ダークモードに関係なく選んだ色のまま固定されます — テンプレートは常に明るい背景なので、どの端末のどのモードで見ても手書きが同じ色に見えるようにするためです。" } } } @@ -4845,6 +5405,22 @@ } } }, + "댄스": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Dance" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ダンス" + } + } + } + }, "더보기": { "localizations": { "en": { @@ -4909,6 +5485,22 @@ } } }, + "데이터 없음": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No data" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "データなし" + } + } + } + }, "데이터 정리·초기화": { "localizations": { "en": { @@ -4925,6 +5517,22 @@ } } }, + "데이터는 이 기기 안에만 있어요": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Your data stays on this device" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "データはこの端末の中だけ" + } + } + } + }, "도움말": { "localizations": { "en": { @@ -4941,6 +5549,38 @@ } } }, + "도움말 새 단장": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "A freshly polished guide" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルプをリニューアル" + } + } + } + }, + "도움말 전체 문구를 더 자연스럽게 다듬고, 새 기능 사용법을 더했어요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "We rewrote the entire in-app guide to read more naturally and added how-tos for the new features." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アプリ内ヘルプの文章全体をより自然に磨き直し、新機能の使い方も加えました。" + } + } + } + }, "도형": { "localizations": { "en": { @@ -5070,6 +5710,22 @@ } } }, + "드래그로 순서를 바꾸면 모음 탭에 바로 적용돼요. 목표 진행 현황 카드와 '현재 진행 중' 영역은 항상 위에 고정돼요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Drag to reorder — changes apply to the Home tab right away. The goal progress cards and the Now Tracking area always stay pinned on top." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ドラッグで並べ替えると、ホームタブにすぐ反映されます。目標の進捗カードと「現在計測中」エリアは常に上部に固定されます。" + } + } + } + }, "드래그해서 순서를 바꾸고, 스위치로 표시 여부를 정할 수 있어요. 모든 날짜의 일기 첫 화면에 함께 적용돼요.": { "localizations": { "en": { @@ -5118,6 +5774,22 @@ } } }, + "등산": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Hiking" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "登山" + } + } + } + }, "라이트": { "localizations": { "en": { @@ -5214,6 +5886,22 @@ } } }, + "마음챙김": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Mindfulness" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "マインドフルネス" + } + } + } + }, "만드는 중…": { "localizations": { "en": { @@ -5685,6 +6373,22 @@ } } }, + "모음 탭 건강 데이터": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Health Data on Home" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ホームのヘルスデータ" + } + } + } + }, "모음 탭 목표 진행 현황": { "localizations": { "en": { @@ -5701,18 +6405,18 @@ } } }, - "모음 탭 왼쪽 위의 새로고침 버튼은 화면을 앱을 껐다 켠 것처럼 처음부터 다시 불러오고, 홈 화면 위젯과 애플워치도 함께 갱신해요. iCloud 동기화로 다른 기기에서 바꾼 내용이 아직 안 보이거나 위젯이 늦게 갱신되는 것 같을 때 눌러 보세요. iCloud 동기화·위젯이 프리미엄 기능이라 이 버튼은 프리미엄을 사용 중일 때만 표시돼요.": { + "모음 탭 왼쪽 위의 새로고침 버튼은 앱을 껐다 켠 것처럼 화면을 처음부터 다시 불러오고, 홈 화면 위젯과 애플워치도 함께 새로 고쳐요. 다른 기기에서 바꾼 내용이 아직 안 보이거나 위젯이 굼떠 보일 때 눌러 보세요. iCloud 동기화와 위젯이 프리미엄 기능이라, 이 버튼도 프리미엄을 쓸 때만 보여요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The refresh button at the top left of the Home tab reloads the screen from scratch — as if you had restarted the app — and also refreshes your Home Screen widgets and Apple Watch. Try it when changes made on another device haven't appeared yet via iCloud sync, or when widgets seem slow to update. Since iCloud sync and widgets are premium features, this button appears only while you're using premium." + "value": "The refresh button at the top left of the Home tab reloads the screen from scratch — like relaunching the app — and refreshes your home screen widgets and Apple Watch along the way. Tap it when changes from another device haven't shown up yet or widgets seem sluggish. Since iCloud sync and widgets are Premium features, this button appears only with Premium." } }, "ja": { "stringUnit": { "state": "translated", - "value": "ホームタブ左上の更新ボタンは、アプリを再起動したように画面を最初から読み込み直し、ホーム画面のウィジェットとApple Watchも一緒に更新します。iCloud同期で他のデバイスの変更がまだ表示されないときや、ウィジェットの更新が遅いと感じるときに押してみてください。iCloud同期とウィジェットはプレミアム機能のため、このボタンはプレミアム利用中のみ表示されます。" + "value": "ホームタブ左上の更新ボタンは、アプリを再起動したように画面を最初から読み込み直し、ホーム画面のウィジェットとApple Watchも一緒に更新します。ほかの端末での変更がまだ見えないときや、ウィジェットの反応が鈍く見えるときに押してみてください。iCloud同期とウィジェットはプレミアム機能なので、このボタンもプレミアム利用中にだけ表示されます。" } } } @@ -5733,6 +6437,38 @@ } } }, + "모음 탭에서 건강 데이터 보기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Health data on the Home tab" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ホームタブでヘルスデータを" + } + } + } + }, + "모음 탭의 '건강 데이터' 줄에서 '애플 건강 연결하기'를 누르면 걸음 수·운동 시간·수면 같은 오늘 데이터를 타일로 볼 수 있어요. 어떤 지표를 어떤 순서로 보여줄지는 줄 오른쪽의 지표 버튼에서 고르고, 설정 → '모음 탭 건강 데이터'에서 줄 자체를 끄거나 즐겨찾기·나머지 행동과의 순서를 바꿀 수 있어요.\n값은 애플 건강 앱이 가진 데이터를 읽어 온 거예요 — 하루 다님이 서버로 보내거나 iCloud에 저장하는 일은 없어요. 걸음·운동 같은 값은 설정의 '하루 시작 시간' 기준으로 오늘 하루를 더한 것이고, 수면만은 전날 밤부터 오늘 아침까지의 수면 구간을 통째로 '오늘 잔 것'으로 세요. 애플워치에 쌓인 데이터는 워치와 아이폰이 동기화된 뒤에 보이니 값이 안 맞아 보이면 잠시 뒤 다시 확인해 주세요. 값이 계속 0이라면 아이폰의 설정 → 개인정보 보호 및 보안 → 건강에서 하루 다님의 읽기 권한을 확인해 주세요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Tap Connect Apple Health in the Health data row of the Home tab to see today's steps, exercise time, sleep and more as tiles. Choose which metrics to show and in what order via the metrics button on the right of the row, and under Settings → Health Data on Home you can turn the row off or reorder it against Favorites and Other actions.\nThe numbers are read from the Apple Health app — Haru Danim never sends them to a server or stores them in iCloud. Values like steps and exercise are today's totals based on your Day start time, while sleep alone counts the whole window from last night to this morning as \"today's sleep.\" Data collected on Apple Watch appears after it syncs with your iPhone, so if a number looks off, check again in a moment. If values stay at zero, check Haru Danim's read access on iPhone under Settings → Privacy & Security → Health." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ホームタブの「ヘルスデータ」の行で「Appleヘルスケアと連携」を押すと、歩数・運動時間・睡眠など今日のデータをタイルで見られます。どの指標をどの順で見せるかは行の右にある指標ボタンで選び、設定 → 「ホームのヘルスデータ」で行そのものをオフにしたり、お気に入り・その他のアクションとの並び順を変えたりできます。\n値はAppleヘルスケアが持つデータを読み取ったものです — Haru Danimがサーバーに送ったりiCloudに保存したりすることはありません。歩数や運動などの値は設定の「1日の開始時刻」を基準にした今日1日の合計で、睡眠だけは前夜から今朝までの睡眠時間帯をまるごと「今日眠った分」として数えます。Apple Watchにたまったデータはウォッチとi​Phoneが同期した後に表示されるので、値が合わないように見えたら少し待って確認してください。値がずっと0のままなら、iPhoneの設定 → プライバシーとセキュリティ → ヘルスケアでHaru Danimの読み取り許可を確認してください。" + } + } + } + }, "목": { "comment": "요일 축약(목요일)", "localizations": { @@ -5878,6 +6614,54 @@ } } }, + "목표 kcal": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Target kcal" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標kcal" + } + } + } + }, + "목표 거리 (km)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Target distance (km)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標距離(km)" + } + } + } + }, + "목표 걸음 수": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Target steps" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標歩数" + } + } + } + }, "목표 내용": { "localizations": { "en": { @@ -5926,6 +6710,22 @@ } } }, + "목표 물 (L)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Target water (L)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標水分量(L)" + } + } + } + }, "목표 삭제": { "localizations": { "en": { @@ -6006,6 +6806,22 @@ } } }, + "목표 일어서기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Target stand hours" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "目標スタンド時間" + } + } + } + }, "목표 종료와 판정": { "localizations": { "en": { @@ -6230,18 +7046,18 @@ } } }, - "목표는 '토익 700점 받기'처럼 큰 방향이고, 다짐은 그 아래 실천 단위예요. 다짐은 특정 행동(또는 꼬리표)을 골라 주기(하루·주간·월간·특정 기간)와 목표량을 정해요. '이상 달성'뿐 아니라 '이하 유지'(예: 영상 시청 하루 1시간 이하)도 만들 수 있어요.": { + "목표는 '토익 700점 받기'처럼 큰 방향이고, 다짐은 그 목표를 이루기 위한 실천 약속이에요. 다짐을 만들 때는 행동(또는 꼬리표)을 고르고 주기(하루·주간·월간·특정 기간)와 목표량을 정해요. '이상 달성'뿐 아니라 '이하 유지'(예: 영상 시청은 하루 1시간 이하)로도 만들 수 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "A goal is a big direction like 'Score 700 on TOEIC', and quests are the action units under it. A quest picks an action (or tag), a cycle (daily, weekly, monthly or a custom period) and a target amount. Besides 'reach at least', you can also make 'stay under' quests (e.g. watch videos at most 1 hour a day)." + "value": "A goal is the big direction — like \"score 700 on TOEIC\" — and quests are the practice promises that get you there. To make a quest, pick an action (or a tag), then set a period (daily, weekly, monthly or a custom range) and a target. Besides \"Reach at least,\" you can also go with \"Stay under\" — say, video watching at one hour a day or less." } }, "ja": { "stringUnit": { "state": "translated", - "value": "目標は「TOEIC 700点を取る」のような大きな方向で、クエストはその下の実践単位です。クエストはアクション(またはタグ)を選び、周期(1日・週間・月間・特定期間)と目標量を決めます。「以上を達成」だけでなく「以下をキープ」(例: 動画視聴を1日1時間以下)も作れます。" + "value": "目標は「TOEICで700点を取る」のような大きな方向で、クエストはその目標をかなえるための実践の約束です。クエストを作るときはアクション(またはタグ)を選び、周期(1日・週間・月間・特定期間)と目標量を決めます。「以上を達成」だけでなく「以下を維持」(例:動画視聴は1日1時間以下)でも作れます。" } } } @@ -6492,18 +7308,18 @@ } } }, - "무료로는 행동 10개·목표 2개·목표당 다짐 3개까지 만들 수 있어요. 프리미엄은 개수 제한이 풀리고 위젯, 애플워치 앱, 기기 간 동기화, 아이패드 일기를 쓸 수 있어요. 월·년 구독 또는 한 번만 결제하는 평생 이용권 중에 고르면 돼요. 구독이 끝나도 기록한 데이터는 그대로 남고, 이미 쓴 일기는 계속 열람할 수 있어요.": { + "무료로는 행동 10개·목표 2개·목표당 다짐 3개까지 만들 수 있어요. 프리미엄에서는 개수 제한이 풀리고 위젯, 애플워치 앱, 시리 단축어, 기기 간 동기화, 아이패드·맥 일기, CSV 가져오기, 건강 다짐을 쓸 수 있어요. 월·년 구독이나 한 번만 결제하는 평생 이용권 중에 고르면 돼요. 구독이 끝나도 기록한 데이터는 그대로 남고, 이미 만든 건강 다짐도 계속 보이고, 쓴 일기도 계속 열람할 수 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The free plan allows up to 10 actions, 2 goals, and 3 quests per goal. Premium removes the limits and unlocks widgets, the Apple Watch app, device sync, and the iPad diary. Choose a monthly or yearly subscription, or a one-time lifetime purchase. Even after a subscription ends, your data stays, and you can still read the diary entries you wrote." + "value": "The free tier lets you create up to 10 actions, 2 goals and 3 quests per goal. Premium removes those limits and unlocks widgets, the Apple Watch app, Siri shortcuts, device sync, the iPad and Mac diary, CSV import and health quests. Choose a monthly or yearly subscription, or a one-time lifetime purchase. Even after a subscription ends, your data stays, health quests you've made keep showing, and diaries you've written stay readable." } }, "ja": { "stringUnit": { "state": "translated", - "value": "無料ではアクション10個・目標2個・目標ごとにクエスト3個まで作れます。プレミアムでは制限がなくなり、ウィジェット、Apple Watchアプリ、デバイス間同期、iPadダイアリーが使えます。月額・年額サブスクリプションか、1回払いの買い切りから選べます。サブスクが終了してもデータはそのまま残り、書いた日記は引き続き閲覧できます。" + "value": "無料ではアクション10個・目標2個・目標ごとのクエスト3個まで作れます。プレミアムでは個数制限がなくなり、ウィジェット、Apple Watchアプリ、Siriショートカット、端末間同期、iPad・Macの日記、CSV読み込み、ヘルスクエストが使えます。月額・年額のサブスクリプションか、一度だけ支払う買い切りの生涯利用権から選べます。サブスクリプションが終わっても記録したデータはそのまま残り、作ったヘルスクエストも表示され続け、書いた日記も引き続き読めます。" } } } @@ -6557,6 +7373,22 @@ } } }, + "물 섭취": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Water intake" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "水分摂取" + } + } + } + }, "미달성": { "localizations": { "en": { @@ -6685,6 +7517,22 @@ } } }, + "배드민턴": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Badminton" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "バドミントン" + } + } + } + }, "배치 모드": { "localizations": { "en": { @@ -6829,6 +7677,22 @@ } } }, + "버전 1.5에서 이런 것들이 더해졌어요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Here's what version 1.5 brings." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "バージョン1.5では、こんな機能が加わりました。" + } + } + } + }, "버튼 한 번으로 기록": { "localizations": { "en": { @@ -6925,6 +7789,22 @@ } } }, + "복싱": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Boxing" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ボクシング" + } + } + } + }, "부터": { "localizations": { "en": { @@ -7021,6 +7901,22 @@ } } }, + "사이클": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Cycling" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "サイクリング" + } + } + } + }, "사진": { "localizations": { "en": { @@ -7437,6 +8333,22 @@ } } }, + "새로워진 하루 다님": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "What's New in Haru Danim" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "新しくなったHaru Danim" + } + } + } + }, "새해 다짐 정리하기": { "extractionState": "manual", "localizations": { @@ -7662,66 +8574,66 @@ } } }, - "설정 → '내비게이션 방식'에서 '글래스 버블 메뉴'를 고르면 하단 탭바 대신 화면 아래 중앙 버튼 하나로 모든 탭을 열어요. 버튼을 누르면 유리 구슬 버튼들이 부채꼴로 퍼지고, 버블 순서도 설정에서 바꿀 수 있어요. '두 번 눌러 바로 이동'을 켜면 메뉴가 닫혀 있을 때 버튼을 빠르게 두 번 눌러 정해 둔 탭으로 바로 이동해요.": { + "설정 → '내비게이션 방식'에서 '글래스 버블 메뉴'를 고르면 탭바 대신 화면 아래 가운데 버튼 하나로 모든 탭을 열어요. 버튼을 누르면 유리 구슬들이 부채꼴로 피어나고, 구슬 순서도 설정에서 바꿀 수 있어요. '두 번 눌러 바로 이동'을 켜 두면, 메뉴가 닫혀 있을 때 버튼을 빠르게 두 번 눌러 정해 둔 탭으로 곧장 갈 수 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Choose \"Glass Bubble Menu\" under Settings → \"Navigation Style\" to open every tab from a single button at the bottom center instead of the tab bar. Tap the button and glass-orb buttons fan out; you can reorder the bubbles in Settings. Turn on \"Double-Tap to Jump\" to jump straight to a tab you set by quickly tapping the button twice while the menu is closed." + "value": "Choose Glass Bubble Menu under Settings → Navigation and a single button at the bottom center replaces the tab bar. Tap it and glass marbles bloom out in a fan — their order is yours to change in Settings. With Double-Tap to Jump on, quickly tapping the closed button twice takes you straight to the tab you chose." } }, "ja": { "stringUnit": { "state": "translated", - "value": "設定 → 「ナビゲーション方式」で「ガラスバブルメニュー」を選ぶと、タブバーの代わりに画面下中央のボタン1つですべてのタブを開けます。ボタンを押すとガラス玉のボタンが扇状に広がり、バブルの順序も設定で変えられます。「ダブルタップでジャンプ」をオンにすると、メニューが閉じているときにボタンを素早く2回押して、決めておいたタブへすぐ移動できます。" + "value": "設定 → 「ナビゲーション方式」で「ガラスバブルメニュー」を選ぶと、タブバーの代わりに画面下中央のボタン1つですべてのタブを開きます。ボタンを押すとガラスの玉が扇形に咲き、玉の順番も設定で変えられます。「ダブルタップでジャンプ」をオンにしておくと、メニューが閉じているときにボタンを素早く2回押して、決めておいたタブへまっすぐ移動できます。" } } } }, - "설정 → '모음 탭 목표 진행 현황'에서 원하는 목표를 선택하면 모음 탭 상단에 진행 현황 카드가 떠요. 여러 개를 선택하면 옆으로 쓸어 넘길 수 있어요.": { + "설정 → '모음 탭 목표 진행 현황'에서 목표를 고르면 모음 탭 맨 위에 진행 현황 카드가 떠요. 여러 개를 고르면 카드를 옆으로 쓸어 한 장씩 넘겨 볼 수 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Select goals in Settings → 'Home Tab Goal Progress' to show progress cards at the top of the Home tab. Pick several and swipe between them." + "value": "Pick goals under Settings → Goal Progress on Home and progress cards appear at the top of the Home tab. Pick several and you can swipe through them one card at a time." } }, "ja": { "stringUnit": { "state": "translated", - "value": "設定→「ホームタブの目標進捗」で目標を選ぶと、ホームタブ上部に進捗カードが表示されます。複数選ぶと横にスワイプして切り替えられます。" + "value": "設定 → 「ホームの目標進捗」で目標を選ぶと、ホームタブの最上部に進捗カードが表示されます。複数選ぶと、カードを横にスワイプして1枚ずつめくって見られます。" } } } }, - "설정 → '탭바 구성'에서 하단 탭바에 바로 보일 탭(최대 3개)을 고를 수 있어요. 나머지 탭은 '더보기'에서 열어요.": { + "설정 → '탭바 구성'에서 아래 탭바에 바로 둘 탭(최대 3개)을 골라요. 나머지 탭은 '더보기'에서 열면 돼요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "In Settings → 'Tab Bar Layout', choose which tabs (up to 3) appear in the bottom tab bar. The rest open from 'More'." + "value": "Under Settings → Tab Bar, choose which tabs (up to three) sit right in the bottom bar. The rest open from More." } }, "ja": { "stringUnit": { "state": "translated", - "value": "設定→「タブバー構成」で、下部タブバーに直接表示するタブ(最大3つ)を選べます。残りのタブは「その他」から開きます。" + "value": "設定 → 「タブバー構成」で、下のタブバーに直接置くタブ(最大3つ)を選びます。残りのタブは「その他」から開けば大丈夫です。" } } } }, - "설정 → 데이터 → '데이터 내보내기'에서 모든 기록(행동·시간·횟수·목표·다짐)을 CSV 파일로 만들 수 있어요. 구간을 직접 지정해 그 기간의 기록만 내보낼 수도 있어요. 스프레드시트에서 열어 분석하거나 백업으로 보관해 두세요. 내보내기는 무료에서도 사용할 수 있어요.\n'데이터 가져오기'(프리미엄)를 쓰면 내보냈던 CSV에서 행동과 시간·횟수 기록을 다시 불러올 수 있어요. 기존 데이터는 바꾸지 않고 새 기록만 추가하며, 이미 있는 기록은 자동으로 건너뛰어서 같은 파일을 여러 번 가져와도 안전해요. CSV에 없는 행동은 새로 만들어지고, 이름과 방식이 같은 행동이 이미 있으면 그 행동으로 이어져요.": { + "설정 → 데이터 → '데이터 내보내기'에서 모든 기록(행동·시간·횟수·목표·다짐)을 CSV 파일로 만들 수 있어요. 구간을 직접 정해 그 기간의 기록만 내보낼 수도 있고요. 스프레드시트에서 열어 살펴보거나 백업으로 보관해 두세요 — 내보내기는 무료에서도 쓸 수 있어요.\n'데이터 가져오기'(프리미엄)를 쓰면 내보냈던 CSV에서 행동과 시간·횟수 기록을 되살릴 수 있어요. 기존 데이터는 건드리지 않고 새 기록만 더하며, 이미 있는 기록은 알아서 건너뛰니 같은 파일을 여러 번 가져와도 안전해요. CSV에만 있는 행동은 새로 만들어지고, 이름과 방식이 같은 행동이 이미 있으면 그 행동으로 이어져요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "In Settings → Data → Data Export, you can turn all records (actions, time, counts, goals, quests) into CSV files. You can also set a custom range to export only that period. Open them in a spreadsheet or keep them as a backup. Export is available on the free plan too.\nWith Data Import (Premium), you can bring back actions and time/count records from exported CSVs. It never changes existing data — it only adds new records and automatically skips ones that already exist, so importing the same file twice is safe. Actions missing from the app are created, and records connect to an existing action when the name and type match." + "value": "Under Settings → Data → Export Data, all your records — actions, sessions, counts, goals and quests — become CSV files. You can also set a custom range to export just that period. Open them in a spreadsheet or keep them as backups — exporting is available on the free tier too.\nWith Import Data (Premium), you can bring actions and time or count records back from CSVs you exported. It never touches existing data — it only adds new records, and skips ones already there, so importing the same file twice is safe. Actions that exist only in the CSV are created fresh, and if an action with the same name and type already exists, records connect to it." } }, "ja": { "stringUnit": { "state": "translated", - "value": "設定 → データ → 「データエクスポート」で、すべての記録(アクション・時間・回数・目標・クエスト)をCSVファイルにできます。範囲を指定してその期間の記録だけを書き出すこともできます。表計算で分析したり、バックアップとして保管したりしましょう。エクスポートは無料でも使えます。\n「データ読み込み」(プレミアム)を使うと、書き出したCSVからアクションと時間・回数の記録を復元できます。既存データは変更せず新しい記録だけを追加し、すでにある記録は自動でスキップするため、同じファイルを何度読み込んでも安全です。CSVにないアクションは新規作成され、名前と方式が同じアクションがあればそこにつながります。" + "value": "設定 → データ → 「データを書き出す」で、すべての記録(アクション・時間・回数・目標・クエスト)をCSVファイルにできます。期間を自分で決めて、その分の記録だけ書き出すこともできます。スプレッドシートで開いて眺めたり、バックアップとして保管したりしてください — 書き出しは無料でも使えます。\n「データ読み込み」(プレミアム)を使うと、書き出したCSVからアクションと時間・回数の記録をよみがえらせられます。既存のデータには触れず新しい記録だけを追加し、すでにある記録は自動でスキップするので、同じファイルを何度読み込んでも安全です。CSVにしかないアクションは新しく作られ、名前と方式が同じアクションがすでにあればそのアクションにつながります。" } } } @@ -7742,50 +8654,66 @@ } } }, - "설정 → 일기에서 '일기 잠금'을 켜면 일기 탭을 열 때 Face ID·Touch ID 또는 기기 암호로 잠금을 해제해야 해요. 기기가 지원하는 방식이 자동으로 쓰이고, 앱을 나갔다 돌아오면 다시 잠겨요. 이 설정은 이 기기에만 적용돼요.": { + "설정 → 일기에서 '일기 잠금'을 켜면 일기 탭을 열 때마다 Face ID·Touch ID나 기기 암호로 풀어야 해요. 기기가 지원하는 방식이 알아서 쓰이고, 앱을 나갔다 돌아오면 다시 잠겨요. 이 설정은 켠 기기에만 적용돼요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Turn on 'Diary Lock' in Settings → Diary and opening the Diary tab will require Face ID, Touch ID, or your device passcode. Whatever your device supports is used automatically, and the diary locks again when you leave and come back. This setting applies to this device only." + "value": "Turn on Diary Lock under Settings → Diary and the Diary tab asks for Face ID, Touch ID or your device passcode every time. Whatever your device supports is used automatically, and leaving the app locks it again. This setting applies only to the device it's turned on." } }, "ja": { "stringUnit": { "state": "translated", - "value": "設定→日記で「日記ロック」をオンにすると、日記タブを開くときにFace ID・Touch IDまたはデバイスのパスコードでロック解除が必要になります。デバイスが対応する方式が自動で使われ、アプリを離れて戻ると再びロックされます。この設定はこのデバイスにのみ適用されます。" + "value": "設定 → 日記で「日記ロック」をオンにすると、日記タブを開くたびFace ID・Touch IDか端末のパスコードで解除が必要になります。端末が対応する方式が自動で使われ、アプリを離れて戻るとまたロックされます。この設定はオンにした端末にだけ適用されます。" } } } }, - "설정 → 측정에서 '짧은 기록 무시'를 켜면 설정한 시간보다 짧게 측정하고 끝낸 기록은 저장하지 않아요. 행동 버튼을 실수로 눌렀다가 바로 껐을 때 의미 없는 기록이 쌓이는 것을 막아 줘요. 기준 시간은 3초부터 1분까지 고를 수 있고, 위젯·워치·시리로 종료할 때도 적용돼요. 이 설정은 iCloud를 통해 모든 기기에서 동일하게 적용되고, 애플워치에서 끝낸 측정은 페어링된 아이폰의 설정을 따라요.": { + "설정 → 측정에서 '짧은 기록 무시'를 켜면, 정한 시간보다 짧게 재고 끝낸 기록은 저장하지 않아요. 버튼을 실수로 눌렀다가 바로 껐을 때 의미 없는 기록이 쌓이는 걸 막아 줘요. 기준 시간은 3초부터 1분까지 고를 수 있고, 위젯·워치·시리로 끝낼 때도 똑같이 적용돼요. 이 설정은 iCloud를 통해 모든 기기에 같이 적용되고, 애플워치에서 끝낸 측정은 짝지어진 아이폰의 설정을 따라요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Turn on 'Ignore short records' in Settings → Tracking to skip saving records that end sooner than the chosen time. It keeps meaningless entries from piling up when you tap an action button by mistake and stop right away. You can pick from 3 seconds to 1 minute, and it also applies when you stop from widgets, Apple Watch, or Siri. This setting syncs over iCloud and applies equally on every device, and a session stopped on Apple Watch follows the paired iPhone's setting." + "value": "Turn on Ignore Short Sessions under Settings → Tracking, and sessions shorter than your threshold simply aren't saved — no more meaningless records from accidentally tapping a button and turning it right off. The threshold ranges from 3 seconds to 1 minute and applies the same when you stop from a widget, the watch or Siri. This setting syncs to all your devices via iCloud, and sessions ended on Apple Watch follow the paired iPhone's setting." } }, "ja": { "stringUnit": { "state": "translated", - "value": "設定 → 計測で「短い記録を無視」をオンにすると、設定した時間より短く計測して終了した記録は保存されません。アクションボタンを誤って押してすぐ止めたときに、意味のない記録が溜まるのを防ぎます。基準時間は3秒から1分まで選べ、ウィジェット・Apple Watch・Siriから終了するときにも適用されます。この設定はiCloudですべてのデバイスに同じく適用され、Apple Watchで終了した計測はペアリングされたiPhoneの設定に従います。" + "value": "設定 → 計測で「短い記録を無視」をオンにすると、決めた時間より短く計って終えた記録は保存されません。ボタンをうっかり押してすぐ消したときに、意味のない記録がたまるのを防いでくれます。基準時間は3秒から1分まで選べて、ウィジェット・ウォッチ・Siriで終了するときも同じように適用されます。この設定はiCloudを通じてすべての端末に一緒に適用され、Apple Watchで終えた計測はペアリングされたiPhoneの設定に従います。" } } } }, - "설정 → 프리미엄에서 '기기 간 동기화'를 켜면 iCloud로 아이폰·아이패드의 데이터가 하나로 합쳐져요. 켠 뒤에는 앱을 완전히 종료했다가 다시 실행해야 적용돼요. 모든 기기가 같은 Apple 계정으로 로그인되어 있어야 해요.": { + "설정 → 프리미엄에서 '기기 간 동기화'를 켜면 아이폰·아이패드·맥의 데이터가 iCloud로 하나가 돼요. 켠 뒤에는 앱을 완전히 껐다가 다시 열어야 적용돼요. 모든 기기가 같은 Apple 계정으로 로그인되어 있어야 하고요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Turn on 'Sync Across Devices' in Settings → Premium to merge your iPhone and iPad data through iCloud. After turning it on, quit the app completely and reopen it to apply. Every device must be signed in with the same Apple account." + "value": "Turn on Device Sync under Settings → Premium and your iPhone, iPad and Mac data become one through iCloud. After turning it on, fully quit and reopen the app for it to take effect — and all devices need to be signed in to the same Apple Account." } }, "ja": { "stringUnit": { "state": "translated", - "value": "設定→プレミアムで「デバイス間の同期」をオンにすると、iPhoneとiPadのデータがiCloudで1つにまとまります。オンにした後はアプリを完全に終了して再起動すると適用されます。すべてのデバイスが同じApple アカウントでサインインしている必要があります。" + "value": "設定 → プレミアムで「端末間同期」をオンにすると、iPhone・iPad・MacのデータがiCloudでひとつになります。オンにした後は、アプリを完全に終了してから開き直すと適用されます。すべての端末が同じApple Accountでサインインしている必要があります。" + } + } + } + }, + "설정 → 프리미엄에서 잠금을 해제하면 걸음·수면·운동 종목 같은 건강 데이터로 다짐을 만들 수 있어요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Unlock Premium in Settings → Premium to build quests from health data like steps, sleep and workout types." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "設定 → プレミアムでロックを解除すると、歩数・睡眠・運動種目などのヘルスデータでクエストを作れます。" } } } @@ -7838,6 +8766,22 @@ } } }, + "섹션 표시 순서": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Section order" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "セクションの表示順" + } + } + } + }, "손잡이를 끌어 노트 페이지 순서를 바꿔요. 하루 정리(요약)는 항상 첫 장이에요.": { "localizations": { "en": { @@ -7903,6 +8847,70 @@ } } }, + "수면": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Sleep" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "睡眠" + } + } + } + }, + "수면 구간 끝": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Sleep window end" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "睡眠時間帯の終了" + } + } + } + }, + "수면 구간 시작": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Sleep window start" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "睡眠時間帯の開始" + } + } + } + }, + "수영": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Swimming" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "水泳" + } + } + } + }, "수정": { "localizations": { "en": { @@ -8000,6 +9008,22 @@ } } }, + "스트레칭": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Stretching" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ストレッチ" + } + } + } + }, "습관이나 할 일을 '행동'으로 등록하면\n버튼 한 번으로 시간과 횟수를 기록할 수 있어요.": { "localizations": { "en": { @@ -8016,6 +9040,22 @@ } } }, + "습관이나 할 일을 행동 탭에서 '행동'으로 등록해요. 만들 때 시간 측정(시작·종료를 눌러 걸린 시간을 재요)과 횟수 기록(누를 때마다 +1) 중 하나를 골라요. 이름·아이콘·꼬리표는 나중에 언제든 바꿀 수 있지만, 추적 방식만은 바꿀 수 없으니 처음에 잘 정해 주세요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Register your habits and to-dos as Actions in the Actions tab. When creating one, choose between time tracking (tap to start and stop, measuring how long) and count tracking (+1 every tap). Name, icon and tags can be changed anytime later — only the tracking type can't, so choose it carefully at the start." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "習慣ややることを、アクションタブで「アクション」として登録します。作るときに時間計測(開始・終了を押してかかった時間を計る)と回数記録(押すたび+1)のどちらかを選びます。名前・アイコン・タグは後からいつでも変えられますが、トラッキング方式だけは変えられないので、最初によく決めてください。" + } + } + } + }, "시각": { "localizations": { "en": { @@ -8289,18 +9329,18 @@ } } }, - "시간을 측정 중이면 다이나믹 아일랜드와 잠금화면에 진행 시간이 표시돼요. 여러 개를 동시에 측정하면 설정의 '대표 시간 기준'(먼저/나중에 시작한 행동)에 따라 하나가 대표로 보이고 나머지는 +N으로 표시돼요. 잠금화면 배너의 노란 정지 버튼을 누르면 앱을 열지 않고도 대표 측정이 바로 종료돼요.": { + "시간을 재는 동안에는 다이나믹 아일랜드와 잠금화면에 진행 시간이 떠 있어요. 여러 개를 동시에 재면 설정의 '대표 시간 기준'(먼저/나중에 시작한 행동)에 따라 하나가 대표로 보이고 나머지는 +N으로 표시돼요. 잠금화면 배너의 노란 정지 버튼을 누르면 앱을 열지 않고도 대표 측정이 바로 끝나요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "While tracking time, the Dynamic Island and Lock Screen show the elapsed time. When tracking several actions at once, one is shown as the representative based on the 'Representative time' setting (earliest/latest started) and the rest appear as +N. Tap the yellow stop button on the Lock Screen banner to stop the representative tracking right away without opening the app." + "value": "While you're tracking time, the elapsed time lives in the Dynamic Island and on the Lock Screen. Track several at once and one becomes the primary — chosen by the Primary timer setting (first or most recently started) — with the rest shown as +N. The yellow stop button on the Lock Screen banner ends the primary session instantly, no need to open the app." } }, "ja": { "stringUnit": { "state": "translated", - "value": "時間を計測中は、Dynamic Islandとロック画面に経過時間が表示されます。複数を同時に計測すると、設定の「代表時間の基準」(先に/後に開始したアクション)に従って1つが代表として表示され、残りは+Nで表示されます。ロック画面バナーの黄色い停止ボタンをタップすると、アプリを開かずに代表の計測をすぐ終了できます。" + "value": "時間を計っている間は、Dynamic Islandとロック画面に経過時間が表示されます。複数を同時に計ると、設定の「代表時間の基準」(先に/後に始めたアクション)に従って1つが代表として表示され、残りは+Nで示されます。ロック画面バナーの黄色い停止ボタンを押せば、アプリを開かずに代表の計測がすぐ終わります。" } } } @@ -8577,6 +9617,22 @@ } } }, + "아이폰·아이패드·맥을 함께 쓰신다면 모든 기기에서 하루 다님을 업데이트해 주세요. 버전이 섞이면 새 기능이 일부 기기에서 다르게 보일 수 있어요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "If you use Haru Danim on iPhone, iPad and Mac together, please update it on every device. With mixed versions, new features may look different on some devices." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "iPhone・iPad・Macを一緒にお使いなら、すべての端末でHaru Danimをアップデートしてください。バージョンが混在すると、新機能が一部の端末で違って見えることがあります。" + } + } + } + }, "아주 넓게": { "localizations": { "en": { @@ -8658,6 +9714,38 @@ } } }, + "애플 건강 앱의 데이터를 읽어 하루 목표를 재요. 값은 기기 밖으로 나가지 않고, 건강 다짐은 하루 단위로만 반복돼요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Your daily goal is measured from Apple Health data. Values never leave this device, and health quests repeat daily only." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Appleヘルスケアのデータを読み取って1日の目標を測ります。値がこの端末の外に出ることはなく、ヘルスクエストは1日単位でのみ繰り返されます。" + } + } + } + }, + "애플 건강 연결하기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Connect Apple Health" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Appleヘルスケアと連携" + } + } + } + }, "애플 펜슬로 자유롭게 쓰고 그려 보세요": { "localizations": { "en": { @@ -8722,6 +9810,38 @@ } } }, + "애플워치 컴플리케이션": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Apple Watch complication" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Apple Watchコンプリケーション" + } + } + } + }, + "애플워치에 쌓인 데이터는 워치와 아이폰이 동기화된 뒤에 보여요. 값이 안 맞아 보이면 잠시 뒤 다시 확인하거나 건강 앱을 한 번 열어 주세요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Data collected on Apple Watch appears after the watch syncs with your iPhone. If a number looks off, check again in a moment or open the Health app once." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Apple Watchにたまったデータは、ウォッチとiPhoneが同期された後に表示されます。値が合わないように見えたら、少し待って確認するか、ヘルスケアアプリを一度開いてみてください。" + } + } + } + }, "애플워치에서 보기": { "localizations": { "en": { @@ -8786,6 +9906,22 @@ } } }, + "야구": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Baseball" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "野球" + } + } + } + }, "약관과 정책": { "localizations": { "en": { @@ -8930,6 +10066,22 @@ } } }, + "여기 보이는 값은 애플 건강 앱이 가진 데이터를 읽어 온 거예요. 하루 다님은 이 값을 서버로 보내거나 iCloud에 저장하지 않아요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "These numbers are read from the Apple Health app. Haru Danim never sends them to a server or stores them in iCloud." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ここに表示される値はAppleヘルスケアから読み取ったものです。Haru Danimがこの値をサーバーに送ったり、iCloudに保存したりすることはありません。" + } + } + } + }, "여러 행동을 동시에 추적 중일 때 다이나믹 아일랜드·잠금화면과 워치 컴플리케이션에 대표로 표시할 행동이에요.": { "localizations": { "en": { @@ -9232,18 +10384,18 @@ } } }, - "오른쪽 위 '배치 편집'을 누르면 버튼이 흔들리며 드래그로 순서를 바꿀 수 있어요. 한 줄에 몇 개를 놓을지도 고를 수 있어요. '완료'를 누르면 저장되고, 이 순서는 위젯의 기본 표시 순서에도 쓰여요.": { + "오른쪽 위 '배치 편집'을 누르면 버튼들이 흔들리기 시작하고, 끌어서 순서를 바꿀 수 있어요. 한 줄에 몇 개를 둘지도 여기서 골라요. '완료'를 누르면 저장되고, 이 순서는 위젯이 행동을 고르는 기본 순서로도 쓰여요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Tap 'Edit Layout' at the top right and the buttons jiggle so you can drag them into a new order. You can also choose how many fit per row. Tap 'Done' to save — this order is also used as the default order in widgets." + "value": "Tap Edit Layout at the top right and the buttons start to jiggle — drag them to reorder. This is also where you choose how many fit in a row. Tap Done to save, and this order doubles as the default order widgets use to pick actions." } }, "ja": { "stringUnit": { "state": "translated", - "value": "右上の「配置を編集」をタップするとボタンが揺れ、ドラッグで順序を変えられます。1行に置く数も選べます。「完了」で保存され、この順序はウィジェットのデフォルト表示順にも使われます。" + "value": "右上の「配置を編集」を押すとボタンが揺れ始め、ドラッグで並び順を変えられます。1行にいくつ置くかもここで選びます。「完了」を押すと保存され、この並び順はウィジェットがアクションを選ぶデフォルトの順番としても使われます。" } } } @@ -9440,6 +10592,22 @@ } } }, + "요가": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Yoga" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヨガ" + } + } + } + }, "요소 %lld개": { "localizations": { "en": { @@ -9532,34 +10700,82 @@ } } }, - "워치 앱을 열면 꼬리표 목록이 보여요. 꼬리표를 탭하면 그 안의 행동들이 나오고, 행동을 탭하면 시간형은 측정 시작·종료, 횟수형은 +1이 기록돼요. 아이폰 앱에서 즐겨찾기한 행동은 첫 화면 맨 위 '즐겨찾기'에서 한 탭 만에 열 수 있어요. 측정 중일 때는 첫 화면 맨 위에 측정 중인 행동과 시간이 보이고, 그 줄을 탭하면 바로 측정이 종료돼요. 기록은 아이폰과 자동으로 동기화돼요.": { + "운동 시간": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open the watch app to see your tag list. Tap a tag to see its actions, then tap an action — time actions start or stop tracking, count actions add +1. Actions you've favorited in the iPhone app are one tap away under 'Favorites' at the top of the first screen. While tracking, the first screen shows the running action and its time at the top — tap that row to stop tracking right away. Records sync with your iPhone automatically." + "value": "Exercise time" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ウォッチアプリを開くとタグの一覧が表示されます。タグをタップするとその中のアクションが表示され、アクションをタップすると、時間計測は開始・終了、回数は+1が記録されます。iPhoneアプリでお気に入りにしたアクションは、最初の画面の一番上の「お気に入り」からワンタップで開けます。計測中は最初の画面の一番上に計測中のアクションと時間が表示され、その行をタップするとすぐに計測が終了します。記録はiPhoneと自動的に同期されます。" + "value": "運動時間" } } } }, - "워치 페이스를 길게 눌러 '편집' → 컴플리케이션 자리에서 하루 다님을 골라요. 현재 측정 중인 행동, 목표의 달성률, 다짐의 진행률을 페이스에서 바로 볼 수 있어요. 목표·다짐 달성률 목록에는 목표를 만들거나 수정할 때 '애플워치에서 보기'를 켠 목표와 그 다짐들만 하루·주간·월간으로 나타나요 — 기본은 꺼져 있고, 완료된 목표는 목록에서 자동으로 사라져요.": { + "운동 종목별": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Long-press your watch face, choose 'Edit', and pick Haru Danim in a complication slot. You can see the currently tracked action, a goal's completion rate, or a quest's progress right on the face. The goal and quest lists only include goals with 'Show on Apple Watch' turned on (when creating or editing a goal), each offered as daily, weekly and monthly — it's off by default, and finished goals disappear from the list automatically." + "value": "By workout type" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ウォッチフェイスを長押しして「編集」→コンプリケーション枠でHaru Danimを選びます。計測中のアクション、目標の達成率、クエストの進捗をフェイスで直接確認できます。目標・クエスト達成率の一覧には、目標の作成・編集時に「Apple Watchに表示」をオンにした目標とそのクエストだけが1日・週間・月間で表示されます — 初期状態はオフで、完了した目標は一覧から自動的に消えます。" + "value": "運動の種目別" + } + } + } + }, + "워치 앱을 열면 꼬리표 목록이 보여요. 꼬리표를 누르면 그 안의 행동들이 나오고, 행동을 누르면 시간형은 측정 시작·종료, 횟수형은 +1이 남아요. 아이폰에서 즐겨찾기한 행동은 첫 화면 맨 위 '즐겨찾기'에서 한 번에 열 수 있어요. 측정 중일 때는 첫 화면 맨 위에 측정 중인 행동과 시간이 보이고, 그 줄을 누르면 바로 끝나요. 기록은 아이폰과 자동으로 맞춰져요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Open the watch app and you'll see your tag list. Tap a tag for the actions inside; tap an action to start or stop a timed session, or log +1 for count types. Actions you favorited on iPhone open in one tap from Favorites at the top of the first screen. While tracking, the running action and its time sit at the top — tap that row to stop right away. Records stay in step with your iPhone automatically." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ウォッチアプリを開くとタグの一覧が表示されます。タグを押すとその中のアクションが出てきて、アクションを押すと時間型は計測の開始・終了、回数型は+1が記録されます。iPhoneでお気に入りにしたアクションは、最初の画面の一番上「お気に入り」からワンタップで開けます。計測中は最初の画面の一番上に計測中のアクションと時間が表示され、その行を押すとすぐ終わります。記録はiPhoneと自動で揃います。" + } + } + } + }, + "워치 페이스를 길게 눌러 '편집' → 컴플리케이션 자리에서 하루 다님을 골라요. 현재 측정 중인 행동, 목표의 달성률, 다짐의 진행률, 행동의 누적 기록을 페이스에서 바로 볼 수 있어요. 목표·다짐 달성률 목록에는 목표를 만들거나 수정할 때 '애플워치에서 보기'를 켠 목표와 그 다짐들만 하루·주간·월간으로 나타나요 — 기본은 꺼져 있고, 완료된 목표는 목록에서 알아서 사라져요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Long-press your watch face, tap Edit, and pick Haru Danim in a complication slot. Right on the face you can see the action being tracked, goal achievement rates, quest progress, and an action's accumulated record. The goal and quest lists show only goals with Show on Apple Watch turned on (set when creating or editing a goal) and their quests, in daily, weekly and monthly flavors — it's off by default, and finished goals leave the list on their own." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ウォッチフェイスを長押しして「編集」→ コンプリケーション枠でHaru Danimを選びます。いま計測中のアクション、目標の達成率、クエストの進捗、アクションの累計記録をフェイスで直接見られます。目標・クエストの達成率一覧には、目標の作成・編集時に「Apple Watchに表示」をオンにした目標とそのクエストだけが、1日・週間・月間で表示されます — デフォルトはオフで、完了した目標は一覧から自動的に消えます。" + } + } + } + }, + "워치 페이스에서 행동 기록 보기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Action records on your watch face" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ウォッチフェイスで行動の記録を" } } } @@ -9596,18 +10812,18 @@ } } }, - "워치와 아이폰은 근처에 있을 때 자동으로 맞춰져요. 값이 다르게 보이면 워치 앱을 아래로 당겨 새로고침하거나, 아이폰에서 앱을 한 번 열어 주세요. 모음 탭의 새로고침 버튼도 도움이 돼요.": { + "워치와 아이폰은 서로 가까이 있을 때 자동으로 맞춰져요. 값이 다르게 보이면 워치 앱을 한 번 열어 두거나, 아이폰에서 앱을 열어 주세요. 모음 탭의 새로고침 버튼도 도움이 돼요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The Watch and iPhone stay in sync automatically when they are near each other. If the numbers look different, pull down in the Watch app to refresh, or open the app on your iPhone once. The refresh button on the Home tab helps too." + "value": "The watch and iPhone sync up automatically when they're near each other. If the numbers look different, open the watch app once, or open the app on your iPhone. The refresh button on the Home tab helps too." } }, "ja": { "stringUnit": { "state": "translated", - "value": "WatchとiPhoneは近くにあるとき自動で同期されます。値が違って見える場合は、Watchアプリを下に引いて更新するか、iPhoneでアプリを一度開いてください。ホームタブの更新ボタンも役立ちます。" + "value": "ウォッチとiPhoneは、近くにあるとき自動で揃います。値が違って見えたらウォッチアプリを一度開いておくか、iPhoneでアプリを開いてください。ホームタブの更新ボタンも役に立ちます。" } } } @@ -10013,6 +11229,22 @@ } } }, + "이동 거리": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Distance" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "移動距離" + } + } + } + }, "이동할 탭": { "localizations": { "en": { @@ -10730,18 +11962,18 @@ } } }, - "일기 탭 달력에서 날짜를 누르면 그날의 일기가 열려요. 첫 페이지는 오늘 기분·요약·목표 진행 현황·할 일·24시간 타임테이블·기록으로 하루를 정리해 보여줘요. 오른쪽 위 ⋯ 메뉴의 '첫 화면 구성'에서 섹션 표시 여부와 순서를 바꿀 수 있어요. 기분 사진을 남긴 날은 달력의 그 날짜 칸에 사진이 배경으로 함께 보여요. 일기는 아이패드와 맥에서 쓸 수 있고, iCloud 동기화를 켜면 두 기기에서 같은 일기가 이어져요.": { + "일기 탭 달력에서 날짜를 누르면 그날의 일기가 열려요. 첫 페이지에는 오늘 기분·요약·목표 진행 현황·할 일·24시간 타임테이블·기록이 모여 하루가 한눈에 정리돼요. 오른쪽 위 ⋯ 메뉴의 '첫 화면 구성'에서 섹션을 보일지 말지와 순서를 바꿀 수 있어요. 기분 사진을 남긴 날은 달력의 그 칸에 사진이 배경으로 깔려요. 일기는 아이패드와 맥에서 쓸 수 있고, iCloud 동기화를 켜면 두 기기에서 같은 일기가 이어져요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Tap a date on the diary tab's calendar to open that day's diary. The first page sums up your day with today's mood, a summary, goal progress, to-dos, a 24-hour timetable and records. Use 'Front page layout' in the ⋯ menu at the top right to choose which sections appear and in what order. On days you add a mood photo, that photo also shows as the background of the date cell in the calendar. The diary is available on iPad and Mac, and with iCloud sync the same diary carries over between them." + "value": "Tap a date on the Diary tab's calendar to open that day. The first page gathers your mood, a summary, goal progress, to-dos, a 24-hour timetable and records — the whole day at a glance. Use First Page Layout in the ⋯ menu at the top right to show, hide and reorder sections. On days with a mood photo, that photo becomes the background of its calendar cell. The diary lives on iPad and Mac, and with iCloud sync on, the same diary continues across both." } }, "ja": { "stringUnit": { "state": "translated", - "value": "日記タブのカレンダーで日付をタップすると、その日の日記が開きます。最初のページは今日の気分・サマリー・目標の進捗・やること・24時間タイムテーブル・記録で一日を整理して見せてくれます。右上の⋯メニューの「最初の画面の構成」でセクションの表示と順序を変えられます。気分の写真を残した日は、カレンダーのその日付のマスに写真が背景として表示されます。 日記はiPadとMacで使え、iCloud同期をオンにすると同じ日記が両方に続きます。" + "value": "日記タブのカレンダーで日付を押すと、その日の日記が開きます。最初のページには今日の気分・サマリー・目標の進捗・やること・24時間タイムテーブル・記録が集まり、1日がひと目で整理されます。右上の ⋯ メニューの「最初のページの構成」で、セクションの表示・非表示と順番を変えられます。気分の写真を残した日は、カレンダーのそのマスに写真が背景として敷かれます。日記はiPadとMacで使え、iCloud同期をオンにすれば2つの端末で同じ日記が続きます。" } } } @@ -10930,6 +12162,22 @@ } } }, + "일어서기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Stand hours" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "スタンド時間" + } + } + } + }, "일정": { "localizations": { "en": { @@ -11044,6 +12292,22 @@ } } }, + "읽기 권한이 꺼져 있으면 값이 0으로 보여요. 아이폰의 설정 → 개인정보 보호 및 보안 → 건강 → 하루 다님에서 권한을 확인할 수 있어요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "If read access is off, values show as zero. You can check permissions on iPhone under Settings → Privacy & Security → Health → Haru Danim." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "読み取り許可がオフになっていると、値は0のまま表示されます。iPhoneの設定 → プライバシーとセキュリティ → ヘルスケア → Haru Danimで許可を確認できます。" + } + } + } + }, "자기 전 물 한 컵": { "extractionState": "manual", "localizations": { @@ -11174,6 +12438,22 @@ } } }, + "잠은 보통 전날 밤에 시작되니까, 이 수면 구간 안에서 잔 시간을 통째로 '그날 잔 것'으로 세요. 값은 애플 건강 앱에서 읽어 오고 기기 밖으로 나가지 않아요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Since sleep usually starts the night before, everything you sleep within this window counts as that day's sleep. Values are read from Apple Health and never leave this device." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "眠りはたいてい前夜に始まるので、この睡眠時間帯の中で眠った時間をまるごと「その日の睡眠」として数えます。値はAppleヘルスケアから読み取られ、この端末の外には出ません。" + } + } + } + }, "장시간 측정 알림": { "localizations": { "en": { @@ -11517,18 +12797,18 @@ } } }, - "제어 센터를 편집해 '하루 다님'의 '행동 실행' 컨트롤을 추가하면, 화면을 켜자마자 행동을 실행할 수 있어요. 시간형은 시작/종료 토글, 횟수형은 탭마다 +1이에요. 잠금화면 하단 버튼이나 액션 버튼에도 배치할 수 있어요.": { + "제어 센터를 편집해 '하루 다님'의 '행동 실행' 컨트롤을 더하면, 화면을 켜자마자 행동을 실행할 수 있어요. 시간형은 시작/종료가 번갈아 되고, 횟수형은 누를 때마다 +1이에요. 잠금화면 아래 버튼이나 액션 버튼에 둘 수도 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Edit Control Center and add HaruDanim's 'Run Action' control to run an action the moment the screen turns on. Time actions toggle start/stop; count actions add +1 per tap. You can also place it on the Lock Screen buttons or the Action button." + "value": "Edit Control Center and add Haru Danim's Run Action control to fire an action the moment the screen lights up. Time types toggle start and stop; count types add +1 per press. It can also live in the Lock Screen's bottom buttons or on the Action button." } }, "ja": { "stringUnit": { "state": "translated", - "value": "コントロールセンターを編集してHaru Danimの「アクション実行」コントロールを追加すると、画面を点けてすぐアクションを実行できます。時間計測は開始/終了のトグル、回数記録はタップごとに+1。ロック画面下部のボタンやアクションボタンにも配置できます。" + "value": "コントロールセンターを編集してHaru Danimの「アクション実行」コントロールを追加すると、画面を点けてすぐアクションを実行できます。時間型は開始/終了が交互に切り替わり、回数型は押すたび+1です。ロック画面下部のボタンやアクションボタンに置くこともできます。" } } } @@ -11725,18 +13005,34 @@ } } }, - "종료일이 있는 목표는 날짜가 지나면 자동으로 달성 여부가 판정되고(앱을 며칠 뒤에 열어도 종료일까지의 기록 기준이라 결과가 달라지지 않아요), 종료일이 없는 목표는 수동 종료 버튼으로 마칠 수 있어요. 판정은 다짐들의 평균 달성률이 목표를 만들 때 정한 '달성 판정 기준'(기본 100%) 이상이면 달성이에요 — 예를 들어 기준을 80%로 두면 조금 못 채워도 달성으로 기록돼요. 다짐 없이 종료일이 지난 목표는 '달성했나요?' 상태가 되어 직접 선택해요. 완료된 목표의 종료일을 수정하면 다시 판정돼요 — 미래로 옮기면 진행 중으로 돌아와요. 완료된 목표는 목록 하단의 완료 보관함에서 볼 수 있어요.": { + "종료일이 있는 목표는 날짜가 지나면 저절로 달성 여부가 판정돼요 — 앱을 며칠 뒤에 열어도 종료일까지의 기록으로 판정하니 결과가 달라지지 않아요. 종료일이 없는 목표는 수동 종료 버튼으로 마쳐요. 판정 기준은 다짐들의 평균 달성률이에요. 목표를 만들 때 정한 '달성 판정 기준'(기본 100%) 이상이면 달성이라, 기준을 80%로 두면 조금 못 채워도 달성으로 남길 수 있어요. 다짐 없이 종료일이 지난 목표는 '달성했나요?' 상태가 되어 직접 고르면 되고, 완료된 목표의 종료일을 고치면 다시 판정돼요 — 미래로 옮기면 진행 중으로 돌아와요. 완료된 목표는 목록 아래 '완료된 목표'에서 볼 수 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Goals with an end date are judged automatically once the date passes (the result is based on records up to the end date, so opening the app days later doesn't change it). Goals without an end date can be finished with the manual finish button. A goal counts as achieved when the average completion of its quests meets the \"achievement threshold\" you set when creating it (100% by default) — for example, with an 80% threshold it still counts even if you fall slightly short. A goal whose end date passes without any quests becomes \"Did you achieve it?\" for you to decide. If you edit a finished goal's end date it is judged again — moving it to the future returns it to in progress. Finished goals are collected in the archive at the bottom of the list." + "value": "Goals with an end date judge themselves once the date passes — and since judgment uses records up to the end date, opening the app days later doesn't change the outcome. Goals without an end date finish via the manual finish button. The verdict comes from the quests' average achievement: at or above the Achievement Threshold you set when creating the goal (100% by default) counts as achieved — set it to 80% and falling slightly short still counts. A goal that passes its end date with no quests enters a \"Did you achieve it?\" state for you to decide. Editing a finished goal's end date re-judges it — moving it into the future returns it to in-progress. Finished goals live under Finished Goals at the bottom of the list." } }, "ja": { "stringUnit": { "state": "translated", - "value": "終了日のある目標は、日付が過ぎると自動で達成判定されます(終了日までの記録が基準なので、数日後にアプリを開いても結果は変わりません)。終了日のない目標は手動終了ボタンで終えられます。判定は、クエストの平均達成率が目標作成時に決めた「達成判定基準」(初期値100%)以上なら達成です — たとえば基準を80%にすると、少し足りなくても達成として記録されます。クエストがないまま終了日を過ぎた目標は「達成しましたか?」の状態になり、自分で選択します。完了した目標の終了日を修正すると再判定され、未来に動かすと進行中に戻ります。完了した目標はリスト下部の完了アーカイブで見られます。" + "value": "終了日のある目標は、日付が過ぎると自動で達成かどうか判定されます — 数日後にアプリを開いても終了日までの記録で判定するので、結果は変わりません。終了日のない目標は手動終了ボタンで締めくくります。判定の基準はクエストの平均達成率です。目標を作るときに決めた「達成判定の基準」(デフォルト100%)以上なら達成なので、基準を80%にしておけば少し届かなくても達成として残せます。クエストがないまま終了日を過ぎた目標は「達成しましたか?」の状態になり、自分で選べば大丈夫です。完了した目標の終了日を修正すると再判定されます — 未来に動かすと進行中に戻ります。完了した目標は一覧の下の「完了した目標」で見られます。" + } + } + } + }, + "종목": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Workout type" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "種目" } } } @@ -11981,6 +13277,22 @@ } } }, + "줄넘기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Jump rope" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "縄跳び" + } + } + } + }, "중형 위젯 구성": { "localizations": { "en": { @@ -12077,6 +13389,22 @@ } } }, + "즐겨찾기 행동": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Favorite actions" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "お気に入りのアクション" + } + } + } + }, "지금 시각": { "localizations": { "en": { @@ -12109,6 +13437,22 @@ } } }, + "지난 30일": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Last 30 days" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "過去30日間" + } + } + } + }, "지난 30일 (오늘 기준, 중형 이상)": { "localizations": { "en": { @@ -12189,6 +13533,22 @@ } } }, + "지난 7일": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Last 7 days" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "過去7日間" + } + } + } + }, "지난 7일 (오늘 기준)": { "localizations": { "en": { @@ -12413,6 +13773,22 @@ } } }, + "지표": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Metric" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "指標" + } + } + } + }, "직접 선택": { "localizations": { "en": { @@ -12605,18 +13981,18 @@ } } }, - "첫 페이지 타임테이블 카드 오른쪽 위 캘린더 버튼으로 그날의 캘린더 일정을 골라 함께 표시할 수 있어요(일정은 점선 테두리로 구분돼요). 필터 버튼을 누르면 그날 기록된 행동 중 타임테이블에 보여줄 것만 고를 수 있고, '이 날의 목표' 카드에도 필터 버튼이 있어 보고 싶은 목표만 골라 둘 수 있어요. 선택은 모두 날짜마다 따로 저장되고, 타임테이블 선택은 일기를 내보낼 때도 그대로 반영돼요.\n매일 같은 선택을 반복하지 않으려면 달력 화면 오른쪽 위 '기본 표시 설정'을 써 보세요 — 캘린더 일정을 기본으로 넣을지(모든 캘린더/선택한 캘린더만), 어떤 목표·행동을 기본으로 숨길지를 한 번만 정하면 모든 날짜에 적용돼요. 날짜별 필터로 다르게 고른 날짜는 그 선택이 우선하고, 필터의 '기본값으로 되돌리기'로 언제든 기본값으로 돌아갈 수 있어요.": { + "첫 페이지 타임테이블 카드의 오른쪽 위 캘린더 버튼으로 그날의 캘린더 일정을 골라 함께 보여줄 수 있어요 — 일정은 점선 테두리라 행동과 바로 구분돼요. 필터 버튼으로는 그날 기록된 행동 중 타임테이블에 올릴 것만 고르고, '이 날의 목표' 카드의 필터로는 보고 싶은 목표만 남겨요. 이 선택들은 날짜마다 따로 저장되고, 타임테이블 선택은 일기를 내보낼 때도 그대로 담겨요.\n매일 같은 선택을 되풀이하기 싫다면 달력 화면 오른쪽 위의 '기본 표시 설정'을 써 보세요. 캘린더 일정을 기본으로 넣을지(모든 캘린더/선택한 캘린더만), 어떤 목표·행동을 기본으로 숨길지 한 번만 정하면 모든 날짜에 적용돼요. 날짜별 필터로 다르게 고른 날은 그 선택이 우선하고, '기본값으로 되돌리기'로 언제든 돌아갈 수 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Use the calendar button at the top right of the first page's timetable card to pick that day's calendar events and show them together (events are marked with a dashed outline). Tap the filter button to choose which of that day's recorded actions appear on the timetable, and the \"Goals of the Day\" card also has a filter button so you can pick just the goals you want to see. All selections are saved per date, and the timetable selections carry over to diary exports.\nTo stop repeating the same choices every day, try 'Default Display' at the top right of the calendar screen — decide once whether calendar events appear by default (all calendars or selected ones) and which goals and actions are hidden by default, and it applies to every date. Dates you adjust with the per-date filters keep their own choices, and 'Reset to Default' in each filter brings a date back to the defaults anytime." + "value": "Use the calendar button at the top right of the first page's timetable card to pick that day's calendar events and show them alongside — events have dashed borders, so they're easy to tell from actions. The filter button chooses which of the day's recorded actions appear on the timetable, and the filter on the This Day's Goals card keeps just the goals you want. These choices are saved per date, and timetable choices carry into diary exports as is.\nTired of repeating the same choices daily? Try Default Display at the top right of the calendar. Decide once whether calendar events are included by default (all calendars or selected ones) and which goals and actions start hidden, and it applies to every date. Dates where you filtered differently keep their own choice, and Reset to Defaults takes you back anytime." } }, "ja": { "stringUnit": { "state": "translated", - "value": "最初のページのタイムテーブルカード右上のカレンダーボタンで、その日のカレンダー予定を選んで一緒に表示できます(予定は破線の枠で区別されます)。フィルターボタンを押すと、その日に記録した行動のうちタイムテーブルに表示するものを選べます。「この日の目標」カードにもフィルターボタンがあり、見たい目標だけを選んでおけます。選択はすべて日付ごとに保存され、タイムテーブルの選択は日記の書き出しにもそのまま反映されます。\n毎日同じ選択を繰り返さないために、カレンダー画面右上の「デフォルト表示設定」を使ってみてください — カレンダーの予定をデフォルトで入れるか(すべてのカレンダー/選んだカレンダーのみ)、どの目標・アクションをデフォルトで隠すかを一度決めれば、すべての日付に適用されます。日付ごとのフィルターで変えた日付はその選択が優先され、フィルターの「デフォルトに戻す」でいつでもデフォルトに戻せます。" + "value": "最初のページのタイムテーブルカード右上のカレンダーボタンで、その日のカレンダー予定を選んで一緒に表示できます — 予定は点線の枠なので、アクションとすぐ見分けられます。フィルタボタンでは、その日記録されたアクションのうちタイムテーブルに載せるものだけを選び、「この日の目標」カードのフィルタでは見たい目標だけを残します。これらの選択は日付ごとに別々に保存され、タイムテーブルの選択は日記を書き出すときにもそのまま反映されます。\n毎日同じ選択を繰り返したくなければ、カレンダー画面右上の「デフォルト表示設定」を使ってみてください。カレンダー予定をデフォルトで入れるか(すべてのカレンダー/選んだカレンダーのみ)、どの目標・アクションをデフォルトで隠すかを一度だけ決めれば、すべての日付に適用されます。日付別フィルタで違う選択をした日はその選択が優先され、「デフォルトに戻す」でいつでも戻れます。" } } } @@ -12733,6 +14109,22 @@ } } }, + "최소 1개는 선택해야 저장돼요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Select at least one metric to save." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "保存するには少なくとも1つ選んでください。" + } + } + } + }, "추가": { "localizations": { "en": { @@ -12819,6 +14211,22 @@ } } }, + "축구": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Soccer" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "サッカー" + } + } + } + }, "취미": { "localizations": { "en": { @@ -13107,6 +14515,38 @@ } } }, + "켜면 애플 건강 앱의 오늘 데이터(걸음·운동·수면 등)를 모음 탭에서 타일로 볼 수 있어요. 섹션 표시 순서에서 즐겨찾기·나머지 행동·건강 데이터의 배치를 정할 수 있어요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Turn this on to see today's Apple Health data (steps, exercise, sleep and more) as tiles on the Home tab. Use Section order to arrange Favorites, Other actions and Health data." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "オンにすると、Appleヘルスケアの今日のデータ(歩数・運動・睡眠など)をホームタブのタイルで見られます。「セクションの表示順」でお気に入り・その他の行動・ヘルスデータの並びを決められます。" + } + } + } + }, + "켜면 워치 페이스의 '행동 기록' 컴플리케이션에 이 행동을 올릴 수 있어요. 선택한 기간의 누적 기록이 표시되고, 컴플리케이션을 누르면 워치 앱에서 바로 실행할 수 있어요. 이 설정은 워치와 연결된 이 아이폰에만 저장돼요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Turn this on to put this action on the watch face via the Action Log complication. It shows the accumulated record for the chosen period, and tapping it opens the watch app so you can run the action right away. This setting is stored only on this iPhone paired with your watch." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "オンにすると、ウォッチフェイスの「アクションの記録」コンプリケーションにこのアクションを載せられます。選んだ期間の累計が表示され、コンプリケーションをタップするとウォッチアプリが開いてすぐ実行できます。この設定はウォッチとペアリングされたこのiPhoneにだけ保存されます。" + } + } + } + }, "켜면 이 목표와 소속 다짐들의 진행률이 애플워치 컴플리케이션 목록에 나타나요. 완료된 목표는 목록에서 자동으로 사라져요. 이 설정은 워치와 연결된 이 아이폰에만 저장돼요.": { "localizations": { "en": { @@ -13363,6 +14803,22 @@ } } }, + "테니스": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Tennis" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "テニス" + } + } + } + }, "테두리": { "localizations": { "en": { @@ -13573,34 +15029,34 @@ } } }, - "통계 탭 맨 위의 비교 카드는 지금 보고 있는 하루·주·월의 총 시간과 횟수를 바로 앞 기간(어제·지난주·지난달)과 비교해 보여줘요. 필터를 걸면 필터된 행동들만으로 비교돼요.": { + "통계 탭 맨 위의 비교 카드는 지금 보는 하루·주·월의 총 시간과 횟수를 바로 앞 기간(어제·지난주·지난달)과 견주어 보여줘요. 필터를 걸어 두면 고른 행동들만으로 비교해요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The comparison card at the top of the Stats tab compares the total time and counts of the current day/week/month with the period right before (yesterday, last week, last month). With a filter on, only the filtered actions are compared." + "value": "The comparison card at the top of the Stats tab weighs the current day, week or month — total time and counts — against the period just before it (yesterday, last week, last month). With a filter on, only the chosen actions are compared." } }, "ja": { "stringUnit": { "state": "translated", - "value": "統計タブ最上部の比較カードは、表示中の1日・週・月の合計時間と回数を、直前の期間(昨日・先週・先月)と比較して表示します。フィルターをかけると、フィルターしたアクションだけで比較されます。" + "value": "統計タブの一番上にある比較カードは、いま見ている1日・週・月の合計時間と回数を、直前の期間(昨日・先週・先月)と見比べて表示します。フィルタをかけておくと、選んだアクションだけで比較します。" } } } }, - "통계 탭 주간·월간에서 '지난 7일/30일 단위로 보기'를 켜면 달력 주·월 대신 오늘로 끝나는 최근 7일·30일을 볼 수 있어요 — 주초·월초에 그래프가 거의 비어 보일 때 유용해요. 화살표는 7일·30일씩 이동하고, 맨 위 비교 카드도 바로 앞 7일·30일과의 비교로 바뀌어요. 홈 화면 통계 위젯에도 '지난 7일'·'지난 30일' 기간이 있어요.": { + "통계 탭의 주간·월간에서 '지난 7일/30일 단위로 보기'를 켜면, 달력의 주·월 대신 오늘로 끝나는 최근 7일·30일을 봐요. 주초나 월초라 그래프가 텅 비어 보일 때 특히 좋아요. 화살표는 7일·30일씩 움직이고, 맨 위 비교 카드도 바로 앞 7일·30일과의 비교로 바뀌어요. 홈 화면 통계 위젯에도 '지난 7일'·'지난 30일' 기간이 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "In the Stats tab's weekly/monthly view, turn on 'View as Last 7/30 Days' to see the most recent 7 or 30 days ending today instead of the calendar week/month — handy when charts look nearly empty early in a week or month. The arrows move 7 or 30 days at a time, and the comparison card at the top switches to the previous 7/30 days. The home screen stats widget also offers 'Last 7 Days' and 'Last 30 Days' periods." + "value": "Turn on \"View as last 7/30 days\" in the Stats tab's weekly and monthly views to see the most recent 7 or 30 days ending today, instead of calendar weeks and months. It shines early in a week or month when graphs would look empty. The arrows move by 7 or 30 days, and the comparison card up top switches to comparing against the previous 7 or 30 days. The home screen stats widget has Last 7 days and Last 30 days periods too." } }, "ja": { "stringUnit": { "state": "translated", - "value": "統計タブの週間・月間で「過去7日/30日単位で表示」をオンにすると、暦の週・月の代わりに今日で終わる直近7日・30日を表示できます — 週初めや月初めにグラフがほぼ空に見えるときに便利です。矢印は7日・30日ずつ移動し、最上部の比較カードも直前の7日・30日との比較に切り替わります。ホーム画面の統計ウィジェットにも「過去7日」「過去30日」の期間があります。" + "value": "統計タブの週間・月間で「過去7日/30日単位で見る」をオンにすると、カレンダーの週・月の代わりに、今日で終わる直近7日・30日を見られます。週や月の初めでグラフががらんとして見えるときに特に便利です。矢印は7日・30日ずつ動き、一番上の比較カードも直前の7日・30日との比較に変わります。ホーム画面の統計ウィジェットにも「過去7日間」「過去30日間」の期間があります。" } } } @@ -13815,18 +15271,18 @@ } } }, - "페이지를 넘기면 자유 노트가 이어져요. 애플 펜슬로 자유롭게 쓰고 그려요 — 손가락은 페이지 이동과 확대·축소에 쓰여요. 두 손가락 핀치로 페이지를 확대하면 세밀하게 쓸 수 있고, 줄 노트를 켜면 줄 간격도 고를 수 있어요. 페이지가 여러 장이면 오른쪽 위 ⋯ 메뉴의 '페이지 순서 변경'으로 순서를 바꿀 수 있어요. 맥에서는 텍스트 입력이 기본이고, 도구 줄의 '그리기'를 켜면 마우스나 트랙패드로도 그릴 수 있어요 — 평소에는 클릭과 스크롤이 이동·버튼에 쓰여요.": { + "페이지를 넘기면 자유 노트가 이어져요. 애플 펜슬로 마음껏 쓰고 그리세요 — 손가락은 페이지 넘기기와 확대·축소를 맡아요. 두 손가락으로 벌려 확대하면 작은 글씨도 또박또박 쓸 수 있고, 줄 노트를 켜면 줄 간격도 고를 수 있어요. 페이지가 여러 장이면 오른쪽 위 ⋯ 메뉴의 '페이지 순서 변경'으로 차례를 바꿔요. 맥에서는 키보드 입력이 기본이고, 도구 줄의 '그리기'를 켠 동안에만 마우스·트랙패드로 그려져요 — 평소의 클릭과 스크롤은 이동과 버튼에 쓰여요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Turn the page and free-form notes continue. Write and draw freely with Apple Pencil — fingers are used for moving between pages and zooming. Pinch with two fingers to zoom in for fine writing, and turn on lined paper to pick the line spacing. With multiple pages, use 'Reorder Pages' in the ⋯ menu at the top right. On Mac, typing is the default — turn on 'Draw' in the toolbar to draw with your mouse or trackpad; otherwise clicks and scrolling are used for moving around and buttons." + "value": "Turn the page and free-form notes continue. Write and draw to your heart's content with Apple Pencil — fingers handle page turning and zoom. Spread two fingers to zoom in and even tiny letters come out neat, and with lined paper on you can pick the line spacing too. With multiple pages, reorder them via Change Page Order in the ⋯ menu. On the Mac, typing is the default; the mouse and trackpad draw only while Draw is on in the toolbar — otherwise clicks and scrolls do their usual moving and button work." } }, "ja": { "stringUnit": { "state": "translated", - "value": "ページをめくると自由ノートが続きます。Apple Pencilで自由に書いて描けます — 指はページ移動と拡大・縮小に使われます。2本指ピンチでページを拡大すると細かく書き込め、罫線ノートをオンにすると行間も選べます。ページが複数あるときは右上の⋯メニューの「ページの順序を変更」で並べ替えられます。Macでは文字入力が基本で、ツールバーの「描く」をオンにするとマウスやトラックパッドでも描けます — ふだんはクリックとスクロールが移動やボタン操作に使われます。" + "value": "ページをめくると自由なノートが続きます。Apple Pencilで思いのままに書いて描いてください — 指はページめくりと拡大・縮小を担当します。2本指で広げて拡大すれば小さな字もくっきり書けて、罫線ノートをオンにすれば行間も選べます。ページが複数あるときは、右上の ⋯ メニューの「ページの並べ替え」で順番を変えます。Macではキーボード入力が基本で、ツールバーの「描画」をオンにしている間だけマウス・トラックパッドで描けます — ふだんのクリックとスクロールは移動やボタンに使われます。" } } } @@ -13911,6 +15367,22 @@ } } }, + "표시 기간": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Display period" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示期間" + } + } + } + }, "표시 방식": { "localizations": { "en": { @@ -13959,6 +15431,38 @@ } } }, + "표시할 지표 (드래그로 순서 변경)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Metrics to show (drag to reorder)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示する指標(ドラッグで並べ替え)" + } + } + } + }, + "표시할 지표 선택": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Choose metrics to show" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "表示する指標を選ぶ" + } + } + } + }, "표시할 항목이 없어요. 오른쪽 위 메뉴의 '첫 화면 구성'에서 켜 주세요.": { "localizations": { "en": { @@ -14151,18 +15655,34 @@ } } }, - "필터 버튼으로 보고 싶은 행동만 골라 볼 수 있어요. 설정의 '주 시작 요일'과 '하루 시작 시간'이 모든 집계에 적용돼요. 예를 들어 하루 시작을 06:00으로 두면 새벽 기록은 전날 실적으로 계산돼요.": { + "필라테스": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Use the filter button to see only the actions you want. The 'Week Starts On' and 'Day Starts At' settings apply to every calculation — for example, with the day starting at 06:00, early-morning records count toward the previous day." + "value": "Pilates" } }, "ja": { "stringUnit": { "state": "translated", - "value": "フィルターボタンで見たいアクションだけを選べます。設定の「週の開始曜日」と「1日の開始時刻」はすべての集計に適用されます。たとえば1日の開始を06:00にすると、早朝の記録は前日の実績として計算されます。" + "value": "ピラティス" + } + } + } + }, + "필터 버튼으로 보고 싶은 행동만 골라 볼 수 있어요. 설정의 '주 시작 요일'과 '하루 시작 시간'은 앱의 모든 집계에 적용돼요. 예를 들어 하루 시작을 06:00으로 두면, 새벽에 남긴 기록은 전날의 실적으로 세요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "The filter button narrows the view to just the actions you want. The First day of week and Day start time in Settings apply to every calculation in the app — set the day to start at 06:00, for example, and late-night records count toward the previous day." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "フィルタボタンで、見たいアクションだけに絞って見られます。設定の「週の開始曜日」と「1日の開始時刻」はアプリのすべての集計に適用されます。たとえば1日の開始を06:00にすると、深夜に残した記録は前日の実績として数えられます。" } } } @@ -14215,6 +15735,22 @@ } } }, + "하루 (건강 다짐 전용)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Daily (health quests only)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "1日(ヘルスクエスト専用)" + } + } + } + }, "하루 기록": { "localizations": { "en": { @@ -14344,18 +15880,18 @@ } } }, - "하루 단위 다짐을 만들 때 '마감 시각까지만 집계'를 켜면 하루 시작부터 그 시각까지의 기록만 다짐에 집계돼요. 예를 들어 '일어나기 1회 · 오전 8:00까지'로 만들면 8시 이후에 누른 기록은 남긴 하지만 그날 달성으로는 인정되지 않아요. '이하 유지' 다짐은 마감 시각까지 한도를 지키면 그날 달성이에요. 시간 측정 행동이 마감을 걸치면 마감 전까지의 시간만 인정돼요. 하루 시작 시간보다 이른 시각을 고르면 다음 날 새벽(그 하루가 끝나기 전)을 뜻해요.": { + "하루 단위 다짐을 만들 때 '마감 시각까지만 집계'를 켜면, 하루 시작부터 그 시각까지의 기록만 다짐에 세요. 예를 들어 '일어나기 1회 · 오전 8:00까지'로 만들면 8시가 지나 누른 기록은 기록 탭에는 남지만 그날 달성으로는 치지 않아요. '이하 유지' 다짐은 마감까지 한도를 지키면 그날 달성이에요. 시간 측정이 마감에 걸치면 마감 전까지의 시간만 인정돼요. 하루 시작 시간보다 이른 시각을 고르면 다음 날 새벽(그 하루가 끝나기 전)을 뜻해요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "When creating a daily quest, turn on 'Count only until a deadline' to count only records between the start of the day and that time. For example, with 'Wake up 1 time · by 8:00 AM', a tap after 8:00 is still recorded but doesn't count as achieved that day. A 'stay under' quest is achieved for the day if you stay within the limit until the deadline. If a timed session crosses the deadline, only the time before the deadline counts. Choosing a time earlier than your day start time means the following early morning (before that day ends)." + "value": "When creating a daily quest, turn on \"Count until deadline\" and only records from the day's start to that time count toward the quest. Make it \"wake up once, by 8:00 AM\" and a tap after eight still lands in the History tab — it just doesn't count as that day's achievement. A Stay-under quest achieves the day by staying within its limit until the deadline. If a timed session straddles the deadline, only the time before it counts. Choosing a time earlier than your day start means early the next morning, before that day ends." } }, "ja": { "stringUnit": { "state": "translated", - "value": "日単位のクエストを作るときに「締め切り時刻までのみ集計」をオンにすると、1日の開始からその時刻までの記録だけがクエストに集計されます。例えば「起きる 1回・午前8:00まで」にした場合、8時以降のタップは記録には残りますが、その日の達成にはなりません。「以下を維持」のクエストは、締め切りまで上限を守ればその日は達成です。時間計測が締め切りをまたぐ場合は、締め切りまでの時間だけが認められます。1日の開始時刻より早い時刻を選ぶと、翌日の早朝(その1日が終わる前)を意味します。" + "value": "1日単位のクエストを作るとき「締め切り時刻まで集計」をオンにすると、1日の開始からその時刻までの記録だけをクエストに数えます。たとえば「起きる1回・午前8:00まで」で作ると、8時を過ぎて押した記録は記録タブには残りますが、その日の達成には数えません。「以下を維持」クエストは、締め切りまで上限を守ればその日は達成です。時間計測が締め切りをまたぐ場合は、締め切り前の時間だけが認められます。1日の開始時刻より早い時刻を選ぶと、翌日の早朝(その1日が終わる前)を意味します。" } } } @@ -14568,6 +16104,22 @@ } } }, + "하루의 기준": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "What counts as a day" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "1日の区切り" + } + } + } + }, "학습": { "localizations": { "en": { @@ -14919,18 +16471,34 @@ } } }, - "행동 — 추적의 최소 단위": { + "행동 — 기록의 기본 단위": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Actions — the Unit of Tracking" + "value": "Actions — the basic unit" } }, "ja": { "stringUnit": { "state": "translated", - "value": "アクション — 記録の最小単位" + "value": "アクション — 記録の基本単位" + } + } + } + }, + "행동 기록 컴플리케이션": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Action Log complication" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクションの記録コンプリケーション" } } } @@ -14951,34 +16519,34 @@ } } }, - "행동 버튼을 길게 누르면 기록 직접 입력·수정, 즐겨찾기 지정·해제, 기록 확인, 통계 보기, 행동 설정 수정, 삭제를 할 수 있어요. 시간형은 시작·종료 시각을, 횟수형은 횟수와 시각을 직접 고칠 수 있어요.": { + "행동 버튼을 길게 누르면 메뉴가 열려요 — 기록 직접 입력·수정, 즐겨찾기 지정·해제, 기록 확인, 통계 보기, 행동 설정 수정, 삭제까지 여기서 다 돼요. 시간형은 시작·종료 시각을, 횟수형은 횟수와 시각을 직접 고칠 수 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Long-press an action button to manually enter or edit records, toggle Favorite, view records, view stats, edit action settings, or delete it. For time-based actions you can edit the start and end times directly; for count-based actions you can edit the count and time." + "value": "Long-press an action button and a menu opens — enter or edit records directly, favorite or unfavorite, check history, view stats, edit the action's settings, or delete, all from here. Time types let you fix start and end times; count types let you fix the count and time." } }, "ja": { "stringUnit": { "state": "translated", - "value": "行動ボタンを長押しすると、記録の直接入力・編集、お気に入りの設定・解除、記録の確認、統計の表示、行動設定の編集、削除ができます。時間型は開始・終了時刻を、回数型は回数と時刻を直接編集できます。" + "value": "アクションボタンを長押しするとメニューが開きます — 記録の直接入力・修正、お気に入りの指定・解除、記録の確認、統計の表示、アクション設定の修正、削除までここでできます。時間型は開始・終了時刻を、回数型は回数と時刻を直接直せます。" } } } }, - "행동 버튼을 탭하면 시간형은 측정이 시작되고 다시 탭하면 종료돼요(테두리로 측정 중을 구분). 횟수형은 탭할 때마다 1씩 올라가요. 여러 행동을 동시에 측정해도 되고, 측정 중인 행동은 상단 '현재 진행 중' 영역에서도 종료할 수 있어요. 끄는 걸 자주 잊는다면 설정 → 측정의 '장시간 측정 알림'을 켜 보세요 — 정한 시간을 넘기면 알려줘요.": { + "행동 버튼을 누르면 시간형은 측정이 시작되고, 다시 누르면 끝나요 — 측정 중인 버튼은 노란 테두리로 표시돼요. 횟수형은 누를 때마다 1씩 올라가요. 여러 행동을 동시에 측정해도 되고, 측정 중인 행동은 위쪽 '현재 진행 중'에서도 끝낼 수 있어요. 끄는 걸 자주 잊는다면 설정 → 측정에서 '장시간 측정 알림'을 켜 보세요. 정해 둔 시간을 넘기면 알려줘요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Tap an action button to start tracking time, and tap again to stop (a border marks what's running). Count actions go up by one per tap. You can track several actions at once, and stop any of them from the 'In Progress' area at the top. If you often forget to stop, turn on 'Long-session alert' in Settings → Tracking — it notifies you when tracking passes the set time." + "value": "Tap an action button and a time type starts tracking; tap again to stop — running buttons get a yellow border. Count types go up by one per tap. Track as many actions at once as you like, and stop running ones from Now Tracking up top too. If you often forget to stop, try the Long-session alert under Settings → Tracking — it pings you past the time you set." } }, "ja": { "stringUnit": { "state": "translated", - "value": "アクションボタンをタップすると時間計測が始まり、もう一度タップすると終了します(計測中は枠で区別)。回数タイプはタップごとに1ずつ増えます。複数のアクションを同時に計測でき、計測中のアクションは上部の「進行中」エリアからも終了できます。終了し忘れが多いなら、設定 → 計測の「長時間計測の通知」をオンにしてください — 設定時間を超えるとお知らせします。" + "value": "アクションボタンを押すと時間型は計測が始まり、もう一度押すと終わります — 計測中のボタンは黄色い枠で表示されます。回数型は押すたびに1ずつ増えます。複数のアクションを同時に計ってもよく、計測中のアクションは上の「現在計測中」からも終えられます。切り忘れが多いなら、設定 → 計測で「長時間計測の通知」をオンにしてみてください。決めておいた時間を超えると知らせてくれます。" } } } @@ -15143,34 +16711,18 @@ } } }, - "행동 탭에서 습관이나 할 일을 '행동'으로 등록해요. 만들 때 시간 추적형(시작·종료 토글로 소요 시간 측정) 또는 횟수 추적형(탭할 때마다 +1) 중 하나를 골라요. 이름·아이콘·꼬리표는 나중에 언제든 바꿀 수 있지만 추적 방식은 바꿀 수 없으니 처음에 잘 골라 주세요.": { + "행동 탭에서 행동을 열어 '기록 시 메모 창 표시'를 켜 보세요. 시간 측정을 끝내거나 횟수를 더할 때마다 메모 창이 떠서 그 기록에 한 줄을 남길 수 있어요(건너뛰어도 돼요). 이 설정은 기기마다 따로 저장돼요. 남긴 메모는 기록 탭에 노란 글씨로 보이고, 기록을 눌러 수정할 때 메모를 고치거나 새로 붙일 수도 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Register habits or tasks as 'actions' in the Actions tab. When creating one, choose time tracking (start/stop toggle measures duration) or count tracking (+1 per tap). You can change the name, icon and tags anytime, but not the tracking type — so choose carefully at first." + "value": "Open an action in the Actions tab and try turning on \"Show note prompt when recording.\" A note box then appears every time you stop a session or add a count, letting you leave a line on that record (skipping is fine). This setting is stored per device. Notes show in yellow in the History tab, and you can edit or add them later when editing a record." } }, "ja": { "stringUnit": { "state": "translated", - "value": "アクションタブで習慣ややることを「アクション」として登録します。作成時に時間型(開始・終了トグルで所要時間を計測)か回数型(タップごとに+1)を選びます。名前・アイコン・タグは後からいつでも変えられますが、記録方式は変えられないので最初によく選んでください。" - } - } - } - }, - "행동 탭에서 행동을 열어 '기록 시 메모 창 표시'를 켜면, 시간 측정을 종료할 때·횟수를 추가할 때마다 메모 창이 떠서 그 기록에 한 줄을 남길 수 있어요(건너뛰기 가능). 이 설정은 기기마다 따로 저장돼요. 남긴 메모는 기록 탭 목록에 노란 글씨로 표시되고, 기록을 탭해 수정할 때 메모를 고치거나 새로 붙일 수도 있어요.": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Open an action in the Actions tab and turn on 'Show note prompt when recording' — a note sheet appears whenever you stop a time session or add a count, so you can leave a line about that record (you can skip it). This setting is saved per device. Notes appear in yellow in the History tab list, and you can also edit or add a note when you tap a record to edit it." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アクションタブでアクションを開いて「記録時にメモ画面を表示」をオンにすると、時間計測を終了するたび・回数を追加するたびにメモ画面が表示され、その記録に一言を残せます(スキップ可能)。この設定は端末ごとに保存されます。残したメモは記録タブの一覧に黄色い文字で表示され、記録をタップして修正するときにメモを直したり新しく付けたりすることもできます。" + "value": "アクションタブでアクションを開き、「記録時にメモ画面を表示」をオンにしてみてください。時間計測を終えるときや回数を足すたびにメモ画面が現れ、その記録に一言を残せます(スキップしても大丈夫)。この設定は端末ごとに別々に保存されます。残したメモは記録タブに黄色い文字で表示され、記録を押して修正するときにメモを直したり新しく付けたりもできます。" } } } @@ -15495,18 +17047,18 @@ } } }, - "행동을 즐겨찾기로 지정하면 모음 탭 행동 목록이 '즐겨찾기'와 '나머지 행동' 두 부분으로 나뉘고, 즐겨찾기가 항상 맨 위에 와요. 새로 지정한 행동은 즐겨찾기 맨 뒤에 붙어요. 순서를 바꾸려면 '배치 편집'에서 버튼을 길게 눌러 끌어 옮기거나, 행동 탭 오른쪽 위 ⋯ 메뉴의 '즐겨찾기 순서 변경'을 쓰면 돼요 — 이 순서는 애플워치의 즐겨찾기 목록에도 똑같이 적용돼요. 배치 편집에서는 즐겨찾기와 나머지 사이로 끌어서 지정·해제할 수도 있어요. '나머지 행동' 제목을 누르면 그 아래를 접어 둘 수 있어서 행동이 많아져도 자주 쓰는 것만 남길 수 있어요(접힘은 기기마다 저장). 지정은 행동 버튼을 길게 눌러 '즐겨찾기'를 선택하거나, 행동 탭에서 행동을 열어 별 아이콘을 눌러도 돼요.": { + "행동을 즐겨찾기로 지정하면 모음 탭이 '즐겨찾기'와 '나머지 행동' 두 부분으로 나뉘고, 즐겨찾기가 늘 위에 와요. 새로 지정한 행동은 즐겨찾기 맨 뒤에 붙어요. 지정하는 방법은 두 가지예요 — 행동 버튼을 길게 눌러 '즐겨찾기'를 고르거나, 행동 탭에서 행동을 열어 별을 눌러요. 순서는 '배치 편집'에서 끌어 옮기거나 행동 탭 오른쪽 위 ⋯ 메뉴의 '즐겨찾기 순서 변경'으로 바꿀 수 있고, 이 순서는 애플워치의 즐겨찾기에도 그대로 적용돼요. 배치 편집 중에는 즐겨찾기와 나머지 사이로 끌어서 지정하거나 해제할 수도 있어요. '나머지 행동' 제목을 누르면 아래를 접어 둘 수 있어서, 행동이 많아져도 자주 쓰는 것만 남겨요(접힘은 기기마다 따로 저장돼요).": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Mark actions as favorites and the Home tab list splits into two parts — 'Favorites' and 'Other actions' — with favorites always at the top. Newly favorited actions are added to the end of the favorites. To reorder, drag buttons in 'Edit Layout', or use 'Reorder Favorites' in the ⋯ menu at the top right of the Actions tab — the same order also applies to the favorites list on Apple Watch. In Edit Layout you can also drag between the two sections to favorite or unfavorite. Tap the 'Other actions' title to collapse everything below it, so even with lots of actions only the ones you use most stay in view (the collapsed state is saved per device). To mark a favorite, long-press an action button and choose 'Favorites', or open the action in the Actions tab and tap the star icon." + "value": "Favorite an action and the Home tab splits into Favorites and Other actions, with favorites always on top. Newly favorited actions join the end of the favorites. There are two ways to favorite — long-press an action button and choose Favorite, or open the action in the Actions tab and tap the star. Reorder by dragging in Edit Layout or via Reorder Favorites in the Actions tab's ⋯ menu — the same order carries to your Apple Watch favorites. During layout editing you can also drag between the two sections to favorite or unfavorite. Tap the Other actions header to collapse what's below, keeping just your go-tos visible even as actions multiply (the collapse is saved per device)." } }, "ja": { "stringUnit": { "state": "translated", - "value": "アクションをお気に入りに指定すると、ホームタブの一覧が「お気に入り」と「その他のアクション」の2つに分かれ、お気に入りが常に一番上に表示されます。新しく指定したアクションはお気に入りの最後に追加されます。順序を変えるには「配置を編集」でボタンをドラッグするか、アクションタブ右上の⋯メニューの「お気に入りの並べ替え」を使います — この順序はApple Watchのお気に入りリストにも同じように適用されます。配置編集では、お気に入りとその他の間へドラッグして指定・解除することもできます。「その他のアクション」のタイトルをタップすると下を折りたたむことができ、アクションが増えてもよく使うものだけを残せます(折りたたみ状態は端末ごとに保存)。指定はアクションボタンを長押しして「お気に入り」を選ぶか、アクションタブでアクションを開いて星アイコンをタップしてもできます。" + "value": "アクションをお気に入りにすると、ホームタブが「お気に入り」と「その他のアクション」の2つに分かれ、お気に入りが常に上に来ます。新しくお気に入りにしたアクションは、お気に入りの一番後ろに付きます。指定の仕方は2つ — アクションボタンを長押しして「お気に入り」を選ぶか、アクションタブでアクションを開いて星を押します。並び順は「配置を編集」でドラッグするか、アクションタブ右上の ⋯ メニューの「お気に入りの並べ替え」で変えられ、この順番はApple Watchのお気に入りにもそのまま適用されます。配置の編集中は、お気に入りとその他の間にドラッグして指定・解除もできます。「その他のアクション」の見出しを押すと下をたたんでおけるので、アクションが増えてもよく使うものだけを残せます(たたみ状態は端末ごとに保存されます)。" } } } @@ -15527,6 +17079,22 @@ } } }, + "행동의 누적 기록을 워치 페이스에 두고 싶다면, 아이폰의 행동 편집에서 '애플워치 컴플리케이션'을 켜고 표시 기간(하루·이번 주·이번 달·지난 7일·지난 30일)을 골라 주세요. 그러면 페이스 편집의 '행동 기록' 목록에 그 행동이 나타나요. 측정 중일 때는 컴플리케이션이 노란 타이머로 바뀌고, 컴플리케이션을 누르면 워치 앱의 그 행동 화면이 열려 큰 버튼으로 바로 시작·종료(횟수형은 +1)할 수 있어요 — 뒤로 가면 워치 앱 첫 화면이에요. 페이스의 숫자는 몇 분 간격으로 갱신되니 방금 누른 기록이 바로 안 보여도 잠시만 기다려 주세요.": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Want an action's running total on your watch face? In the action editor on iPhone, turn on Apple Watch complication and pick a display period — day, this week, this month, last 7 days or last 30 days. The action then appears in the Action Log list when editing your watch face. While tracking, the complication turns into a yellow timer, and tapping it opens that action's screen in the watch app, where a big button starts or stops (or adds +1 for count types) — going back lands on the watch app's first screen. The number on the face refreshes every few minutes, so give it a moment if a fresh record doesn't show right away." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクションの累計をウォッチフェイスに置きたいなら、iPhoneのアクション編集で「Apple Watchコンプリケーション」をオンにして、表示期間(1日・今週・今月・過去7日間・過去30日間)を選んでください。するとフェイス編集の「アクションの記録」一覧にそのアクションが現れます。計測中はコンプリケーションが黄色いタイマーに変わり、タップするとウォッチアプリのそのアクション画面が開いて、大きなボタンですぐ開始・終了(回数型は+1)できます — 戻るとウォッチアプリの最初の画面です。フェイスの数字は数分おきに更新されるので、いま押した記録がすぐ見えなくても少しだけ待ってください。" + } + } + } + }, "행동의 하루/주간/월간 누적 시간(초) 또는 횟수를 가져와요.": { "localizations": { "en": { @@ -15607,18 +17175,18 @@ } } }, - "홈 화면을 길게 눌러 '하루 다님' 위젯을 추가하세요. 행동 실행(눌러서 시작·+1), 현재 진행 중(측정 중인 행동의 실시간 타이머와 종료 버튼), 목표 진행률, 다짐 진행률(원형 링·누적값), 다짐 현황, 행동 통계 그래프와 잠금화면용 목표 달성률이 있어요. 위젯을 길게 눌러 '위젯 편집'에서 표시할 행동·목표·다짐과 기간, 테마를 고를 수 있어요.": { + "홈 화면을 길게 눌러 '하루 다님' 위젯을 더해 보세요. 행동 실행(눌러서 시작·+1), 현재 진행 중(실시간 타이머와 종료 버튼), 목표 진행률, 다짐 진행률(원형 링과 누적값), 다짐 현황, 행동 통계 그래프, 그리고 잠금화면용 목표 달성률까지 있어요. 위젯을 길게 눌러 '위젯 편집'을 열면 보여줄 행동·목표·다짐과 기간, 테마를 고를 수 있어요.": { "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Touch and hold the Home Screen to add HaruDanim widgets. There are Action Run (tap to start / +1), Now Tracking (a live timer and stop button for the action being tracked), Goal Progress, Quest Progress (ring with the accumulated amount), Quest Status, Action Stats charts, and a goal gauge for the Lock Screen. Touch and hold a widget and choose \"Edit Widget\" to pick which actions, goals, or quests to show, the period, and the theme." + "value": "Long-press your home screen and add Haru Danim widgets. There's Run Action (tap to start or +1), Now Tracking (a live timer with a stop button), goal progress, quest progress (rings with totals), a quest overview, action stats graphs — plus a goal achievement widget for the Lock Screen. Long-press a widget and open Edit Widget to choose which actions, goals and quests to show, the period, and the theme." } }, "ja": { "stringUnit": { "state": "translated", - "value": "ホーム画面を長押しして「ハルタニム」のウィジェットを追加しましょう。アクション実行(押して開始・+1)、現在計測中(計測中の行動のリアルタイムタイマーと終了ボタン)、目標の進捗、クエストの進捗(リングと累計値)、クエストの状況、アクション統計グラフ、ロック画面用の目標達成率があります。ウィジェットを長押しして「ウィジェットを編集」から、表示するアクション・目標・クエストと期間、テーマを選べます。" + "value": "ホーム画面を長押しして、Haru Danimのウィジェットを追加してみてください。アクション実行(押して開始・+1)、現在計測中(リアルタイムのタイマーと終了ボタン)、目標の進捗、クエストの進捗(リングと累計)、クエストの状況、アクション統計グラフ、そしてロック画面用の目標達成率まであります。ウィジェットを長押しして「ウィジェットを編集」を開くと、表示するアクション・目標・クエストと期間、テーマを選べます。" } } } @@ -15736,6 +17304,22 @@ } } }, + "활동 에너지": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Active energy" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクティブエネルギー" + } + } + } + }, "회전": { "localizations": { "en": { diff --git a/myApp/HaruDanim/IOS/Views/HelpView.swift b/myApp/HaruDanim/IOS/Views/HelpView.swift index 9e80f3d..287cbb0 100644 --- a/myApp/HaruDanim/IOS/Views/HelpView.swift +++ b/myApp/HaruDanim/IOS/Views/HelpView.swift @@ -52,7 +52,12 @@ private struct HelpGroup: Identifiable { struct HelpView: View { private var groups: [HelpGroup] { - var result: [HelpGroup] = [basics, mainTab, goals, history, sync] + var result: [HelpGroup] = [basics, mainTab, goals, history] + // 건강 데이터(1.5)는 지원 기기(아이폰·아이패드)에서만 안내 — 맥은 기능 자체가 없다 + if HealthDataStore.isAvailable { + result.append(health) + } + result.append(sync) if DeviceLayout.isPad { result.append(diary) } else { @@ -155,18 +160,18 @@ struct HelpView: View { HelpGroup(title: "기본 개념", topics: [ HelpTopic( symbol: "figure.walk", - title: "행동 — 추적의 최소 단위", - body: "행동 탭에서 습관이나 할 일을 '행동'으로 등록해요. 만들 때 시간 추적형(시작·종료 토글로 소요 시간 측정) 또는 횟수 추적형(탭할 때마다 +1) 중 하나를 골라요. 이름·아이콘·꼬리표는 나중에 언제든 바꿀 수 있지만 추적 방식은 바꿀 수 없으니 처음에 잘 골라 주세요." + title: "행동 — 기록의 기본 단위", + body: "습관이나 할 일을 행동 탭에서 '행동'으로 등록해요. 만들 때 시간 측정(시작·종료를 눌러 걸린 시간을 재요)과 횟수 기록(누를 때마다 +1) 중 하나를 골라요. 이름·아이콘·꼬리표는 나중에 언제든 바꿀 수 있지만, 추적 방식만은 바꿀 수 없으니 처음에 잘 정해 주세요." ), HelpTopic( symbol: "tag.fill", title: "꼬리표 — 색으로 분류", - body: "꼬리표는 행동을 묶는 태그예요. 고유의 색을 가지며, 행동 버튼의 색은 지정한 꼬리표의 색을 따라요. 하나의 행동에 여러 꼬리표를 붙일 수 있고, 꼬리표 탭이나 행동 만들기 화면에서 바로 추가할 수 있어요." + body: "꼬리표는 행동을 묶어 주는 이름표예요. 꼬리표마다 고유한 색이 있어서 행동 버튼의 색도 지정한 꼬리표의 색을 따라가요. 한 행동에 꼬리표를 여러 개 붙여도 되고, 꼬리표 탭이나 행동 만들기 화면에서 바로 새로 만들 수도 있어요." ), HelpTopic( symbol: "flag.fill", title: "목표와 다짐", - body: "목표는 '토익 700점 받기'처럼 큰 방향이고, 다짐은 그 아래 실천 단위예요. 다짐은 특정 행동(또는 꼬리표)을 골라 주기(하루·주간·월간·특정 기간)와 목표량을 정해요. '이상 달성'뿐 아니라 '이하 유지'(예: 영상 시청 하루 1시간 이하)도 만들 수 있어요." + body: "목표는 '토익 700점 받기'처럼 큰 방향이고, 다짐은 그 목표를 이루기 위한 실천 약속이에요. 다짐을 만들 때는 행동(또는 꼬리표)을 고르고 주기(하루·주간·월간·특정 기간)와 목표량을 정해요. '이상 달성'뿐 아니라 '이하 유지'(예: 영상 시청은 하루 1시간 이하)로도 만들 수 있어요." ), ]) } @@ -178,38 +183,38 @@ struct HelpView: View { HelpTopic( symbol: "play.circle.fill", title: "측정 시작·종료", - body: "행동 버튼을 탭하면 시간형은 측정이 시작되고 다시 탭하면 종료돼요(테두리로 측정 중을 구분). 횟수형은 탭할 때마다 1씩 올라가요. 여러 행동을 동시에 측정해도 되고, 측정 중인 행동은 상단 '현재 진행 중' 영역에서도 종료할 수 있어요. 끄는 걸 자주 잊는다면 설정 → 측정의 '장시간 측정 알림'을 켜 보세요 — 정한 시간을 넘기면 알려줘요.", + body: "행동 버튼을 누르면 시간형은 측정이 시작되고, 다시 누르면 끝나요 — 측정 중인 버튼은 노란 테두리로 표시돼요. 횟수형은 누를 때마다 1씩 올라가요. 여러 행동을 동시에 측정해도 되고, 측정 중인 행동은 위쪽 '현재 진행 중'에서도 끝낼 수 있어요. 끄는 걸 자주 잊는다면 설정 → 측정에서 '장시간 측정 알림'을 켜 보세요. 정해 둔 시간을 넘기면 알려줘요.", imageName: "help-main" ), HelpTopic( symbol: "clock.badge.xmark", title: "짧은 기록 무시", - body: "설정 → 측정에서 '짧은 기록 무시'를 켜면 설정한 시간보다 짧게 측정하고 끝낸 기록은 저장하지 않아요. 행동 버튼을 실수로 눌렀다가 바로 껐을 때 의미 없는 기록이 쌓이는 것을 막아 줘요. 기준 시간은 3초부터 1분까지 고를 수 있고, 위젯·워치·시리로 종료할 때도 적용돼요. 이 설정은 iCloud를 통해 모든 기기에서 동일하게 적용되고, 애플워치에서 끝낸 측정은 페어링된 아이폰의 설정을 따라요." + body: "설정 → 측정에서 '짧은 기록 무시'를 켜면, 정한 시간보다 짧게 재고 끝낸 기록은 저장하지 않아요. 버튼을 실수로 눌렀다가 바로 껐을 때 의미 없는 기록이 쌓이는 걸 막아 줘요. 기준 시간은 3초부터 1분까지 고를 수 있고, 위젯·워치·시리로 끝낼 때도 똑같이 적용돼요. 이 설정은 iCloud를 통해 모든 기기에 같이 적용되고, 애플워치에서 끝낸 측정은 짝지어진 아이폰의 설정을 따라요." ), HelpTopic( symbol: "star.fill", title: "즐겨찾기 모아 보기", - body: "행동을 즐겨찾기로 지정하면 모음 탭 행동 목록이 '즐겨찾기'와 '나머지 행동' 두 부분으로 나뉘고, 즐겨찾기가 항상 맨 위에 와요. 새로 지정한 행동은 즐겨찾기 맨 뒤에 붙어요. 순서를 바꾸려면 '배치 편집'에서 버튼을 길게 눌러 끌어 옮기거나, 행동 탭 오른쪽 위 ⋯ 메뉴의 '즐겨찾기 순서 변경'을 쓰면 돼요 — 이 순서는 애플워치의 즐겨찾기 목록에도 똑같이 적용돼요. 배치 편집에서는 즐겨찾기와 나머지 사이로 끌어서 지정·해제할 수도 있어요. '나머지 행동' 제목을 누르면 그 아래를 접어 둘 수 있어서 행동이 많아져도 자주 쓰는 것만 남길 수 있어요(접힘은 기기마다 저장). 지정은 행동 버튼을 길게 눌러 '즐겨찾기'를 선택하거나, 행동 탭에서 행동을 열어 별 아이콘을 눌러도 돼요." + body: "행동을 즐겨찾기로 지정하면 모음 탭이 '즐겨찾기'와 '나머지 행동' 두 부분으로 나뉘고, 즐겨찾기가 늘 위에 와요. 새로 지정한 행동은 즐겨찾기 맨 뒤에 붙어요. 지정하는 방법은 두 가지예요 — 행동 버튼을 길게 눌러 '즐겨찾기'를 고르거나, 행동 탭에서 행동을 열어 별을 눌러요. 순서는 '배치 편집'에서 끌어 옮기거나 행동 탭 오른쪽 위 ⋯ 메뉴의 '즐겨찾기 순서 변경'으로 바꿀 수 있고, 이 순서는 애플워치의 즐겨찾기에도 그대로 적용돼요. 배치 편집 중에는 즐겨찾기와 나머지 사이로 끌어서 지정하거나 해제할 수도 있어요. '나머지 행동' 제목을 누르면 아래를 접어 둘 수 있어서, 행동이 많아져도 자주 쓰는 것만 남겨요(접힘은 기기마다 따로 저장돼요)." ), HelpTopic( symbol: "arrow.clockwise", title: "새로고침 버튼", - body: "모음 탭 왼쪽 위의 새로고침 버튼은 화면을 앱을 껐다 켠 것처럼 처음부터 다시 불러오고, 홈 화면 위젯과 애플워치도 함께 갱신해요. iCloud 동기화로 다른 기기에서 바꾼 내용이 아직 안 보이거나 위젯이 늦게 갱신되는 것 같을 때 눌러 보세요. iCloud 동기화·위젯이 프리미엄 기능이라 이 버튼은 프리미엄을 사용 중일 때만 표시돼요." + body: "모음 탭 왼쪽 위의 새로고침 버튼은 앱을 껐다 켠 것처럼 화면을 처음부터 다시 불러오고, 홈 화면 위젯과 애플워치도 함께 새로 고쳐요. 다른 기기에서 바꾼 내용이 아직 안 보이거나 위젯이 굼떠 보일 때 눌러 보세요. iCloud 동기화와 위젯이 프리미엄 기능이라, 이 버튼도 프리미엄을 쓸 때만 보여요." ), HelpTopic( symbol: "hand.tap.fill", title: "길게 누르기 메뉴", - body: "행동 버튼을 길게 누르면 기록 직접 입력·수정, 즐겨찾기 지정·해제, 기록 확인, 통계 보기, 행동 설정 수정, 삭제를 할 수 있어요. 시간형은 시작·종료 시각을, 횟수형은 횟수와 시각을 직접 고칠 수 있어요." + body: "행동 버튼을 길게 누르면 메뉴가 열려요 — 기록 직접 입력·수정, 즐겨찾기 지정·해제, 기록 확인, 통계 보기, 행동 설정 수정, 삭제까지 여기서 다 돼요. 시간형은 시작·종료 시각을, 횟수형은 횟수와 시각을 직접 고칠 수 있어요." ), HelpTopic( symbol: "note.text", title: "기록에 메모 남기기", - body: "행동 탭에서 행동을 열어 '기록 시 메모 창 표시'를 켜면, 시간 측정을 종료할 때·횟수를 추가할 때마다 메모 창이 떠서 그 기록에 한 줄을 남길 수 있어요(건너뛰기 가능). 이 설정은 기기마다 따로 저장돼요. 남긴 메모는 기록 탭 목록에 노란 글씨로 표시되고, 기록을 탭해 수정할 때 메모를 고치거나 새로 붙일 수도 있어요." + body: "행동 탭에서 행동을 열어 '기록 시 메모 창 표시'를 켜 보세요. 시간 측정을 끝내거나 횟수를 더할 때마다 메모 창이 떠서 그 기록에 한 줄을 남길 수 있어요(건너뛰어도 돼요). 이 설정은 기기마다 따로 저장돼요. 남긴 메모는 기록 탭에 노란 글씨로 보이고, 기록을 눌러 수정할 때 메모를 고치거나 새로 붙일 수도 있어요." ), HelpTopic( symbol: "square.grid.3x3.fill", title: "배치 편집", - body: "오른쪽 위 '배치 편집'을 누르면 버튼이 흔들리며 드래그로 순서를 바꿀 수 있어요. 한 줄에 몇 개를 놓을지도 고를 수 있어요. '완료'를 누르면 저장되고, 이 순서는 위젯의 기본 표시 순서에도 쓰여요." + body: "오른쪽 위 '배치 편집'을 누르면 버튼들이 흔들리기 시작하고, 끌어서 순서를 바꿀 수 있어요. 한 줄에 몇 개를 둘지도 여기서 골라요. '완료'를 누르면 저장되고, 이 순서는 위젯이 행동을 고르는 기본 순서로도 쓰여요." ), ]) } @@ -221,28 +226,28 @@ struct HelpView: View { HelpTopic( symbol: "chart.bar.fill", title: "진행률 읽는 법", - body: "다짐마다 하루·주간·월간 진행률이 표시돼요. 주간·월간 진행률은 하루 초과 달성이 다른 날의 미달을 가리지 않도록 하루 목표량까지만 인정해 합산하고, 요일·날짜를 정한 다짐은 수행일의 기록만 집계해요 — 수행일이 아닌 날의 '하루' 진행률은 '수행일 아님'으로 표시돼요. 주간·월간 다짐이 이번 주(이번 달) 몫을 이미 채웠다면 '하루' 진행률은 0% 대신 '이번 주 달성'·'이번 달 달성'으로 표시되고 목표의 하루 진행률에도 달성으로 반영돼요 — 오늘은 더 하지 않아도 된다는 뜻이에요. 다짐 자신의 주기(하루 다짐의 '하루' 등)에서는 100%를 넘는 초과 달성이 그대로 표시되지만, 주간 다짐의 '하루'처럼 주기와 다른 기간은 목표를 그 기간 몫으로 나눈 페이스 기준이라 최대 100%까지만 표시돼요. '이하 유지' 다짐은 한도 안이면 100%, 넘으면 0%예요 — 주간·월간 한도 다짐의 '하루'는 하루 몫 한도 기준이라, 주간 한도가 남았어도 오늘 많이 쓰면 먼저 알려주는 경고 역할을 해요.", + body: "다짐마다 하루·주간·월간 진행률이 보여요. 주간·월간 진행률은 어느 하루의 초과 달성이 다른 날의 미달을 가리지 않도록 하루 목표량까지만 인정해서 더하고, 요일·날짜를 정한 다짐은 수행일의 기록만 세요 — 수행일이 아닌 날의 '하루' 칸에는 '수행일 아님'이 표시돼요. 주간·월간 다짐이 이번 주(이번 달) 몫을 이미 채웠다면 '하루'는 0% 대신 '이번 주 달성'·'이번 달 달성'으로 바뀌고 목표의 하루 진행률에도 달성으로 들어가요 — 오늘은 더 하지 않아도 된다는 뜻이에요. 다짐 자신의 주기(하루 다짐의 '하루' 같은)에서는 100%를 넘는 초과 달성이 그대로 보이지만, 주간 다짐의 '하루'처럼 주기와 다른 기간은 목표를 그 기간 몫으로 나눈 페이스 기준이라 100%까지만 보여요. '이하 유지' 다짐은 한도 안이면 100%, 넘으면 0%예요 — 주간·월간 한도 다짐의 '하루'는 하루 몫 기준이라, 주간 한도가 아직 남았어도 오늘 많이 쓰면 먼저 알려 주는 경고 역할을 해요.", imageName: "help-goal" ), HelpTopic( symbol: "clock.badge.checkmark", title: "마감 시각까지 달성하기", - body: "하루 단위 다짐을 만들 때 '마감 시각까지만 집계'를 켜면 하루 시작부터 그 시각까지의 기록만 다짐에 집계돼요. 예를 들어 '일어나기 1회 · 오전 8:00까지'로 만들면 8시 이후에 누른 기록은 남긴 하지만 그날 달성으로는 인정되지 않아요. '이하 유지' 다짐은 마감 시각까지 한도를 지키면 그날 달성이에요. 시간 측정 행동이 마감을 걸치면 마감 전까지의 시간만 인정돼요. 하루 시작 시간보다 이른 시각을 고르면 다음 날 새벽(그 하루가 끝나기 전)을 뜻해요." + body: "하루 단위 다짐을 만들 때 '마감 시각까지만 집계'를 켜면, 하루 시작부터 그 시각까지의 기록만 다짐에 세요. 예를 들어 '일어나기 1회 · 오전 8:00까지'로 만들면 8시가 지나 누른 기록은 기록 탭에는 남지만 그날 달성으로는 치지 않아요. '이하 유지' 다짐은 마감까지 한도를 지키면 그날 달성이에요. 시간 측정이 마감에 걸치면 마감 전까지의 시간만 인정돼요. 하루 시작 시간보다 이른 시각을 고르면 다음 날 새벽(그 하루가 끝나기 전)을 뜻해요." ), HelpTopic( symbol: "flame.fill", title: "연속 달성 표시", - body: "다짐을 끊기지 않고 지키면 불꽃과 함께 '연속 3일'처럼 표시돼요. 요일이나 날짜를 정한 다짐은 그 수행일만 세고, 주간·월간 다짐은 '연속 N주·N달'로 세요. 계산은 목표 시작일부터 시작하고, 아직 끝나지 않은 오늘(이번 주기)은 못 채웠어도 끊기지 않아요. '이하 유지' 다짐은 한도를 넘는 순간 끊겨요." + body: "다짐을 끊기지 않고 지키면 불꽃과 함께 '연속 3일'처럼 표시돼요. 요일이나 날짜를 정한 다짐은 그 수행일만 세고, 주간·월간 다짐은 '연속 몇 주·몇 달'로 세요. 세는 건 목표 시작일부터고, 아직 끝나지 않은 오늘(이번 주기)은 못 채웠어도 끊긴 걸로 치지 않아요. '이하 유지' 다짐은 한도를 넘는 순간 끊겨요." ), HelpTopic( symbol: "checkmark.seal.fill", title: "목표 종료와 판정", - body: "종료일이 있는 목표는 날짜가 지나면 자동으로 달성 여부가 판정되고(앱을 며칠 뒤에 열어도 종료일까지의 기록 기준이라 결과가 달라지지 않아요), 종료일이 없는 목표는 수동 종료 버튼으로 마칠 수 있어요. 판정은 다짐들의 평균 달성률이 목표를 만들 때 정한 '달성 판정 기준'(기본 100%) 이상이면 달성이에요 — 예를 들어 기준을 80%로 두면 조금 못 채워도 달성으로 기록돼요. 다짐 없이 종료일이 지난 목표는 '달성했나요?' 상태가 되어 직접 선택해요. 완료된 목표의 종료일을 수정하면 다시 판정돼요 — 미래로 옮기면 진행 중으로 돌아와요. 완료된 목표는 목록 하단의 완료 보관함에서 볼 수 있어요." + body: "종료일이 있는 목표는 날짜가 지나면 저절로 달성 여부가 판정돼요 — 앱을 며칠 뒤에 열어도 종료일까지의 기록으로 판정하니 결과가 달라지지 않아요. 종료일이 없는 목표는 수동 종료 버튼으로 마쳐요. 판정 기준은 다짐들의 평균 달성률이에요. 목표를 만들 때 정한 '달성 판정 기준'(기본 100%) 이상이면 달성이라, 기준을 80%로 두면 조금 못 채워도 달성으로 남길 수 있어요. 다짐 없이 종료일이 지난 목표는 '달성했나요?' 상태가 되어 직접 고르면 되고, 완료된 목표의 종료일을 고치면 다시 판정돼요 — 미래로 옮기면 진행 중으로 돌아와요. 완료된 목표는 목록 아래 '완료된 목표'에서 볼 수 있어요." ), HelpTopic( symbol: "pin.fill", title: "모음 탭에 목표 카드 띄우기", - body: "설정 → '모음 탭 목표 진행 현황'에서 원하는 목표를 선택하면 모음 탭 상단에 진행 현황 카드가 떠요. 여러 개를 선택하면 옆으로 쓸어 넘길 수 있어요." + body: "설정 → '모음 탭 목표 진행 현황'에서 목표를 고르면 모음 탭 맨 위에 진행 현황 카드가 떠요. 여러 개를 고르면 카드를 옆으로 쓸어 한 장씩 넘겨 볼 수 있어요." ), ]) } @@ -254,38 +259,55 @@ struct HelpView: View { HelpTopic( symbol: "calendar", title: "기록 보기·고치기", - body: "기록 탭은 하루의 모든 기록을 보여줘요. 상단 화살표로 날짜를 이동하고, 기록을 탭하면 바로 수정할 수 있어요. 타임테이블 보기로 전환하면 하루 또는 일주일을 24시간 축 위에서 한눈에 볼 수 있어요.", + body: "기록 탭에는 하루의 모든 기록이 모여요. 위쪽 화살표로 날짜를 옮기고, 기록을 누르면 바로 고칠 수 있어요. 타임테이블 보기로 바꾸면 하루나 일주일을 24시간 축 위에서 한눈에 볼 수 있어요.", imageName: "help-history" ), HelpTopic( symbol: "line.3.horizontal.decrease.circle", title: "필터와 하루 기준", - body: "필터 버튼으로 보고 싶은 행동만 골라 볼 수 있어요. 설정의 '주 시작 요일'과 '하루 시작 시간'이 모든 집계에 적용돼요. 예를 들어 하루 시작을 06:00으로 두면 새벽 기록은 전날 실적으로 계산돼요." + body: "필터 버튼으로 보고 싶은 행동만 골라 볼 수 있어요. 설정의 '주 시작 요일'과 '하루 시작 시간'은 앱의 모든 집계에 적용돼요. 예를 들어 하루 시작을 06:00으로 두면, 새벽에 남긴 기록은 전날의 실적으로 세요." ), HelpTopic( symbol: "square.and.arrow.up", title: "이미지로 내보내기", - body: "기록·통계 탭 오른쪽 위 내보내기 버튼으로 지금 보고 있는 기간의 리포트를 고해상도 이미지로 만들 수 있어요. 라이트·다크 테마를 골라 공유하거나 사진에 저장해요." + body: "기록·통계 탭 오른쪽 위의 내보내기 버튼을 누르면, 지금 보고 있는 기간이 그대로 고화질 이미지 리포트가 돼요. 라이트·다크 테마를 골라 공유하거나 사진 앱에 저장해 두세요." ), HelpTopic( symbol: "calendar.badge.clock", title: "지난 7일·30일로 보기", - body: "통계 탭 주간·월간에서 '지난 7일/30일 단위로 보기'를 켜면 달력 주·월 대신 오늘로 끝나는 최근 7일·30일을 볼 수 있어요 — 주초·월초에 그래프가 거의 비어 보일 때 유용해요. 화살표는 7일·30일씩 이동하고, 맨 위 비교 카드도 바로 앞 7일·30일과의 비교로 바뀌어요. 홈 화면 통계 위젯에도 '지난 7일'·'지난 30일' 기간이 있어요." + body: "통계 탭의 주간·월간에서 '지난 7일/30일 단위로 보기'를 켜면, 달력의 주·월 대신 오늘로 끝나는 최근 7일·30일을 봐요. 주초나 월초라 그래프가 텅 비어 보일 때 특히 좋아요. 화살표는 7일·30일씩 움직이고, 맨 위 비교 카드도 바로 앞 7일·30일과의 비교로 바뀌어요. 홈 화면 통계 위젯에도 '지난 7일'·'지난 30일' 기간이 있어요." ), HelpTopic( symbol: "arrow.up.arrow.down", title: "이전 기간과 비교", - body: "통계 탭 맨 위의 비교 카드는 지금 보고 있는 하루·주·월의 총 시간과 횟수를 바로 앞 기간(어제·지난주·지난달)과 비교해 보여줘요. 필터를 걸면 필터된 행동들만으로 비교돼요." + body: "통계 탭 맨 위의 비교 카드는 지금 보는 하루·주·월의 총 시간과 횟수를 바로 앞 기간(어제·지난주·지난달)과 견주어 보여줘요. 필터를 걸어 두면 고른 행동들만으로 비교해요." ), HelpTopic( symbol: "tablecells", title: "CSV로 백업·복원하기", - body: "설정 → 데이터 → '데이터 내보내기'에서 모든 기록(행동·시간·횟수·목표·다짐)을 CSV 파일로 만들 수 있어요. 구간을 직접 지정해 그 기간의 기록만 내보낼 수도 있어요. 스프레드시트에서 열어 분석하거나 백업으로 보관해 두세요. 내보내기는 무료에서도 사용할 수 있어요.\n'데이터 가져오기'(프리미엄)를 쓰면 내보냈던 CSV에서 행동과 시간·횟수 기록을 다시 불러올 수 있어요. 기존 데이터는 바꾸지 않고 새 기록만 추가하며, 이미 있는 기록은 자동으로 건너뛰어서 같은 파일을 여러 번 가져와도 안전해요. CSV에 없는 행동은 새로 만들어지고, 이름과 방식이 같은 행동이 이미 있으면 그 행동으로 이어져요." + body: "설정 → 데이터 → '데이터 내보내기'에서 모든 기록(행동·시간·횟수·목표·다짐)을 CSV 파일로 만들 수 있어요. 구간을 직접 정해 그 기간의 기록만 내보낼 수도 있고요. 스프레드시트에서 열어 살펴보거나 백업으로 보관해 두세요 — 내보내기는 무료에서도 쓸 수 있어요.\n'데이터 가져오기'(프리미엄)를 쓰면 내보냈던 CSV에서 행동과 시간·횟수 기록을 되살릴 수 있어요. 기존 데이터는 건드리지 않고 새 기록만 더하며, 이미 있는 기록은 알아서 건너뛰니 같은 파일을 여러 번 가져와도 안전해요. CSV에만 있는 행동은 새로 만들어지고, 이름과 방식이 같은 행동이 이미 있으면 그 행동으로 이어져요." ), HelpTopic( symbol: "trash", title: "데이터 정리·초기화", - body: "기록이 오래 쌓여 정리하고 싶다면 설정 → 데이터 → '데이터 정리·초기화'를 써 보세요. 전체를 비우거나, 처음부터 지정한 날짜까지의 기록·일기만 삭제할 수 있어요 — 이때 행동·꼬리표·목표·다짐과 일기 양식은 남고, 지정한 날짜에 걸쳐 있는 측정과 진행 중인 측정도 남아요. '일기만'을 고르면 기록은 그대로 두고 일기만 지울 수도 있어요 — 사진·필기로 커진 일기 용량만 줄일 때 좋아요. 삭제 전에 CSV 백업과, 삭제할 기록을 한눈에 정리한 '정리 리포트'(PDF·이미지)를 만들어 보관할 수 있어요 — 백업을 켰다면 파일을 만든 뒤에만 삭제로 진행할 수 있어요. 과거 기록이 사라지면 다짐의 연속 달성 기록은 끊겨요. iCloud 동기화를 켰다면 다른 기기에서도 함께 삭제되니 백업을 꼭 저장해 두세요." + body: "기록이 오래 쌓여 정리하고 싶다면 설정 → 데이터 → '데이터 정리·초기화'를 써 보세요. 전체를 비우거나, 처음부터 정한 날짜까지의 기록·일기만 지울 수 있어요 — 이때 행동·꼬리표·목표·다짐과 일기 양식은 남고, 그 날짜에 걸쳐 있는 측정과 진행 중인 측정도 남아요. '일기만'을 고르면 기록은 그대로 두고 일기만 지워요 — 사진과 필기로 커진 일기 용량만 줄이고 싶을 때 좋아요. 지우기 전에 CSV 백업과, 지울 기록을 한눈에 담은 '정리 리포트'(PDF·이미지)를 만들어 보관할 수 있어요. 백업을 켰다면 파일을 만든 뒤에만 삭제로 넘어갈 수 있고요. 과거 기록이 사라지면 다짐의 연속 달성은 끊겨요. iCloud 동기화 중이면 다른 기기에서도 함께 지워지니 백업을 꼭 저장해 두세요." + ), + ]) + } + + // MARK: 공통 — 건강 데이터 (1.5) + + private var health: HelpGroup { + HelpGroup(title: "건강 데이터", topics: [ + HelpTopic( + symbol: "heart.fill", + title: "모음 탭에서 건강 데이터 보기", + body: "모음 탭의 '건강 데이터' 줄에서 '애플 건강 연결하기'를 누르면 걸음 수·운동 시간·수면 같은 오늘 데이터를 타일로 볼 수 있어요. 어떤 지표를 어떤 순서로 보여줄지는 줄 오른쪽의 지표 버튼에서 고르고, 설정 → '모음 탭 건강 데이터'에서 줄 자체를 끄거나 즐겨찾기·나머지 행동과의 순서를 바꿀 수 있어요.\n값은 애플 건강 앱이 가진 데이터를 읽어 온 거예요 — 하루 다님이 서버로 보내거나 iCloud에 저장하는 일은 없어요. 걸음·운동 같은 값은 설정의 '하루 시작 시간' 기준으로 오늘 하루를 더한 것이고, 수면만은 전날 밤부터 오늘 아침까지의 수면 구간을 통째로 '오늘 잔 것'으로 세요. 애플워치에 쌓인 데이터는 워치와 아이폰이 동기화된 뒤에 보이니 값이 안 맞아 보이면 잠시 뒤 다시 확인해 주세요. 값이 계속 0이라면 아이폰의 설정 → 개인정보 보호 및 보안 → 건강에서 하루 다님의 읽기 권한을 확인해 주세요." + ), + HelpTopic( + symbol: "figure.run", + title: "건강 데이터로 다짐 만들기 (프리미엄)", + body: "다짐을 만들 때 대상에서 '건강'을 고르면 '매일 8,000보', '수면 8시간 이상', '달리기 30분'처럼 건강 데이터를 목표로 삼을 수 있어요. 걸음 수·운동 시간·수면·활동 에너지·이동 거리·일어서기·마음챙김·물 섭취를 고를 수 있고, 운동은 달리기·수영·근력 운동 같은 종목별로도 만들 수 있어요 — 종목별 시간은 건강 앱에 기록된 운동 기준이라 활동 링의 '운동 시간'과는 값이 다를 수 있어요. 건강 다짐은 하루 단위로만 반복돼요(요일 지정은 돼요).\n수면 다짐은 '수면 구간'(기본 저녁 9시~다음 날 아침 9시)을 정해 두면 그 안에서 잔 시간을 통째로 그날 것으로 세요 — 자정을 넘겨 자도 하루가 쪼개지지 않아요. 진행률·연속 달성·목표 판정은 다른 다짐과 똑같은 규칙으로 계산돼요. 건강 데이터가 없는 기기(맥 등)에서는 건강 다짐이 '데이터 없음'으로 보이고 목표 진행률에서 빠져요 — 아이폰에서 보면 정상으로 보여요." ), ]) } @@ -297,12 +319,12 @@ struct HelpView: View { HelpTopic( symbol: "icloud.fill", title: "동기화 켜기", - body: "설정 → 프리미엄에서 '기기 간 동기화'를 켜면 iCloud로 아이폰·아이패드의 데이터가 하나로 합쳐져요. 켠 뒤에는 앱을 완전히 종료했다가 다시 실행해야 적용돼요. 모든 기기가 같은 Apple 계정으로 로그인되어 있어야 해요." + body: "설정 → 프리미엄에서 '기기 간 동기화'를 켜면 아이폰·아이패드·맥의 데이터가 iCloud로 하나가 돼요. 켠 뒤에는 앱을 완전히 껐다가 다시 열어야 적용돼요. 모든 기기가 같은 Apple 계정으로 로그인되어 있어야 하고요." ), HelpTopic( symbol: "arrow.triangle.2.circlepath", title: "반영이 늦을 때", - body: "iCloud 동기화는 네트워크 상황에 따라 몇 초에서 몇 분까지 걸릴 수 있어요. 다른 기기의 기록이 안 보이면 모음 탭 왼쪽 위 새로고침 버튼을 눌러 주세요. 그래도 안 보이면 잠시 후 다시 시도하거나 두 기기 모두 인터넷 연결을 확인해 주세요." + body: "iCloud 동기화는 네트워크 상황에 따라 몇 초에서 몇 분까지 걸릴 수 있어요. 다른 기기의 기록이 안 보이면 모음 탭 왼쪽 위의 새로고침 버튼을 눌러 보세요. 그래도 안 보이면 잠시 뒤 다시 시도하거나, 두 기기 모두 인터넷에 연결되어 있는지 확인해 주세요." ), ]) } @@ -314,38 +336,38 @@ struct HelpView: View { HelpTopic( symbol: "book.closed.fill", title: "하루 정리 첫 페이지", - body: "일기 탭 달력에서 날짜를 누르면 그날의 일기가 열려요. 첫 페이지는 오늘 기분·요약·목표 진행 현황·할 일·24시간 타임테이블·기록으로 하루를 정리해 보여줘요. 오른쪽 위 ⋯ 메뉴의 '첫 화면 구성'에서 섹션 표시 여부와 순서를 바꿀 수 있어요. 기분 사진을 남긴 날은 달력의 그 날짜 칸에 사진이 배경으로 함께 보여요. 일기는 아이패드와 맥에서 쓸 수 있고, iCloud 동기화를 켜면 두 기기에서 같은 일기가 이어져요.", + body: "일기 탭 달력에서 날짜를 누르면 그날의 일기가 열려요. 첫 페이지에는 오늘 기분·요약·목표 진행 현황·할 일·24시간 타임테이블·기록이 모여 하루가 한눈에 정리돼요. 오른쪽 위 ⋯ 메뉴의 '첫 화면 구성'에서 섹션을 보일지 말지와 순서를 바꿀 수 있어요. 기분 사진을 남긴 날은 달력의 그 칸에 사진이 배경으로 깔려요. 일기는 아이패드와 맥에서 쓸 수 있고, iCloud 동기화를 켜면 두 기기에서 같은 일기가 이어져요.", imageName: "help-diary" ), HelpTopic( symbol: "calendar.badge.plus", title: "타임테이블에 일정·필터", - body: "첫 페이지 타임테이블 카드 오른쪽 위 캘린더 버튼으로 그날의 캘린더 일정을 골라 함께 표시할 수 있어요(일정은 점선 테두리로 구분돼요). 필터 버튼을 누르면 그날 기록된 행동 중 타임테이블에 보여줄 것만 고를 수 있고, '이 날의 목표' 카드에도 필터 버튼이 있어 보고 싶은 목표만 골라 둘 수 있어요. 선택은 모두 날짜마다 따로 저장되고, 타임테이블 선택은 일기를 내보낼 때도 그대로 반영돼요.\n매일 같은 선택을 반복하지 않으려면 달력 화면 오른쪽 위 '기본 표시 설정'을 써 보세요 — 캘린더 일정을 기본으로 넣을지(모든 캘린더/선택한 캘린더만), 어떤 목표·행동을 기본으로 숨길지를 한 번만 정하면 모든 날짜에 적용돼요. 날짜별 필터로 다르게 고른 날짜는 그 선택이 우선하고, 필터의 '기본값으로 되돌리기'로 언제든 기본값으로 돌아갈 수 있어요." + body: "첫 페이지 타임테이블 카드의 오른쪽 위 캘린더 버튼으로 그날의 캘린더 일정을 골라 함께 보여줄 수 있어요 — 일정은 점선 테두리라 행동과 바로 구분돼요. 필터 버튼으로는 그날 기록된 행동 중 타임테이블에 올릴 것만 고르고, '이 날의 목표' 카드의 필터로는 보고 싶은 목표만 남겨요. 이 선택들은 날짜마다 따로 저장되고, 타임테이블 선택은 일기를 내보낼 때도 그대로 담겨요.\n매일 같은 선택을 되풀이하기 싫다면 달력 화면 오른쪽 위의 '기본 표시 설정'을 써 보세요. 캘린더 일정을 기본으로 넣을지(모든 캘린더/선택한 캘린더만), 어떤 목표·행동을 기본으로 숨길지 한 번만 정하면 모든 날짜에 적용돼요. 날짜별 필터로 다르게 고른 날은 그 선택이 우선하고, '기본값으로 되돌리기'로 언제든 돌아갈 수 있어요." ), HelpTopic( symbol: "applepencil", title: "펜슬 노트 페이지", - body: "페이지를 넘기면 자유 노트가 이어져요. 애플 펜슬로 자유롭게 쓰고 그려요 — 손가락은 페이지 이동과 확대·축소에 쓰여요. 두 손가락 핀치로 페이지를 확대하면 세밀하게 쓸 수 있고, 줄 노트를 켜면 줄 간격도 고를 수 있어요. 페이지가 여러 장이면 오른쪽 위 ⋯ 메뉴의 '페이지 순서 변경'으로 순서를 바꿀 수 있어요. 맥에서는 텍스트 입력이 기본이고, 도구 줄의 '그리기'를 켜면 마우스나 트랙패드로도 그릴 수 있어요 — 평소에는 클릭과 스크롤이 이동·버튼에 쓰여요." + body: "페이지를 넘기면 자유 노트가 이어져요. 애플 펜슬로 마음껏 쓰고 그리세요 — 손가락은 페이지 넘기기와 확대·축소를 맡아요. 두 손가락으로 벌려 확대하면 작은 글씨도 또박또박 쓸 수 있고, 줄 노트를 켜면 줄 간격도 고를 수 있어요. 페이지가 여러 장이면 오른쪽 위 ⋯ 메뉴의 '페이지 순서 변경'으로 차례를 바꿔요. 맥에서는 키보드 입력이 기본이고, 도구 줄의 '그리기'를 켠 동안에만 마우스·트랙패드로 그려져요 — 평소의 클릭과 스크롤은 이동과 버튼에 쓰여요." ), HelpTopic( symbol: "square.on.circle", title: "사진·도형·텍스트 꾸미기", - body: "노트 페이지 도구 줄에서 '사진'·'도형'·'텍스트'를 추가한 뒤 '배치 모드'에서 꾸며요 — 드래그로 옮기고, 핀치로 크기를(모양 비율은 그대로), 두 손가락 돌리기로 회전을 바꿔요. 선택하면 나타나는 손잡이로 모양을 다듬어요: 사각형은 꼭짓점을 끌면 그 모서리만 움직이고, 원은 상하좌우 손잡이로 늘리거나 눌러 타원을 만들고, 화살표·선은 양 끝점을 끌어 길이와 방향을 바꿔요. 조절 중에 정사각형·정원이 되는 순간 손잡이가 노란색으로 변하며 살짝 붙잡아 줘요. 텍스트 상자는 선택된 상태에서 한 번 더 탭하면 바로 그 자리에서 키보드로 입력·줄바꿈이 되고, '스타일'에서 글자 색·크기·굵게·정렬·테두리(색·굵기 포함)를 바꿀 수 있어요. 도형은 '도형 수정'에서 색·선 굵기·채우기·모서리 둥글기·회전을 바꿔요." + body: "노트 페이지 도구 줄에서 '사진'·'도형'·'텍스트'를 더한 뒤 '배치 모드'에서 꾸며요 — 끌어서 옮기고, 두 손가락으로 오므리거나 벌려 크기를(모양 비율은 그대로), 돌려서 회전을 바꿔요. 요소를 선택하면 손잡이가 나타나요. 사각형은 꼭짓점을 끌면 그 모서리만 움직이고, 원은 상하좌우 손잡이로 늘리고 눌러 타원을 만들고, 화살표·선은 양 끝점을 끌어 길이와 방향을 함께 바꿔요. 조절하다 정사각형·정원이 되는 순간 손잡이가 노랗게 변하며 살짝 붙잡아 줘요. 텍스트 상자는 선택된 채 한 번 더 누르면 그 자리에서 바로 키보드 입력·줄바꿈이 되고, '스타일'에서 글자 색·크기·굵기·정렬·테두리(색·굵기까지)를 바꿔요. 도형은 '도형 수정'에서 색·선 굵기·채우기·모서리 둥글기·회전을 다듬어요." ), HelpTopic( symbol: "doc.text.image", title: "나만의 양식(속지)", - body: "달력 화면 오른쪽 위 양식 버튼에서 PDF나 사진을 노트 배경 양식으로 가져올 수 있어요. 가져온 양식은 페이지를 추가할 때 빈 캔버스·줄 노트와 함께 고를 수 있고, 여러 쪽 PDF는 원하는 쪽을 골라 써요. 양식은 필기 아래에 깔리고 확대해도 선명하게 보여요. 양식을 삭제하면 그 양식을 쓰던 페이지는 빈 캔버스로 표시되지만 필기는 그대로 남아요.\n양식이 깔린 페이지에서는 펜 색이 화면 모드(라이트·다크)와 상관없이 고른 색 그대로 고정돼요 — 양식은 항상 밝은 배경이라, 어떤 기기·모드에서 봐도 필기가 같은 색으로 보여요." + body: "달력 화면 오른쪽 위의 양식 버튼에서 PDF나 사진을 노트의 배경 양식(속지)으로 가져올 수 있어요. 가져온 양식은 페이지를 더할 때 빈 캔버스·줄 노트와 나란히 고를 수 있고, 여러 쪽짜리 PDF는 원하는 쪽만 골라 써요. 양식은 필기 아래에 깔리고, 확대해도 흐려지지 않아요. 양식을 지우면 그 양식을 쓰던 페이지는 빈 캔버스로 보이지만 필기는 그대로 남아요.\n양식이 깔린 페이지의 펜 색은 라이트·다크 모드와 상관없이 고른 색 그대로 고정돼요 — 양식은 늘 밝은 배경이라, 어느 기기 어느 모드에서 봐도 필기가 같은 색으로 보이게 하기 위해서예요." ), HelpTopic( symbol: "square.and.arrow.up.on.square", title: "일기 내보내기", - body: "달력 화면 오른쪽 위 내보내기 버튼에서 기간(며칠부터 며칠까지)이나 여러 날짜를 골라 PDF 또는 이미지로 저장해요. 요약 페이지와 노트 페이지가 그대로 담겨요.\n파일을 만든 뒤에는 '내보낸 날짜의 일기 삭제'로 방금 저장한 일기들을 앱에서 지워 저장 공간을 줄일 수 있어요. 필기·사진이 함께 지워지고 iCloud 동기화 중이면 다른 기기에서도 삭제되니, 공유로 파일을 먼저 저장했는지 확인해 주세요." + body: "달력 화면 오른쪽 위의 내보내기 버튼에서 기간(며칠부터 며칠까지)이나 여러 날짜를 골라 PDF나 이미지로 저장해요. 요약 페이지와 노트 페이지가 보이는 그대로 담겨요.\n파일을 만든 다음에는 '내보낸 날짜의 일기 삭제'로 방금 내보낸 일기들을 앱에서 지워 저장 공간을 되찾을 수 있어요. 필기와 사진이 함께 지워지고 iCloud 동기화 중이면 다른 기기에서도 지워지니, 공유로 파일부터 저장해 뒀는지 꼭 확인해 주세요." ), HelpTopic( symbol: "lock.fill", title: "일기 잠금", - body: "설정 → 일기에서 '일기 잠금'을 켜면 일기 탭을 열 때 Face ID·Touch ID 또는 기기 암호로 잠금을 해제해야 해요. 기기가 지원하는 방식이 자동으로 쓰이고, 앱을 나갔다 돌아오면 다시 잠겨요. 이 설정은 이 기기에만 적용돼요." + body: "설정 → 일기에서 '일기 잠금'을 켜면 일기 탭을 열 때마다 Face ID·Touch ID나 기기 암호로 풀어야 해요. 기기가 지원하는 방식이 알아서 쓰이고, 앱을 나갔다 돌아오면 다시 잠겨요. 이 설정은 켠 기기에만 적용돼요." ), ]) } @@ -357,28 +379,28 @@ struct HelpView: View { HelpTopic( symbol: "squares.leading.rectangle", title: "탭바 구성과 더보기", - body: "설정 → '탭바 구성'에서 하단 탭바에 바로 보일 탭(최대 3개)을 고를 수 있어요. 나머지 탭은 '더보기'에서 열어요." + body: "설정 → '탭바 구성'에서 아래 탭바에 바로 둘 탭(최대 3개)을 골라요. 나머지 탭은 '더보기'에서 열면 돼요." ), HelpTopic( symbol: "circle.hexagongrid.fill", title: "글래스 버블 메뉴", - body: "설정 → '내비게이션 방식'에서 '글래스 버블 메뉴'를 고르면 하단 탭바 대신 화면 아래 중앙 버튼 하나로 모든 탭을 열어요. 버튼을 누르면 유리 구슬 버튼들이 부채꼴로 퍼지고, 버블 순서도 설정에서 바꿀 수 있어요. '두 번 눌러 바로 이동'을 켜면 메뉴가 닫혀 있을 때 버튼을 빠르게 두 번 눌러 정해 둔 탭으로 바로 이동해요.", + body: "설정 → '내비게이션 방식'에서 '글래스 버블 메뉴'를 고르면 탭바 대신 화면 아래 가운데 버튼 하나로 모든 탭을 열어요. 버튼을 누르면 유리 구슬들이 부채꼴로 피어나고, 구슬 순서도 설정에서 바꿀 수 있어요. '두 번 눌러 바로 이동'을 켜 두면, 메뉴가 닫혀 있을 때 버튼을 빠르게 두 번 눌러 정해 둔 탭으로 곧장 갈 수 있어요.", imageName: "help-radial" ), HelpTopic( symbol: "square.grid.2x2.fill", title: "홈 화면·잠금화면 위젯 (프리미엄)", - body: "홈 화면을 길게 눌러 '하루 다님' 위젯을 추가하세요. 행동 실행(눌러서 시작·+1), 현재 진행 중(측정 중인 행동의 실시간 타이머와 종료 버튼), 목표 진행률, 다짐 진행률(원형 링·누적값), 다짐 현황, 행동 통계 그래프와 잠금화면용 목표 달성률이 있어요. 위젯을 길게 눌러 '위젯 편집'에서 표시할 행동·목표·다짐과 기간, 테마를 고를 수 있어요." + body: "홈 화면을 길게 눌러 '하루 다님' 위젯을 더해 보세요. 행동 실행(눌러서 시작·+1), 현재 진행 중(실시간 타이머와 종료 버튼), 목표 진행률, 다짐 진행률(원형 링과 누적값), 다짐 현황, 행동 통계 그래프, 그리고 잠금화면용 목표 달성률까지 있어요. 위젯을 길게 눌러 '위젯 편집'을 열면 보여줄 행동·목표·다짐과 기간, 테마를 고를 수 있어요." ), HelpTopic( symbol: "bolt.horizontal.circle", title: "다이나믹 아일랜드·잠금화면", - body: "시간을 측정 중이면 다이나믹 아일랜드와 잠금화면에 진행 시간이 표시돼요. 여러 개를 동시에 측정하면 설정의 '대표 시간 기준'(먼저/나중에 시작한 행동)에 따라 하나가 대표로 보이고 나머지는 +N으로 표시돼요. 잠금화면 배너의 노란 정지 버튼을 누르면 앱을 열지 않고도 대표 측정이 바로 종료돼요." + body: "시간을 재는 동안에는 다이나믹 아일랜드와 잠금화면에 진행 시간이 떠 있어요. 여러 개를 동시에 재면 설정의 '대표 시간 기준'(먼저/나중에 시작한 행동)에 따라 하나가 대표로 보이고 나머지는 +N으로 표시돼요. 잠금화면 배너의 노란 정지 버튼을 누르면 앱을 열지 않고도 대표 측정이 바로 끝나요." ), HelpTopic( symbol: "switch.2", title: "제어 센터에서 실행 (프리미엄)", - body: "제어 센터를 편집해 '하루 다님'의 '행동 실행' 컨트롤을 추가하면, 화면을 켜자마자 행동을 실행할 수 있어요. 시간형은 시작/종료 토글, 횟수형은 탭마다 +1이에요. 잠금화면 하단 버튼이나 액션 버튼에도 배치할 수 있어요." + body: "제어 센터를 편집해 '하루 다님'의 '행동 실행' 컨트롤을 더하면, 화면을 켜자마자 행동을 실행할 수 있어요. 시간형은 시작/종료가 번갈아 되고, 횟수형은 누를 때마다 +1이에요. 잠금화면 아래 버튼이나 액션 버튼에 둘 수도 있어요." ), ]) } @@ -390,18 +412,23 @@ struct HelpView: View { HelpTopic( symbol: "applewatch", title: "워치에서 기록하기", - body: "워치 앱을 열면 꼬리표 목록이 보여요. 꼬리표를 탭하면 그 안의 행동들이 나오고, 행동을 탭하면 시간형은 측정 시작·종료, 횟수형은 +1이 기록돼요. 아이폰 앱에서 즐겨찾기한 행동은 첫 화면 맨 위 '즐겨찾기'에서 한 탭 만에 열 수 있어요. 측정 중일 때는 첫 화면 맨 위에 측정 중인 행동과 시간이 보이고, 그 줄을 탭하면 바로 측정이 종료돼요. 기록은 아이폰과 자동으로 동기화돼요.", + body: "워치 앱을 열면 꼬리표 목록이 보여요. 꼬리표를 누르면 그 안의 행동들이 나오고, 행동을 누르면 시간형은 측정 시작·종료, 횟수형은 +1이 남아요. 아이폰에서 즐겨찾기한 행동은 첫 화면 맨 위 '즐겨찾기'에서 한 번에 열 수 있어요. 측정 중일 때는 첫 화면 맨 위에 측정 중인 행동과 시간이 보이고, 그 줄을 누르면 바로 끝나요. 기록은 아이폰과 자동으로 맞춰져요.", imageName: "help-watch" ), HelpTopic( symbol: "watchface.applewatch.case", title: "컴플리케이션 추가", - body: "워치 페이스를 길게 눌러 '편집' → 컴플리케이션 자리에서 하루 다님을 골라요. 현재 측정 중인 행동, 목표의 달성률, 다짐의 진행률을 페이스에서 바로 볼 수 있어요. 목표·다짐 달성률 목록에는 목표를 만들거나 수정할 때 '애플워치에서 보기'를 켠 목표와 그 다짐들만 하루·주간·월간으로 나타나요 — 기본은 꺼져 있고, 완료된 목표는 목록에서 자동으로 사라져요." + body: "워치 페이스를 길게 눌러 '편집' → 컴플리케이션 자리에서 하루 다님을 골라요. 현재 측정 중인 행동, 목표의 달성률, 다짐의 진행률, 행동의 누적 기록을 페이스에서 바로 볼 수 있어요. 목표·다짐 달성률 목록에는 목표를 만들거나 수정할 때 '애플워치에서 보기'를 켠 목표와 그 다짐들만 하루·주간·월간으로 나타나요 — 기본은 꺼져 있고, 완료된 목표는 목록에서 알아서 사라져요." + ), + HelpTopic( + symbol: "applewatch.watchface", + title: "행동 기록 컴플리케이션", + body: "행동의 누적 기록을 워치 페이스에 두고 싶다면, 아이폰의 행동 편집에서 '애플워치 컴플리케이션'을 켜고 표시 기간(하루·이번 주·이번 달·지난 7일·지난 30일)을 골라 주세요. 그러면 페이스 편집의 '행동 기록' 목록에 그 행동이 나타나요. 측정 중일 때는 컴플리케이션이 노란 타이머로 바뀌고, 컴플리케이션을 누르면 워치 앱의 그 행동 화면이 열려 큰 버튼으로 바로 시작·종료(횟수형은 +1)할 수 있어요 — 뒤로 가면 워치 앱 첫 화면이에요. 페이스의 숫자는 몇 분 간격으로 갱신되니 방금 누른 기록이 바로 안 보여도 잠시만 기다려 주세요." ), HelpTopic( symbol: "arrow.triangle.2.circlepath", title: "워치와 폰이 안 맞을 때", - body: "워치와 아이폰은 근처에 있을 때 자동으로 맞춰져요. 값이 다르게 보이면 워치 앱을 아래로 당겨 새로고침하거나, 아이폰에서 앱을 한 번 열어 주세요. 모음 탭의 새로고침 버튼도 도움이 돼요." + body: "워치와 아이폰은 서로 가까이 있을 때 자동으로 맞춰져요. 값이 다르게 보이면 워치 앱을 한 번 열어 두거나, 아이폰에서 앱을 열어 주세요. 모음 탭의 새로고침 버튼도 도움이 돼요." ), ]) } @@ -413,17 +440,17 @@ struct HelpView: View { HelpTopic( symbol: "crown.fill", title: "무료와 프리미엄의 차이", - body: "무료로는 행동 10개·목표 2개·목표당 다짐 3개까지 만들 수 있어요. 프리미엄은 개수 제한이 풀리고 위젯, 애플워치 앱, 기기 간 동기화, 아이패드 일기를 쓸 수 있어요. 월·년 구독 또는 한 번만 결제하는 평생 이용권 중에 고르면 돼요. 구독이 끝나도 기록한 데이터는 그대로 남고, 이미 쓴 일기는 계속 열람할 수 있어요." + body: "무료로는 행동 10개·목표 2개·목표당 다짐 3개까지 만들 수 있어요. 프리미엄에서는 개수 제한이 풀리고 위젯, 애플워치 앱, 시리 단축어, 기기 간 동기화, 아이패드·맥 일기, CSV 가져오기, 건강 다짐을 쓸 수 있어요. 월·년 구독이나 한 번만 결제하는 평생 이용권 중에 고르면 돼요. 구독이 끝나도 기록한 데이터는 그대로 남고, 이미 만든 건강 다짐도 계속 보이고, 쓴 일기도 계속 열람할 수 있어요." ), HelpTopic( symbol: "mic.fill", title: "시리·단축어로 기록하기", - body: "단축어 앱에서 '하루 다님'을 검색하면 측정 시작·종료, 횟수 추가, 행동 누적값 가져오기, 목표·다짐 진행률 가져오기 동작을 조합해 나만의 자동화를 만들 수 있어요. \"시리야, 하루 다님에서 측정 시작\"처럼 말로도 실행할 수 있고, 어떤 행동인지 물으면 이름으로 대답하면 돼요. 진행률 동작은 값을 돌려주므로 다른 단축어와 이어 붙일 수 있어요." + body: "단축어 앱에서 '하루 다님'을 찾으면 측정 시작·종료, 횟수 추가, 행동 누적값 가져오기, 목표·다짐 진행률 가져오기 동작으로 나만의 자동화를 만들 수 있어요. \"시리야, 하루 다님에서 측정 시작\"처럼 말로도 되고, 어떤 행동인지 물으면 이름으로 답하면 돼요. 진행률 동작은 값을 돌려주니 다른 단축어와 이어 붙이기 좋아요." ), HelpTopic( symbol: "arrow.counterclockwise.circle", title: "구매 복원과 구독 관리", - body: "기기를 바꿨거나 앱을 다시 설치했다면 설정 → 프리미엄의 '구매 복원'을 눌러 주세요. 구독 해지나 플랜 변경은 '구독 관리'에서 언제든 할 수 있고, 해지해도 결제한 기간이 끝날 때까지는 계속 쓸 수 있어요." + body: "기기를 바꿨거나 앱을 다시 깔았다면 설정 → 프리미엄에서 '구매 복원'을 눌러 주세요. 구독 해지나 플랜 변경은 '구독 관리'에서 언제든 할 수 있고, 해지해도 이미 결제한 기간이 끝날 때까지는 그대로 쓸 수 있어요." ), ]) } diff --git a/myApp/HaruDanim/IOS/Views/WhatsNewView.swift b/myApp/HaruDanim/IOS/Views/WhatsNewView.swift new file mode 100644 index 0000000..0213f8c --- /dev/null +++ b/myApp/HaruDanim/IOS/Views/WhatsNewView.swift @@ -0,0 +1,131 @@ +// +// WhatsNewView.swift +// Haru_Danim +// +// 업데이트 신기능 소개 팝업 (1.5 — Docs/plan-1.5.md §11) +// - 업데이트 후 첫 실행에 버전당 1회. 신규 설치는 온보딩이 담당하므로 표시하지 않는다 +// (최초 실행 시 현재 버전을 시드). 온보딩과 동시 표시 금지 — 온보딩이 우선. +// - "여러 기기를 쓰면 모두 업데이트" 안내 포함 (혼합 버전 완화 — plan §10 R16) +// - 다음 버전에서는 contentVersion과 카드 내용만 바꿔 재사용한다 +// + +import SwiftData +import SwiftUI + +struct WhatsNewView: View { + @Environment(\.dismiss) private var dismiss + + /// 마지막으로 소개를 본 앱 버전 (standard defaults — 기기 로컬) + static let lastShownKey = "whatsnew.lastShownVersion" + /// 소개 콘텐츠가 준비된 버전 — 앱 버전이 이 값일 때만 표시한다 + static let contentVersion = "1.5" + + static var appVersion: String { + Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "" + } + + /// 최초 실행(신규 설치)이면 현재 버전을 시드해 팝업을 건너뛴다 — 첫 안내는 온보딩 담당 + @MainActor + static func markSeededIfFreshInstall(context: ModelContext) { + guard UserDefaults.standard.string(forKey: lastShownKey) == nil else { return } + let isFresh = !UserDefaults.standard.bool(forKey: OnboardingView.doneKey) + && ((try? context.fetchCount(FetchDescriptor())) ?? 0) == 0 + if isFresh { + UserDefaults.standard.set(appVersion, forKey: lastShownKey) + } + } + + /// 표시 조건: 콘텐츠가 있는 버전 + 아직 이 버전 소개를 안 봄 + static var shouldShow: Bool { + appVersion == contentVersion + && UserDefaults.standard.string(forKey: lastShownKey) != appVersion + } + + static func markShown() { + UserDefaults.standard.set(appVersion, forKey: lastShownKey) + } + + var body: some View { + VStack(spacing: 0) { + ScrollView { + VStack(alignment: .leading, spacing: 22) { + VStack(alignment: .leading, spacing: 4) { + Text("새로워진 하루 다님") + .font(.title.bold()) + Text("버전 1.5에서 이런 것들이 더해졌어요.") + .font(.subheadline) + .foregroundStyle(.secondary) + } + .padding(.top, 28) + + feature( + symbol: "applewatch", + tint: AppTheme.green, + title: String(localized: "워치 페이스에서 행동 기록 보기"), + body: String(localized: "'행동 기록' 컴플리케이션이 새로 생겼어요. 행동 편집에서 켜면 워치 페이스에서 누적 기록을 바로 보고, 눌러서 바로 실행할 수 있어요.") + ) + feature( + symbol: "heart.fill", + tint: .pink, + title: String(localized: "모음 탭에서 건강 데이터 보기"), + body: String(localized: "걸음·운동·수면 같은 애플 건강 앱의 오늘 데이터를 모음 탭 타일로 볼 수 있어요. 값은 기기 밖으로 나가지 않아요.") + ) + feature( + symbol: "figure.run", + tint: .pink, + title: String(localized: "건강 데이터로 다짐 만들기"), + body: String(localized: "'매일 8,000보', '수면 8시간', '달리기 30분'처럼 건강 데이터를 목표로 삼는 다짐을 만들 수 있어요. 운동은 종목별로도 돼요. (프리미엄)") + ) + feature( + symbol: "questionmark.circle.fill", + tint: AppTheme.yellow, + title: String(localized: "도움말 새 단장"), + body: String(localized: "도움말 전체 문구를 더 자연스럽게 다듬고, 새 기능 사용법을 더했어요.") + ) + + Label { + Text("아이폰·아이패드·맥을 함께 쓰신다면 모든 기기에서 하루 다님을 업데이트해 주세요. 버전이 섞이면 새 기능이 일부 기기에서 다르게 보일 수 있어요.") + .font(.footnote) + .foregroundStyle(.secondary) + } icon: { + Image(systemName: "arrow.triangle.2.circlepath") + .foregroundStyle(AppTheme.green) + } + .padding(.top, 2) + } + .padding(.horizontal, 24) + .padding(.bottom, 16) + } + Button { + dismiss() + } label: { + Text("시작하기") + .font(.headline) + .frame(maxWidth: .infinity) + .padding(.vertical, 14) + } + .buttonStyle(.borderedProminent) + .tint(AppTheme.green) + .padding(.horizontal, 24) + .padding(.bottom, 20) + } + .background(AppTheme.background) + } + + private func feature(symbol: String, tint: Color, title: String, body text: String) -> some View { + HStack(alignment: .top, spacing: 14) { + Image(systemName: symbol) + .font(.title2) + .foregroundStyle(tint) + .frame(width: 34) + VStack(alignment: .leading, spacing: 3) { + Text(title) + .font(.subheadline.weight(.semibold)) + Text(text) + .font(.footnote) + .foregroundStyle(.secondary) + .fixedSize(horizontal: false, vertical: true) + } + } + } +} diff --git a/myApp/HaruDanim/Widgets/Localizable.xcstrings b/myApp/HaruDanim/Widgets/Localizable.xcstrings index 9b5ce57..455e7b8 100644 --- a/myApp/HaruDanim/Widgets/Localizable.xcstrings +++ b/myApp/HaruDanim/Widgets/Localizable.xcstrings @@ -279,6 +279,54 @@ } } }, + "%@L": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ L" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@L" + } + } + } + }, + "%@kcal": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ kcal" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@kcal" + } + } + } + }, + "%@km": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ km" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@km" + } + } + } + }, "%@까지": { "localizations": { "en": { @@ -295,6 +343,22 @@ } } }, + "%@보": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@ steps" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@歩" + } + } + } + }, "%@은(는) 이미 측정 중이에요.": { "localizations": { "en": { @@ -966,6 +1030,22 @@ } } }, + "건강 데이터": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Health data" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヘルスデータ" + } + } + } + }, "건강한 생활 습관": { "localizations": { "en": { @@ -982,6 +1062,70 @@ } } }, + "걷기 운동": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Walking" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ウォーキング" + } + } + } + }, + "걸음 수": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Steps" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "歩数" + } + } + } + }, + "고강도 인터벌(HIIT)": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "HIIT" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "HIIT" + } + } + } + }, + "골프": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Golf" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ゴルフ" + } + } + } + }, "그래프로 보여줄 행동들과 기간, 테마를 선택하세요. 크기에 따라 소형 2개·중형 4개·대형 6개까지 그려져요.": { "localizations": { "en": { @@ -998,6 +1142,22 @@ } } }, + "근력 운동": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Strength training" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "筋力トレーニング" + } + } + } + }, "글래스 버블 메뉴": { "localizations": { "en": { @@ -1063,6 +1223,38 @@ } } }, + "기타 운동": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Other workouts" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "その他の運動" + } + } + } + }, + "나머지 행동": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Other actions" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "その他のアクション" + } + } + } + }, "날짜": { "localizations": { "en": { @@ -1095,6 +1287,22 @@ } } }, + "농구": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Basketball" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "バスケットボール" + } + } + } + }, "누적값 표시": { "localizations": { "en": { @@ -1459,6 +1667,38 @@ } } }, + "댄스": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Dance" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ダンス" + } + } + } + }, + "데이터 없음": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "No data" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "データなし" + } + } + } + }, "독서": { "localizations": { "en": { @@ -1475,6 +1715,22 @@ } } }, + "등산": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Hiking" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "登山" + } + } + } + }, "라이트 모드 고정": { "localizations": { "en": { @@ -1491,6 +1747,22 @@ } } }, + "마음챙김": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Mindfulness" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "マインドフルネス" + } + } + } + }, "매달": { "localizations": { "en": { @@ -1930,6 +2202,22 @@ } } }, + "물 섭취": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Water intake" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "水分摂取" + } + } + } + }, "미달성 종료": { "localizations": { "en": { @@ -1946,6 +2234,38 @@ } } }, + "배드민턴": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Badminton" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "バドミントン" + } + } + } + }, + "복싱": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Boxing" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ボクシング" + } + } + } + }, "사용 안 함": { "localizations": { "en": { @@ -1962,6 +2282,22 @@ } } }, + "사이클": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Cycling" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "サイクリング" + } + } + } + }, "선택 안 함": { "localizations": { "en": { @@ -2011,6 +2347,38 @@ } } }, + "수면": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Sleep" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "睡眠" + } + } + } + }, + "수영": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Swimming" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "水泳" + } + } + } + }, "수행일 아님": { "localizations": { "en": { @@ -2043,6 +2411,22 @@ } } }, + "스트레칭": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Stretching" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ストレッチ" + } + } + } + }, "시간": { "localizations": { "en": { @@ -2267,6 +2651,22 @@ } } }, + "야구": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Baseball" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "野球" + } + } + } + }, "연속 %lld달": { "localizations": { "en": { @@ -2379,6 +2779,22 @@ } } }, + "요가": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Yoga" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ヨガ" + } + } + } + }, "요일 지정": { "localizations": { "en": { @@ -2395,6 +2811,22 @@ } } }, + "운동 시간": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Exercise time" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "運動時間" + } + } + } + }, "원형 게이지": { "localizations": { "en": { @@ -2460,6 +2892,22 @@ } } }, + "이동 거리": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Distance" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "移動距離" + } + } + } + }, "이번 달": { "localizations": { "en": { @@ -2605,6 +3053,22 @@ } } }, + "일어서기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Stand hours" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "スタンド時間" + } + } + } + }, "일주일 (하루 단위)": { "localizations": { "en": { @@ -2781,6 +3245,22 @@ } } }, + "줄넘기": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Jump rope" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "縄跳び" + } + } + } + }, "중형 위젯 구성": { "localizations": { "en": { @@ -2797,6 +3277,22 @@ } } }, + "즐겨찾기 행동": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Favorite actions" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "お気に入りのアクション" + } + } + } + }, "지금 측정 중인 행동이 없어요": { "localizations": { "en": { @@ -2941,6 +3437,22 @@ } } }, + "축구": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Soccer" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "サッカー" + } + } + } + }, "측정 종료": { "localizations": { "en": { @@ -3053,6 +3565,22 @@ } } }, + "테니스": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Tennis" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "テニス" + } + } + } + }, "테마": { "localizations": { "en": { @@ -3230,6 +3758,22 @@ } } }, + "필라테스": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Pilates" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ピラティス" + } + } + } + }, "하루": { "localizations": { "en": { @@ -3663,6 +4207,22 @@ } } }, + "활동 에너지": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Active energy" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アクティブエネルギー" + } + } + } + }, "횟수": { "localizations": { "en": {