Files
viberoom-web/src/shared/i18n/messages/app.ts

288 lines
13 KiB
TypeScript

export const app = {
settings: {
title: 'Settings',
focusPreferencesApi: 'Focus Preferences API',
loading: '저장된 설정을 불러오는 중이에요.',
saving: '변경 사항을 저장하는 중이에요.',
synced: '변경 즉시 서버에 저장합니다.',
reduceMotionTitle: 'Reduce Motion',
reduceMotionDescription: '전환 애니메이션을 최소화합니다. (UI 토글 목업)',
notificationIntensityTitle: '알림 강도',
notificationIntensityDescription: '집중 시작/종료 신호의 존재감을 선택합니다.',
defaultPresetTitle: '기본 프리셋',
defaultPresetDescription: '입장 시 자동 선택될 추천 세트를 고릅니다.',
notificationIntensityOptions: ['조용함', '기본', '강함'],
defaultPresetOptions: [
{ id: 'balanced', label: 'Balanced 25/5 + Rain Focus' },
{ id: 'deep-work', label: 'Deep Work 50/10 + Deep White' },
{ id: 'gentle', label: 'Gentle 25/5 + Silent' },
],
},
stats: {
title: 'Weekly Review',
apiLabel: 'API',
mockLabel: 'Mock',
sourceApi: 'API 통계 사용 중',
sourceMock: 'API 실패로 mock 통계 표시 중',
loading: '통계를 불러오는 중이에요.',
loadFailed: '통계를 불러오지 못했어요.',
synced: '최근 7일 review를 최신 요약으로 동기화합니다.',
refresh: '새로고침',
reviewPeriodLabel: '최근 7일 review',
reviewTitle: '이번 주 집중 리듬',
reviewSnapshotEmpty: '이번 주에는 아직 집중 기록이 많지 않아요. 다음 세션 하나만 다시 만들면 충분해요.',
reviewSnapshotStrong: '이번 주에는 시작한 흐름을 끝까지 가져간 편이에요.',
reviewSnapshotSteady: '이번 주에는 시작은 꾸준했고, 마무리 리듬은 조금 더 다듬을 여지가 있어요.',
reviewSnapshotRecoveryNeeded: '이번 주에는 시작은 있었지만, 닫힘보다 이월이 더 많았어요.',
reviewStarted: '시작한 세션',
reviewStartedHint: '최근 7일 space에 들어간 흐름',
reviewCompleted: '마무리한 세션',
reviewCompletedHint: 'goal 또는 timer를 닫은 세션',
reviewFocusMinutes: '집중 시간',
reviewFocusMinutesHint: '최근 7일 누적 focus 시간',
reviewCarriedOver: '이월된 블록',
reviewCarriedOverHint: '다음 날로 이어진 블록',
reviewStartTitle: '시작 품질',
reviewStartEmpty: '아직 시작 기록이 많지 않아요. 다음 주에는 시작 횟수 하나를 더 만드는 것이 우선이에요.',
reviewStartSummary: (startedSessions: number, bestDayLabel: string, averageDepthLabel: string) =>
`이번 주엔 ${startedSessions}번 시작했고, ${bestDayLabel}에 가장 길게 이어졌어요. 한 번 시작했을 때 평균 ${averageDepthLabel} 정도 머물렀어요.`,
reviewAverageDepth: '평균 세션 깊이',
reviewAverageDepthHint: '한 번 시작했을 때 이어진 평균 시간',
reviewBestDay: '가장 길게 이어진 날',
reviewBestDayHint: (minutes: number) => `${minutes}분 동안 가장 오래 집중했어요.`,
reviewRecoveryTitle: '복귀 품질',
reviewRecoveryMockSummary: '이번 주에는 pause 뒤에도 다시 올라탄 흐름이 있었어요. 복귀는 적었지만 분명히 존재했어요.',
reviewRecoveryLimitedSummary: '복귀 패턴은 아직 이 review에 충분히 합쳐지지 않았어요. 지금은 시작과 마무리 흐름을 먼저 봅니다.',
reviewRecoveryMockNote: 'mock 기준으로 pause 뒤 복귀와 away 뒤 복귀를 함께 보여줍니다.',
reviewRecoveryLimitedNote: 'pause / away 복귀 집계는 다음 연결 단계에서 이 review에 포함됩니다.',
reviewPauseRecovery: 'pause 뒤 복귀',
reviewPauseRecoveryHint: '멈춘 뒤 다시 돌아온 비율',
reviewAwayRecovery: '자리 비움 뒤 복귀',
reviewAwayRecoveryHint: '앱을 떠났다가 다시 돌아온 비율',
reviewCompletionTitle: '마무리 품질',
reviewCompletionEmpty: '이번 주에는 아직 마무리 흐름을 읽을 만큼 세션이 쌓이지 않았어요.',
reviewCompletionStrong: '이번 주에는 시작한 세션을 끝까지 가져가는 힘이 비교적 안정적이었어요.',
reviewCompletionSummary: (completionRate: string, carriedOverCount: number) =>
`완료율은 ${completionRate}였고, 이월된 블록은 ${carriedOverCount}개였어요. 다음 주에는 닫힘 리듬을 더 분명히 만들 여지가 있어요.`,
reviewCompletionRate: '완료율',
reviewCompletionRateHint: '시작한 세션 중 마무리까지 간 비율',
reviewCarryKeep: (bestDayLabel: string) => `${bestDayLabel}처럼 길게 이어졌던 흐름을 다음 주에도 기본 리듬으로 유지해 보세요.`,
reviewCarryKeepGeneric: '이번 주에 가장 오래 이어진 흐름의 길이를 다음 주 기본 리듬으로 유지해 보세요.',
reviewCarryTryDefault: '다음 주 첫 세션은 시간을 늘리기보다, 바로 시작할 한 줄을 더 작게 잡아 보세요.',
reviewCarryTrySmaller: '이월된 블록이 많았어요. 다음 주에는 목표를 더 작게 잡고 첫 microStep을 더 구체적으로 적어보세요.',
reviewCarryTryClosure: '시작은 있었지만 마무리가 약했어요. 다음 주에는 완료 직전에 다른 블록으로 넘어가지 않는 흐름을 한 번 만들어 보세요.',
reviewCarryTryStart: '시작 횟수가 적었어요. 다음 주에는 길이를 늘리기보다 첫 세션을 한 번 더 여는 것에 집중해 보세요.',
reviewCarryCta: '이 흐름으로 다음 세션 시작',
reviewCarryKeepTitle: '다음 주에 유지할 것',
reviewCarryTryTitle: '다음 주에 바꿔볼 것',
today: '오늘',
last7Days: '최근 7일',
chartTitle: '집중 흐름 그래프',
chartWithTrend: 'trend 응답으로 간단한 막대 그래프를 렌더링합니다.',
chartWithoutTrend: 'trend 응답이 비어 있어 플레이스홀더 상태입니다.',
todayFocus: '오늘 집중 시간',
completedCycles: '완료한 사이클',
sessionEntries: '입장 횟수',
last7DaysFocus: '최근 7일 집중 시간',
startedSessions: '시작한 세션',
completedSessions: '완료한 세션',
carriedOverCount: '이월된 계획',
syncedApi: '동기화됨',
temporary: '임시값',
actualAggregate: '실집계',
mockAggregate: '목업',
countUnit: '회',
dayUnit: '일',
minuteUnit: '분',
barTitle: (date: string, minutes: number) => `${date} · ${minutes}`,
},
plan: {
proFeatureCards: [
{
id: 'daily-plan',
name: 'Daily Focus Plan',
description: '오늘의 집중을 블록 단위로 쪼개고 큐를 운영합니다.',
},
{
id: 'rituals',
name: 'Rituals',
description: 'scene + sound + timer 조합을 반복 가능한 시작 방식으로 저장합니다.',
},
{
id: 'weekly-review',
name: 'Weekly Review',
description: '총 시간보다 시작 성공률과 복귀 패턴을 먼저 해석합니다.',
},
],
},
session: {
todayOneLiner: '오늘의 한 줄: 완벽보다 시작, 한 조각이면 충분해요.',
goalChips: [
{ id: 'mail-3', label: '메일 3개' },
{ id: 'doc-1p', label: '문서 1p' },
{ id: 'code-1-function', label: '코딩 1함수' },
{ id: 'tidy-10m', label: '정리 10분' },
{ id: 'reading-15m', label: '독서 15분' },
{ id: 'resume-1paragraph', label: '이력서 1문단' },
],
checkInPhrases: [
{ id: 'arrived', text: '지금 들어왔어요' },
{ id: 'sprint-25', text: '25분만 달릴게요' },
{ id: 'on-break', text: '휴식 중' },
{ id: 'back-focus', text: '다시 집중!' },
{ id: 'slow-day', text: '오늘은 천천히' },
],
reactionOptions: [
{ id: 'thumbs-up', emoji: '👍', label: '응원해요' },
{ id: 'fire', emoji: '🔥', label: '집중 모드' },
{ id: 'clap', emoji: '👏', label: '잘하고 있어요' },
{ id: 'heart-hands', emoji: '🫶', label: '연결되어 있어요' },
],
soundPresets: [
{ id: 'deep-white', label: 'Deep White' },
{ id: 'rain-focus', label: 'Rain Focus' },
{ id: 'forest-birds', label: 'Forest Birds' },
{ id: 'cafe-work', label: 'Cafe Work' },
{ id: 'ocean-calm', label: 'Ocean Calm' },
{ id: 'fireplace', label: 'Fireplace' },
{ id: 'silent', label: 'Silent' },
],
timerPresets: [
{ id: '25-5', label: '25/5', focusMinutes: 25, breakMinutes: 5 },
{ id: '50-10', label: '50/10', focusMinutes: 50, breakMinutes: 10 },
{ id: '90-20', label: '90/20', focusMinutes: 90, breakMinutes: 20 },
{ id: 'custom', label: '커스텀' },
],
distractionDumpPlaceholder: ['디자인 QA 요청 확인', '세금계산서 발행 메모', '오후 미팅 질문 1개 정리'],
todayStats: [
{ id: 'today-focus', label: '오늘 집중 시간', value: '2h 40m', delta: '+35m' },
{ id: 'today-cycles', label: '완료한 사이클', value: '5회', delta: '+1' },
{ id: 'today-entry', label: '입장 횟수', value: '3회', delta: '유지' },
],
weeklyStats: [
{ id: 'week-focus', label: '최근 7일 집중 시간', value: '14h 20m', delta: '+2h 10m' },
{ id: 'week-best-day', label: '최고 몰입일', value: '수요일', delta: '3h 30m' },
{ id: 'week-consistency', label: '연속 달성', value: '4일', delta: '+1일' },
],
recentThoughts: [
{
id: 'thought-1',
text: '내일 미팅 전에 제안서 첫 문단만 다시 다듬기',
sceneName: '도서관',
capturedAt: '방금 전',
},
{
id: 'thought-2',
text: '기획 문서의 핵심 흐름을 한 문장으로 정리해두기',
sceneName: '비 오는 창가',
capturedAt: '24분 전',
},
{
id: 'thought-3',
text: '오후에 확인할 이슈 번호만 메모하고 지금 작업 복귀',
sceneName: '숲',
capturedAt: '1시간 전',
},
{
id: 'thought-4',
text: '리뷰 코멘트는 오늘 17시 이후에 한 번에 처리',
sceneName: '벽난로',
capturedAt: '어제',
},
],
justNow: '방금 전',
},
scenes: [
{
id: 'rain-window',
name: '비 오는 창가',
description: '빗소리 위로 스탠드 조명이 부드럽게 번집니다.',
tags: ['저자극', '감성'],
recommendedSound: 'Rain Focus',
recommendedTime: '밤',
vibeLabel: '잔잔함',
},
{
id: 'dawn-cafe',
name: '새벽 카페',
description: '첫 커피 향처럼 잔잔하고 따뜻한 좌석.',
tags: ['감성', '딥워크'],
recommendedSound: 'Cafe Murmur',
recommendedTime: '새벽',
vibeLabel: '포근함',
},
{
id: 'quiet-library',
name: '도서관',
description: '넘기는 종이 소리만 들리는 정돈된 책상.',
tags: ['저자극', '딥워크'],
recommendedSound: 'Deep White',
recommendedTime: '오후',
vibeLabel: '몰입',
},
{
id: 'wave-sound',
name: '파도 소리',
description: '잔잔한 해변 위로 호흡을 고르는 공간.',
tags: ['움직임 적음', '감성'],
recommendedSound: 'Ocean Breath',
recommendedTime: '밤',
vibeLabel: '차분함',
},
{
id: 'forest',
name: '숲',
description: '바람이 나뭇잎을 스치는 소리로 마음을 낮춥니다.',
tags: ['저자극', '움직임 적음'],
recommendedSound: 'Forest Birds',
recommendedTime: '오전',
vibeLabel: '맑음',
},
{
id: 'fireplace',
name: '벽난로',
description: '작은 불꽃이 주는 리듬으로 집중을 붙잡습니다.',
tags: ['감성', '저자극'],
recommendedSound: 'Fireplace',
recommendedTime: '밤',
vibeLabel: '온기',
},
{
id: 'city-night',
name: '도시 야경',
description: '유리창 너머 야경이 멀리 흐르는 고요한 밤.',
tags: ['딥워크', '감성'],
recommendedSound: 'Night Lo-fi',
recommendedTime: '심야',
vibeLabel: '고요함',
},
{
id: 'snow-mountain',
name: '설산',
description: '차분한 공기와 선명한 수평선이 머리를 맑게 합니다.',
tags: ['움직임 적음', '딥워크'],
recommendedSound: 'Cold Wind',
recommendedTime: '새벽',
vibeLabel: '선명함',
},
{
id: 'sun-window',
name: '창가',
description: '햇살이 들어오는 간결한 책상, 부담 없는 시작.',
tags: ['저자극', '딥워크'],
recommendedSound: 'Soft Daylight',
recommendedTime: '오후',
vibeLabel: '가벼움',
},
{
id: 'outer-space',
name: '우주',
description: '별빛만 남긴 어둠 속에서 깊게 잠수합니다.',
tags: ['딥워크', '감성'],
recommendedSound: 'Deep Drone',
recommendedTime: '심야',
vibeLabel: '깊음',
},
],
} as const;