From b5903957cbdca57641b452fdb86c77da79ae20a1 Mon Sep 17 00:00:00 2001 From: JunYoung Date: Sat, 10 Oct 2026 11:51:56 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=ED=95=A0=20=EC=9D=BC=20=ED=83=AD:=20?= =?UTF-8?q?=EB=94=94=EB=8D=B0=EC=9D=B4=20=EC=B9=B4=EB=93=9C=20=C2=B7=20?= =?UTF-8?q?=EB=AC=B6=EC=9D=8C=20=EC=88=9C=EC=84=9C=20=C2=B7=20'=EC=98=A4?= =?UTF-8?q?=EB=8A=98=EB=A1=9C'=20=EA=B8=80=EC=9E=90=20=EB=B2=84=ED=8A=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 디데이를 목록 안에서 말하려던 시도 둘을 되돌렸다. 행에 D-7 조각을 붙이면 태그 줄만 길어지고, '나중' 칸에서 맨 위로 끌어올리면 날짜순이 깨져 목록을 읽는 리듬이 끊긴다. 남은 날을 세는 일은 목록 바깥이 맡는 게 맞다 - 맨 위에 가로로 넘겨 보는 디데이 카드를 되살렸다. 가장 가까운 하나만 채운다. 행에는 깃발만 둔다. 묶음 순서를 바꿨다. 지난 할 일 → 날짜를 안 정한 할 일 → 오늘 → 이번 주 → 나중. 앞의 둘은 "언제 할지 아직 안 정해진 것"이라 사람이 손을 대야 움직이고, 날짜가 이미 정해진 것들은 그 뒤에 시간순으로 따라온다. '오늘로 가져오기'를 화살표 동그라미에서 '오늘로' 글자 칩으로 바꿨다. 그 화살표가 무엇을 뜻하는지 알 수가 없었다 - 위로 올린다는 건지, 순서를 바꾼다는 건지, 접는다는 건지. 날짜를 오늘로 바꾸는 일에는 가리킬 방향이 애초에 없다. 아이콘이 뜻을 못 나르는 자리에서는 글자가 낫다. 테스트 283건 통과. 시뮬레이터에서 눈으로 확인했다. Co-Authored-By: Claude Opus 5 --- Mosco/App/Common/DesignSystem/README.md | 31 +- Mosco/App/Features/Calendar/TodoRow.swift | 29 +- .../Features/TodoList/TodoListScreen.swift | 126 +- Mosco/MoscoTests/TodoListPageTests.swift | 76 +- Mosco/Shared/Localizable.xcstrings | 6392 +++++++++-------- Mosco/Shared/TodoListPage.swift | 55 +- docs/ANALYTICS.md | 108 - 7 files changed, 3429 insertions(+), 3388 deletions(-) delete mode 100644 docs/ANALYTICS.md diff --git a/Mosco/App/Common/DesignSystem/README.md b/Mosco/App/Common/DesignSystem/README.md index 72b0de1..a442292 100644 --- a/Mosco/App/Common/DesignSystem/README.md +++ b/Mosco/App/Common/DesignSystem/README.md @@ -311,11 +311,13 @@ Toss/Apple류의 절제된 UI를 기준으로 삼는다 — 원색 대신 톤 걷어냈다 — 탭 바에 할 일 탭이 늘 보이므로 **그 줄이 가리키는 곳이 한 번 누르면 닿는 자리**고, 매일 보는 화면에서 "저기 더 있다"를 되풀이할 이유가 없다. 남은 개수는 '할 일 N개 남음' 머리글이 말한다(오늘일 때만). -- **디데이는 카드가 아니라 행에 붙는 `D-7` 조각이다 (1.4.4).** 카드가 답하던 것이 - "며칠 남았나" 하나뿐이었고, 그건 섹션 하나를 차지할 질문이 아니다. 날짜가 함께 - 보이는 화면(할 일 탭)에서만 숫자로 세고, 하루 페이지에서는 날짜가 이미 머리에 - 있으니 깃발만 둔다. 지난 디데이는 `D+3`으로 계속 보인다 — 지났다고 숨기면 왜 - 사라졌는지 알 수 없고, 지난 디데이야말로 눈에 띄어야 한다. +- **디데이 카드는 할 일 탭 맨 위로 옮겼다 (1.4.4).** 오늘 페이지에서 걷어냈다가 + 할 일 탭 머리에 되살렸다. 그 사이에 **목록 안에서 디데이를 말해보려고 두 번 + 시도했고 둘 다 되돌렸다** — 행에 `D-7` 조각을 붙이면 태그 줄만 길어지고, + '나중' 칸에서 디데이를 맨 위로 끌어올리면 날짜순이 깨져 목록을 읽는 리듬이 + 끊긴다. 남은 날을 세는 일은 **목록 바깥**이 맡는 게 맞다. 가로로 넘겨 보는 + 카드이고 가장 가까운 하나만 채운다. 행에는 깃발만 둔다. 지난 디데이도 `D+3`으로 + 계속 보인다 — 지났다고 숨기면 왜 사라졌는지 알 수 없다. - **메모는 오늘 전문, 다른 날은 세 줄.** 예전 오늘 탭과 하루 페이지의 규칙을 그대로 옮겼다. - **돌아가기 버튼은 필요할 때만 떠오른다.** 다른 달을 보면 '↶ 이번 달', 다른 날 @@ -330,12 +332,19 @@ Toss/Apple류의 절제된 UI를 기준으로 삼는다 — 원색 대신 톤 밀려 들어오면 쓰던 것을 잃은 것처럼 보인다. 하루 페이지를 열 때는 키보드부터 내린다. - **검색은 달력 머리의 돋보기.** 오늘 탭 머리에 있던 것을 옮겼다. 제목·메모, 날짜와 무관하게 전체. 결과의 수정 버튼은 그날 페이지로 데려간다. -- **할 일 탭은 날짜가 아니라 급한 순서로 묶는다 (1.4.4).** 지난 것 → 오늘 → - 이번 주 → 나중 → 날짜 없음. 달력이 이미 "언제"에 답하므로, 이 탭은 "무엇부터"에 - 답한다 — 위에서부터 읽으면 그게 곧 할 순서다. '이번 주'는 달력의 주가 아니라 - **앞으로 이레**다(수요일에 열었는데 이틀치만 보이면 쓸모가 없다). '나중'에서만 - 디데이를 맨 위로 올린다 — 석 달 뒤 시험은 날짜순으로는 저 아래인데, 디데이로 - 표시했다는 건 자주 보고 싶다는 뜻이다. 판정은 `TodoListPage`(Shared). +- **할 일 탭은 손이 가야 하는 것 먼저, 그다음 시간순이다 (1.4.4).** + 디데이 카드 → 지난 할 일 → 날짜를 안 정한 할 일 → 오늘 → 이번 주 → 나중. + 앞의 둘은 **"언제 할지 아직 안 정해진 것"**이라 사람이 손을 대야 움직인다. + 날짜가 이미 정해진 것들은 그 뒤에 시간순으로 따라온다. 달력이 이미 "언제"에 + 답하므로 이 탭은 "무엇부터"에 답한다. '이번 주'는 달력의 주가 아니라 **앞으로 + 이레**다(수요일에 열었는데 이틀치만 보이면 쓸모가 없다). 판정은 + `TodoListPage`(Shared). +- **'오늘로 가져오기'는 아이콘이 아니라 글자다 (1.4.4).** 지난 할 일과 날짜를 + 안 정한 할 일 오른쪽에 `오늘로` 칩이 선다. 예전엔 위를 가리키는 화살표 + 동그라미였는데, 그 화살표가 무엇을 뜻하는지 알 수가 없었다 — 위로 올린다는 + 건지, 순서를 바꾼다는 건지, 접는다는 건지. **날짜를 오늘로 바꾸는 일에는 + 가리킬 방향이 애초에 없다.** 아이콘이 뜻을 못 나르는 자리에서는 글자가 낫다. + 셀의 다른 칩과 같은 모양이라 줄에 섞여도 튀지 않는다. - **할 일 탭에도 같은 입력창이 있고, 거기서 적으면 날짜 없이 저장된다.** 1.4.0에서 탭을 없앴던 이유가 "입력창을 못 찾아서"였으니 새 탭을 만들며 같은 실수를 되풀이하지 않는다. 날짜를 가로지르는 목록이라 오늘로 밀어넣지도 않는다 — diff --git a/Mosco/App/Features/Calendar/TodoRow.swift b/Mosco/App/Features/Calendar/TodoRow.swift index d513c6a..cb15dd2 100644 --- a/Mosco/App/Features/Calendar/TodoRow.swift +++ b/Mosco/App/Features/Calendar/TodoRow.swift @@ -53,16 +53,6 @@ struct TodoRow: View { /// 입구라 각자 자기 상태를 갖는다. @State private var showsMemoEditor = false - /// `D-7` · `D-DAY` · `D+3`. 지난 디데이도 센다 — 지났다고 숨기면 왜 사라졌는지 - /// 알 수 없고, 지난 디데이야말로 눈에 띄어야 하는 것이다. - private func dDayLabel(_ days: Int) -> String { - switch days { - case 0: String(localized: "D-DAY") - case 1...: String(localized: "D-\(days)") - default: String(localized: "D+\(-days)") - } - } - private var isDone: Bool { if let occurrenceDate { return todo.isCompleted(on: occurrenceDate) } return todo.isCompleted @@ -119,25 +109,16 @@ struct TodoRow: View { // 디데이로 표시해둔 항목. 남은 날짜는 적지 않는다 — 옆의 날짜 // 태그와 같은 말을 두 번 하는 셈이고, 여기서 알고 싶은 건 // "이게 그 챙기는 일이구나"뿐이다. 남은 날짜를 세는 일은 - // 날짜가 함께 보이는 화면(할 일 탭)에서만 한다. + // 할 일 탭 맨 위의 디데이 카드가 맡는다 — 한 줄에 두 번 + // 말하면 태그 줄만 길어진다. // // 별이 아니라 깃발인 건, 별은 어느 앱에서나 "즐겨찾기/중요"라는 // 뜻으로 굳어 있어서다. 디데이는 중요도가 아니라 **날을 세는 // 표시**고, 깃발은 달력 위 한 지점을 찍는 말에 가깝다. if todo.isDDay { - // **날짜가 보이는 화면에서는 남은 날을 센다.** 할 일 탭은 - // 디데이 카드를 따로 두지 않고 이 한 조각으로 대신한다 — - // 카드가 답하던 것이 "며칠 남았나" 하나뿐이었다. - // 하루 페이지에서는 날짜가 이미 머리에 있어서 깃발만 둔다. - if showsDate, let days = todo.dDayCount(from: .now) { - Text(dDayLabel(days)) - .font(.system(size: 10, weight: .bold)) - .foregroundStyle(MoscoPalette.textSecondary) - } else { - Image(systemName: "flag.fill") - .font(.system(size: 10, weight: .semibold)) - .foregroundStyle(MoscoPalette.textSecondary) - } + Image(systemName: "flag.fill") + .font(.system(size: 10, weight: .semibold)) + .foregroundStyle(MoscoPalette.textSecondary) } // 반복 일정은 한 번짜리와 겉모습이 같아서, 목록에서 이게 diff --git a/Mosco/App/Features/TodoList/TodoListScreen.swift b/Mosco/App/Features/TodoList/TodoListScreen.swift index 406918c..2ee7631 100644 --- a/Mosco/App/Features/TodoList/TodoListScreen.swift +++ b/Mosco/App/Features/TodoList/TodoListScreen.swift @@ -76,12 +76,17 @@ private struct TodoListContent: View { } } + private var dDayTodos: [TodoItem] { + TodoListPage.dDays(in: visibleTodos, today: today) + } + @ViewBuilder private var list: some View { - if sections.isEmpty { + if sections.isEmpty && dDayTodos.isEmpty { emptyState } else { List { + if !dDayTodos.isEmpty { dDaySection } ForEach(sections, id: \.section) { group in Section { ForEach(group.todos) { todo in @@ -102,6 +107,69 @@ private struct TodoListContent: View { } } + /// 맨 위 디데이 줄. **세로로 쌓지 않고 가로로 넘겨 본다** — 세로로 쌓으면 + /// 디데이 몇 개만으로 정작 할 일이 화면 밖으로 밀려난다. + private var dDaySection: some View { + Section { + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 10) { + ForEach(dDayTodos) { todo in + dDayCard(todo, isNearest: todo.id == dDayTodos.first?.id) + } + } + .padding(.horizontal, Metrics.spacingMD) + } + .scrollClipDisabled() + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + .listRowInsets(EdgeInsets(top: 2, leading: 0, bottom: 0, trailing: 0)) + } header: { + header(title: String(localized: "디데이"), count: nil, tinted: false) + } + } + + /// 가장 가까운 하나만 채운다 — 나머지는 옅게. 그래야 "다음은 이것"이 한눈에 선다. + private func dDayCard(_ todo: TodoItem, isNearest: Bool) -> some View { + let day = Calendar.current.startOfDay(for: todo.date ?? today) + let left = Calendar.current.dateComponents([.day], from: today, to: day).day ?? 0 + return VStack(alignment: .leading, spacing: 0) { + Text(dDayLabel(left)) + .font(.system(size: 27, weight: .heavy, design: .rounded).monospacedDigit()) + .foregroundStyle(isNearest ? .white : MoscoPalette.accent) + .lineLimit(1) + .minimumScaleFactor(0.7) + Spacer(minLength: 6) + Text(todo.title) + .font(.moscoCaption().weight(.semibold)) + .foregroundStyle(isNearest ? .white : MoscoPalette.textPrimary) + .lineLimit(1) + Text(day.localizedMonthDayWeekday) + .font(.system(size: 11)) + .foregroundStyle(isNearest ? .white.opacity(0.75) : MoscoPalette.textSecondary) + .lineLimit(1) + } + .padding(14) + .frame(width: 138, height: 112, alignment: .topLeading) + // 유리도 그림자도 쓰지 않는다 — 셀과 같은 이유로 단색 채우기만 쓴다. + .background( + isNearest ? MoscoPalette.accent : MoscoPalette.accent.opacity(0.12), + in: RoundedRectangle(cornerRadius: 20, style: .continuous) + ) + .contentShape(Rectangle()) + .onTapGesture { editingTodo = todo } + .accessibilityElement(children: .combine) + } + + /// `D-7` · `D-DAY` · `D+3`. 지난 디데이도 센다 — 지났다고 숨기면 왜 사라졌는지 + /// 알 수 없고, 지난 디데이야말로 눈에 띄어야 하는 것이다. + private func dDayLabel(_ days: Int) -> String { + switch days { + case 0: String(localized: "D-DAY") + case 1...: String(localized: "D-\(days)") + default: String(localized: "D+\(-days)") + } + } + private func row(_ todo: TodoItem, in section: TodoListPage.Section) -> some View { HStack(spacing: 8) { TodoRow( @@ -118,20 +186,10 @@ private struct TodoListContent: View { memoDisplay: .compact ) - // 지난 것과 날짜 없는 것에만 '오늘로 가져오기'를 붙인다. 앞날 일정은 - // 당길 이유가 없고, 오늘 것은 이미 오늘이다. + // 지난 것과 날짜 없는 것에만 붙인다. 앞날 일정은 당길 이유가 없고, + // 오늘 것은 이미 오늘이다. if section == .overdue || section == .noDate { - Button { - withAnimation(.easeInOut(duration: 0.25)) { - todo.pullIntoToday(today) - } - } label: { - Image(systemName: "arrow.up.circle.fill") - .font(.system(size: 24)) - .foregroundStyle(MoscoPalette.accent) - } - .buttonStyle(.plain) - .accessibilityLabel("오늘로 가져오기") + pullIntoTodayButton(todo) } } .listRowBackground(Color.clear) @@ -146,21 +204,51 @@ private struct TodoListContent: View { ) } + /// **글자로 쓴다.** 예전엔 위를 가리키는 화살표 동그라미였는데, 그 화살표가 + /// 무엇을 뜻하는지 알 수가 없었다 — 위로 올린다는 건지, 순서를 바꾼다는 건지, + /// 접는다는 건지. 날짜를 오늘로 바꾸는 일에는 가리킬 방향이 애초에 없다. + /// 아이콘이 뜻을 못 나르면 글자가 낫다. 셀의 다른 칩과 같은 모양이라 줄에 + /// 섞여도 튀지 않는다. + private func pullIntoTodayButton(_ todo: TodoItem) -> some View { + Button { + withAnimation(.easeInOut(duration: 0.25)) { + todo.pullIntoToday(today) + } + } label: { + Text("오늘로") + .font(.moscoCaption().weight(.semibold)) + .foregroundStyle(MoscoPalette.accent) + .padding(.horizontal, 10) + .padding(.vertical, 6) + .background(MoscoPalette.accent.opacity(0.12), in: Capsule()) + .contentShape(Capsule()) + } + .buttonStyle(.plain) + .accessibilityLabel("오늘로 가져오기") + .accessibilityHint("날짜를 오늘로 바꿉니다") + } + /// 화면에 두 개 이상의 캘린더가 섞여 있을 때만 소속을 밝힌다. private var showsCalendarTag: Bool { Set(visibleTodos.compactMap { $0.calendar?.id }).count > 1 } private func header(_ section: TodoListPage.Section, count: Int) -> some View { + header(title: title(for: section), count: count, tinted: section == .overdue) + } + + /// `tinted`는 지난 할 일에만 쓴다. **한 화면에 경고색이 여러 번 나오면 아무것도 + /// 경고가 아니게 된다**(DesignSystem/README.md의 "색은 한 행에 한 번"). + private func header(title: String, count: Int?, tinted: Bool) -> some View { HStack(spacing: 6) { - Text(title(for: section)) - Text("\(count)").foregroundStyle(MoscoPalette.textSecondary.opacity(0.6)) + Text(title) + if let count { + Text("\(count)").foregroundStyle(MoscoPalette.textSecondary.opacity(0.6)) + } Spacer() } .font(.moscoCaption()) - // 지난 것만 색을 쓴다. **한 화면에 경고색이 여러 번 나오면 아무것도 - // 경고가 아니게 된다**(DesignSystem/README.md의 "색은 한 행에 한 번"). - .foregroundStyle(section == .overdue ? MoscoPalette.must : MoscoPalette.textSecondary) + .foregroundStyle(tinted ? MoscoPalette.must : MoscoPalette.textSecondary) } private func title(for section: TodoListPage.Section) -> String { diff --git a/Mosco/MoscoTests/TodoListPageTests.swift b/Mosco/MoscoTests/TodoListPageTests.swift index e21cdea..72c041b 100644 --- a/Mosco/MoscoTests/TodoListPageTests.swift +++ b/Mosco/MoscoTests/TodoListPageTests.swift @@ -139,26 +139,16 @@ struct TodoListPageTests { #expect(sorted.map(\.title) == ["아침 회의", "저녁 약속", "끝낸 일"]) } - /// 석 달 뒤 시험은 날짜순으로는 저 아래인데, 디데이로 표시했다는 건 - /// "자주 보고 싶다"는 뜻이다. - @Test("나중_칸에서는_디데이가_맨_위로_온다") - func 나중_디데이() { + /// 한때 '나중' 칸에서 디데이를 맨 위로 끌어올렸다. 날짜순을 깨는 예외라 + /// 목록을 읽는 리듬이 끊겼다 — 되돌렸고, 그 약속을 여기서 지킨다. + @Test("디데이라고_순서를_앞당기지_않는다") + func 디데이는_순서를_안_바꾼다() { let 가까운_것 = make("다음 달 약속", date: day("2026-11-01")) let 시험 = make("시험", date: day("2027-01-20"), isDDay: true) - let sorted = TodoListPage.sort([가까운_것, 시험], in: .later, today: today, calendar: calendar) + let sorted = TodoListPage.sort([시험, 가까운_것], in: .later, today: today, calendar: calendar) - #expect(sorted.map(\.title) == ["시험", "다음 달 약속"]) - } - - @Test("이번_주_칸에서는_디데이라고_올라오지_않는다") - func 이번_주_디데이() { - let 모레 = make("모레 일", date: day("2026-10-11")) - let 디데이 = make("닷새 뒤 디데이", date: day("2026-10-14"), isDDay: true) - - let sorted = TodoListPage.sort([디데이, 모레], in: .thisWeek, today: today, calendar: calendar) - - #expect(sorted.map(\.title) == ["모레 일", "닷새 뒤 디데이"], "가까운 주에서는 날짜순이 곧 할 순서다") + #expect(sorted.map(\.title) == ["다음 달 약속", "시험"], "날짜순이 곧 할 순서다") } @Test("지난_칸은_오래된_것부터다") @@ -183,7 +173,9 @@ struct TodoListPageTests { #expect(sections.map(\.section) == [.today], "화면이 매번 비었는지 따져보지 않아도 되게") } - @Test("묶음은_급한_순서로_나온다") + /// 지난 할 일과 날짜를 안 정한 할 일이 먼저다 — 둘 다 "언제 할지 아직 안 + /// 정해진 것"이라 사람이 손을 대야 움직인다. 그다음이 시간순이다. + @Test("손이_가야_하는_것이_먼저_오고_그_뒤가_시간순이다") func 묶음_순서() { make("어제", date: day("2026-10-08")) make("오늘", date: today) @@ -194,23 +186,49 @@ struct TodoListPageTests { let sections = TodoListPage.sections(in: todos, today: today, calendar: calendar) - #expect(sections.map(\.section) == [.overdue, .today, .thisWeek, .later, .noDate]) + #expect(sections.map(\.section) == [.overdue, .noDate, .today, .thisWeek, .later]) } - // MARK: - 디데이 세기 + // MARK: - 디데이 카드 - @Test("디데이는_남은_날을_센다") - func 디데이_세기() { - let 이레_뒤 = make("시험", date: day("2026-10-16"), isDDay: true) - #expect(이레_뒤.dDayCount(from: today, calendar: calendar) == 7) + /// 디데이가 답하는 것은 "며칠 남았나" 하나다. 그걸 목록 안에서 말하려고 두 번 + /// 시도했고 둘 다 되돌렸다 — 행에 `D-7` 조각을 붙이는 것, '나중' 칸에서 맨 + /// 위로 끌어올리는 것. 이제 목록 바깥 카드가 맡는다. + @Test("디데이로_표시한_것만_카드에_선다") + func 디데이_카드() { + make("시험", date: day("2026-10-20"), isDDay: true) + make("보통 일", date: day("2026-10-20")) + let todos = (try? context.fetch(FetchDescriptor())) ?? [] - let 오늘_것 = make("오늘이 그날", date: today, isDDay: true) - #expect(오늘_것.dDayCount(from: today, calendar: calendar) == 0) + #expect(TodoListPage.dDays(in: todos, today: today, calendar: calendar).map(\.title) == ["시험"]) } - @Test("디데이로_표시하지_않았으면_세지_않는다") - func 디데이_아님() { - #expect(make("보통 일", date: day("2026-10-16")).dDayCount(from: today, calendar: calendar) == nil) - #expect(make("날짜 없음", date: nil, isDDay: true).dDayCount(from: today, calendar: calendar) == nil) + @Test("카드는_가까운_순이다") + func 디데이_순서() { + make("먼 것", date: day("2027-01-20"), isDDay: true) + make("가까운 것", date: day("2026-10-20"), isDDay: true) + let todos = (try? context.fetch(FetchDescriptor())) ?? [] + + let titles = TodoListPage.dDays(in: todos, today: today, calendar: calendar).map(\.title) + #expect(titles == ["가까운 것", "먼 것"]) + } + + /// 날짜가 지났어도 안 끝냈으면 '지난 할 일' 칸에 그대로 있다. 카드에서까지 + /// 사라지면 왜 없어졌는지 알 수 없다. + @Test("지난_디데이도_카드에_남는다") + func 지난_디데이() { + make("놓친 마감", date: day("2026-10-05"), isDDay: true) + let todos = (try? context.fetch(FetchDescriptor())) ?? [] + + #expect(TodoListPage.dDays(in: todos, today: today, calendar: calendar).count == 1) + } + + @Test("끝낸_디데이와_날짜_없는_디데이는_카드에_안_선다") + func 카드에서_빠지는_것() { + make("끝냄", date: day("2026-10-20"), completed: true, isDDay: true) + make("날짜 없음", date: nil, isDDay: true) + let todos = (try? context.fetch(FetchDescriptor())) ?? [] + + #expect(TodoListPage.dDays(in: todos, today: today, calendar: calendar).isEmpty) } } diff --git a/Mosco/Shared/Localizable.xcstrings b/Mosco/Shared/Localizable.xcstrings index 3b54623..a0c037c 100644 --- a/Mosco/Shared/Localizable.xcstrings +++ b/Mosco/Shared/Localizable.xcstrings @@ -1,4859 +1,4913 @@ { - "sourceLanguage": "en", - "strings": { - " 를 누르세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": " on the right" + "sourceLanguage" : "en", + "strings" : { + " 를 누르세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : " on the right" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": " をタップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : " をタップ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": " 를 누르세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : " 를 누르세요" } } } }, - "%@로 돌아가기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Back to %@" + "%@로 돌아가기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Back to %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%@に戻る" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@に戻る" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "%@로 돌아가기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@로 돌아가기" } } } }, - "%@에 시작해요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Starts at %@" + "%@에 시작해요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Starts at %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%@に始まります" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@に始まります" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "%@에 시작해요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@에 시작해요" } } } }, - "%@으로 보기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Show as %@" + "%@으로 보기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show as %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%@で表示" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@で表示" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "%@으로 보기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@으로 보기" } } } }, - "%lld개": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld" + "%lld" : { + + }, + "%lld개" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%lld個" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld個" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "%lld개" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld개" } } } }, - "%lld개 남음": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld left" + "%lld개 남음" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld left" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "残り%lld件" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "残り%lld件" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "%lld개 남음" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld개 남음" } } } }, - "%lld분 뒤 %@에 시작해요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Starts in %lld min, at %@" + "%lld분 뒤 %@에 시작해요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Starts in %lld min, at %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%lld分後、%@に始まります" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld分後、%@に始まります" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "%lld분 뒤 %@에 시작해요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld분 뒤 %@에 시작해요" } } } }, - "%lld분 전": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld min before" + "%lld분 전" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld min before" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%lld分前" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld分前" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "%lld분 전" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld분 전" } } } }, - "%lld시간 전": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld hr before" + "%lld시간 전" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld hr before" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%lld時間前" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld時間前" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "%lld시간 전" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld시간 전" } } } }, - "%lld일마다": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Every %lld days" + "%lld일마다" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Every %lld days" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%lld日ごと" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld日ごと" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "%lld일마다" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld일마다" } } } }, - "+%lld개 더": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "+%lld more" + "+%lld개 더" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "+%lld more" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ほか%lld件" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ほか%lld件" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "+%lld개 더" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "+%lld개 더" } } } }, - "8시간 안에 시작하는 할 일만 띄울 수 있어요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Only to-dos starting within 8 hours can be shown" + "8시간 안에 시작하는 할 일만 띄울 수 있어요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Only to-dos starting within 8 hours can be shown" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "8時間以内に始まるやることだけ表示できます" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "8時間以内に始まるやることだけ表示できます" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "8시간 안에 시작하는 할 일만 띄울 수 있어요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "8시간 안에 시작하는 할 일만 띄울 수 있어요" } } } }, - "Mosco를 찾아 '오늘 할 일'을 고르세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Find Mosco and choose Today's To-Dos" + "D-%lld" : { + + }, + "D-DAY" : { + + }, + "D+%lld" : { + + }, + "iCloud 동기화" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud Sync" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Moscoを探して「今日のやること」を選択" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud同期" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "Mosco를 찾아 '오늘 할 일'을 고르세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud 동기화" } } } }, - "iCloud 동기화": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "iCloud Sync" + "iCloud 로그인 필요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud sign-in needed" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "iCloud同期" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloudへのサインインが必要" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "iCloud 동기화" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud 로그인 필요" } } } }, - "iCloud 로그인 필요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "iCloud sign-in needed" + "iCloud 저장소를 열지 못해 이 기기에만 저장하고 있어요. 앱을 지우면 함께 사라집니다." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Couldn't open iCloud storage, so everything is saved on this device only. Deleting the app deletes it too." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "iCloudへのサインインが必要" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloudストレージを開けなかったため、この端末にのみ保存しています。アプリを削除すると一緒に消えます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "iCloud 로그인 필요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud 저장소를 열지 못해 이 기기에만 저장하고 있어요. 앱을 지우면 함께 사라집니다." } } } }, - "iCloud 저장소를 열지 못해 이 기기에만 저장하고 있어요. 앱을 지우면 함께 사라집니다.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Couldn't open iCloud storage, so everything is saved on this device only. Deleting the app deletes it too." + "iCloud에 로그인하지 않아 이 기기에만 저장돼요. 앱을 지우면 함께 사라집니다." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You're not signed in to iCloud, so everything stays on this device. Deleting the app deletes it too." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "iCloudストレージを開けなかったため、この端末にのみ保存しています。アプリを削除すると一緒に消えます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloudにサインインしていないため、この端末にのみ保存されます。アプリを削除すると一緒に消えます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "iCloud 저장소를 열지 못해 이 기기에만 저장하고 있어요. 앱을 지우면 함께 사라집니다." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud에 로그인하지 않아 이 기기에만 저장돼요. 앱을 지우면 함께 사라집니다." } } } }, - "iCloud에 로그인하지 않아 이 기기에만 저장돼요. 앱을 지우면 함께 사라집니다.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "You're not signed in to iCloud, so everything stays on this device. Deleting the app deletes it too." + "Mosco를 찾아 '오늘 할 일'을 고르세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Find Mosco and choose Today's To-Dos" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "iCloudにサインインしていないため、この端末にのみ保存されます。アプリを削除すると一緒に消えます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Moscoを探して「今日のやること」を選択" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "iCloud에 로그인하지 않아 이 기기에만 저장돼요. 앱을 지우면 함께 사라집니다." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mosco를 찾아 '오늘 할 일'을 고르세요" } } } }, - "가져오지 못했어요. 잠시 후 다시 시도할게요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Couldn't load it. We'll try again shortly." + "가져오지 못했어요. 잠시 후 다시 시도할게요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Couldn't load it. We'll try again shortly." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "取得できませんでした。しばらくして再試行します。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "取得できませんでした。しばらくして再試行します。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "가져오지 못했어요. 잠시 후 다시 시도할게요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "가져오지 못했어요. 잠시 후 다시 시도할게요." } } } }, - "개천절": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "National Foundation Day" + "개천절" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "National Foundation Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "開天節" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "開天節" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "개천절" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "개천절" } } } }, - "건너뛰기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Skip" + "건너뛰기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Skip" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "スキップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "スキップ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "건너뛰기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "건너뛰기" } } } }, - "건너뛰어도 설정에서 다시 볼 수 있어요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "You can replay this later in Settings" + "건너뛰어도 설정에서 다시 볼 수 있어요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You can replay this later in Settings" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "スキップしても設定からもう一度見られます" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "スキップしても設定からもう一度見られます" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "건너뛰어도 설정에서 다시 볼 수 있어요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "건너뛰어도 설정에서 다시 볼 수 있어요" } } } }, - "검색": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Search" + "검색" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Search" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "検索" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "検索" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "검색" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "검색" } } } }, - "계속": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Continue" + "계속" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Continue" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "続ける" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "続ける" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "계속" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "계속" } } } }, - "고른 색이 밝아서 글자가 안 보일까 봐 조금 어둡게 했어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "That color is quite bright, so we darkened it a little to keep text readable." + "고른 색이 밝아서 글자가 안 보일까 봐 조금 어둡게 했어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "That color is quite bright, so we darkened it a little to keep text readable." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "選んだ色が明るいため、文字が見えるよう少し暗くしました。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "選んだ色が明るいため、文字が見えるよう少し暗くしました。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "고른 색이 밝아서 글자가 안 보일까 봐 조금 어둡게 했어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "고른 색이 밝아서 글자가 안 보일까 봐 조금 어둡게 했어요." } } } }, - "광복절": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Liberation Day" + "광복절" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Liberation Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "光復節" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "光復節" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "광복절" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "광복절" } } } }, - "기기 설정에서 라이브 액티비티가 꺼져 있어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Live Activities are off in device Settings." + "그날 안 끝낸 일이 남아 있을 때만 알려줘요. 시간을 안 정한 일도 함께 세요." : { + + }, + "기기 ID" : { + + }, + "기기 ID %@ 복사하기" : { + + }, + "기기 설정에서 라이브 액티비티가 꺼져 있어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Live Activities are off in device Settings." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "端末の設定でライブアクティビティがオフになっています。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "端末の設定でライブアクティビティがオフになっています。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "기기 설정에서 라이브 액티비티가 꺼져 있어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "기기 설정에서 라이브 액티비티가 꺼져 있어요." } } } }, - "기기 설정에서 알림이 꺼져 있어요. 허용하면 켜둔 대로 다시 옵니다.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Notifications are off in device Settings. Allow them and your reminders will come through again." + "기기 설정에서 알림이 꺼져 있어요. 허용하면 켜둔 대로 다시 옵니다." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notifications are off in device Settings. Allow them and your reminders will come through again." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "端末の設定で通知がオフになっています。許可すると、設定どおりに届きます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "端末の設定で通知がオフになっています。許可すると、設定どおりに届きます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "기기 설정에서 알림이 꺼져 있어요. 허용하면 켜둔 대로 다시 옵니다." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "기기 설정에서 알림이 꺼져 있어요. 허용하면 켜둔 대로 다시 옵니다." } } } }, - "기기 설정이 iCloud 사용을 막고 있어요. 이 기기에만 저장되며, 앱을 지우면 함께 사라집니다.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Device settings are blocking iCloud. Everything stays on this device, and deleting the app deletes it too." + "기기 설정이 iCloud 사용을 막고 있어요. 이 기기에만 저장되며, 앱을 지우면 함께 사라집니다." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Device settings are blocking iCloud. Everything stays on this device, and deleting the app deletes it too." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "端末の設定でiCloudの使用が制限されています。この端末にのみ保存され、アプリを削除すると一緒に消えます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "端末の設定でiCloudの使用が制限されています。この端末にのみ保存され、アプリを削除すると一緒に消えます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "기기 설정이 iCloud 사용을 막고 있어요. 이 기기에만 저장되며, 앱을 지우면 함께 사라집니다." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "기기 설정이 iCloud 사용을 막고 있어요. 이 기기에만 저장되며, 앱을 지우면 함께 사라집니다." } } } }, - "기본": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Default" + "기본" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Default" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "デフォルト" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルト" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "기본" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "기본" } } } }, - "기본 카테고리는 삭제할 수 없어요. 이름과 색은 바꿀 수 있어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The default category can't be deleted. You can still change its name and color." + "기본 카테고리는 삭제할 수 없어요. 이름과 색은 바꿀 수 있어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The default category can't be deleted. You can still change its name and color." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "デフォルトのカテゴリは削除できません。名前と色は変更できます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルトのカテゴリは削除できません。名前と色は変更できます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "기본 카테고리는 삭제할 수 없어요. 이름과 색은 바꿀 수 있어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "기본 카테고리는 삭제할 수 없어요. 이름과 색은 바꿀 수 있어요." } } } }, - "기본 캘린더는 삭제할 수 없어요. 이름과 색은 바꿀 수 있어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The default calendar can't be deleted. You can still change its name and color." + "기본 캘린더는 삭제할 수 없어요. 이름과 색은 바꿀 수 있어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The default calendar can't be deleted. You can still change its name and color." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "デフォルトのカレンダーは削除できません。名前と色は変更できます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "デフォルトのカレンダーは削除できません。名前と色は変更できます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "기본 캘린더는 삭제할 수 없어요. 이름과 색은 바꿀 수 있어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "기본 캘린더는 삭제할 수 없어요. 이름과 색은 바꿀 수 있어요." } } } }, - "날씨": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Weather" + "나중" : { + + }, + "날씨" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Weather" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "天気" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "天気" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "날씨" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "날씨" } } } }, - "날씨 표시": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Show Weather" + "날씨 표시" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show Weather" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "天気を表示" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "天気を表示" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "날씨 표시" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "날씨 표시" } } } }, - "날짜": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Date" + "날짜" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Date" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "日付" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "日付" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "날짜" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "날짜" } } } }, - "날짜 설정": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Set Date" + "날짜 설정" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Set Date" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "日付を設定" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "日付を設定" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "날짜 설정" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "날짜 설정" } } } }, - "날짜 없음": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No Date" + "날짜 없음" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No Date" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "日付なし" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "日付なし" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "날짜 없음" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "날짜 없음" } } } }, - "날짜를 안 정한 할 일": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No Date" + "날짜를 안 정한 할 일" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No Date" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "日付未定" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "日付未定" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "날짜를 안 정한 할 일" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "날짜를 안 정한 할 일" } } } }, - "날짜를 정하지 않으면 '언젠가 할 일'에 담겨요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Without a date, it goes to your No Date list." + "날짜를 정하지 않으면 '언젠가 할 일'에 담겨요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Without a date, it goes to your No Date list." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "日付を決めないと「日付未定」に入ります。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "日付を決めないと「日付未定」に入ります。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "날짜를 정하지 않으면 '언젠가 할 일'에 담겨요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "날짜를 정하지 않으면 '언젠가 할 일'에 담겨요." } } } }, - "날짜와 시간": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Date & Time" + "날짜와 시간" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Date & Time" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "日付と時刻" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "日付と時刻" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "날짜와 시간" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "날짜와 시간" } } } }, - "남은 시간을 셀 수 없어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "There's no time left to count down." + "남은 시간을 셀 수 없어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "There's no time left to count down." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "残り時間を数えられません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "残り時間を数えられません。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "남은 시간을 셀 수 없어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "남은 시간을 셀 수 없어요." } } } }, - "다 하셨어요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "You're all set" + "내부 사용자" : { + + }, + "다 하셨어요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You're all set" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "これで完了です" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "これで完了です" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "다 하셨어요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "다 하셨어요" } } } }, - "다시 누르면 취소돼요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Tap again to undo" + "다시 누르면 취소돼요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap again to undo" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "もう一度タップすると取り消せます" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "もう一度タップすると取り消せます" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "다시 누르면 취소돼요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "다시 누르면 취소돼요" } } } }, - "다음 해": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Next Year" + "다음 해" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Next Year" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "次の年" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "次の年" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "다음 해" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "다음 해" } } } }, - "달력": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Calendar" + "달력" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calendar" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カレンダー" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カレンダー" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "달력" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "달력" } } } }, - "달력에서 오늘을 누르면 열려요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Tap today on the calendar to open them" + "달력에서 오늘을 누르면 열려요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap today on the calendar to open them" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カレンダーで今日をタップすると開きます" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カレンダーで今日をタップすると開きます" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "달력에서 오늘을 누르면 열려요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "달력에서 오늘을 누르면 열려요" } } } }, - "달력에서 오늘을 누르세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Tap today on the calendar" + "달력에서 오늘을 누르세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap today on the calendar" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カレンダーで今日をタップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カレンダーで今日をタップ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "달력에서 오늘을 누르세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "달력에서 오늘을 누르세요" } } } }, - "달을 골라 이동합니다": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Pick a month to jump to" + "달을 골라 이동합니다" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pick a month to jump to" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "月を選んで移動します" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "月を選んで移動します" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "달을 골라 이동합니다" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "달을 골라 이동합니다" } } } }, - "대신 열어드릴까요?": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Want us to open it for you?" + "대신 열어드릴까요?" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Want us to open it for you?" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "代わりに開きましょうか?" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "代わりに開きましょうか?" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "대신 열어드릴까요?" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "대신 열어드릴까요?" } } } }, - "대신 적어드릴까요?": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Want us to type it for you?" + "대신 적어드릴까요?" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Want us to type it for you?" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "代わりに入力しましょうか?" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "代わりに入力しましょうか?" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "대신 적어드릴까요?" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "대신 적어드릴까요?" } } } }, - "대체공휴일": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Substitute Holiday" + "대체공휴일" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Substitute Holiday" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "振替休日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "振替休日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "대체공휴일" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "대체공휴일" } } } }, - "데이터": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Data" + "데이터" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Data" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "データ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "データ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "데이터" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "데이터" } } } }, - "데이터 출처": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Data Source" + "데이터 출처" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Data Source" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "データ提供元" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "データ提供元" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "데이터 출처" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "데이터 출처" } } } }, - "도움말": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Help" + "도움말" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Help" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ヘルプ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ヘルプ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "도움말" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "도움말" } } } }, - "되돌릴 수 없어요. 동기화 중이라면 다른 기기에서도 사라져요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "This can't be undone. If sync is on, it's removed from your other devices too." + "되돌릴 수 없어요. 동기화 중이라면 다른 기기에서도 사라져요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This can't be undone. If sync is on, it's removed from your other devices too." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "元に戻せません。同期中の場合、ほかの端末からも消えます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "元に戻せません。同期中の場合、ほかの端末からも消えます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "되돌릴 수 없어요. 동기화 중이라면 다른 기기에서도 사라져요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "되돌릴 수 없어요. 동기화 중이라면 다른 기기에서도 사라져요." } } } }, - "디데이": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "D-Day" + "디데이" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "D-Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Dデー" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dデー" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "디데이" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "디데이" } } } }, - "디데이 해제": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Remove D-Day" + "디데이 해제" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove D-Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Dデーを解除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dデーを解除" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "디데이 해제" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "디데이 해제" } } } }, - "디데이로 표시": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Mark as D-Day" + "디데이로 표시" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mark as D-Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Dデーに設定" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dデーに設定" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "디데이로 표시" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "디데이로 표시" } } } }, - "라이브 액티비티": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Live Activities" + "라이브 액티비티" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Live Activities" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ライブアクティビティ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ライブアクティビティ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "라이브 액티비티" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "라이브 액티비티" } } } }, - "라이브 액티비티가 꺼져 있어요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Live Activities are off" + "라이브 액티비티가 꺼져 있어요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Live Activities are off" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ライブアクティビティがオフです" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ライブアクティビティがオフです" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "라이브 액티비티가 꺼져 있어요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "라이브 액티비티가 꺼져 있어요" } } } }, - "매년": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Yearly" + "매년" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Yearly" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "毎年" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "毎年" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "매년" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "매년" } } } }, - "매월": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Monthly" + "매월" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Monthly" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "毎月" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "毎月" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "매월" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "매월" } } } }, - "매일": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Daily" + "매일" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Daily" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "毎日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "毎日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "매일" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "매일" } } } }, - "매주": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Weekly" + "매주" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Weekly" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "毎週" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "毎週" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "매주" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "매주" } } } }, - "매주 %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Weekly %@" + "매주 %@" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Weekly %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "毎週 %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "毎週 %@" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "매주 %@" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "매주 %@" } } } }, - "메뉴에서 ‘삭제’를 누르세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Tap Delete in the menu" + "메뉴에서 ‘삭제’를 누르세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap Delete in the menu" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メニューで「削除」をタップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メニューで「削除」をタップ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "메뉴에서 ‘삭제’를 누르세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "메뉴에서 ‘삭제’를 누르세요" } } } }, - "메모": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Notes" + "메모" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notes" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メモ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メモ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "메모" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "메모" } } } }, - "메모 보기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "View Notes" + "메모 보기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "View Notes" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メモを見る" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メモを見る" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "메모 보기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "메모 보기" } } } }, - "메모 추가": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Add Notes" + "메모 추가" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add Notes" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メモを追加" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "メモを追加" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "메모 추가" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "메모 추가" } } } }, - "며칠마다": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Every Few Days" + "며칠마다" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Every Few Days" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "数日ごと" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "数日ごと" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "며칠마다" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "며칠마다" } } } }, - "모두 오늘로 가져오기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Move All to Today" + "모두 오늘로 가져오기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Move All to Today" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべて今日に移す" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべて今日に移す" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "모두 오늘로 가져오기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "모두 오늘로 가져오기" } } } }, - "모든 데이터 삭제": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete All Data" + "모든 데이터 삭제" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete All Data" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべてのデータを削除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべてのデータを削除" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "모든 데이터 삭제" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "모든 데이터 삭제" } } } }, - "모든 데이터를 삭제할까요?": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete all data?" + "모든 데이터를 삭제할까요?" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete all data?" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべてのデータを削除しますか?" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべてのデータを削除しますか?" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "모든 데이터를 삭제할까요?" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "모든 데이터를 삭제할까요?" } } } }, - "모든 반복을 삭제할까요?": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete all repeats?" + "모든 반복을 삭제할까요?" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete all repeats?" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべての繰り返しを削除しますか?" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべての繰り返しを削除しますか?" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "모든 반복을 삭제할까요?" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "모든 반복을 삭제할까요?" } } } }, - "목록": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "List" + "목록" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "List" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "リスト" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "リスト" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "목록" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "목록" } } } }, - "목록에서 할 일을 길게 눌러 띄워요. 시작까지 8시간 안 남은 할 일에만 쓸 수 있어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Touch and hold a to-do in the list to start one. It only works for to-dos starting within 8 hours." + "목록에서 할 일을 길게 눌러 띄워요. 시작까지 8시간 안 남은 할 일에만 쓸 수 있어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Touch and hold a to-do in the list to start one. It only works for to-dos starting within 8 hours." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "リストでやることを長押しすると表示できます。開始まで8時間以内のものだけ使えます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "リストでやることを長押しすると表示できます。開始まで8時間以内のものだけ使えます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "목록에서 할 일을 길게 눌러 띄워요. 시작까지 8시간 안 남은 할 일에만 쓸 수 있어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "목록에서 할 일을 길게 눌러 띄워요. 시작까지 8시간 안 남은 할 일에만 쓸 수 있어요." } } } }, - "미분류": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Uncategorized" + "미분류" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Uncategorized" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "未分類" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "未分類" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "미분류" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "미분류" } } } }, - "반복": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Repeat" + "반복" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repeat" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "繰り返し" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "繰り返し" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "반복" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "반복" } } } }, - "반복 종료일": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "End Repeat" + "반복 종료일" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "End Repeat" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "繰り返しの終了日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "繰り返しの終了日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "반복 종료일" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "반복 종료일" } } } }, - "방금 적은 할 일이 거기 있어요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "The to-do you just wrote is there" + "받을 시각" : { + + }, + "방금 적은 할 일이 거기 있어요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The to-do you just wrote is there" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "さっき書いたやることがそこにあります" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "さっき書いたやることがそこにあります" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "방금 적은 할 일이 거기 있어요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "방금 적은 할 일이 거기 있어요" } } } }, - "백업": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Backup" + "백업" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Backup" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "バックアップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "バックアップ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "백업" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "백업" } } } }, - "버튼과 달력의 오늘 표시, 위젯까지 이 색으로 바뀌어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Buttons, the today marker, and widgets all use this color." + "버튼과 달력의 오늘 표시, 위젯까지 이 색으로 바뀌어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Buttons, the today marker, and widgets all use this color." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ボタン、今日のマーク、ウィジェットまでこの色に変わります。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ボタン、今日のマーク、ウィジェットまでこの色に変わります。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "버튼과 달력의 오늘 표시, 위젯까지 이 색으로 바뀌어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "버튼과 달력의 오늘 표시, 위젯까지 이 색으로 바뀌어요." } } } }, - "복사": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Copy" + "복사" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copy" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "コピー" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "コピー" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "복사" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "복사" } } } }, - "부처님오신날": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Buddha's Birthday" + "부처님오신날" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Buddha's Birthday" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "釈迦誕生日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "釈迦誕生日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "부처님오신날" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "부처님오신날" } } } }, - "분류": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Organize" + "분류" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Organize" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "分類" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "分類" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "분류" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "분류" } } } }, - "사용법 다시 보기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Replay Tutorial" + "빠른 입력 미리보기" : { + + }, + "사용법 다시 보기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Replay Tutorial" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "使い方をもう一度見る" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "使い方をもう一度見る" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "사용법 다시 보기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "사용법 다시 보기" } } } }, - "사용할 수 없음": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Unavailable" + "사용할 수 없음" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unavailable" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "利用できません" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "利用できません" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "사용할 수 없음" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "사용할 수 없음" } } } }, - "삭제": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete" + "삭제" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "削除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "削除" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "삭제" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "삭제" } } } }, - "삼일절": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Independence Movement Day" + "삼일절" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Independence Movement Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "三一節" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "三一節" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "삼일절" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "삼일절" } } } }, - "새 카테고리": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "New Category" + "새 카테고리" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New Category" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "新規カテゴリ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新規カテゴリ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "새 카테고리" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "새 카테고리" } } } }, - "새 카테고리 추가": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Add Category" + "새 카테고리 추가" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add Category" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カテゴリを追加" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カテゴリを追加" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "새 카테고리 추가" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "새 카테고리 추가" } } } }, - "새 캘린더": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "New Calendar" + "새 캘린더" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New Calendar" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "新規カレンダー" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "新規カレンダー" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "새 캘린더" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "새 캘린더" } } } }, - "새 캘린더 추가": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Add Calendar" + "새 캘린더 추가" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add Calendar" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カレンダーを追加" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カレンダーを追加" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "새 캘린더 추가" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "새 캘린더 추가" } } } }, - "색 고르기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Pick a Color" + "색 고르기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pick a Color" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "色を選ぶ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "色を選ぶ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "색 고르기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "색 고르기" } } } }, - "색상": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Color" + "색상" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Color" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "色" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "色" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "색상" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "색상" } } } }, - "설날": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Seollal" + "설날" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seollal" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "旧正月" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "旧正月" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "설날" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설날" } } } }, - "설날 연휴": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Seollal Holiday" + "설날 연휴" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seollal Holiday" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "旧正月連休" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "旧正月連休" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "설날 연휴" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설날 연휴" } } } }, - "설정": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Settings" + "설정" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Settings" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "설정" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설정" } } } }, - "설정에서 iCloud 로그인하기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Sign In to iCloud in Settings" + "설정에서 iCloud 로그인하기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sign In to iCloud in Settings" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定でiCloudにサインインする" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定でiCloudにサインインする" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "설정에서 iCloud 로그인하기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설정에서 iCloud 로그인하기" } } } }, - "설정에서 라이브 액티비티 허용하기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Allow Live Activities in Settings" + "설정에서 라이브 액티비티 허용하기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow Live Activities in Settings" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定でライブアクティビティを許可する" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定でライブアクティビティを許可する" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "설정에서 라이브 액티비티 허용하기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설정에서 라이브 액티비티 허용하기" } } } }, - "설정에서 알림 허용하기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Allow Notifications in Settings" + "설정에서 알림 허용하기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow Notifications in Settings" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定で通知を許可する" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定で通知を許可する" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "설정에서 알림 허용하기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설정에서 알림 허용하기" } } } }, - "설정에서 위치 허용하기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Allow Location in Settings" + "설정에서 위치 허용하기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow Location in Settings" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定で位置情報を許可する" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定で位置情報を許可する" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "설정에서 위치 허용하기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설정에서 위치 허용하기" } } } }, - "설정에서 켜면 잠금화면에 띄울 수 있어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Turn it on in Settings to show it on the Lock Screen." + "설정에서 켜면 잠금화면에 띄울 수 있어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Turn it on in Settings to show it on the Lock Screen." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "設定でオンにすると、ロック画面に表示できます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定でオンにすると、ロック画面に表示できます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "설정에서 켜면 잠금화면에 띄울 수 있어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설정에서 켜면 잠금화면에 띄울 수 있어요." } } } }, - "수정": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Edit" + "수정" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "編集" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "編集" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "수정" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "수정" } } } }, - "순서 편집": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reorder" + "순서 편집" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reorder" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "並べ替え" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "並べ替え" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "순서 편집" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "순서 편집" } } } }, - "시간 미정": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No Time" + "시간 미정" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No Time" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "時間未定" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "時間未定" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "시간 미정" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "시간 미정" } } } }, - "시간 설정을 따로 열 필요가 없어요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No need to open a time picker" + "시간 설정을 따로 열 필요가 없어요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No need to open a time picker" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "時間設定を別に開く必要はありません" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "時間設定を別に開く必要はありません" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "시간 설정을 따로 열 필요가 없어요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "시간 설정을 따로 열 필요가 없어요" } } } }, - "시간표": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Timeline" + "시간표" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Timeline" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "タイムライン" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タイムライン" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "시간표" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "시간표" } } } }, - "시작": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Start" + "시작" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Start" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "開始" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "開始" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "시작" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "시작" } } } }, - "시작 시간에": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "At start time" + "시작 시간에" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "At start time" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "開始時刻" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "開始時刻" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "시작 시간에" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "시작 시간에" } } } }, - "시작 시간이 있는 할 일에만 알림이 와요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reminders only come for to-dos with a start time." + "시작 시간이 있는 할 일에만 알림이 와요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reminders only come for to-dos with a start time." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "開始時刻のあるやることだけ通知されます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "開始時刻のあるやることだけ通知されます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "시작 시간이 있는 할 일에만 알림이 와요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "시작 시간이 있는 할 일에만 알림이 와요." } } } }, - "시작 전 알림": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Remind Before Start" + "시작 전 알림" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remind Before Start" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "開始前に通知" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "開始前に通知" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "시작 전 알림" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "시작 전 알림" } } } }, - "시작하기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Get Started" + "시작하기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Get Started" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "はじめる" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "はじめる" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "시작하기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "시작하기" } } } }, - "신정": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "New Year's Day" + "신정" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "New Year's Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "元日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "元日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "신정" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "신정" } } } }, - "아래 칸에 그대로 적어보세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Type this in the box below" + "아래 칸에 그대로 적어보세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Type this in the box below" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "下の欄にそのまま入力してください" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "下の欄にそのまま入力してください" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "아래 칸에 그대로 적어보세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "아래 칸에 그대로 적어보세요" } } } }, - "아래에 적으면 이날 할 일이 돼요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Type below to add a to-do for this day" + "아래에 적으면 이날 할 일이 돼요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Type below to add a to-do for this day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "下に書くと、この日のやることになります" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "下に書くと、この日のやることになります" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "아래에 적으면 이날 할 일이 돼요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "아래에 적으면 이날 할 일이 돼요" } } } }, - "안 함": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Never" + "아래에 한 줄 적으면 여기에 쌓여요" : { + + }, + "안 끝낸 일이 %lld개 남았어요" : { + + }, + "안 함" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Never" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "しない" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "しない" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "안 함" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "안 함" } } } }, - "안내 닫기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Dismiss" + "안내 닫기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dismiss" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "案内を閉じる" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "案内を閉じる" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "안내 닫기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "안내 닫기" } } } }, - "알림": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Notifications" + "알림" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notifications" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "通知" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "通知" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "알림" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "알림" } } } }, - "알림 받기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Get Reminders" + "알림 받기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Get Reminders" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "通知を受け取る" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "通知を受け取る" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "알림 받기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "알림 받기" } } } }, - "알림 시점": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Remind Me" + "알림 시점" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remind Me" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "通知のタイミング" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "通知のタイミング" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "알림 시점" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "알림 시점" } } } }, - "앱 평가하기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Rate Mosco" + "앱 평가하기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rate Mosco" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アプリを評価する" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "アプリを評価する" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "앱 평가하기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "앱 평가하기" } } } }, - "어느 캘린더에 넣을까요?": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Which calendar?" + "어느 캘린더에 넣을까요?" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Which calendar?" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "どのカレンダーに入れますか?" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "どのカレンダーに入れますか?" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "어느 캘린더에 넣을까요?" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "어느 캘린더에 넣을까요?" } } } }, - "어린이날": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Children's Day" + "어린이날" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Children's Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "こどもの日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "こどもの日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "어린이날" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "어린이날" } } } }, - "여기에 자유롭게 적어보세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Write anything here" + "여기에 자유롭게 적어보세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Write anything here" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ここに自由に書いてください" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ここに自由に書いてください" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "여기에 자유롭게 적어보세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "여기에 자유롭게 적어보세요" } } } }, - "연습한 할 일을 지워볼게요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Let's delete the practice to-do" + "연습한 할 일을 지워볼게요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Let's delete the practice to-do" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "練習したやることを消してみましょう" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "練習したやることを消してみましょう" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "연습한 할 일을 지워볼게요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연습한 할 일을 지워볼게요" } } } }, - "오늘": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Today" + "오늘" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Today" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "오늘" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "오늘" } } } }, - "오늘 %lld개": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Today %lld" + "오늘 %lld개" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Today %lld" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今日 %lld件" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今日 %lld件" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "오늘 %lld개" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "오늘 %lld개" } } } }, - "오늘 할 일": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Today's To-Dos" + "오늘 할 일" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Today's To-Dos" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今日のやること" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今日のやること" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "오늘 할 일" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "오늘 할 일" } } } }, - "오늘 할 일 없음": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Nothing for today" + "오늘 할 일 없음" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nothing for today" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今日のやることはありません" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今日のやることはありません" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "오늘 할 일 없음" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "오늘 할 일 없음" } } } }, - "오늘 할 일은 여기로 옮겼어요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Today's to-dos have moved here" + "오늘 할 일은 여기로 옮겼어요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Today's to-dos have moved here" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今日のやることはこちらに移りました" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今日のやることはこちらに移りました" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "오늘 할 일은 여기로 옮겼어요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "오늘 할 일은 여기로 옮겼어요" } } } }, - "오늘 해야 할 일을 블록으로 모아서 보여줘요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Shows everything you need to do today." + "오늘 할 일을 확인해요" : { + + }, + "오늘 해야 할 일을 블록으로 모아서 보여줘요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Shows everything you need to do today." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今日やることをまとめて表示します。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今日やることをまとめて表示します。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "오늘 해야 할 일을 블록으로 모아서 보여줘요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "오늘 해야 할 일을 블록으로 모아서 보여줘요." } } } }, - "오늘로 가져오기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Move to Today" + "오늘로 가져오기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Move to Today" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今日に移す" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今日に移す" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "오늘로 가져오기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "오늘로 가져오기" } } } }, - "오른쪽 ": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Tap " + "오른쪽 " : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap " } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "右の " + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "右の " } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "오른쪽 " + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "오른쪽 " } } } }, - "오른쪽 화살표를 누르세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Tap the arrow on the right" + "오른쪽 화살표를 누르세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap the arrow on the right" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "右の矢印をタップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "右の矢印をタップ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "오른쪽 화살표를 누르세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "오른쪽 화살표를 누르세요" } } } }, - "완료": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Done" + "완료" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Done" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "完了" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "完了" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "완료" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "완료" } } } }, - "왼쪽 위 '편집'에서 '위젯 추가'를 누르세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Tap Edit at the top left, then Add Widget" + "왼쪽 위 '편집'에서 '위젯 추가'를 누르세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap Edit at the top left, then Add Widget" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "左上の「編集」から「ウィジェットを追加」をタップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "左上の「編集」から「ウィジェットを追加」をタップ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "왼쪽 위 '편집'에서 '위젯 추가'를 누르세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "왼쪽 위 '편집'에서 '위젯 추가'를 누르세요" } } } }, - "월 달력": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Month Calendar" + "월 달력" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Month Calendar" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "月カレンダー" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "月カレンダー" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "월 달력" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "월 달력" } } } }, - "위에 뜬 시간을 누르세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Tap the time that appeared above" + "위에 뜬 시간을 누르세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap the time that appeared above" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "上に出た時間をタップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "上に出た時間をタップ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "위에 뜬 시간을 누르세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "위에 뜬 시간을 누르세요" } } } }, - "위젯 추가하는 법": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "How to add the widget" + "위젯 추가하는 법" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "How to add the widget" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ウィジェットの追加方法" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ウィジェットの追加方法" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "위젯 추가하는 법" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "위젯 추가하는 법" } } } }, - "위치 권한이 없어 가져올 수 없어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Can't load the weather without location access." + "위치 권한이 없어 가져올 수 없어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Can't load the weather without location access." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "位置情報の許可がないため取得できません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "位置情報の許可がないため取得できません。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "위치 권한이 없어 가져올 수 없어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "위치 권한이 없어 가져올 수 없어요." } } } }, - "응원하기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Support" + "응원하기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Support" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "応援する" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "応援する" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "응원하기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "응원하기" } } } }, - "이 기기에만 저장 중": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Saved on this device only" + "이 기기(%@)는 분석에서 빠져요. 끄려면 mosco://internal/off를 열어요." : { + + }, + "이 기기에만 저장 중" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Saved on this device only" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "この端末にのみ保存中" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "この端末にのみ保存中" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이 기기에만 저장 중" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 기기에만 저장 중" } } } }, - "이 단계 넘기기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Skip this step" + "이 단계 넘기기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Skip this step" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "このステップを飛ばす" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このステップを飛ばす" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이 단계 넘기기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 단계 넘기기" } } } }, - "이 색은 위쪽 선택기에서만 써요. 달력의 할 일 막대는 카테고리 색을 따라가요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "This color is only used in the calendar picker at the top. To-do bars on the calendar follow the category color." + "이 색은 위쪽 선택기에서만 써요. 달력의 할 일 막대는 카테고리 색을 따라가요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This color is only used in the calendar picker at the top. To-do bars on the calendar follow the category color." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "この色は上部の切り替えでのみ使います。カレンダー上のバーはカテゴリの色になります。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "この色は上部の切り替えでのみ使います。カレンダー上のバーはカテゴリの色になります。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이 색은 위쪽 선택기에서만 써요. 달력의 할 일 막대는 카테고리 색을 따라가요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 색은 위쪽 선택기에서만 써요. 달력의 할 일 막대는 카테고리 색을 따라가요." } } } }, - "이 할 일은 반복돼요. 하루만 골라 삭제할 수는 없어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "This to-do repeats. You can't delete just one day." + "이 할 일은 반복돼요. 하루만 골라 삭제할 수는 없어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This to-do repeats. You can't delete just one day." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "このやることは繰り返されます。1日分だけ削除することはできません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このやることは繰り返されます。1日分だけ削除することはできません。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이 할 일은 반복돼요. 하루만 골라 삭제할 수는 없어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 할 일은 반복돼요. 하루만 골라 삭제할 수는 없어요." } } } }, - "이날은 비어 있어요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Nothing on this day" + "이날은 비어 있어요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nothing on this day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "この日は空いています" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "この日は空いています" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이날은 비어 있어요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이날은 비어 있어요" } } } }, - "이름": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Name" + "이름" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Name" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "名前" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "名前" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이름" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이름" } } } }, - "이미 시작한 할 일이에요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "This to-do has already started" + "이미 시작한 할 일이에요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This to-do has already started" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すでに始まっています" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すでに始まっています" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이미 시작한 할 일이에요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이미 시작한 할 일이에요" } } } }, - "이번 달": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "This Month" + "이번 달" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This Month" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今月" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今月" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이번 달" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이번 달" } } } }, - "이번 달 달력에 할 일 블록을 함께 보여줘요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Shows this month's calendar with your to-dos." + "이번 달 달력에 할 일 블록을 함께 보여줘요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Shows this month's calendar with your to-dos." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今月のカレンダーにやることを一緒に表示します。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今月のカレンダーにやることを一緒に表示します。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이번 달 달력에 할 일 블록을 함께 보여줘요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이번 달 달력에 할 일 블록을 함께 보여줘요." } } } }, - "이번 주 일곱 칸에 할 일 블록을 보여줘요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Shows your to-dos across the seven days of this week." + "이번 주" : { + + }, + "이번 주 일곱 칸에 할 일 블록을 보여줘요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Shows your to-dos across the seven days of this week." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今週の7日間にやることを表示します。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "今週の7日間にやることを表示します。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이번 주 일곱 칸에 할 일 블록을 보여줘요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이번 주 일곱 칸에 할 일 블록을 보여줘요." } } } }, - "이전 해": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Previous Year" + "이전 해" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Previous Year" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "前の年" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "前の年" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이전 해" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이전 해" } } } }, - "일과 개인처럼 크게 나눌 때 써요. 기본 캘린더는 삭제할 수 없어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Use calendars for big splits like Work and Personal. The default calendar can't be deleted." + "일과 개인처럼 크게 나눌 때 써요. 기본 캘린더는 삭제할 수 없어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Use calendars for big splits like Work and Personal. The default calendar can't be deleted." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "仕事とプライベートのように大きく分けるときに使います。デフォルトのカレンダーは削除できません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "仕事とプライベートのように大きく分けるときに使います。デフォルトのカレンダーは削除できません。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "일과 개인처럼 크게 나눌 때 써요. 기본 캘린더는 삭제할 수 없어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "일과 개인처럼 크게 나눌 때 써요. 기본 캘린더는 삭제할 수 없어요." } } } }, - "잠금화면 표시는 띄운 때부터 8시간까지만 살아 있어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "A Lock Screen countdown only lasts 8 hours from when it starts." + "잠금화면 표시는 띄운 때부터 8시간까지만 살아 있어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A Lock Screen countdown only lasts 8 hours from when it starts." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ロック画面の表示は、開始から8時間までしか続きません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ロック画面の表示は、開始から8時間までしか続きません。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "잠금화면 표시는 띄운 때부터 8시간까지만 살아 있어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "잠금화면 표시는 띄운 때부터 8시간까지만 살아 있어요." } } } }, - "잠금화면에 남은 시간 표시": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Show Countdown on Lock Screen" + "잠금화면에 남은 시간 표시" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show Countdown on Lock Screen" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ロック画面に残り時間を表示" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ロック画面に残り時間を表示" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "잠금화면에 남은 시간 표시" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "잠금화면에 남은 시간 표시" } } } }, - "잠금화면에서 내리기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Remove from Lock Screen" + "잠금화면에서 내리기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove from Lock Screen" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ロック画面から外す" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ロック画面から外す" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "잠금화면에서 내리기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "잠금화면에서 내리기" } } } }, - "장보기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Groceries" + "장보기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groceries" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "買い物" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "買い物" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "장보기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "장보기" } } } }, - "저장": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Save" + "저장" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Save" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "保存" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "保存" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "저장" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "저장" } } } }, - "전부 삭제": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete Everything" + "전부 삭제" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete Everything" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべて削除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべて削除" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "전부 삭제" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "전부 삭제" } } } }, - "전체": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "All" + "전체" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "All" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "すべて" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すべて" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "전체" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "전체" } } } }, - "정말 삭제할까요?": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Are you sure?" + "정말 삭제할까요?" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Are you sure?" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "本当に削除しますか?" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "本当に削除しますか?" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "정말 삭제할까요?" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "정말 삭제할까요?" } } } }, - "정한 규칙에 맞는 날마다 이 시간에 생겨요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Appears at this time on every day that matches the rule." + "정한 규칙에 맞는 날마다 이 시간에 생겨요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appears at this time on every day that matches the rule." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ルールに合う日ごとにこの時間で作られます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルールに合う日ごとにこの時間で作られます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "정한 규칙에 맞는 날마다 이 시간에 생겨요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "정한 규칙에 맞는 날마다 이 시간에 생겨요." } } } }, - "정한 규칙에 맞는 날마다 종일로 생겨요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Appears as all-day on every day that matches the rule." + "정한 규칙에 맞는 날마다 종일로 생겨요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appears as all-day on every day that matches the rule." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ルールに合う日ごとに終日で作られます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ルールに合う日ごとに終日で作られます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "정한 규칙에 맞는 날마다 종일로 생겨요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "정한 규칙에 맞는 날마다 종일로 생겨요." } } } }, - "제목이나 메모에 적은 말로 찾아요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Search by words in the title or notes" + "제목이나 메모에 적은 말로 찾아요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Search by words in the title or notes" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "タイトルやメモの言葉で探せます" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "タイトルやメモの言葉で探せます" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "제목이나 메모에 적은 말로 찾아요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "제목이나 메모에 적은 말로 찾아요" } } } }, - "종료": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "End" + "종료" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "End" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "終了" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "終了" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "종료" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "종료" } } } }, - "종료를 끄면 하루짜리가 돼요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Turn off End to make it a single day." + "종료를 끄면 하루짜리가 돼요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Turn off End to make it a single day." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "終了をオフにすると1日だけになります。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "終了をオフにすると1日だけになります。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "종료를 끄면 하루짜리가 돼요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "종료를 끄면 하루짜리가 돼요." } } } }, - "종료일": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "End Date" + "종료일" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "End Date" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "終了日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "終了日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "종료일" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "종료일" } } } }, - "종료일 없이 계속 반복돼요. 수정·완료는 모든 반복에 함께 적용돼요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Repeats forever. Edits and completion apply to every repeat." + "종료일 없이 계속 반복돼요. 수정·완료는 모든 반복에 함께 적용돼요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repeats forever. Edits and completion apply to every repeat." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "終了日なしで繰り返します。編集と完了はすべての繰り返しに適用されます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "終了日なしで繰り返します。編集と完了はすべての繰り返しに適用されます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "종료일 없이 계속 반복돼요. 수정·완료는 모든 반복에 함께 적용돼요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "종료일 없이 계속 반복돼요. 수정·완료는 모든 반복에 함께 적용돼요." } } } }, - "종료일까지 반복돼요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Repeats until the end date." + "종료일까지 반복돼요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repeats until the end date." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "終了日まで繰り返します。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "終了日まで繰り返します。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "종료일까지 반복돼요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "종료일까지 반복돼요." } } } }, - "종일": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "All Day" + "종일" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "All Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "終日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "終日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "종일" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "종일" } } } }, - "주간 달력": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Week Calendar" + "주간 달력" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Week Calendar" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "週カレンダー" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "週カレンダー" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "주간 달력" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "주간 달력" } } } }, - "지난 할 일": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Overdue" + "지난 할 일" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Overdue" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "過ぎたやること" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "過ぎたやること" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "지난 할 일" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "지난 할 일" } } } }, - "처음 색으로": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reset to Default" + "처음 색으로" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset to Default" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "最初の色に戻す" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "最初の色に戻す" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "처음 색으로" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "처음 색으로" } } } }, - "추석": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Chuseok" + "추석" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chuseok" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "秋夕" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "秋夕" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "추석" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "추석" } } } }, - "추석 연휴": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Chuseok Holiday" + "추석 연휴" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chuseok Holiday" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "秋夕連休" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "秋夕連休" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "추석 연휴" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "추석 연휴" } } } }, - "취소": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Cancel" + "취소" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancel" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "キャンセル" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "キャンセル" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "취소" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "취소" } } } }, - "카테고리": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Categories" + "카테고리" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Categories" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カテゴリ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カテゴリ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "카테고리" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "카테고리" } } } }, - "카테고리 삭제": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete Category" + "카테고리 삭제" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete Category" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カテゴリを削除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カテゴリを削除" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "카테고리 삭제" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "카테고리 삭제" } } } }, - "카테고리 수정": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Edit Category" + "카테고리 수정" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit Category" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カテゴリを編集" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カテゴリを編集" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "카테고리 수정" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "카테고리 수정" } } } }, - "카테고리 이름": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Category name" + "카테고리 이름" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Category name" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カテゴリ名" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カテゴリ名" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "카테고리 이름" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "카테고리 이름" } } } }, - "칸을 한 번 톡 누르세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Tap the row once" + "칸을 한 번 톡 누르세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tap the row once" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "行を1回タップ" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "行を1回タップ" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "칸을 한 번 톡 누르세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "칸을 한 번 톡 누르세요" } } } }, - "캘린더": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Calendars" + "캘린더" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calendars" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カレンダー" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カレンダー" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "캘린더" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "캘린더" } } } }, - "캘린더 삭제": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete Calendar" + "캘린더 삭제" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete Calendar" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カレンダーを削除" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カレンダーを削除" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "캘린더 삭제" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "캘린더 삭제" } } } }, - "캘린더 수정": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Edit Calendar" + "캘린더 수정" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edit Calendar" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カレンダーを編集" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カレンダーを編集" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "캘린더 수정" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "캘린더 수정" } } } }, - "캘린더 옮기기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Move to Calendar" + "캘린더 옮기기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Move to Calendar" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カレンダーを移動" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カレンダーを移動" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "캘린더 옮기기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "캘린더 옮기기" } } } }, - "캘린더 이름": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Calendar name" + "캘린더 이름" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calendar name" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "カレンダー名" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "カレンダー名" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "캘린더 이름" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "캘린더 이름" } } } }, - "켜짐": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "On" + "켜짐" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "On" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "オン" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "オン" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "켜짐" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "켜짐" } } } }, - "크리스마스": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Christmas" + "크리스마스" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Christmas" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "クリスマス" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "クリスマス" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "크리스마스" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "크리스마스" } } } }, - "테마 색": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Theme Color" + "테마 색" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Theme Color" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "テーマカラー" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "テーマカラー" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "테마 색" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "테마 색" } } } }, - "팀 회의": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Team meeting" + "팀 회의" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Team meeting" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "チーム会議" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "チーム会議" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "팀 회의" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "팀 회의" } } } }, - "편집 마치기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Done Editing" + "편집 마치기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Done Editing" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "編集を終了" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "編集を終了" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "편집 마치기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "편집 마치기" } } } }, - "하루에 하기엔 많아 보여요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "That looks like a lot for one day" + "하루 마무리 알림" : { + + }, + "하루에 하기엔 많아 보여요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "That looks like a lot for one day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "1日でやるには多そうです" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "1日でやるには多そうです" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "하루에 하기엔 많아 보여요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "하루에 하기엔 많아 보여요" } } } }, - "하루치를 %@ 모양으로 봅니다": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Shows the day as a %@" + "하루치를 %@ 모양으로 봅니다" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Shows the day as a %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "1日分を%@で表示します" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "1日分を%@で表示します" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "하루치를 %@ 모양으로 봅니다" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "하루치를 %@ 모양으로 봅니다" } } } }, - "한 번 삭제하면 되돌릴 수 없어요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "This can't be undone." + "한 번 삭제하면 되돌릴 수 없어요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This can't be undone." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "一度削除すると元に戻せません。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "一度削除すると元に戻せません。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "한 번 삭제하면 되돌릴 수 없어요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "한 번 삭제하면 되돌릴 수 없어요." } } } }, - "한글날": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Hangul Day" + "한글날" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hangul Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ハングルの日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ハングルの日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "한글날" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "한글날" } } } }, - "할 일": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "To-Do" + "할 일" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To-Do" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "やること" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "やること" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "할 일" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "할 일" } } } }, - "할 일 완료 전환": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Toggle To-Do" + "할 일 완료 전환" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toggle To-Do" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "やることの完了を切り替え" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "やることの完了を切り替え" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "할 일 완료 전환" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "할 일 완료 전환" } } } }, - "할 일 이름도 한 줄 적어주세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Add a name for the to-do too" + "할 일 이름도 한 줄 적어주세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add a name for the to-do too" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "やることの名前も書いてください" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "やることの名前も書いてください" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "할 일 이름도 한 줄 적어주세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "할 일 이름도 한 줄 적어주세요" } } } }, - "할 일 찾기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Find a To-Do" + "할 일 찾기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Find a To-Do" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "やることを探す" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "やることを探す" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "할 일 찾기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "할 일 찾기" } } } }, - "할 일, 카테고리, 캘린더가 모두 사라져요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "All to-dos, categories, and calendars will be removed." + "할 일, 카테고리, 캘린더가 모두 사라져요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "All to-dos, categories, and calendars will be removed." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "やること、カテゴリ、カレンダーがすべて消えます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "やること、カテゴリ、カレンダーがすべて消えます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "할 일, 카테고리, 캘린더가 모두 사라져요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "할 일, 카테고리, 캘린더가 모두 사라져요." } } } }, - "할 일과 메모에서 찾기": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Search to-dos and notes" + "할 일과 메모에서 찾기" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Search to-dos and notes" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "やることとメモから検索" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "やることとメモから検索" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "할 일과 메모에서 찾기" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "할 일과 메모에서 찾기" } } } }, - "할 일에 자동으로 붙는 묶음이에요. 카테고리마다 색과 알림을 따로 정해요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Groups that attach to your to-dos automatically. Each category has its own color and reminder." + "할 일에 자동으로 붙는 묶음이에요. 카테고리마다 색과 알림을 따로 정해요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groups that attach to your to-dos automatically. Each category has its own color and reminder." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "やることに自動で付くグループです。カテゴリごとに色と通知を決められます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "やることに自動で付くグループです。カテゴリごとに色と通知を決められます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "할 일에 자동으로 붙는 묶음이에요. 카테고리마다 색과 알림을 따로 정해요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "할 일에 자동으로 붙는 묶음이에요. 카테고리마다 색과 알림을 따로 정해요." } } } }, - "할 일을 꾹 누르세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Touch and hold the to-do" + "할 일을 꾹 누르세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Touch and hold the to-do" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "やることを長押し" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "やることを長押し" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "할 일을 꾹 누르세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "할 일을 꾹 누르세요" } } } }, - "할 일을 적고, 끝내고, 정리하는 흐름을 1분 만에 따라가 봐요.": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Walk through adding, completing, and tidying up a to-do in about a minute." + "할 일을 적고, 끝내고, 정리하는 흐름을 1분 만에 따라가 봐요." : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Walk through adding, completing, and tidying up a to-do in about a minute." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "やることを書いて、完了して、整理するまでを1分で体験できます。" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "やることを書いて、完了して、整理するまでを1分で体験できます。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "할 일을 적고, 끝내고, 정리하는 흐름을 1분 만에 따라가 봐요." + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "할 일을 적고, 끝내고, 정리하는 흐름을 1분 만에 따라가 봐요." } } } }, - "할 일을 적어보세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Write a to-do" + "할 일을 적어보세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Write a to-do" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "やることを書いてみましょう" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "やることを書いてみましょう" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "할 일을 적어보세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "할 일을 적어보세요" } } } }, - "현재 시각 %@": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Current time %@" + "할 일이 없어요" : { + + }, + "현재 시각 %@" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Current time %@" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "現在時刻 %@" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在時刻 %@" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "현재 시각 %@" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "현재 시각 %@" } } } }, - "현충일": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Memorial Day" + "현충일" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Memorial Day" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "顕忠日" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "顕忠日" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "현충일" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "현충일" } } } }, - "홈 화면에 위젯을 두면 앱을 안 열어도 오늘 할 일이 보여요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Add the widget to see today's to-dos without opening the app" + "홈 화면에 위젯을 두면 앱을 안 열어도 오늘 할 일이 보여요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add the widget to see today's to-dos without opening the app" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ホーム画面にウィジェットを置くと、アプリを開かなくても今日のやることが見えます" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ホーム画面にウィジェットを置くと、アプリを開かなくても今日のやることが見えます" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "홈 화면에 위젯을 두면 앱을 안 열어도 오늘 할 일이 보여요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "홈 화면에 위젯을 두면 앱을 안 열어도 오늘 할 일이 보여요" } } } }, - "홈 화면의 빈 곳을 꾹 누르세요": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Touch and hold an empty spot on the Home Screen" + "홈 화면의 빈 곳을 꾹 누르세요" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Touch and hold an empty spot on the Home Screen" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ホーム画面の空いている場所を長押し" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ホーム画面の空いている場所を長押し" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "홈 화면의 빈 곳을 꾹 누르세요" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "홈 화면의 빈 곳을 꾹 누르세요" } } } }, - "확인": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "OK" + "확인" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "OK" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "확인" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "확인" } } } }, - "확인 중": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Checking…" + "확인 중" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Checking…" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "確認中" + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "確認中" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "확인 중" + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "확인 중" } } } } }, - "version": "1.0" -} + "version" : "1.0" +} \ No newline at end of file diff --git a/Mosco/Shared/TodoListPage.swift b/Mosco/Shared/TodoListPage.swift index c9a9168..bc53aed 100644 --- a/Mosco/Shared/TodoListPage.swift +++ b/Mosco/Shared/TodoListPage.swift @@ -8,14 +8,12 @@ import Foundation /// 위해서다. 그래서 월·화·수로 줄 세우지 않고 지난 것 → 오늘 → 이번 주 → 나중 → /// 날짜 없음으로 묶는다. 위에서부터 읽으면 그게 곧 할 순서다. /// -/// ## 디데이는 묶음이 아니라 행에 붙는다 +/// ## 디데이는 맨 위 카드다 /// -/// 오늘 페이지의 디데이 카드는 "며칠 남았나" 하나에 답했다. 그건 섹션 하나를 -/// 차지할 만한 질문이 아니라 **행 오른쪽의 `D-7` 한 조각**이면 된다. 날짜순 정렬이 -/// 이미 가까운 것을 위로 올려주기도 한다. -/// -/// 예외가 하나 있다. '나중'에서는 디데이를 맨 위로 올린다 — 석 달 뒤 시험은 -/// 날짜순으로는 저 아래인데, 디데이로 표시했다는 건 "자주 보고 싶다"는 뜻이다. +/// 디데이가 답하는 것은 "며칠 남았나" 하나다. 그걸 목록 안에서 말하려고 두 번 +/// 시도했고 둘 다 되돌렸다 — 행에 `D-7` 조각을 붙이면 태그 줄이 길어지고, +/// '나중' 칸에서 디데이를 맨 위로 끌어올리면 날짜순이 깨져 목록을 읽는 리듬이 +/// 끊긴다. 남은 날을 세는 일은 **목록 바깥**, 맨 위 카드에 맡긴다(`dDays`). /// /// ## 왜 화면이 아니라 여기 있나 /// @@ -25,17 +23,21 @@ import Foundation nonisolated enum TodoListPage { /// 묶음. 순서가 곧 화면에 쌓이는 순서다. + /// + /// **먼저 '손이 가야 하는 것' 둘, 그다음 시간순.** 지난 할 일과 날짜를 안 정한 + /// 할 일은 둘 다 "언제 할지 아직 안 정해진 것"이라 사람이 손을 대야 움직인다. + /// 그 둘을 위에 두고, 이미 날짜가 정해진 것들은 시간순으로 뒤따른다. enum Section: String, CaseIterable, Sendable { /// 날짜가 지났는데 안 끝낸 것. case overdue + /// 날짜를 안 정한 것. + case noDate /// 오늘 걸치는 것(반복 포함). case today /// 내일부터 이레 안. case thisWeek - /// 그 뒤. 디데이가 맨 위로 온다. + /// 그 뒤. case later - /// 날짜를 안 정한 것. - case noDate } /// '이번 주'가 며칠까지인가. 내일부터 이레 — "이번 주"라는 말이 달력의 주(週)가 @@ -121,10 +123,11 @@ nonisolated enum TodoListPage { return nil } - /// 묶음 안의 순서. + /// 묶음 안의 순서. **끝낸 것은 아래로, 그다음 날짜순**이다. /// - /// 공통 규칙은 **끝낸 것은 아래로, 그다음 날짜순**이다. '나중'만 디데이를 - /// 맨 위로 끌어올린다(머리 주석). + /// 한때 '나중' 칸에서 디데이를 맨 위로 끌어올렸다. 날짜순을 깨는 예외라 + /// 목록을 읽는 리듬이 끊겼다 — 디데이가 답하는 "며칠 남았나"는 맨 위 + /// 카드가 맡는다(`dDays`). static func sort( _ todos: [TodoItem], in section: Section, @@ -132,8 +135,6 @@ nonisolated enum TodoListPage { calendar: Calendar = .current ) -> [TodoItem] { todos.sorted { lhs, rhs in - if section == .later, lhs.isDDay != rhs.isDDay { return lhs.isDDay } - let lhsDone = isCompleted(lhs, on: today, calendar: calendar) let rhsDone = isCompleted(rhs, on: today, calendar: calendar) if lhsDone != rhsDone { return !lhsDone } @@ -177,21 +178,19 @@ nonisolated enum TodoListPage { } } + /// 맨 위 카드에 설 것 — 디데이로 표시한 것 중 오늘이거나 앞으로 올 것, 가까운 순. + /// + /// **지난 디데이는 빼지 않는다.** 날짜가 지났어도 안 끝냈으면 '지난 할 일' 칸에 + /// 그대로 있고, 카드에서까지 사라지면 왜 없어졌는지 알 수 없다 — 다만 카드는 + /// "며칠 남았나"를 세는 자리라, 지난 것은 `D+3`으로 센다. + static func dDays(in todos: [TodoItem], today: Date, calendar: Calendar = .current) -> [TodoItem] { + todos + .filter { $0.isDDay && $0.date != nil && !$0.isCompleted } + .sorted { ($0.date ?? .distantFuture) < ($1.date ?? .distantFuture) } + } + private static func isCompleted(_ todo: TodoItem, on day: Date, calendar: Calendar) -> Bool { todo.date == nil ? todo.isCompleted : todo.isCompleted(on: day) } } - -extension TodoItem { - /// 오늘부터 며칠 남았나. 디데이로 표시한 것만 답한다. - /// - /// **문구는 만들지 않는다** — 번역 카탈로그와 사용자 언어는 화면의 사정이다 - /// (`ReminderPlan`과 같은 규칙). - func dDayCount(from today: Date, calendar: Calendar = .current) -> Int? { - guard isDDay, let date else { return nil } - let start = calendar.startOfDay(for: today) - let target = calendar.startOfDay(for: date) - return calendar.dateComponents([.day], from: start, to: target).day - } -} diff --git a/docs/ANALYTICS.md b/docs/ANALYTICS.md deleted file mode 100644 index 3fdff4d..0000000 --- a/docs/ANALYTICS.md +++ /dev/null @@ -1,108 +0,0 @@ -# 분석 데이터 읽는 법 - -GA4 보고서를 열었을 때 **그 줄이 앱의 어디인지** 알기 위한 문서다. 이름들은 -`snake_case`에 추상적이라, 코드를 모르면 `memo`와 `event_schedule`이 같은 화면인지 -다른 화면인지도 알 수 없다. 정의는 코드에 있고(`Shared/Analytics.swift`, -`Shared/AnalyticsScreen.swift`), 여기는 **읽는 쪽**을 위한 지도다. - -## 화면 이름은 어디서 정해지나 - -`AnalyticsScreen` 열거형의 rawValue 하나다. 여기 없는 화면은 아예 안 보낸다. -보내는 모양은 이벤트 이름 `screen_view`에 `firebase_screen`과 -`firebase_screen_class` 두 파라미터를 **같은 값으로** 싣는 것이다. 둘 다 보내야 -GA4의 "페이지 및 화면" 보고서에 제대로 들어간다 — 하나만 보내면 "클래스는 있는데 -이름이 없는 화면"으로 잡힌다. - -이름을 붙이는 자리는 둘이다. 일반 화면은 뷰에 `.logScreen(.xxx)`를 달고, 탭 둘은 -`RootTabView`가 선택이 바뀔 때 직접 센다. 탭은 한 번 세워지면 앱이 떠 있는 동안 -계속 살아 있어서 `task`가 다시 안 돌고, 그래서 `logScreen`으로는 실행당 한 번밖에 -못 센다. - -| 로그에 뜨는 이름 | 실제로 어디인가 | -|---|---| -| `calendar` | 달력 탭. 앱을 열면 여기다 | -| `today` | 오늘 할 일 탭 | -| `todos` | 할 일 탭. 날짜를 가로지르는 목록이라 `today`·`day`와 다른 화면이다 | -| `day` | 달력에서 날짜를 눌러 **밀려 들어온** 하루 페이지 | -| `settings` | 설정 | -| `calendar_list` | 설정 › 캘린더 목록 | -| `category_list` | 설정 › 카테고리 목록 | -| `search` | 검색 시트 | -| `month_picker` | 달 고르기 시트 | -| `category_editor` | 카테고리 만들기·고치기 시트 | -| `calendar_editor` | 캘린더 만들기·고치기 시트 | -| `memo` | 할 일 상세 시트. 이름이 `memo`지만 메모만 있는 화면은 아니다 | -| `event_schedule` | 날짜·시간 고르기 시트 | - -**`today`와 `day`는 같은 화면이다**(`DayTodosContentView`). 일부러 둘로 나눠 -센다 — "되살린 탭이 쓰이는가"와 "달력에서 날짜를 눌러 들어오는가"는 다른 질문이고, -한 이름으로 묶으면 어느 쪽도 답이 안 나온다. 어느 문으로 들어왔는지는 `day_opened`가 -따로 센다. - -확인창, 길게 누르기 메뉴, 안내 오버레이, 입력창은 화면으로 세지 않는다. 사람이 -"다른 곳에 왔다"고 느끼는 자리만 센다. - -## 이름을 바꾸지 않는다 - -화면 이름도 이벤트 이름도 한 번 정하면 바꾸기 어렵다. 바꾸는 순간 그 전 데이터와 -이어지지 않아서 보고서에 같은 것이 두 줄로 나온다. 이름이 안 읽히면 이름을 고치지 -말고 **이 문서를 고친다.** - -(예외가 한 번 있었다. `complete_task` → `todo_completed`는 일부러 끊었다 — 앱 -경로에서 `completed`가 뒤집혀 기록되던 버그가 오래 있어서, 한 지표 안에 반대 뜻의 -값이 섞여 되살릴 수 없었다.) - -## 기기에서 바로 읽기 - -GA4는 하루쯤 지나야 보이고 DebugView는 따로 켜야 한다. "지금 어느 화면으로 -세어졌나"는 기기를 들고 눌러보며 확인하는 질문이라, 화면 이름은 콘솔에도 남긴다. - -Console.app에서 subsystem `com.Mosco.App`, category `screens`로 거르면 -`화면 → today`가 실시간으로 찍힌다. **릴리스 빌드에서도 남는다.** - -## 숫자를 볼 때 먼저 봐야 하는 것 - -**어느 버전에서 온 데이터인가.** 2026-10-08 기준 지난 28일 활성 사용자의 다수가 -아직 1.2.0이었다. 그래서 이런 일이 생긴다. - -- `category_suggested`가 전체 이벤트의 **절반**(6,229건)인데 `todo_created`는 - 876건이다. 1.3.1 전에는 타이핑이 멈출 때마다 남겼고, 그때 평균이 할 일 하나당 - 7.7번이었다. 지금 비율이 7.1이다 — **거의 전부가 옛 버전에서 온 것**이다. - 지금 코드는 저장할 때 한 번만 남긴다(`CategorySuggestionLog`). -- `analytics_identity`가 405건 / 사용자 74명이다. 지금 코드는 설치마다 한 번만 - 남기지만, 1.3.1 전에는 실행마다 남겼다. -- `screen_view`는 434건 / 사용자 37명뿐이다. 화면 로깅이 1.4.x에 들어갔으니 - 옛 버전 사용자에게는 아예 없다. **화면 데이터가 적은 것은 버그가 아니라 - 업데이트가 아직 안 퍼진 것이다.** - -**디버그 빌드는 보내지 않는다.** `FirebaseAnalyticsSink.shouldSend`가 막는다 — -개발 중 시뮬레이터 실행이 전부 실사용자로 잡혀서 다운로드 3회인 앱의 활성 기기가 -10대 넘게 잡힌 적이 있다. DebugView로 확인해야 할 때만 실행 인자 -`-MoscoFirebaseSend`로 그때만 켠다. - -**개발자 기기를 뺀다.** `internal_user = true`를 걸러야 실제 사용자 숫자다. -표시는 그 기기에서 `mosco://internal`을 한 번 열어 켠다(끄려면 `.../off`). -기기 id는 설정 화면에 뜬다 — 보고서의 한 줄과 손에 든 기기를 그걸로 맞춘다. - -## 맞춤 측정기준을 등록해야 보인다 - -GA4는 **등록하지 않은 이벤트 파라미터를 보고서에서 보여주지 않는다.** 그리고 -등록은 지난 데이터에 **소급되지 않는다.** - -지금 등록이 안 돼 있어서 못 읽고 있는 것들이다. 관리 › 맞춤 정의에서 등록한다. - -- `origin` (`analytics_identity`) — 재설치를 건너오는 비율. 이걸 재려고 만든 - 이벤트인데 지금껏 한 번도 읽을 수 없었다 -- `device_id`, `device_model`, `internal_user` — 사용자 범위와 이벤트 범위 **둘 다**. - 사용자 범위만으로는 기기를 못 가른다(아래) -- `source`, `completed` (`todo_completed`) — 위젯을 계속 만들지 정하는 근거 -- `from`, `is_today` (`day_opened`) — 오늘로 들어오는 문 - -## 사용자 단위와 기기 단위는 다르다 - -사용자 식별자(`analyticsUserID`)는 **iCloud로 기기를 건넌다.** 아이폰과 맥을 같이 -쓰는 한 사람은 한 사람으로 세어진다 — 그게 이 설계의 목적이다. - -그래서 **기기를 가르는 일은 user property로 할 수 없다.** GA4의 user property는 -사용자 하나당 값 하나라, 아이폰 한 대를 내부로 표시하면 그 사람의 맥에서 온 -이벤트까지 함께 빠진다. 기기별로 보려면 **이벤트 파라미터** 쪽 `device_id`를 쓴다. From 1d0d80058868d7749c40dfcd2bda1aea2c6ed96b Mon Sep 17 00:00:00 2001 From: JunYoung Date: Sat, 10 Oct 2026 11:53:25 +0900 Subject: [PATCH 2/2] =?UTF-8?q?'=EB=82=A0=EC=A7=9C=EB=A5=BC=20=EC=95=88=20?= =?UTF-8?q?=EC=A0=95=ED=95=9C=20=ED=95=A0=20=EC=9D=BC'=20=EB=AC=B6?= =?UTF-8?q?=EC=9D=8C=20=EC=9D=B4=EB=A6=84=EC=9D=84=20'=EB=82=A0=EC=A7=9C?= =?UTF-8?q?=20=EC=97=86=EC=9D=8C'=EC=9C=BC=EB=A1=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 머리글은 훑을 때 위치를 알려주는 표지라 한눈에 들어오는 길이가 맞다. 같은 뜻을 입력창의 날짜 칩에서 이미 '날짜 없음'으로 쓰고 있어서, 한 화면 안에서 같은 말을 두 가지로 하고 있기도 했다. 번역 카탈로그에 '날짜 없음' 키가 이미 있어서(en "No Date", ja "日付なし") 그대로 쓰고, 쓰지 않게 된 옛 키는 뺐다. 파일을 다시 직렬화하지 않고 해당 항목만 도려냈다 - 포맷이 바뀌면 한 줄 지우는 일이 6천 줄 diff가 된다. Co-Authored-By: Claude Opus 5 --- Mosco/App/Common/DesignSystem/README.md | 10 +++++--- .../Features/TodoList/TodoListScreen.swift | 4 ++-- Mosco/Shared/Localizable.xcstrings | 23 ------------------- 3 files changed, 9 insertions(+), 28 deletions(-) diff --git a/Mosco/App/Common/DesignSystem/README.md b/Mosco/App/Common/DesignSystem/README.md index a442292..1b00f9b 100644 --- a/Mosco/App/Common/DesignSystem/README.md +++ b/Mosco/App/Common/DesignSystem/README.md @@ -333,14 +333,18 @@ Toss/Apple류의 절제된 UI를 기준으로 삼는다 — 원색 대신 톤 - **검색은 달력 머리의 돋보기.** 오늘 탭 머리에 있던 것을 옮겼다. 제목·메모, 날짜와 무관하게 전체. 결과의 수정 버튼은 그날 페이지로 데려간다. - **할 일 탭은 손이 가야 하는 것 먼저, 그다음 시간순이다 (1.4.4).** - 디데이 카드 → 지난 할 일 → 날짜를 안 정한 할 일 → 오늘 → 이번 주 → 나중. + 디데이 카드 → 지난 할 일 → 날짜 없음 → 오늘 → 이번 주 → 나중. 앞의 둘은 **"언제 할지 아직 안 정해진 것"**이라 사람이 손을 대야 움직인다. 날짜가 이미 정해진 것들은 그 뒤에 시간순으로 따라온다. 달력이 이미 "언제"에 답하므로 이 탭은 "무엇부터"에 답한다. '이번 주'는 달력의 주가 아니라 **앞으로 이레**다(수요일에 열었는데 이틀치만 보이면 쓸모가 없다). 판정은 `TodoListPage`(Shared). -- **'오늘로 가져오기'는 아이콘이 아니라 글자다 (1.4.4).** 지난 할 일과 날짜를 - 안 정한 할 일 오른쪽에 `오늘로` 칩이 선다. 예전엔 위를 가리키는 화살표 + + 묶음 이름은 **짧게** 쓴다 — '날짜를 안 정한 할 일'이 아니라 '날짜 없음'이다. + 머리글은 훑을 때 위치를 알려주는 표지라 한눈에 들어오는 길이가 맞고, 같은 뜻을 + 입력창의 날짜 칩(`날짜 없음`)에서도 쓰고 있어 둘이 같은 말을 같은 말로 한다. +- **'오늘로 가져오기'는 아이콘이 아니라 글자다 (1.4.4).** '지난 할 일'과 + '날짜 없음' 칸의 행 오른쪽에 `오늘로` 칩이 선다. 예전엔 위를 가리키는 화살표 동그라미였는데, 그 화살표가 무엇을 뜻하는지 알 수가 없었다 — 위로 올린다는 건지, 순서를 바꾼다는 건지, 접는다는 건지. **날짜를 오늘로 바꾸는 일에는 가리킬 방향이 애초에 없다.** 아이콘이 뜻을 못 나르는 자리에서는 글자가 낫다. diff --git a/Mosco/App/Features/TodoList/TodoListScreen.swift b/Mosco/App/Features/TodoList/TodoListScreen.swift index 2ee7631..f2b3f44 100644 --- a/Mosco/App/Features/TodoList/TodoListScreen.swift +++ b/Mosco/App/Features/TodoList/TodoListScreen.swift @@ -6,7 +6,7 @@ import SwiftUI /// ## 왜 셋째 탭인가 /// /// 달력은 "언제"에 답한다. 거기에만 기대면 **날짜를 아직 안 정한 일이 설 자리가 -/// 없다.** 지금까지는 오늘 페이지 맨 아래 '날짜를 안 정한 할 일' 칸에 들어 있었는데 — +/// 없다.** 지금까지는 오늘 페이지 맨 아래 '날짜 없음' 칸에 들어 있었는데 — /// 적어는 뒀는데 오늘을 열어야만 보이고, 그것도 오늘 할 일들 **아래**에 있었다. /// 할 일 앱으로 쓰려는 사람에게는 그게 본진인데 부속으로 놓여 있던 셈이다. /// @@ -257,7 +257,7 @@ private struct TodoListContent: View { case .today: String(localized: "오늘") case .thisWeek: String(localized: "이번 주") case .later: String(localized: "나중") - case .noDate: String(localized: "날짜를 안 정한 할 일") + case .noDate: String(localized: "날짜 없음") } } diff --git a/Mosco/Shared/Localizable.xcstrings b/Mosco/Shared/Localizable.xcstrings index a0c037c..9a00ac1 100644 --- a/Mosco/Shared/Localizable.xcstrings +++ b/Mosco/Shared/Localizable.xcstrings @@ -853,29 +853,6 @@ } } }, - "날짜를 안 정한 할 일" : { - "extractionState" : "manual", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "No Date" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "日付未定" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "날짜를 안 정한 할 일" - } - } - } - }, "날짜를 정하지 않으면 '언젠가 할 일'에 담겨요." : { "extractionState" : "manual", "localizations" : {