241 lines
11 KiB
TypeScript
241 lines
11 KiB
TypeScript
export const space = {
|
|
sessionGoal: {
|
|
label: '이번 25분, 딱 한 가지',
|
|
required: '(필수)',
|
|
placeholder: '예: 계약서 1페이지 정리',
|
|
hint: '크게 말고, 바로 다음 한 조각.',
|
|
},
|
|
setup: {
|
|
panelAriaLabel: '집중 시작 패널',
|
|
eyebrow: 'Execution Setup',
|
|
title: '이번 세션만 가볍게 맞추고 들어가요.',
|
|
description: '목표, 배경, 타이머, 사운드만 정하고 바로 실행 화면으로 들어갑니다.',
|
|
resumeTitle: '지난 한 조각 이어서',
|
|
startFresh: '새로 시작',
|
|
resumePrepare: '이어서 준비',
|
|
sceneLabel: '배경',
|
|
timerLabel: '타이머',
|
|
soundLabel: '사운드',
|
|
readyHint: '목표를 적으면 시작할 수 있어요.',
|
|
openFocusScreen: '실행 화면 열기',
|
|
},
|
|
timerHud: {
|
|
actions: [
|
|
{ id: 'start', label: '시작', icon: '▶' },
|
|
{ id: 'pause', label: '일시정지', icon: '⏸' },
|
|
{ id: 'reset', label: '리셋', icon: '↺' },
|
|
],
|
|
readyMode: 'Ready',
|
|
focusMode: 'Focus',
|
|
breakMode: 'Break',
|
|
goalFallback: '이번 한 조각을 설정해 주세요.',
|
|
goalPrefix: '이번 한 조각 · ',
|
|
completeButton: '완료',
|
|
},
|
|
focusHud: {
|
|
goalFallback: '집중을 시작해요.',
|
|
goalToast: (goal: string) => `이번 한 조각 · ${goal}`,
|
|
restReminder: '5분이 지났어요. 다음 한 조각으로 돌아와요.',
|
|
intentLabel: '이번 세션 목표',
|
|
microStepLabel: '지금 할 한 조각',
|
|
intentExpandAriaLabel: '목표 카드 펼치기',
|
|
intentCollapseAriaLabel: '목표 카드 접기',
|
|
refocusButton: '목표 수정',
|
|
intentEditLabel: '수정',
|
|
refocusTitle: '다시 방향 잡기',
|
|
refocusDescription: '딱 한 줄만 다듬고 다시 시작해요.',
|
|
refocusApply: '적용',
|
|
refocusApplyAndResume: '적용하고 이어가기',
|
|
refocusApplying: '적용 중…',
|
|
refocusSaved: '이번 세션 방향을 다듬었어요.',
|
|
refocusOpenOnPause: '잠시 멈춘 김에 다음 한 조각을 다시 맞춰볼까요?',
|
|
pausePromptEyebrow: '잠깐 멈춤',
|
|
pausePromptTitle: '다시 시작할 한 줄만 정하면 돼요.',
|
|
pausePromptDescription: '멈춘 이유를 정리하지 않아도 괜찮아요. 바로 손을 올릴 시작점만 다시 맞춥니다.',
|
|
pausePromptRefocus: '한 조각 다시 잡기',
|
|
pausePromptRefocusHint: '목표는 그대로 두고, 지금 다시 시작할 한 줄만 정리해요.',
|
|
pausePromptKeep: '바로 이어가기',
|
|
pausePromptKeepHint: '지금 방향을 유지한 채, 멈춘 자리에서 다시 시작해요.',
|
|
returnPromptEyebrow: '다시 돌아왔어요',
|
|
returnPromptFocusTitle: '흐름은 아직 남아 있어요.',
|
|
returnPromptFocusDescription: '멈춘 자리에서 바로 이어가거나, 다시 시작할 한 조각만 조용히 다듬을 수 있어요.',
|
|
returnPromptBreakTitle: '자리를 비운 사이 이 블록이 끝났어요.',
|
|
returnPromptBreakDescription: '지금부터 쉬거나, 다음 블록으로 부드럽게 넘어갈 수 있어요.',
|
|
returnPromptContinue: '멈춘 자리에서 이어가기',
|
|
returnPromptContinueHint: '타이머와 현재 흐름을 그대로 두고 다시 집중으로 복귀합니다.',
|
|
returnPromptRest: '지금부터 쉬기',
|
|
returnPromptRestHint: '지금부터 break를 시작한 것처럼 천천히 숨을 고릅니다.',
|
|
returnPromptNext: '다음 블록 이어가기',
|
|
returnPromptNextHint: '다음 한 조각을 정하고, 같은 흐름 안에서 부드럽게 이어갑니다.',
|
|
returnPromptRefocus: '한 조각 다시 잡기',
|
|
returnPromptRefocusHint: '왜 멈췄는지는 건너뛰고, 지금 다시 시작할 한 줄만 남깁니다.',
|
|
microStepCompleteAriaLabel: '현재 한 조각 완료',
|
|
microStepPromptEyebrow: '다음 단계',
|
|
microStepPromptTitle: '바로 이어서 할 다음 단계가 있나요?',
|
|
microStepPromptDescription: '있다면 한 줄로 적고, 없다면 목표만 유지한 채 계속할 수 있어요.',
|
|
microStepPromptKeep: '목표만 두고 계속하기',
|
|
microStepPromptKeepHint: '다음 단계는 비워두고, 같은 목표 안에서 이어서 집중해요.',
|
|
microStepPromptDefine: '다음 단계 적기',
|
|
microStepPromptDefineHint: '바로 손을 움직일 수 있는 가장 작은 다음 행동을 한 줄로 남겨요.',
|
|
microStepCleared: '지금 할 한 조각을 비우고 목표만 유지해요.',
|
|
completeAction: '이번 목표 완료',
|
|
},
|
|
goalComplete: {
|
|
suggestions: ['리뷰 코멘트 2개 처리', '문서 1문단 다듬기', '이슈 1개 정리', '메일 2개 회신'],
|
|
placeholderFallback: '다음 한 조각을 적어보세요',
|
|
placeholderExample: (goal: string) => `예: ${goal}`,
|
|
title: '이 블록을 어떻게 닫을까요?',
|
|
description: '지금은 끝내기, 쉬기, 이어가기 중 하나만 고르면 돼요.',
|
|
nextTitle: '좋아요. 다음 한 조각만 정해요.',
|
|
nextDescription: '너무 크게 잡지 말고, 바로 손을 올릴 한 줄만 남겨요.',
|
|
currentGoalLabel: '방금 끝낸 블록',
|
|
nextGoalLabel: '이어갈 다음 블록',
|
|
chooseNextButton: '다음 블록 이어가기',
|
|
chooseNextDescription: '다음 한 조각을 정하고 같은 흐름 안에서 계속 갑니다.',
|
|
backButton: '돌아가기',
|
|
closeAriaLabel: '닫기',
|
|
finishButton: '여기까지 끝내기',
|
|
finishDescription: '이 블록은 여기서 닫고, 다음 진입은 가볍게 남겨둡니다.',
|
|
restButton: '잠깐 쉬기',
|
|
restDescription: '이 블록은 닫고, 지금부터는 잠깐 쉬는 리듬으로 넘어갑니다.',
|
|
confirmButton: '다음 목표로 바로 시작',
|
|
confirmPending: '시작 중…',
|
|
finishPending: '마무리 중…',
|
|
},
|
|
controlCenter: {
|
|
sectionTitles: {
|
|
background: 'Background',
|
|
time: 'Time',
|
|
sound: 'Sound',
|
|
packs: 'Session OS',
|
|
},
|
|
packsDescription: 'plan · ritual · review',
|
|
recommendation: (soundLabel: string, timerLabel: string) => `추천: ${soundLabel} · ${timerLabel}`,
|
|
recommendationHint: '추천 조합은 참고 정보로만 제공돼요.',
|
|
autoHideTitle: '컨트롤 자동 숨김',
|
|
autoHideDescription: '입력이 없으면 잠시 후 패널을 닫아요.',
|
|
autoHideAriaLabel: '컨트롤 자동 숨김',
|
|
sideSheetSubtitle: '배경 · 타이머 · 사운드와 Session OS 진입점을 그 자리에서 바꿔요.',
|
|
quickControlsTitle: 'Quick Controls',
|
|
},
|
|
toolsDock: {
|
|
notesButton: 'Notes',
|
|
popoverCloseAria: '팝오버 닫기',
|
|
planPro: 'PRO',
|
|
planNormal: 'FREE',
|
|
inboxSaved: '인박스에 저장됨',
|
|
undo: '실행취소',
|
|
inboxSaveUndone: '저장 취소됨',
|
|
deleted: '삭제됨',
|
|
deleteUndone: '삭제를 취소했어요.',
|
|
emptyToClear: '비울 항목이 없어요.',
|
|
clearedAll: '모두 비워짐',
|
|
restored: '복원했어요.',
|
|
normalPlanInfo: 'FREE 플랜 사용 중 · Calm Session OS PRO에서 다중 큐와 주간 리뷰가 열려요.',
|
|
proFeatureLocked: (source: string) => `${source}은(는) Calm Session OS PRO 기능이에요.`,
|
|
proFeaturePending: (label: string) => `${label} 준비 중(더미)`,
|
|
purchaseMock: 'PRO 전환됨',
|
|
manageSubscriptionMock: '구독 관리(더미)',
|
|
restorePurchaseMock: '구매 복원(더미)',
|
|
featureLabels: {
|
|
dailyPlan: 'Daily Focus Plan',
|
|
rituals: 'Rituals',
|
|
weeklyReview: 'Weekly Review',
|
|
},
|
|
utilityPanelTitle: {
|
|
'control-center': 'Quick Controls',
|
|
inbox: '인박스',
|
|
paywall: 'Calm Session OS PRO',
|
|
'manage-plan': '플랜 관리',
|
|
},
|
|
},
|
|
quickNotes: {
|
|
title: '떠오른 생각을 잠깐 주차해요',
|
|
placeholder: '떠오른 생각을 잠깐 주차…',
|
|
submit: '저장',
|
|
hint: '나중에 인박스에서 정리해요.',
|
|
},
|
|
quickSound: {
|
|
currentSound: '현재 사운드',
|
|
muteAriaLabel: '음소거',
|
|
unmuteAriaLabel: '음소거 해제',
|
|
volumeAriaLabel: '사운드 볼륨',
|
|
quickSwitch: '빠른 전환',
|
|
},
|
|
soundPresetControls: {
|
|
preset: 'Preset',
|
|
mixerOpen: 'Mixer 펼치기',
|
|
mixerClose: 'Mixer 접기',
|
|
mock: '더미',
|
|
masterVolume: '마스터 볼륨',
|
|
mute: '뮤트',
|
|
muteToggleAriaLabel: '마스터 뮤트 토글',
|
|
trackLabels: {
|
|
white: 'White',
|
|
rain: 'Rain',
|
|
cafe: 'Cafe',
|
|
wave: 'Wave',
|
|
fan: 'Fan',
|
|
},
|
|
},
|
|
inbox: {
|
|
empty: '지금은 비어 있어요. 집중 중 떠오른 생각을 여기로 주차할 수 있어요.',
|
|
complete: '완료',
|
|
completed: '완료됨',
|
|
delete: '삭제',
|
|
readOnly: '나중에 모아보는 읽기 전용 인박스',
|
|
clearAll: '모두 비우기',
|
|
clearConfirmTitle: '정말 인박스를 비울까요?',
|
|
clearConfirmDescription: '실수라면 토스트에서 실행취소할 수 있어요.',
|
|
clearButton: '비우기',
|
|
openInboxAriaLabel: '인박스 열기',
|
|
openInboxTitle: '인박스',
|
|
},
|
|
rightRail: {
|
|
openQuickControlsAriaLabel: 'Quick Controls 열기',
|
|
openQuickControlsTitle: 'Quick Controls',
|
|
},
|
|
paywall: {
|
|
points: ['오늘의 집중 큐를 여러 개 운영', 'ritual/template를 무제한 저장', '주간 리뷰와 조용한 accountability 열기'],
|
|
title: 'PRO는 더 많이 꾸미는 플랜이 아니라, 더 잘 이어가는 플랜이에요.',
|
|
description: 'Daily plan, rituals, weekly review를 한 흐름으로 여는 더미 결제 시트입니다.',
|
|
later: '나중에',
|
|
startPro: 'PRO 시작하기',
|
|
manageTitle: 'Calm Session OS PRO 관리',
|
|
manageDescription: '결제/복원은 더미 동작이지만 유료 가치는 plan · ritual · review 흐름에 맞춰 정리했습니다.',
|
|
openSubscription: '구독 관리 열기',
|
|
restorePurchase: '구매 복원',
|
|
},
|
|
statsPanel: {
|
|
description: '오늘 흐름과 최근 7일 리듬을 가볍게 확인하세요.',
|
|
graphPlaceholder: '그래프 플레이스홀더',
|
|
},
|
|
settingsPanel: {
|
|
reduceMotion: 'Reduce Motion',
|
|
reduceMotionDescription: '화면 전환을 조금 더 차분하게 표시합니다.',
|
|
background: '배경',
|
|
backgroundDescription: '몰입 중에도 배경 scene을 바꿀 수 있어요.',
|
|
timerPreset: '타이머 프리셋',
|
|
timerPresetDescription: '기본 프리셋만 빠르게 고를 수 있어요.',
|
|
defaultPreset: '기본 프리셋',
|
|
},
|
|
workspace: {
|
|
readyToStart: '준비 완료 · 시작 버튼을 눌러 집중을 시작해요.',
|
|
startFailed: '세션을 시작하지 못했어요. 잠시 후 다시 시도해 주세요.',
|
|
resumeFailed: '세션을 다시 시작하지 못했어요.',
|
|
abandonFailed: '세션 종료를 완료하지 못했어요.',
|
|
pauseFailed: '세션을 일시정지하지 못했어요.',
|
|
restartFailed: '현재 페이즈를 다시 시작하지 못했어요.',
|
|
restarted: '현재 페이즈를 처음부터 다시 시작했어요.',
|
|
intentSyncFailed: '현재 세션 방향을 서버에 반영하지 못했어요.',
|
|
goalCompleteSyncFailed: '현재 세션 완료를 서버에 반영하지 못했어요.',
|
|
nextGoalStarted: '다음 한 조각을 바로 시작했어요.',
|
|
selectionPreferenceSaveFailed: '배경/사운드 기본 설정을 저장하지 못했어요.',
|
|
selectionSessionSyncFailed: '현재 세션의 배경/사운드 선택을 동기화하지 못했어요.',
|
|
},
|
|
exitHold: {
|
|
holdToExitAriaLabel: '길게 눌러 나가기',
|
|
exit: '나가기',
|
|
},
|
|
} as const;
|