refactor: FSD 구조 강화 및 파일 500줄 제한에 따른 대규모 리팩토링
- SpaceWorkspaceWidget 로직을 전용 훅 및 유틸리티로 분리 (900줄 -> 300줄) - useSpaceWorkspaceSelection 훅을 기능별(영속성, 진단 등) 소형 훅으로 분리 - SpaceToolsDockWidget의 상태 및 핸들러 로직 추출 - 거대 i18n 번역 파일(ko.ts)을 도메인별 메시지 파일로 구조화 - AdminConsoleWidget 누락분 추가 및 미디어 엔티티 타입 오류 수정
This commit is contained in:
184
src/shared/i18n/messages/space.ts
Normal file
184
src/shared/i18n/messages/space.ts
Normal file
@@ -0,0 +1,184 @@
|
||||
export const space = {
|
||||
sessionGoal: {
|
||||
label: '이번 25분, 딱 한 가지',
|
||||
required: '(필수)',
|
||||
placeholder: '예: 계약서 1페이지 정리',
|
||||
hint: '크게 말고, 바로 다음 한 조각.',
|
||||
},
|
||||
setup: {
|
||||
panelAriaLabel: '집중 시작 패널',
|
||||
eyebrow: 'Ritual',
|
||||
title: '이번 한 조각을 정하고 시작해요.',
|
||||
description: '목표를 정한 뒤 HUD의 시작 버튼으로 실제 세션을 시작해요.',
|
||||
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분이 지났어요. 다음 한 조각으로 돌아와요.',
|
||||
},
|
||||
goalComplete: {
|
||||
suggestions: ['리뷰 코멘트 2개 처리', '문서 1문단 다듬기', '이슈 1개 정리', '메일 2개 회신'],
|
||||
placeholderFallback: '다음 한 조각을 적어보세요',
|
||||
placeholderExample: (goal: string) => `예: ${goal}`,
|
||||
title: '좋아요. 다음 한 조각은?',
|
||||
description: '너무 크게 잡지 말고, 바로 다음 한 조각만.',
|
||||
closeAriaLabel: '닫기',
|
||||
restButton: '잠깐 쉬기',
|
||||
confirmButton: '바로 다음 조각 시작',
|
||||
},
|
||||
controlCenter: {
|
||||
sectionTitles: {
|
||||
background: 'Background',
|
||||
time: 'Time',
|
||||
sound: 'Sound',
|
||||
packs: 'Packs',
|
||||
},
|
||||
packsDescription: '확장/개인화',
|
||||
recommendation: (soundLabel: string, timerLabel: string) => `추천: ${soundLabel} · ${timerLabel}`,
|
||||
recommendationHint: '추천 조합은 참고 정보로만 제공돼요.',
|
||||
autoHideTitle: '컨트롤 자동 숨김',
|
||||
autoHideDescription: '입력이 없으면 잠시 후 패널을 닫아요.',
|
||||
autoHideAriaLabel: '컨트롤 자동 숨김',
|
||||
sideSheetSubtitle: '배경 · 타이머 · 사운드를 그 자리에서 바꿔요.',
|
||||
quickControlsTitle: 'Quick Controls',
|
||||
},
|
||||
toolsDock: {
|
||||
notesButton: 'Notes',
|
||||
popoverCloseAria: '팝오버 닫기',
|
||||
planPro: 'PRO',
|
||||
planNormal: 'Normal',
|
||||
inboxSaved: '인박스에 저장됨',
|
||||
undo: '실행취소',
|
||||
inboxSaveUndone: '저장 취소됨',
|
||||
deleted: '삭제됨',
|
||||
deleteUndone: '삭제를 취소했어요.',
|
||||
emptyToClear: '비울 항목이 없어요.',
|
||||
clearedAll: '모두 비워짐',
|
||||
restored: '복원했어요.',
|
||||
normalPlanInfo: 'NORMAL 플랜 사용 중 · 잠금 항목에서만 업그레이드할 수 있어요.',
|
||||
proFeatureLocked: (source: string) => `${source}은(는) PRO 기능이에요.`,
|
||||
proFeaturePending: (label: string) => `${label} 준비 중(더미)`,
|
||||
purchaseMock: '결제(더미)',
|
||||
manageSubscriptionMock: '구독 관리(더미)',
|
||||
restorePurchaseMock: '구매 복원(더미)',
|
||||
featureLabels: {
|
||||
scenePacks: 'Scene Packs',
|
||||
soundPacks: 'Sound Packs',
|
||||
profiles: 'Profiles',
|
||||
},
|
||||
utilityPanelTitle: {
|
||||
'control-center': 'Quick Controls',
|
||||
inbox: '인박스',
|
||||
paywall: '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: ['프리미엄 Scene Packs', '확장 Sound Packs', '프로필 저장 / 불러오기'],
|
||||
title: 'PRO에서 더 많은 공간과 사운드를 열어둘 수 있어요.',
|
||||
description: '잠금 항목을 누른 순간에만 열리는 더미 결제 시트입니다.',
|
||||
later: '나중에',
|
||||
startPro: 'PRO 시작하기',
|
||||
manageTitle: 'PRO 관리',
|
||||
manageDescription: '결제/복원은 더미 동작이며 실제 연동은 하지 않아요.',
|
||||
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: '현재 페이즈를 처음부터 다시 시작했어요.',
|
||||
goalCompleteSyncFailed: '현재 세션 완료를 서버에 반영하지 못했어요.',
|
||||
nextGoalReady: '다음 한 조각 준비 완료 · 시작 버튼을 눌러 이어가요.',
|
||||
selectionPreferenceSaveFailed: '배경/사운드 기본 설정을 저장하지 못했어요.',
|
||||
selectionSessionSyncFailed: '현재 세션의 배경/사운드 선택을 동기화하지 못했어요.',
|
||||
},
|
||||
exitHold: {
|
||||
holdToExitAriaLabel: '길게 눌러 나가기',
|
||||
exit: '나가기',
|
||||
},
|
||||
} as const;
|
||||
Reference in New Issue
Block a user