refactor: FSD 구조 강화 및 파일 500줄 제한에 따른 대규모 리팩토링
- SpaceWorkspaceWidget 로직을 전용 훅 및 유틸리티로 분리 (900줄 -> 300줄) - useSpaceWorkspaceSelection 훅을 기능별(영속성, 진단 등) 소형 훅으로 분리 - SpaceToolsDockWidget의 상태 및 핸들러 로직 추출 - 거대 i18n 번역 파일(ko.ts)을 도메인별 메시지 파일로 구조화 - AdminConsoleWidget 누락분 추가 및 미디어 엔티티 타입 오류 수정
This commit is contained in:
172
src/shared/i18n/messages/core.ts
Normal file
172
src/shared/i18n/messages/core.ts
Normal file
@@ -0,0 +1,172 @@
|
||||
export const core = {
|
||||
appName: 'VibeRoom',
|
||||
metadata: {
|
||||
title: 'VibeRoom - 당신만의 편안한 몰입 공간',
|
||||
description:
|
||||
'프리랜서와 온전한 집중이 필요한 분들을 위한 따뜻하고 구조화된 온라인 코워킹 스페이스. 작업 타이머, 세션 관리, 그리고 느슨한 연대를 통해 당신의 리듬을 찾아보세요.',
|
||||
},
|
||||
common: {
|
||||
close: '닫기',
|
||||
cancel: '취소',
|
||||
save: '저장',
|
||||
delete: '삭제',
|
||||
complete: '완료',
|
||||
select: '선택',
|
||||
hub: '허브로',
|
||||
loading: '불러오는 중이에요.',
|
||||
default: '기본',
|
||||
defaultBackground: '기본 배경',
|
||||
admin: '관리자',
|
||||
requestFailed: (status: number) => `요청 실패: ${status}`,
|
||||
apiRequestFailed: (status: number) => `API 요청 실패: ${status}`,
|
||||
},
|
||||
landing: {
|
||||
nav: {
|
||||
features: '기능 소개',
|
||||
pricing: '요금제',
|
||||
login: '로그인',
|
||||
startFree: '무료로 시작하기',
|
||||
},
|
||||
hero: {
|
||||
titleLead: '함께하는 조용한 몰입,',
|
||||
titleAccent: 'VibeRoom',
|
||||
description:
|
||||
'집중하기 어려운 순간, 당신을 다그치지 않는 편안한 공간으로 들어오세요. 구조화된 코워킹 세션과 느슨한 연대가 당신의 페이스를 되찾아 줍니다.',
|
||||
primaryCta: '나만의 공간 만들기',
|
||||
secondaryCta: '더 알아보기',
|
||||
timerPreview: '45:00 남음',
|
||||
},
|
||||
features: {
|
||||
title: '당신을 위한 다정한 몰입 장치',
|
||||
description: '단순한 타이머가 아닙니다. 무리하지 않고 오래 지속할 수 있는 환경을 제공합니다.',
|
||||
items: [
|
||||
{
|
||||
icon: '⏳',
|
||||
title: '구조화된 세션 타이머',
|
||||
description:
|
||||
'부담 없이 시작할 수 있는 짧은 몰입과 확실한 휴식. 당신만의 작업 리듬을 부드럽게 설정하고 관리하세요.',
|
||||
},
|
||||
{
|
||||
icon: '🌱',
|
||||
title: '다정한 연대와 코워킹',
|
||||
description:
|
||||
'화면 너머 누군가와 함께하는 바디 더블링 효과. 감시가 아닌, 조용하지만 강력한 동기를 서로 나누어보세요.',
|
||||
},
|
||||
{
|
||||
icon: '🛋️',
|
||||
title: '나만의 심미적 공간',
|
||||
description:
|
||||
'비 오는 다락방, 햇살 드는 카페. 백색소음과 함께 내가 가장 편안함을 느끼는 가상 공간을 꾸미고 머무르세요.',
|
||||
},
|
||||
],
|
||||
},
|
||||
pricing: {
|
||||
title: '나에게 맞는 공간 선택하기',
|
||||
description: '개인의 가벼운 집중부터 프리랜서의 완벽한 워크스페이스까지.',
|
||||
plans: {
|
||||
starter: {
|
||||
name: 'Starter',
|
||||
subtitle: '가벼운 집중이 필요한 분',
|
||||
price: '무료',
|
||||
cta: '무료로 시작하기',
|
||||
features: ['기본 가상 공간 테마', '1:1 파트너 매칭 (주 3회)', '오픈 코워킹 룸 입장'],
|
||||
},
|
||||
pro: {
|
||||
badge: '추천',
|
||||
name: 'Pro',
|
||||
subtitle: '방해 없는 완벽한 몰입 환경',
|
||||
price: '₩6,900',
|
||||
priceSuffix: '/월',
|
||||
cta: 'Pro 시작하기',
|
||||
features: [
|
||||
'프리미엄 테마 무제한',
|
||||
'1:1 매칭 무제한',
|
||||
'고급 집중 통계 및 리포트',
|
||||
'공간 커스텀 아이템 제공',
|
||||
],
|
||||
},
|
||||
teams: {
|
||||
name: 'Teams',
|
||||
subtitle: '리모트 워크 기업 및 팀',
|
||||
price: '₩12,000',
|
||||
priceSuffix: '/인·월',
|
||||
cta: '도입 문의하기',
|
||||
features: ['Pro 플랜의 모든 기능', '프라이빗 팀 스페이스', '팀 전체 생산성 대시보드'],
|
||||
},
|
||||
},
|
||||
},
|
||||
footer: {
|
||||
description:
|
||||
'프리랜서와 온전한 집중이 필요한 분들을 위한 따뜻하고 구조화된 온라인 코워킹 스페이스입니다.',
|
||||
productTitle: '제품',
|
||||
companyTitle: '회사',
|
||||
links: {
|
||||
features: '기능 소개',
|
||||
pricing: '요금제',
|
||||
webLogin: '웹앱 로그인',
|
||||
about: '소개',
|
||||
privacy: '개인정보처리방침',
|
||||
terms: '이용약관',
|
||||
},
|
||||
copyright: '© 2026 VibeRoom. All rights reserved.',
|
||||
},
|
||||
},
|
||||
login: {
|
||||
title: '다시 오셨군요!',
|
||||
descriptionFirstLine: '비밀번호를 외울 필요 없이,',
|
||||
descriptionSecondLine: '사용 중인 계정으로 3초 만에 시작하세요.',
|
||||
agreementPrefix: '로그인함으로써 VibeRoom의',
|
||||
agreementAnd: '및',
|
||||
terms: '이용약관',
|
||||
privacy: '개인정보처리방침',
|
||||
agreementSuffix: '에 동의하게 됩니다.',
|
||||
},
|
||||
auth: {
|
||||
social: {
|
||||
connecting: '연결 중...',
|
||||
continueWithGoogle: 'Google로 계속하기',
|
||||
continueWithApple: 'Apple로 계속하기',
|
||||
continueWithFacebook: 'Facebook으로 계속하기',
|
||||
},
|
||||
errors: {
|
||||
loginFailed: '로그인에 실패했습니다. 다시 시도해 주세요.',
|
||||
googleFailed: '구글 로그인에 실패했습니다. 팝업 차단 여부를 확인해 주세요.',
|
||||
appleFailed: '애플 로그인 중 오류가 발생했습니다.',
|
||||
appleInitFailed: '애플 로그인 초기화 실패',
|
||||
facebookFailed: '페이스북 로그인에 실패했습니다.',
|
||||
},
|
||||
},
|
||||
modal: {
|
||||
closeAriaLabel: '모달 닫기',
|
||||
closeButton: '닫기',
|
||||
},
|
||||
media: {
|
||||
manifestLoadFailed: '미디어 manifest를 불러오지 못했어요.',
|
||||
},
|
||||
preferences: {
|
||||
defaultNotificationIntensity: '기본',
|
||||
loadFailed: '설정을 불러오지 못했어요.',
|
||||
saveFailed: '설정을 저장하지 못했어요.',
|
||||
saved: '저장됨',
|
||||
saveFailedLabel: '저장 실패',
|
||||
},
|
||||
focusSession: {
|
||||
syncFailed: '세션 엔진과 동기화하지 못했어요.',
|
||||
startFailed: '세션을 시작하지 못했어요.',
|
||||
pauseFailed: '세션을 일시정지하지 못했어요.',
|
||||
resumeFailed: '세션을 다시 시작하지 못했어요.',
|
||||
restartPhaseFailed: '현재 페이즈를 다시 시작하지 못했어요.',
|
||||
completeFailed: '세션을 완료 처리하지 못했어요.',
|
||||
abandonFailed: '세션을 종료하지 못했어요.',
|
||||
},
|
||||
soundPlayback: {
|
||||
loadFailed: '사운드 파일을 불러오지 못했어요.',
|
||||
browserDeferred: '브라우저가 사운드 재생을 보류했어요.',
|
||||
},
|
||||
restart30s: {
|
||||
button: '숨 고르기 30초',
|
||||
mode: 'BREATHE',
|
||||
toast: '잠깐 숨 고르고, 다시 천천히 시작해요.',
|
||||
complete: '준비됐어요. 집중으로 돌아가요.',
|
||||
},
|
||||
} as const;
|
||||
Reference in New Issue
Block a user