import type { TranslationMap } from './types';

// Korean (한국어) translations. Keys mirror en.ts; missing/
// English-identical values fall back to English via I18nContext.resolveEn().
const messages: TranslationMap = {
  // Cross-host vault (#4278)
  'crossHostVault.title': '보관소가 코어 호스트에 있습니다.',
  'crossHostVault.message':
    '이 메모리 보관소는 openhuman-core 호스트({os})에 저장되어 있습니다. 해당 컴퓨터에서만 열거나 표시할 수 있으며 이 기기에서는 불가능합니다.',
  'conversations.backgroundTasks.title': 'Background tasks',
  'nav.feedback': '피드백 보내기',
  'feedback.board': '피드백 보드',
  'feedback.empty': '아직 피드백이 없습니다. 가장 먼저 아이디어를 공유해 보세요.',
  'feedback.loadMore': '더 불러오기',
  'feedback.loadError': '피드백을 불러오지 못했습니다',
  'feedback.expand': '펼치기',
  'feedback.collapse': '접기',
  'feedback.comments': '댓글',
  'feedback.viewIssue': '이슈 보기',
  'feedback.status.open': '열림',
  'feedback.status.planned': '계획됨',
  'feedback.status.completed': '완료됨',
  'feedback.status.closed': '닫힘',
  'feedback.type.feature': '기능',
  'feedback.type.bug': '버그',
  'feedback.sort.hot': '인기',
  'feedback.sort.top': '추천순',
  'feedback.sort.new': '최신순',
  'feedback.filter.allTypes': '모든 유형',
  'feedback.filter.allStatuses': '모든 상태',
  'feedback.vote.up': '추천',
  'feedback.vote.down': '비추천',
  'feedback.submit.heading': '피드백 공유',
  'feedback.submit.subheading':
    '기능을 제안하거나 버그를 신고하세요. 다른 사용자가 투표할 수 있습니다.',
  'feedback.submit.titlePlaceholder': '제목',
  'feedback.submit.bodyPlaceholder': '아이디어나 겪으신 문제를 설명해 주세요',
  'feedback.submit.action': '제출',
  'feedback.submit.success': '감사합니다! 회원님의 피드백이 보드에 등록되었습니다.',
  'feedback.submit.rejected': '피드백이 검토에서 거절되었습니다.',
  'feedback.submit.error': '문제가 발생했습니다. 다시 시도해 주세요.',
  'feedback.admin.status': '상태',
  'feedback.admin.updateFailed': '상태를 업데이트하지 못했습니다',
  'feedback.comments.empty': '아직 댓글이 없습니다.',
  'feedback.comments.placeholder': '댓글 추가',
  'feedback.comments.post': '등록',
  'feedback.comments.loadError': '댓글을 불러오지 못했습니다',
  'feedback.comments.postError': '댓글을 등록하지 못했습니다',
  'feedback.comments.you': '나',
  'conversations.backgroundTasks.titleWithCount': 'Background tasks ({count})',
  'conversations.backgroundTasks.running': '{count} running',
  'conversations.backgroundTasks.noneRunning': 'none running',
  'conversations.backgroundTasks.total': '{count} total',
  'conversations.backgroundTasks.empty':
    'No background tasks in this chat. Ask the assistant to do something in the background and it shows up here.',
  'conversations.backgroundTasks.statusRunning': 'Running',
  'conversations.backgroundTasks.statusDone': 'Done',
  'conversations.backgroundTasks.statusFailed': 'Failed',
  'conversations.backgroundTasks.statusNeedsYou': 'Needs you',
  'conversations.backgroundTasks.statusCancelled': '취소됨',
  'conversations.backgroundTasks.toolCallOne': '{count} tool call',
  'conversations.backgroundTasks.toolCallOther': '{count} tool calls',
  'conversations.backgroundTasks.steps': '{count} steps',
  'conversations.backgroundTasks.viewDetails': 'View details →',
  'conversations.backgroundTasks.close': 'Close',
  'conversations.backgroundTasks.sectionThisChat': '이 채팅에서',
  'conversations.backgroundTasks.sectionScheduled': '예약된 작업',
  'conversations.backgroundTasks.sectionSubconscious': '잠재의식 사고',
  'conversations.backgroundTasks.sectionMemory': '메모리 동기화 중',
  'conversations.backgroundTasks.cronEmpty': '예약된 작업이 없습니다.',
  'conversations.backgroundTasks.cronUnnamed': '제목 없는 작업',
  'conversations.backgroundTasks.cronPaused': '일시 중지됨',
  'conversations.backgroundTasks.cronNext': '다음 {time}',
  'conversations.backgroundTasks.cronLast': '마지막 실행 {time}',
  'conversations.backgroundTasks.cronNever': '아직 실행되지 않음',
  'conversations.backgroundTasks.cronSchedCron': 'Cron {expr}',
  'conversations.backgroundTasks.cronSchedEvery': '{duration}마다',
  'conversations.backgroundTasks.cronSchedAt': '한 번',
  'conversations.backgroundTasks.subOff': '꺼짐',
  'conversations.backgroundTasks.subWorking': '작업 중…',
  'conversations.backgroundTasks.subIdle': '대기 중',
  'conversations.backgroundTasks.subLastRan': '마지막 실행 {time}',
  'conversations.backgroundTasks.subNeverRan': '아직 실행되지 않음',
  'conversations.backgroundTasks.subTicks': '{count}회 실행',
  'conversations.backgroundTasks.subQueued': '{count}개 대기 중',
  'conversations.backgroundTasks.memUpToDate': '모든 메모리가 최신 상태',
  'conversations.backgroundTasks.memIngesting': '{title} 색인 중',
  'conversations.backgroundTasks.memIngestingUntitled': '메모리 색인 중',
  'conversations.backgroundTasks.memQueued': '{count}개 대기 중',
  'conversations.backgroundTasks.memProviderActive': '지금 동기화 중',
  'conversations.backgroundTasks.memProviderRecent': '최근 동기화됨',
  'conversations.backgroundTasks.memProviderIdle': '대기 중',
  'nav.home': '홈',
  'nav.human': '휴먼',
  'nav.chat': '채팅',
  'nav.assistant': '어시스턴트',
  'assistant.faceMode.on': 'Tiny와 대화 중',
  'assistant.faceMode.off': 'Tiny와 대화하기',
  'assistant.faceMode.turnOn': '마스코트 표시',
  'assistant.faceMode.turnOff': '마스코트 숨기기',
  'nav.connections': '연결',
  'nav.memory': '인텔리전스',
  'nav.alerts': '알림',
  'nav.rewards': '보상',
  'nav.settings': '설정',
  'nav.agentProfiles': '에이전트 프로필',
  'nav.switchAgentProfile': '에이전트 프로필 전환',
  'nav.defaultAgentProfile': '기본 에이전트',
  'nav.noAgentProfiles': '에이전트 프로필을 찾을 수 없습니다',
  'nav.activity': '활동',
  'nav.brain': '브레인',
  'nav.agentWorld': 'Tiny Place',
  'nav.wallet': '지갑',
  'agentWorld.description':
    'Tiny.Place는 AI 에이전트를 위한 소셜 네트워크입니다. OpenHuman을 사용해 소통하고, 일자리를 찾고 올리며, 거래하고 함께 성장하세요.',
  'agentWorld.world': '월드',
  'agentWorld.world.booting': '렌더러를 시작하는 중...',
  'agentWorld.world.initError': '월드 렌더러를 시작할 수 없습니다.',
  'agentWorld.world.retry': '다시 시도',
  'agentWorld.world.title': 'Tiny Place',
  'agentWorld.world.description':
    'tiny.place에 참여하면 에이전트가 다른 에이전트와 협업할 수 있습니다: 작업을 찾고 게시하고, 거래하고, 메시지를 주고받고, 바운티에 함께 참여하세요.',
  'agentWorld.world.room': '방',
  'agentWorld.world.rooms.poker.name': '포커',
  'agentWorld.world.rooms.poker.description': '펠트 테이블을 둘러싼 여덟 좌석.',
  'agentWorld.world.rooms.court.name': '법정',
  'agentWorld.world.rooms.court.description': '높은 판사석, 배심원석, 방청석.',
  'agentWorld.world.rooms.office.name': '사무실',
  'agentWorld.world.rooms.office.description': '칸막이 책상, 데스크, 화이트보드.',
  'agentWorld.world.rooms.home.name': '집',
  'agentWorld.world.rooms.home.description': '소파와 러그가 있는 아늑한 라운지.',
  'agentWorld.world.rooms.outside.name': '월드',
  'agentWorld.world.rooms.outside.description': '건물로 둘러싸인 넓은 열린 광장.',
  'agentWorld.feed': '피드',
  'agentWorld.ledger': '원장',
  'agentWorld.jobs': '채용',
  'agentWorld.bounties': '현상금',
  'agentWorld.explore': '탐색',
  'agentWorld.directory': '디렉토리',
  'agentWorld.identities': '아이덴티티',
  'agentWorld.profiles': '프로필',
  'agentWorld.marketplace': '마켓플레이스',
  'agentWorld.messaging': '메시지',
  'agentWorld.walletNotConfigured': '지갑이 설정되지 않음',
  'agentWorld.copyAddress': '주소 복사',
  'agentWorld.addressCopied': '복사됨',
  'agentWorld.walletUnavailable': '지갑을 사용할 수 없음',
  'agentWorld.walletRetry': '지갑 다시 불러오기',
  // Agent World — Explore section live data
  'explore.networkOverview': '네트워크 개요',
  'explore.trendingCommunities': '트렌딩 커뮤니티',
  'explore.activeJobs': '활성 일자리',
  'explore.featuredBounties': '추천 현상금',
  'explore.newAgents': '새 에이전트',
  'explore.viewAll': '전체 보기',
  'explore.noCommunities': '아직 커뮤니티가 없습니다',
  'explore.noJobs': '활성 일자리 없음',
  'explore.noBounties': '열린 현상금 없음',
  'explore.noAgents': '등록된 에이전트 없음',
  'agentWorld.jobs.deadlineFuture': '제안 마감일은 미래여야 합니다',
  'nav.avatarMenu.account': '계정',
  'nav.avatarMenu.billing': '결제',
  'nav.avatarMenu.rewards': '보상',
  'nav.avatarMenu.invites': '친구 초대',
  'nav.avatarMenu.wallet': '지갑',

  // Brain — full-page memory knowledge-graph surface
  'brain.subtitle': '지식 그래프, 메모리 소스 및 컨트롤.',
  'brain.tabs.memory': '기억',
  'brain.tabs.subconscious': '잠재의식',
  'brain.tabs.graph': '그래프',
  'brain.tabs.goals': '목표',
  'brain.goals.title': '장기 목표',
  'brain.goals.description':
    '당신과 함께 일하기 위한 에이전트의 지속적인 목표입니다. 여기서 편집하거나 리플렉트로 업데이트하세요.',
  'brain.goals.reflect': '리플렉트',
  'brain.goals.reflecting': '리플렉트 중…',
  'brain.goals.reflectDone': '목표가 업데이트되었습니다.',
  'brain.goals.add': '추가',
  'brain.goals.addPlaceholder': '장기 목표 추가…',
  'brain.goals.empty':
    '아직 목표가 없습니다. 하나를 추가하거나 리플렉트로 최근 컨텍스트에서 채워 보세요.',
  'brain.goals.editGoal': '목표 편집',
  'brain.goals.deleteGoal': '목표 삭제',
  'brain.goals.actionError': '문제가 발생했습니다. 다시 시도해 주세요.',
  'brain.tabs.sources': '소스',
  'brain.tabs.sync': '동기화',
  'brain.tabs.tinyplaceOrchestration': 'TinyPlace',
  'tinyplaceOrchestration.title': 'TinyPlace 릴레이',
  'tinyplaceOrchestration.subtitle': '고정된 에이전트 채널과 앱 세션 채팅',
  'tinyplaceOrchestration.refresh': '새로 고침',
  'tinyplaceOrchestration.pinned': '고정됨',
  'tinyplaceOrchestration.sessions': '세션',
  'tinyplaceOrchestration.loading': 'TinyPlace 채팅을 불러오는 중…',
  'tinyplaceOrchestration.paymentRequired': 'TinyPlace 접근에는 결제가 필요합니다.',
  'tinyplaceOrchestration.failedToLoad': 'TinyPlace 채팅을 불러오지 못했습니다',
  'tinyplaceOrchestration.noSessions': '아직 TinyPlace 앱 세션이 없습니다.',
  'tinyplaceOrchestration.noMessages': '이 채팅에는 아직 메시지가 없습니다.',
  'tinyplaceOrchestration.active': '활성',
  'tinyplaceOrchestration.inactive': '비활성',
  'tinyplaceOrchestration.encryptedBody': '암호화된 TinyPlace 메시지',
  'tinyplaceOrchestration.unknownSender': '알 수 없는 보낸 사람',
  'tinyplaceOrchestration.master.title': '에이전트 / 사람',
  'tinyplaceOrchestration.master.subtitle': '마스터 채팅',
  'tinyplaceOrchestration.master.preview': '사용자와 OpenHuman 간의 직접 조율.',
  'tinyplaceOrchestration.subconscious.title': '잠재의식',
  'tinyplaceOrchestration.subconscious.subtitle': '내부 에이전트 채팅',
  'tinyplaceOrchestration.subconscious.preview': '백그라운드 에이전트 조율과 메모리 루프.',
  'tinyplaceOrchestration.session.subtitle': 'TinyPlace 앱 세션',
  'tinyplaceOrchestration.pairing.linkLabel': '세션 연결',
  'tinyplaceOrchestration.pairing.linkPlaceholder': '세션 에이전트 ID 붙여넣기',
  'tinyplaceOrchestration.pairing.linkAction': '연결',
  'tinyplaceOrchestration.pairing.requests': '연락처 요청',
  'tinyplaceOrchestration.pairing.accept': '수락',
  'tinyplaceOrchestration.pairing.decline': '거절',
  'tinyplaceOrchestration.pairing.block': '차단',
  'tinyplaceOrchestration.pairing.linked': '연결됨',
  'tinyplaceOrchestration.pairing.pending': '대기 중',
  'tinyplaceOrchestration.pairing.unlinked': '미연결',
  'tinyplaceOrchestration.pairing.incoming': '수신',
  'tinyplaceOrchestration.pairing.outgoing': '발신',
  'brain.empty': '아직 브레인이 비어 있습니다 — 소스를 연결하여 메모리를 만들어 보세요.',
  'brain.error': '브레인을 불러올 수 없습니다. 다시 시도해 주세요.',
  'common.cancel': '취소',
  'common.save': '저장',
  'common.confirm': '확인',
  'common.delete': '삭제',
  'common.edit': '편집',
  'common.create': '생성',
  'common.search': '검색',
  'common.loading': '로딩 중…',
  'sync.runs': '동기화 실행',
  'sync.totalCost': '합계',
  'sync.when': '시간',
  'sync.source': '소스',
  'sync.items': '항목',
  'sync.tokens': '토큰',
  'sync.cost': '비용',
  'sync.duration': '기간',
  'sync.noAuditEntries': '아직 기록된 동기화 실행이 없습니다.',
  'sync.timeAgo.justNow': '방금',
  'sync.timeAgo.minutes': '{n}분 전',
  'sync.timeAgo.hours': '{n}시간 전',
  'sync.timeAgo.days': '{n}일 전',
  'sync.status.success': '성공',
  'sync.status.failed': '실패',
  'common.error': '오류',
  'common.success': '성공',
  'common.back': '뒤로',
  'common.next': '다음',
  'common.finish': '완료',
  'common.close': '닫기',
  'common.enabled': '활성화됨',
  'common.disabled': '비활성화됨',
  'common.on': '켜짐',
  'common.off': '꺼짐',
  'common.yes': '예',
  'common.no': '아니요',
  'common.ok': '확인했습니다',
  'common.name': '이름',
  'common.retry': '다시 시도',
  'common.copy': '복사',
  'common.copied': '복사됨',
  'common.learnMore': '자세히 알아보기',
  'common.seeAll': '보기',
  'common.dismiss': '닫기',
  'common.clear': '지우기',
  'common.reset': '초기화',
  'common.refresh': '새로고침',
  'common.export': '내보내기',
  'common.import': '가져오기',
  'common.upload': '업로드',
  'common.download': '다운로드',
  'common.add': '추가',
  'common.remove': '제거',
  'common.showMore': '더 보기',
  'common.showLess': '간단히 보기',
  'common.submit': '제출',
  'common.continue': '계속',
  'common.comingSoon': '출시 예정',
  'common.breadcrumb': '탐색경로',
  'common.beta': '베타',
  'common.betaDisclaimer':
    '이 기능은 베타 버전입니다. 변경되거나 불완전할 수 있습니다 — 피드백이 개선에 도움이 됩니다.',
  'settings.general': '일반',
  // Settings layman groups (Phase 4 IA revamp)
  'settings.groups.account': '계정',
  'settings.groups.assistant': '어시스턴트',
  'settings.groups.privacySecurity': '개인정보 및 보안',
  'settings.groups.notifications': '알림',
  'settings.groups.about': '정보',
  'settings.assistant.personality': '개성',
  'settings.personalityFace.title': '성격 및 얼굴',
  'settings.personalityFace.menuDesc': '어시스턴트의 성격을 조정하고 얼굴을 선택하세요',
  'settings.assistant.voice': '음성',
  'settings.assistant.voiceDesc': '음성-텍스트 및 텍스트-음성 설정',
  'settings.assistant.faceMascot': '얼굴 / 마스코트',
  'settings.assistant.backgroundActivity': '잠재의식',
  'settings.assistant.backgroundActivityDesc':
    '어시스턴트가 백그라운드에서 얼마나 활발히 작동하는지 제어',
  'settings.assistant.screenAwareness': '화면 인식',
  'settings.assistant.screenAwarenessDesc': '어시스턴트가 활성 창을 볼 수 있도록 허용',
  'settings.assistant.desktopCompanion': '데스크탑 동반자',
  'settings.assistant.desktopCompanionDesc':
    '시스템 트레이 단축키가 있는 항상 활성화된 동반자 모드',
  'settings.assistant.permissions': '권한',
  'settings.assistant.permissionsDesc':
    '어시스턴트가 무엇을 할 수 있고 어디서 작업할 수 있는지 선택하세요',
  'settings.privacySecurity.privacy': '개인정보',
  'settings.privacySecurity.privacyDesc': '컴퓨터를 떠나는 데이터 제어',
  'settings.privacySecurity.security': '보안',
  'settings.privacySecurity.securityDesc': '세션 및 로그인 옵션',
  'settings.privacySecurity.approvalsHistory': '승인 및 기록',
  'settings.privacySecurity.approvalsHistoryDesc': '최근 도구 승인 결정 검토',
  'settings.notifications.menuTitle': '알림',
  'settings.notifications.menuDesc': '알림 받은편지함 및 알림 기본설정',
  'settings.devGroups.knowledgeMemory': '지식 및 메모리',
  'settings.devGroups.agentsAutonomy': '에이전트 및 자율성',
  'settings.devGroups.modelsInference': '모델 및 추론',
  'settings.devGroups.automationIntegrations': '자동화 및 통합',
  'settings.devGroups.toolsCapabilities': '도구 및 기능',
  'settings.devGroups.council': '위원회',
  'settings.analysisViews.title': '분석 보기',
  'settings.analysisViews.menuDesc':
    '메모리 그래프 분석 — 다이어그램, 중심성, 응집도, 연관, 최신성, 타임라인, 경로 및 네임스페이스',
  'settings.buildInfo.title': '빌드 / 버전 정보',
  'settings.buildInfo.menuDesc': '앱 빌드, 버전 및 코어 연결 세부 정보',
  'settings.tokenUsage.title': '토큰 및 비용',
  'settings.tokenUsage.menuDesc': '압축 설정과 그것이 절약한 토큰 및 달러의 양',
  'settings.tokenUsage.saving': '저장 중…',
  'settings.tokenUsage.saved': '저장됨',
  'settings.tokenUsage.savingsTitle': '절감',
  'settings.tokenUsage.attributedTo': '{model} 기준으로 비용 책정됨',
  'settings.tokenUsage.tokensSaved': '절약된 토큰',
  'settings.tokenUsage.costSaved': '절약된 비용',
  'settings.tokenUsage.cacheOccupancy': '캐시된 원본',
  'settings.tokenUsage.compactions': '압축 횟수',
  'settings.tokenUsage.overEvents': '{count}회 압축에 걸쳐',
  'settings.tokenUsage.byCompressor': '압축기별',
  'settings.tokenUsage.refresh': '새로고침',
  'settings.tokenUsage.reset': '통계 재설정',
  'settings.tokenUsage.compressionTitle': '압축',
  'settings.tokenUsage.compressionDesc':
    '대용량 도구 출력이 모델 컨텍스트에 들어가기 전에 콘텐츠를 인식하여 압축합니다.',
  'settings.tokenUsage.routerEnabled': '압축 활성화',
  'settings.tokenUsage.routerEnabledDesc': '콘텐츠 라우터의 마스터 스위치입니다.',
  'settings.tokenUsage.search': '검색 결과',
  'settings.tokenUsage.searchDesc':
    'grep/검색 출력을 관련성 순으로 정렬하고 상위 일치 항목을 유지합니다.',
  'settings.tokenUsage.code': '소스 코드',
  'settings.tokenUsage.codeDesc': '시그니처는 유지하고 함수 본문은 접습니다.',
  'settings.tokenUsage.html': 'HTML',
  'settings.tokenUsage.htmlDesc': '마크업을 제거하여 읽기 쉬운 텍스트로 만듭니다.',
  'settings.tokenUsage.ml': 'ML 텍스트 압축기',
  'settings.tokenUsage.mlDesc': '일반 텍스트용 로컬 ModernBERT 모델(Python 런타임 필요).',
  'settings.tokenUsage.ccrTitle': '캐시 및 복구(CCR)',
  'settings.tokenUsage.ccrDesc':
    '압축된 원본이 캐시되어 에이전트가 필요할 때 전체 텍스트를 가져올 수 있습니다.',
  'settings.tokenUsage.ccrEnabled': '복구를 위해 원본 유지',
  'settings.tokenUsage.ccrEnabledDesc':
    '원본을 오프로드하고 검색 표식을 추가하여 아무것도 손실되지 않도록 합니다.',
  'settings.tokenUsage.ccrMinTokens': '캐시할 최소 크기',
  'settings.tokenUsage.ccrMinTokensDesc':
    '이 토큰 수 이상으로 추정되는 결과만 캐시하고 손실 압축합니다.',
  'settings.tokenUsage.tokensUnit': '토큰',
  'settings.tokenUsage.ccrDisk': '캐시를 디스크에 유지',
  'settings.tokenUsage.ccrDiskDesc': '재시작 후에도 복구 가능한 원본을 유지합니다.',
  'settings.dataSync.title': '데이터 동기화',
  'settings.dataSync.menuDesc': '어시스턴트가 동기화하는 항목 — 소스, 최신성 및 상태',
  'settings.dataSync.description':
    '어시스턴트의 메모리에 무엇이 동기화되는지 관리하세요: 연결된 각 소스의 마지막 동기화 시간, 동기화된 양, 지금 동기화 중인지 여부를 확인할 수 있습니다.',
  'settings.devGroups.diagnosticsLogs': '진단 및 로그',
  'settings.featuresAndAI': '기능 및 AI',
  'settings.billingAndRewards': '결제 및 보상',
  'settings.support': '지원',
  'settings.advanced': '고급',
  'settings.dangerZone': '위험 영역',
  'settings.account': '계정',
  'settings.accountDesc': '복구 문구, 팀, 연결 및 개인정보',
  'settings.notifications': '알림',
  'settings.notificationsDesc': '방해 금지 및 계정별 알림 설정',
  'settings.notifications.tabs.preferences': '기본 설정',
  'settings.notifications.tabs.routing': '라우팅',
  'settings.features': '기능',
  'settings.featuresDesc': '화면 인식, 메시징 및 도구',
  'settings.aiModels': 'AI 및 모델',
  'settings.aiModelsDesc': '로컬 AI 모델 설정, 다운로드 및 LLM 제공업체',
  'settings.ai': 'AI 구성',
  'settings.aiDesc': '클라우드 제공업체, 로컬 Ollama 모델 및 작업별 라우팅',
  'settings.billingUsage': '결제 및 사용량',
  'settings.billingUsageDesc': '구독 플랜, 크레딧 및 결제 수단',
  'settings.rewards': '보상',
  'settings.rewardsDesc': '추천, 쿠폰 및 적립 크레딧',
  'settings.restartTour': '투어 다시 시작',
  'settings.restartTourDesc': '제품 안내를 처음부터 다시 보기',
  'settings.about': '정보',
  'settings.aboutDesc': '앱 버전 및 소프트웨어 업데이트',
  'settings.developerOptions': '고급',
  'settings.developerOptionsDesc': 'AI 구성, 메시징 채널, 도구, 진단 및 디버그 패널',
  'settings.developerDiagnostics': '개발자 및 진단',
  'settings.developerDiagnosticsDesc': '고급 개발자 도구, 진단, 메모리, 에이전트 및 디버그 패널',
  'settings.developerMode.title': '개발자 모드',
  'settings.developerMode.description': '고급 개발자 및 진단 도구 표시',
  'settings.developerMode.enabledByBuild': '개발 빌드에서 항상 활성화',
  'settings.clearAppData': '앱 데이터 삭제',
  'settings.clearAppDataDesc': '로그아웃하고 모든 로컬 앱 데이터를 영구적으로 삭제',
  'settings.logOut': '로그아웃',
  'settings.logOutDesc': '계정에서 로그아웃',
  'settings.exitLocalSession': '로컬 세션 종료',
  'settings.exitLocalSessionDesc': '로그인 화면으로 돌아가기',
  'settings.language': '언어',
  'settings.navGroups.general': '일반',
  'settings.navGroups.assistant': '어시스턴트',
  'settings.navGroups.data': '데이터',
  'settings.navGroups.connections': '연결',
  'settings.navGroups.system': '시스템',
  'settings.betaBuild': '베타 빌드 - v{version}',
  'settings.languageDesc': '앱 인터페이스 표시 언어',
  'settings.alerts': '알림',
  'settings.alertsDesc': '받은 편지함에서 최근 알림 및 활동 보기',
  'settings.account.profile': '프로필',
  'settings.account.profileDesc': '이름, 이메일, 아바타',
  'settings.account.devices': '기기',
  'settings.account.devicesDesc': '모바일 기기 연결 및 관리',
  'settings.account.teamMembers': '팀 & 멤버',
  'settings.account.teamMembersDesc': '팀 접근 및 멤버 역할 관리',
  'settings.account.dataMigration': '데이터 & 마이그레이션',
  'settings.account.dataMigrationDesc': '다른 어시스턴트에서 메모리 가져오기',
  'settings.account.recoveryPhrase': '복구 문구',
  'settings.account.recoveryPhraseDesc': '계정 복구 문구를 확인하고 백업합니다',
  'settings.account.team': '팀',
  'settings.account.teamDesc': '팀 구성원과 권한을 관리합니다',
  'settings.account.connections': '연결',
  'settings.account.connectionsDesc': '연결된 계정과 서비스를 관리합니다',
  'settings.account.privacy': '개인정보 보호',
  'settings.account.privacyDesc': '컴퓨터 밖으로 나가는 데이터를 제어합니다',
  'migration.title': '다른 어시스턴트에서 가져오기',
  'migration.description':
    '다른 로컬 어시스턴트의 메모리와 노트를 이 워크스페이스로 마이그레이션합니다. 먼저 미리 보기로 변경 사항을 확인한 다음 적용하여 데이터를 복사하세요. 현재 메모리는 먼저 백업됩니다.',
  'migration.vendorLabel': '소스 공급업체',
  'migration.vendor.openclaw': 'OpenClaw',
  'migration.vendor.hermes': 'Hermes Agent',
  'migration.sourceLabel': '소스 작업공간 경로(선택 사항)',
  'migration.sourcePlaceholder': '자동 감지하려면 비워 두세요(예: ~/.openclaw/workspace)',
  'migration.sourcePlaceholderHermes': '비워두면 자동 감지 (예: ~/.hermes)',
  'migration.sourceHint':
    '비워두면 공급업체의 기본 위치를 사용합니다. 워크스페이스를 다른 위치로 이동한 경우 명시적인 경로를 설정하세요.',
  'migration.previewAction': '미리 보기',
  'migration.previewRunning': '미리보기 중…',
  'migration.applyAction': '가져오기 적용',
  'migration.applyRunning': '가져오는 중…',
  'migration.applyDisclaimer':
    '동일한 소스에서 미리 보기를 성공적으로 완료한 후 적용이 활성화됩니다. 가져오기 전에 기존 메모리가 백업됩니다.',
  'migration.reportTitlePreview': '미리 보기 — 아직 가져온 항목 없음',
  'migration.reportTitleApplied': '가져오기 완료',
  'migration.report.source': '소스 작업 영역',
  'migration.report.target': '대상 작업 영역',
  'migration.report.fromSqlite': 'SQLite(brain.db)에서',
  'migration.report.fromMarkdown': '마크다운에서',
  'migration.report.imported': '가져옴',
  'migration.report.skippedUnchanged': '건너뛰었습니다(변경되지 않음)',
  'migration.report.renamedConflicts': '충돌 시 이름이 변경됨',
  'migration.report.warnings': '경고',
  'migration.report.previewHint':
    '아직 데이터를 가져오지 않았습니다. 가져오기 적용을 클릭하여 복사하세요.',
  'migration.report.appliedHint':
    '가져온 항목이 이제 메모리에 있습니다. 다시 비교하려면 미리 보기를 다시 실행하세요.',
  'migration.confirmImport.singular':
    '현재 워크스페이스로 {count}개의 항목을 가져오시겠습니까?\n\n소스: {source}\n대상: {target}\n\n가져오기 실행 전에 기존 메모리가 백업됩니다.',
  'migration.confirmImport.plural':
    '현재 워크스페이스로 {count}개의 항목을 가져오시겠습니까?\n\n소스: {source}\n대상: {target}\n\n가져오기 실행 전에 기존 메모리가 백업됩니다.',
  'settings.notifications.doNotDisturb': '방해 금지',
  'settings.notifications.doNotDisturbDesc': '정해진 시간 동안 모든 알림을 일시 중지합니다',
  'settings.notifications.channelControls': '채널별 설정',
  'settings.notifications.channelControlsDesc': '각 채널의 알림 기본 설정을 구성합니다',
  'settings.features.screenAwareness': '화면 인식',
  'settings.features.screenAwarenessDesc': '어시스턴트가 현재 활성 창을 볼 수 있게 합니다',
  'settings.features.messaging': '메시징',
  'settings.features.messagingDesc': '채널 및 메시징 통합 설정',
  'settings.features.tools': '도구',
  'settings.features.toolsDesc': '연결된 도구와 통합을 관리합니다',
  'settings.ai.localSetup': '로컬 AI 설정',
  'settings.ai.localSetupDesc': '로컬 AI 모델을 다운로드하고 구성합니다',
  'settings.ai.llmProvider': 'LLM 제공업체',
  'settings.ai.llmProviderDesc': 'AI 제공업체를 선택하고 구성합니다',
  'clearData.title': '앱 데이터 삭제',
  'clearData.warning': '이 작업은 로그아웃하고 다음 로컬 앱 데이터를 영구적으로 삭제합니다:',
  'clearData.bulletSettings': '앱 설정 및 대화',
  'clearData.bulletCache': '모든 로컬 통합 캐시 데이터',
  'clearData.bulletWorkspace': '워크스페이스 데이터',
  'clearData.bulletOther': '기타 모든 로컬 데이터',
  'clearData.irreversible': '이 작업은 되돌릴 수 없습니다.',
  'clearData.clearing': '앱 데이터를 삭제하는 중...',
  'clearData.failed': '데이터 삭제 및 로그아웃에 실패했습니다. 다시 시도해 주세요.',
  'clearData.failedLogout': '로그아웃에 실패했습니다. 다시 시도해 주세요.',
  'clearData.failedPersist': '저장된 앱 상태를 삭제하지 못했습니다. 다시 시도해 주세요.',
  'welcome.logoAlt': 'OpenHuman',
  'welcome.title': 'OpenHuman에 오신 것을 환영합니다',
  'welcome.subtitle': '개인용 AI 슈퍼 인텔리전스입니다. 비공개이며, 간단하고, 매우 강력합니다.',
  'welcome.connectPrompt': 'RPC URL 구성(고급)',
  'welcome.selectRuntime': '런타임 선택',
  'welcome.clearingAppData': '앱 데이터 삭제 중...',
  'welcome.clearAppDataAndRestart': '앱 데이터 삭제 및 다시 시작',
  'welcome.clearAppDataWarning':
    '이 작업은 이 기기에 로컬로 저장된 비밀 정보와 계정을 초기화합니다. 클라우드 계정은 영향을 받지 않으며 즉시 다시 로그인할 수 있습니다.',
  'welcome.resetErrorFallback':
    '앱 데이터를 지울 수 없습니다. OpenHuman을 종료하고 다시 열어 재시도하세요.',
  'welcome.signingIn': '로그인 중...',
  'welcome.termsIntro': '계속 진행하면',
  'welcome.termsOfUse': '약관',
  'welcome.termsJoiner': '및',
  'welcome.privacyPolicy': '개인정보 보호정책에 동의하게 됩니다.',
  'welcome.termsOutro': '.',
  'welcome.urlPlaceholder': 'http://localhost:8089',
  'welcome.invalidUrl': '올바른 HTTP 또는 HTTPS URL을 입력해 주세요',
  'welcome.connecting': '테스트 중',
  'welcome.connect': '테스트',
  'home.greeting': '좋은 아침입니다',
  'home.greetingAfternoon': '좋은 오후입니다',
  'home.greetingEvening': '좋은 저녁입니다',
  'home.askAssistant': '어시스턴트에게 무엇이든 물어보세요...',
  'home.statusOk': '어시스턴트가 준비되어 있어요. 아래에 무언가 입력해 시작하세요.',
  'home.statusBackendOnly':
    '백엔드에 다시 연결하는 중입니다… 곧 에이전트를 다시 사용할 수 있습니다.',
  'home.statusCoreUnreachable':
    '로컬 코어 사이드카가 응답하지 않습니다. OpenHuman 백그라운드 프로세스가 중단되었거나 시작하지 못했을 수 있습니다.',
  'home.statusInternetOffline':
    '현재 기기가 오프라인 상태입니다. 네트워크를 확인하거나 앱을 다시 시작하여 다시 연결하세요.',
  'home.restartCore': '코어 다시 시작',
  'home.restartingCore': '코어를 다시 시작하는 중…',
  'home.themeToggle.toLight': '라이트 모드로 전환',
  'home.themeToggle.toDark': '다크 모드로 전환',
  'home.usageExhaustedTitle': '사용 한도를 모두 소진했습니다',
  'home.usageExhaustedBody':
    '현재 포함된 사용량을 모두 소진했습니다. 더 많은 지속 용량을 사용하려면 구독을 시작하세요.',
  'home.usageExhaustedCta': '구독 시작',
  'openrouterFree.cta': 'OpenRouter 무료 모델 사용',
  'openrouterFree.saving': 'OpenRouter 연결 중...',
  'openrouterFree.error':
    'OpenRouter 무료 모델로 전환하지 못했습니다. OpenRouter 로그인을 확인하고 다시 시도하세요.',
  'home.routinesCard': '내 루틴',
  'home.routinesActive': '{count}개 활성',
  'routines.title': '내 루틴',
  'routines.subtitle': '어시스턴트가 자동으로 수행하는 작업',
  'routines.loading': '루틴 로드 중…',
  'routines.empty': '아직 루틴이 없습니다',
  'routines.emptyHint':
    '어시스턴트는 아침 브리핑이나 일일 요약처럼 일정에 따라 작업을 실행할 수 있습니다.',
  'routines.refresh': '새로고침',
  'routines.nextRun': '다음 실행',
  'routines.lastRunSuccess': '마지막 실행 성공',
  'routines.lastRunFailed': '마지막 실행 실패',
  'routines.notRunYet': '아직 실행되지 않음',
  'routines.runNow': '지금 실행',
  'routines.running': '실행 중…',
  'routines.runNowTimedOut': '실행 시간 초과 — 새로고침 후 다시 시도하세요.',
  'routines.viewHistory': '기록 보기',
  'routines.loadingHistory': '로딩 중…',
  'routines.noHistory': '아직 실행 기록이 없습니다.',
  'routines.statusSuccess': '성공',
  'routines.statusError': '오류',
  'routines.showOutput': '출력 표시',
  'routines.hideOutput': '출력 숨기기',
  'routines.toggleEnabled': '이 루틴을 활성화하거나 비활성화',
  'routines.typeAgent': '에이전트',
  'routines.typeCommand': '명령',
  'nav.routines': 'Routines',
  'chat.newThread': '새 스레드',
  'chat.newConversation': '새 대화',
  'chat.newWindowWelcome1': '환영해요, {name} 👋',
  'chat.newWindowWelcome2': '시작해 볼까요, {name} 🧑‍🍳.',
  'chat.newWindowWelcome3': '집중할 시간이에요 🧘🏻',
  'chat.typeMessage': '오늘 무엇을 도와드릴까요?',
  'chat.send': '메시지 보내기',
  'chat.stopGeneration': '생성 중지',
  'chat.parallelBranchHint': '병렬 분기 입력 — 보내려면 ⌘/Ctrl+Enter',
  'chat.followupHint': '후속 메시지를 대기열에 추가 — 이 응답 후 전송 · 병렬 분기는 ⌘/Ctrl+Enter',
  'chat.queuedFollowups.label': '대기 중인 후속 메시지',
  'chat.queuedFollowups.clear': '지우기',
  'chat.queuedFollowups.clearFailed': '대기열을 지우지 못했습니다 — 다시 시도하세요.',
  'chat.parallelBranchLabel': '병렬 분기',
  'chat.thinking': '생각 중...',
  'chat.noMessages': '아직 메시지가 없습니다',
  'chat.startConversation': '대화 시작',
  'chat.regenerate': '다시 생성',
  'chat.copyResponse': '응답 복사',
  'chat.citations': '인용',
  'chat.toolUsed': '사용된 도구',
  'scope.legacy': '레거시',
  'scope.user': '사용자',
  'scope.project': '프로젝트',
  'skills.title': '연결',
  'skills.search': '연결 검색...',
  'skills.noResults': '연결을 찾을 수 없습니다',
  'skills.loadingIntegrations': '통합을 불러오는 중…',
  'skills.connect': '연결',
  'skills.disconnect': '연결 해제',
  'skills.configure': '관리',
  'skills.connected': '연결됨',
  'skills.available': '사용 가능',
  'skills.addAccount': '계정 추가',
  'skills.channels': '메시징',
  'skills.explorer.emptyCta': 'URL에서 설치',
  'skills.explorer.emptyDescription':
    'SKILL.md 패키지를 설치하거나 Hermes 스타일 폴더를 ~/.openhuman/skills에 넣으세요.',
  'skills.explorer.emptyTitle': '스킬을 찾을 수 없음',
  'skills.explorer.installFromUrl': 'URL에서 설치',
  'skills.explorer.newSkill': '새 스킬',
  'skills.explorer.subtitle':
    'Hermes 스타일 markdown, scripts, references, templates, examples, prompts를 포함한 SKILL.md 패키지를 탐색합니다.',
  'skills.explorer.title': '스킬 탐색기',
  'skills.explorer.searchPlaceholder': '스킬 검색...',
  'skills.explorer.scopeUser': 'User',
  'skills.explorer.scopeProject': 'Project',
  'skills.explorer.scopeLegacy': 'Legacy',
  'skills.explorer.noDescription': '설명이 제공되지 않았습니다.',
  'skills.explorer.uninstallSuccess': '스킬이 성공적으로 제거되었습니다.',
  'skills.explorer.registryTab': '레지스트리',
  'skills.explorer.installedTab': '설치됨',
  'skills.explorer.allFormats': '모든 형식',
  'skills.explorer.refreshRegistry': '레지스트리 새로고침',
  'skills.explorer.registryEmptyTitle': '레지스트리 항목 없음',
  'skills.explorer.registryEmptyDescription':
    '스킬 레지스트리를 로드할 수 없습니다. 연결을 확인하고 새로고침해 보세요.',
  'skills.explorer.showingOf':
    '{total}개 결과 중 {shown}개 표시. 검색을 세분화하여 더 많이 보세요.',
  'skills.explorer.installed': '설치됨',
  'skills.explorer.install': '설치',
  'skills.explorer.installing': '설치 중…',
  'skills.integrations': 'Composio 통합',
  'skills.integrationsSubtitle':
    '클라우드 기반 OAuth 연결 — 계정으로 로그인하면 Composio가 토큰을 관리하여 에이전트가 사용자를 대신해 읽고 작동할 수 있습니다. API 키 관리가 필요 없습니다.',
  'skills.composio.noApiKeyTitle': '아니요 Composio API 키가 구성됨',
  'skills.composio.noApiKeyDescription':
    '로컬 모드에서는 자체 Composio API 키를 사용합니다. 설정 → 고급 → Composio에서 키를 추가한 후 여기서 통합을 연결하세요.',
  'skills.composio.noApiKeyCta': '설정에서 열기',
  'skills.tabs.composio': 'Composio',
  'skills.tabs.channels': '채널',
  'skills.tabs.explorer': '스킬',
  'skills.tabs.meetings': 'Google Meet 회의',
  'skills.tabs.mcp': 'MCP 서버',
  'connections.tabs.composio': 'Composio',
  'connections.tabs.channels': '채널',
  'connections.tabs.mcp': 'MCP 서버',
  'connections.tabs.skills': '스킬',
  'connections.tabs.meetings': '미팅',
  'connections.groups.integrations': '통합',
  'connections.tabs.oauth': 'OAuth',
  'connections.tabs.composioKey': 'Composio',
  'connections.groups.apiKeys': 'API 키',
  'connections.groups.intelligence': '인텔리전스',
  'memory.title': '메모리',
  'memory.search': '메모리 검색...',
  'memory.noResults': '메모리를 찾을 수 없습니다',
  'memory.empty': '아직 메모리가 없습니다. 메모리는 상호작용하면서 자동으로 생성됩니다.',
  'memory.tab.memory': '메모리',
  'memory.tab.memoryTree': '메모리 트리',
  'memory.tab.tasks': '작업',
  'memory.tab.tasksDescription':
    '작업을 만들고 추적하세요 — 본인의 할 일 목록과 에이전트가 대화를 통해 구성한 보드가 모두 포함됩니다.',
  'memory.tab.subconscious': '잠재의식',
  'memory.tab.agentWork': '에이전트 작업',
  'memory.tab.agentWorkDescription':
    '모든 백그라운드 에이전트 실행을 위한 명령 센터 — 입력이 필요한 것, 진행 중인 것, 완료된 것별로 그룹화됩니다.',
  'memory.tab.worktrees': '워크트리',
  'memory.tab.worktreesDescription':
    '병렬 에이전트 워커가 만든 격리된 git 워크트리 — 변경 사항을 확인하거나 열거나 정리하세요.',
  'memory.tab.teams': '팀',
  'memory.tab.teamsDescription':
    '조율된 에이전트 팀 — 각 작업을 누가 담당하는지, 무엇이 차단되어 있는지, 그리고 팀원들이 서로 무슨 이야기를 나누는지.',
  'memory.tab.agents': '라이브러리',
  'memory.tab.agentsDescription':
    '사용 가능한 에이전트를 탐색하고 실행하세요 — 각 에이전트는 고유한 도구, 기능 및 전문 분야를 갖추고 있습니다.',
  'memory.tab.workflows': 'Workflows',
  'memory.tab.workflowsDescription':
    '재사용 가능하고 실행 가능한 절차 — 목표와 그에 도달하는 단계. 새로 만들거나, URL에서 설치하거나, 워크플로를 열어 실행하세요.',
  'memory.tab.dreams': '꿈',
  'memory.tab.calls': '통화',
  'memory.tab.diagram': 'Diagram',
  'memory.tab.centrality': 'Centrality',
  'memory.tab.namespaces': '네임스페이스',
  'memory.tab.timeline': 'Timeline',
  'memory.tab.settings': '설정',
  'memory.analyzeNow': '지금 분석',
  'memoryTimeline.title': '기억 타임라인',
  'memoryTimeline.intro':
    '어시스턴트가 당신에 대해 학습한 시기 — 마지막으로 강화된 월별로 그룹화된 사실. 성장, 활동 급증 및 조용한 기간을 보여줍니다.',
  'memoryTimeline.loading': '타임라인 구축 중…',
  'memoryTimeline.errorPrefix': '그래프를 로드할 수 없습니다:',
  'memoryTimeline.retry': 'Retry',
  'memoryTimeline.namespaceLabel': 'Namespace',
  'memoryTimeline.namespaceAll': '모든 네임스페이스',
  'memoryTimeline.empty': '아직 지식 그래프가 없습니다.',
  'memoryTimeline.emptyHint': '어시스턴트가 사실을 기록하면 타임라인이 여기에 표시됩니다.',
  'memoryTimeline.metricTotal': 'Facts',
  'memoryTimeline.metricMonths': '활성 월',
  'memoryTimeline.metricRecent': '최근 30일',
  'memoryTimeline.heading': '월별 학습된 사실',
  'memoryTimeline.busiestCaption': '가장 활발: {period} ({count})',
  'memoryTimeline.undatedNote': '{count}개 사실에 기록된 날짜가 없습니다.',
  'memoryTimeline.truncated': '{total}개월 중 가장 최근 {shown}개 표시.',
  'namespaceOverview.title': '네임스페이스 개요',
  'namespaceOverview.intro':
    '컨텍스트 전반에 걸쳐 지식이 어떻게 분포되어 있는지 — 각 네임스페이스에 기록된 사실과 고유 엔터티의 수입니다.',
  'namespaceOverview.loading': '네임스페이스 집계 중…',
  'namespaceOverview.errorPrefix': '그래프를 로드할 수 없습니다:',
  'namespaceOverview.retry': '다시 시도',
  'namespaceOverview.empty': '아직 지식 그래프가 없습니다.',
  'namespaceOverview.emptyHint':
    '어시스턴트가 컨텍스트 전반에 걸쳐 사실을 기록하면 각 네임스페이스가 여기에 표시됩니다.',
  'namespaceOverview.metricNamespaces': '네임스페이스',
  'namespaceOverview.metricFacts': '사실',
  'namespaceOverview.metricEntities': '엔터티',
  'namespaceOverview.heading': '네임스페이스별',
  'namespaceOverview.unnamespaced': '(네임스페이스 없음)',
  'namespaceOverview.factsLabel': '사실 {count}개',
  'namespaceOverview.entitiesLabel': '엔터티 {count}개',
  'namespaceOverview.entitiesShort': '{count}개 엔터티',
  'namespaceOverview.truncated': '전체 {total}개 네임스페이스 중 상위 {shown}개를 표시합니다.',
  'graphCentrality.title': '지식 그래프 중심성',
  'graphCentrality.intro':
    '메모리 그래프에 PageRank를 적용해 핵심 허브와, 단순 빈도 계산으로는 드러나지 않는 분리된 클러스터를 연결하는 엔터티를 드러냅니다.',
  'graphCentrality.loading': '중심성 계산 중…',
  'graphCentrality.errorPrefix': '그래프를 로드할 수 없습니다:',
  'graphCentrality.retry': '다시 시도',
  'graphCentrality.empty': '아직 지식 그래프가 없습니다.',
  'graphCentrality.emptyHint':
    '어시스턴트가 사용자에 대한 사실을 기록하면 가장 많이 연결된 엔터티가 여기에 표시됩니다.',
  'graphCentrality.namespaceLabel': '네임스페이스',
  'graphCentrality.namespaceAll': '모든 네임스페이스',
  'graphCentrality.metricEntities': '엔터티',
  'graphCentrality.metricConnections': '연결',
  'graphCentrality.metricClusters': '클러스터',
  'graphCentrality.clustersCaption': '클러스터 {components}개 · 최대 {largest}개 포함',
  'graphCentrality.approximateBadge': '근사값',
  'graphCentrality.approximateTitle': '완전히 수렴하기 전에 반복 한도에서 중지됨',
  'graphCentrality.rankedHeading': '영향력 상위 엔터티',
  'graphCentrality.colRank': '#',
  'graphCentrality.colEntity': '엔터티',
  'graphCentrality.colInfluence': '영향력',
  'graphCentrality.colLinks': '링크',
  'graphCentrality.bridgeBadge': '커넥터',
  'graphCentrality.bridgeTitle': '커넥터 - 링크 수보다 더 큰 영향력을 가진 엔터티',
  'graphCentrality.degreeTitle': '들어옴 {in} · 나감 {out}',
  'memory.tab.associations': 'Associations',
  'entityAssociations.title': '엔티티 연관',
  'entityAssociations.intro':
    '많은 동일한 연결을 공유하는 엔티티들은 연관됩니다 — 단일 사실이 직접 연결하지 않더라도. Jaccard 유사도가 이러한 숨겨진 연관을 드러냅니다.',
  'entityAssociations.loading': '연관 계산 중…',
  'entityAssociations.errorPrefix': '그래프를 로드할 수 없습니다:',
  'entityAssociations.retry': 'Retry',
  'entityAssociations.empty': '아직 연관이 없습니다.',
  'entityAssociations.emptyHint':
    '엔티티들이 연결을 공유하기 시작하면 가장 강한 쌍이 여기에 표시됩니다.',
  'entityAssociations.namespaceLabel': 'Namespace',
  'entityAssociations.namespaceAll': '모든 네임스페이스',
  'entityAssociations.metricEntities': 'Entities',
  'entityAssociations.metricPairs': 'Associations',
  'entityAssociations.rankedHeading': '가장 강한 연관',
  'entityAssociations.linkedBadge': 'linked',
  'entityAssociations.inferredBadge': 'inferred',
  'entityAssociations.linkedTitle': '이 엔티티들은 직접 연결되어 있습니다.',
  'entityAssociations.inferredTitle': '직접적인 링크 없음 — 공유된 연결을 통해서만 연관됨.',
  'entityAssociations.sharedLabel': '{shared}개 공유',
  'entityAssociations.pairTitle': '{jaccard}% 유사 · {shared}/{union} 연결 공유',
  'entityAssociations.truncated': '{shown}/{total} 표시 — 가장 강한 것 먼저.',
  'memory.tab.freshness': 'Freshness',
  'memoryFreshness.title': '지식 신선도',
  'memoryFreshness.intro':
    '어시스턴트가 최근에 재확인하지 않은 사실은 망각 곡선을 따라 쇠퇴합니다. 이것은 무엇이 오래되었고 재확인할 가치가 있는지 보여주어, 오래된 사실을 여전히 확실한 것으로 취급하지 않도록 합니다.',
  'memoryFreshness.loading': '신선도 계산 중…',
  'memoryFreshness.errorPrefix': '그래프를 로드할 수 없습니다:',
  'memoryFreshness.retry': 'Retry',
  'memoryFreshness.empty': '아직 지식 그래프가 없습니다.',
  'memoryFreshness.emptyHint': '어시스턴트가 사실을 기록하면 신선도가 여기에서 추적됩니다.',
  'memoryFreshness.namespaceLabel': 'Namespace',
  'memoryFreshness.namespaceAll': '모든 네임스페이스',
  'memoryFreshness.metricFresh': 'Fresh',
  'memoryFreshness.metricFading': 'Fading',
  'memoryFreshness.metricStale': 'Stale',
  'memoryFreshness.recallCaption': '{total}개 사실에서 평균 재현율 {recall}%',
  'memoryFreshness.queueHeading': '재확인 대기열',
  'memoryFreshness.queueTruncated': '{shown}/{total} 표시 — 이것들을 먼저 처리하세요.',
  'memoryFreshness.allFresh': '모든 사실이 아직 신선합니다 — 재확인할 것이 없습니다.',
  'memoryFreshness.statusFading': 'fading',
  'memoryFreshness.statusStale': 'stale',
  'memoryFreshness.ageLabel': '{days}일 전',
  'memoryFreshness.recallTitle': '{recall}% 재현율 · 반감기 {halfLife}일',
  'memory.tab.path': '경로',
  'connectionPath.title': '연결 경로',
  'connectionPath.intro':
    '두 엔티티를 잇는 가장 짧은 관계 사슬을 추적합니다 — 여러 홉을 거치더라도 그래프가 둘을 어떻게 연결하는지 보여줍니다.',
  'connectionPath.loading': '그래프를 불러오는 중…',
  'connectionPath.errorPrefix': '그래프를 불러올 수 없습니다:',
  'connectionPath.retry': '다시 시도',
  'connectionPath.namespaceLabel': '네임스페이스',
  'connectionPath.namespaceAll': '모든 네임스페이스',
  'connectionPath.sourceLabel': '시작',
  'connectionPath.targetLabel': '끝',
  'connectionPath.sourcePlaceholder': '시작 엔티티',
  'connectionPath.targetPlaceholder': '끝 엔티티',
  'connectionPath.prompt': '두 엔티티를 선택하여 어떻게 연결되어 있는지 추적하세요.',
  'connectionPath.empty': '아직 지식 그래프가 없습니다.',
  'connectionPath.emptyHint':
    '어시스턴트가 관련 정보를 기록하면 여기에서 연결을 추적할 수 있습니다.',
  'connectionPath.resultHeading': '최단 경로',
  'connectionPath.pathSummary': '{length}홉 떨어져 있음',
  'connectionPath.sameMessage': '서로 다른 두 엔티티를 선택하세요.',
  'connectionPath.missingSource': '"{entity}"이(가) 그래프에 없습니다.',
  'connectionPath.missingTarget': '"{entity}"이(가) 그래프에 없습니다.',
  'connectionPath.noPath': '"{source}"와(과) "{target}" 사이에 연결을 찾을 수 없습니다.',
  'memoryTree.status.title': '메모리 트리',
  'memoryTree.status.autoSyncLabel': '자동 동기화',
  'memoryTree.status.autoSyncDescription':
    '새 수집을 중지하려면 일시 중지하세요. 기존 위키는 계속 쿼리할 수 있습니다.',
  'memoryTree.status.statusTile': '상태',
  'memoryTree.status.lastSyncTile': '마지막 동기화',
  'memoryTree.status.totalChunksTile': '총 청크',
  'memoryTree.status.wikiSizeTile': '위키 크기',
  'memoryTree.status.statusRunning': '실행 중',
  'memoryTree.status.statusPaused': '일시 중지됨',
  'memoryTree.status.statusSyncing': '동기화 중',
  'memoryTree.status.statusError': '오류',
  'memoryTree.status.statusIdle': '유휴 상태',
  'memoryTree.status.never': '없음',
  'memoryTree.status.fetchError': '메모리 트리 상태를 가져올 수 없습니다.',
  'memoryTree.status.retry': '다시 시도',
  'memoryTree.status.toggleFailed': '자동 동기화를 전환할 수 없습니다.',
  'memoryTree.status.justNow': '방금 전',
  'memoryTree.status.secondsAgo': '{count}초 전',
  'memoryTree.status.minuteAgo': '1분 전',
  'memoryTree.status.minutesAgo': '{count}분 전',
  'memoryTree.status.hourAgo': '1시간 전',
  'memoryTree.status.hoursAgo': '{count}시간 전',
  'memoryTree.status.dayAgo': '1일 전',
  'memoryTree.status.daysAgo': '{count}일 전',
  'memoryTree.status.integrationsTitle': '통합별 상태',
  'memoryTree.status.integrationsEmpty': '연결된 통합이 없습니다',
  'memoryTree.status.integrationActive': '활성',
  'memoryTree.status.integrationStale': '오래됨',
  'memoryTree.status.integrationChunks': '청크: {count}개',
  'alerts.title': '알림',
  'alerts.empty': '아직 알림이 없습니다',
  'alerts.markAllRead': '모두 읽음으로 표시',
  'alerts.unread': '읽지 않음',
  'rewards.title': '보상',
  'rewards.referrals': '추천',
  'rewards.coupons': '교환',
  'rewards.localUnavailable':
    '로컬 로그인은 리워드, 쿠폰 또는 추천 크레딧을 적립할 수 없습니다. 리워드를 적립하려면 로그아웃하고 OpenHuman 계정으로 로그인하세요.',
  'rewards.localUnavailableCta': '계정 설정 열기',
  'rewards.credits': '크레딧',
  'rewards.referralCode': '내 추천 코드',
  'rewards.copyCode': '코드 복사',
  'rewards.share': '공유',
  'onboarding.welcome': '안녕하세요. 저는 OpenHuman입니다.',
  'onboarding.welcomeDesc':
    '컴퓨터에서 실행되는 초지능 AI 어시스턴트입니다. 비공개이며, 간단하고, 매우 강력합니다.',
  'onboarding.context': '컨텍스트 수집',
  'onboarding.contextDesc': '매일 사용하는 도구와 서비스를 연결하세요.',
  'onboarding.localAI': '로컬 AI',
  'onboarding.localAIDesc': '기기에서 실행되는 로컬 AI 모델을 설정하세요.',
  'onboarding.chatProvider': '채팅 제공업체',
  'onboarding.chatProviderDesc': '어시스턴트와 상호작용할 방법을 선택하세요.',
  'onboarding.referral': '추천',
  'onboarding.referralDesc': '추천 코드가 있다면 적용하세요.',
  'onboarding.finish': '설정 완료',
  'onboarding.finishDesc': '모든 준비가 끝났습니다! OpenHuman을 사용해 보세요.',
  'onboarding.skip': '건너뛰기',
  'onboarding.getStarted': '시작하기',
  'onboarding.runtimeChoice.title': 'OpenHuman을 어떻게 실행하시겠습니까?',
  'onboarding.runtimeChoice.subtitle':
    '가장 잘 맞는 설정을 선택하세요. 나중에 설정에서 변경할 수 있습니다.',
  'onboarding.runtimeChoice.cloud.title': '간단 모드',
  'onboarding.runtimeChoice.cloud.tagline': 'OpenHuman이 모든 것을 대신 관리하도록 합니다.',
  'onboarding.runtimeChoice.cloud.f1': '내장 보안',
  'onboarding.runtimeChoice.cloud.f2': '사용량을 더 오래 쓰기 위한 토큰 압축',
  'onboarding.runtimeChoice.cloud.f3': '하나의 구독으로 모든 모델 포함',
  'onboarding.runtimeChoice.cloud.f4': '관리할 API 키 없음',
  'onboarding.runtimeChoice.cloud.f5': '간단한 설정',
  'onboarding.runtimeChoice.custom.title': '사용자 지정 실행',
  'onboarding.runtimeChoice.custom.tagline': '직접 키를 가져와 사용 중인 항목을 완전히 제어합니다.',
  'onboarding.runtimeChoice.custom.f1': '거의 모든 기능에 API 키가 필요합니다',
  'onboarding.runtimeChoice.custom.f2': '이미 결제 중인 서비스를 다시 사용합니다',
  'onboarding.runtimeChoice.custom.f3': '모든 것을 로컬에서 실행하면 무료일 수 있습니다',
  'onboarding.runtimeChoice.custom.f4': '더 많은 설정과 더 많은 옵션',
  'onboarding.runtimeChoice.custom.f5': '고급 사용자와 개발자에게 가장 적합',
  'onboarding.runtimeChoice.cloud.creditHighlight': '가입하면 무료 크레딧 제공',
  'onboarding.runtimeChoice.continueCloud': '간단 모드로 계속',
  'onboarding.runtimeChoice.continueCustom': '사용자 지정으로 계속',
  'onboarding.runtimeChoice.recommended': '추천',
  'onboarding.runtimeChoice.exitError': '온보딩을 완료할 수 없습니다. 다시 시도해 주세요.',
  'onboarding.apiKeys.title': 'API 키를 추가해 봅시다',
  'onboarding.apiKeys.subtitle':
    '지금 붙여넣거나 건너뛰고 나중에 설정 › AI에서 추가할 수 있습니다. 키는 이 기기에 저장되며 저장 시 암호화됩니다.',
  'onboarding.apiKeys.openaiLabel': 'OpenAI API 키',
  'onboarding.apiKeys.openaiPlaceholder': 'sk-...',
  'onboarding.apiKeys.openaiOauthHint':
    'ChatGPT Plus/Pro(구독) 또는 OpenAI API 키를 사용하세요. 둘 다 필수는 아닙니다.',
  'onboarding.apiKeys.openaiOauthOpening': '로그인 중…',
  'onboarding.apiKeys.openaiOauthConnect': 'ChatGPT로 로그인',
  'onboarding.apiKeys.openaiOauthConnected': 'ChatGPT로 연결됨',
  'onboarding.apiKeys.openaiOauthCallbackHint':
    '로그인한 후 브라우저에서 전체 리디렉션 URL을 붙여넣으세요({url}로 시작).',
  'onboarding.apiKeys.oauthDesktopOnly': 'ChatGPT 로그인은 데스크톱 앱에서만 사용할 수 있습니다.',
  'onboarding.apiKeys.oauthStartFailed':
    'ChatGPT 로그인을 시작할 수 없습니다. 다시 시도하거나 API 키를 사용하세요.',
  'onboarding.apiKeys.oauthPasteRedirect': '로그인한 후 브라우저에서 리디렉션 URL을 붙여넣으세요.',
  'onboarding.apiKeys.oauthCompleteFailed':
    'ChatGPT 로그인이 완료되지 않았습니다. 리디렉션 URL을 확인하고 다시 시도하세요.',
  'onboarding.apiKeys.finishSignIn': 'ChatGPT 로그인 완료',
  'onboarding.apiKeys.orApiKey': '또는 API 키',
  'onboarding.apiKeys.anthropicLabel': 'Anthropic API 키',
  'onboarding.apiKeys.anthropicPlaceholder': 'sk-ant-...',
  'onboarding.apiKeys.saveError':
    '해당 키를 저장할 수 없습니다. 다시 확인한 후 다시 시도해 주세요.',
  'onboarding.apiKeys.skipForNow': '지금은 건너뛰기',
  'onboarding.apiKeys.continue': '저장하고 계속',
  'onboarding.apiKeys.saving': '저장 중…',
  'onboarding.custom.stepperInference': '추론',
  'onboarding.custom.stepperVoice': '음성',
  'onboarding.custom.stepperOAuth': 'OAuth',
  'onboarding.custom.stepperSearch': '검색',
  'onboarding.custom.stepperEmbeddings': 'Embeddings',
  'onboarding.custom.stepperMemory': '메모리',
  'onboarding.custom.stepCounter': '{total}단계 중 {n}단계',
  'onboarding.custom.defaultTitle': '기본값',
  'onboarding.custom.defaultSubtitle': 'OpenHuman이 대신 관리하도록 합니다.',
  'onboarding.custom.configureTitle': '구성',
  'onboarding.custom.configureSubtitle': '사용할 항목을 직접 선택합니다.',
  'onboarding.custom.progressAriaLabel': '온보딩 진행 상황',
  'onboarding.custom.continue': '계속',
  'onboarding.custom.back': '뒤로',
  'onboarding.custom.finish': '설정 완료',
  'onboarding.custom.configureLater':
    '온보딩 후에 이 설정을 마칠 수 있습니다. 완료되면 해당 설정 페이지로 이동합니다.',
  'onboarding.custom.openSettings': '설정에서 열기',
  'onboarding.custom.inference.title': '추론(텍스트)',
  'onboarding.custom.inference.subtitle':
    '어떤 언어 모델이 질문에 답하고 에이전트를 실행해야 하나요?',
  'onboarding.custom.inference.defaultDesc':
    'OpenHuman은 모든 작업을 적절한 기본 모델로 라우팅합니다. 키도 필요 없고 설정도 필요 없습니다.',
  'onboarding.custom.inference.configureDesc':
    '직접 OpenAI 또는 Anthropic 키를 가져오세요. 모든 텍스트 기반 작업에 이 키를 사용합니다.',
  'onboarding.custom.voice.title': '음성',
  'onboarding.custom.voice.subtitle':
    '음성 모드를 위한 음성-텍스트 변환 및 텍스트-음성 변환입니다.',
  'onboarding.custom.voice.defaultDesc':
    'OpenHuman에는 바로 사용할 수 있는 관리형 STT/TTS가 포함되어 있습니다. 별도로 연결할 필요가 없습니다.',
  'onboarding.custom.voice.configureDesc':
    '직접 ElevenLabs / OpenAI Whisper 등을 사용하세요. 설정 › 음성에서 구성할 수 있습니다.',
  'onboarding.custom.oauth.title': '연결(OAuth)',
  'onboarding.custom.oauth.subtitle':
    'OAuth가 필요한 Gmail, Slack, Notion 및 기타 연결 서비스입니다.',
  'onboarding.custom.oauth.defaultDesc':
    'OpenHuman은 관리형 Composio 워크스페이스를 실행합니다. 나중에 각 서비스를 한 번의 클릭으로 연결할 수 있습니다.',
  'onboarding.custom.oauth.configureDesc':
    '직접 Composio 계정 또는 API 키를 가져오세요. 설정 › 연결에서 구성할 수 있습니다.',
  'onboarding.custom.search.title': '웹 검색',
  'onboarding.custom.search.subtitle': 'OpenHuman이 사용자를 대신해 웹을 검색하는 방식입니다.',
  'onboarding.custom.search.defaultDesc':
    'OpenHuman은 관리형 검색 백엔드를 사용합니다. 키가 필요 없습니다.',
  'onboarding.custom.search.configureDesc':
    '직접 검색 제공업체 키(Tavily, Brave 등)를 가져오세요. 설정 › 도구에서 구성할 수 있습니다.',
  'onboarding.custom.embeddings.title': 'Embeddings',
  'onboarding.custom.embeddings.subtitle':
    'OpenHuman이 시맨틱 메모리 검색을 위한 벡터 임베딩을 생성하는 방식입니다.',
  'onboarding.custom.embeddings.defaultDesc':
    'OpenHuman이 관리형 임베딩 서비스를 사용합니다. API 키가 필요 없습니다.',
  'onboarding.custom.embeddings.configureDesc':
    '자체 임베딩 공급자(OpenAI, Voyage, Ollama 등)를 사용하세요.',
  'onboarding.custom.memory.title': '메모리',
  'onboarding.custom.memory.subtitle':
    'OpenHuman이 사용자의 컨텍스트, 선호도, 이전 대화를 기억하는 방식입니다.',
  'onboarding.custom.memory.defaultDesc':
    'OpenHuman은 메모리 저장과 검색을 자동으로 관리합니다. 설정할 것이 없습니다.',
  'onboarding.custom.memory.configureDesc':
    '메모리를 직접 검사, 내보내기 또는 삭제할 수 있습니다. 설정 › 메모리에서 구성할 수 있습니다.',
  'accounts.addAccount': '계정 추가',
  'accounts.addApps': '앱 추가',
  'accounts.manageAccounts': '계정 관리',
  'accounts.noAccounts': '연결된 계정이 없습니다',
  'accounts.connectAccount': '시작하려면 계정을 연결하세요',
  'accounts.agent': '에이전트',
  'accounts.respondQueue': '응답 대기열',
  'accounts.disconnect': '연결 해제',
  'accounts.disconnectConfirm': '이 계정의 연결을 해제하시겠습니까?',
  'accounts.disconnectClearMemory': '이 소스의 메모리도 삭제',
  'accounts.disconnectClearMemoryHint':
    '이 연결과 연관된 로컬 메모리 조각을 영구적으로 삭제합니다.',
  'accounts.searchAccounts': '계정 검색...',
  'channels.title': '채널',
  'channels.configure': '채널 구성',
  'channels.setup': '설정',
  'channels.noChannels': '구성된 채널이 없습니다',
  'channels.localManagedUnavailable': '로컬 사용자는 관리 채널을 사용할 수 없습니다.',
  'channels.addChannel': '채널 추가',
  'channels.status.connected': '연결됨',
  'channels.status.disconnected': '연결 해제됨',
  'channels.status.error': '오류',
  'channels.status.configuring': '구성 중',
  'channels.defaultMessaging': '기본 메시징 채널',
  'channels.setAsDefault': '기본값으로 설정',
  'channels.defaultBadge': '기본값',
  'webhooks.title': '웹훅',
  'webhooks.create': '웹훅 생성',
  'webhooks.noWebhooks': '구성된 웹훅이 없습니다',
  'webhooks.url': 'URL',
  'webhooks.secret': '시크릿',
  'webhooks.events': '이벤트',
  'webhooks.archiveDirectory': '보관 디렉터리',
  'webhooks.todayFile': '오늘의 파일',
  'invites.title': '초대',
  'invites.create': '초대 생성',
  'invites.noInvites': '대기 중인 초대가 없습니다',
  'invites.code': '초대 코드',
  'invites.copyLink': '링크 복사',
  'invites.generate': '초대 생성',
  'invites.generating': '생성 중...',
  'invites.refreshing': '초대 새로 고치는 중...',
  'invites.loading': '초대 로드 중...',
  'invites.copyCodeAria': '초대 코드 복사',
  'invites.revokeAria': '초대 취소',
  'invites.usedUp': '소진됨',
  'invites.uses': '용도: {current}{max}',
  'invites.expiresOn': '{date} 만료',
  'invites.empty': '아직 초대가 없습니다.',
  'invites.emptyHint': '다른 사람과 공유할 초대 코드를 생성하세요.',
  'invites.revokeTitle': '초대 코드 취소',
  'invites.revokePromptPrefix': '정말 하시겠습니까? 초대 코드 취소',
  'invites.revokeWarning': '이 초대 코드는 더 이상 유효하지 않으며 팀 참여에 사용할 수 없습니다.',
  'invites.revoking': '취소 중...',
  'invites.revokeAction': '초대 취소',
  'invites.failedGenerate': '초대 생성 실패',
  'invites.failedRevoke': '초대 취소 실패',
  'team.refreshingMembers': '멤버 새로 고치는 중...',
  'team.loadingMembers': '구성원 로드 중...',
  'team.memberCount': '{count} 구성원',
  'team.memberCountPlural': '{count} 구성원',
  'team.you': '(귀하)',
  'team.removeAria': '{name} 제거',
  'team.noMembers': '구성원을 찾을 수 없습니다.',
  'team.removeTitle': '팀 구성원 제거',
  'team.removePromptPrefix': '제거하시겠습니까?',
  'team.removePromptSuffix': '팀에서?',
  'team.removeWarning': '팀 및 모든 팀 리소스에 대한 액세스 권한을 잃게 됩니다.',
  'team.removing': '제거 중...',
  'team.removeAction': '구성원 제거',
  'team.changeRoleTitle': '구성원 역할 변경',
  'team.changeRolePrompt': '{name}의 역할을 {oldRole}에서 {newRole}(으)로 변경하시겠습니까?',
  'team.changeRoleAdminGrant': '팀원 관리 권한을 포함한 모든 관리자 권한이 부여됩니다.',
  'team.changeRoleAdminRemove': '관리자 권한이 제거되어 더 이상 팀을 관리할 수 없게 됩니다.',
  'team.changing': '변경 중...',
  'team.changeRoleAction': '역할 변경',
  'team.failedChangeRole': '역할 변경 실패',
  'team.failedRemoveMember': '구성원 제거 실패',
  'devOptions.title': '고급',
  'devOptions.titleDiagnostics': '개발자 및 진단',
  'devOptions.diagnostics': '진단',
  'devOptions.diagnosticsDesc': '시스템 상태, 로그 및 성능 지표',
  'devOptions.toolPolicyDiagnosticsDesc': '도구 인벤토리, 정책 상태, MCP 허용 목록 및 최근 차단',
  'devOptions.toolPolicyDiagnostics.loading': '로딩 중…',
  'devOptions.toolPolicyDiagnostics.unavailable': '진단을 사용할 수 없습니다.',
  'devOptions.toolPolicyDiagnostics.posture.title': '정책 상태',
  'devOptions.toolPolicyDiagnostics.posture.autonomy': '자율성:',
  'devOptions.toolPolicyDiagnostics.posture.workspaceOnly': '작업공간만:',
  'devOptions.toolPolicyDiagnostics.posture.maxActionsPerHour': '시간당 최대 작업:',
  'devOptions.toolPolicyDiagnostics.posture.approvalMediumRisk': '승인(중간 위험):',
  'devOptions.toolPolicyDiagnostics.posture.blockHighRisk': '높은 위험 차단:',
  'devOptions.toolPolicyDiagnostics.inventory.title': '인벤토리',
  'devOptions.toolPolicyDiagnostics.inventory.totalTools': '총 도구',
  'devOptions.toolPolicyDiagnostics.inventory.enabledTools': '활성화된 도구',
  'devOptions.toolPolicyDiagnostics.inventory.mcpStdioTools': 'MCP stdio 도구',
  'devOptions.toolPolicyDiagnostics.inventory.jsonRpcTools': 'JSON-RPC 도구',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.title': 'MCP 허용 목록',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.summary':
    '활성화됨: {enabled} · 서버: {enabledCount}/{totalCount}',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.unnamed': '<이름 없음>',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.allowDeny': '허용={allowCount} 거부={denyCount}',
  'devOptions.toolPolicyDiagnostics.mcpWriteAudit.title': 'MCP 쓰기 감사',
  'devOptions.toolPolicyDiagnostics.mcpWriteAudit.summary':
    '활성화됨: {enabled} · 최근(24시간): {recentRows}',
  'devOptions.toolPolicyDiagnostics.recentBlocked.title': '최근 차단된 호출',
  'devOptions.toolPolicyDiagnostics.recentBlocked.empty': '기록된 차단 호출이 없습니다.',
  'devOptions.toolPolicyDiagnostics.redactedSurfaces.title': '마스킹된 표면',
  'devOptions.toolPolicyDiagnostics.redactedSurfaces.summary':
    '쓰기 가능: {writeCount} · 정책 표면: {policyCount}',
  'devOptions.debugPanels': '디버그 패널',
  'devOptions.debugPanelsDesc': '기능 플래그, 상태 검사 및 디버깅 도구',
  'devOptions.webhooks': '웹훅',
  'devOptions.webhooksDesc': '웹훅 통합을 구성하고 테스트합니다',
  'devOptions.memoryInspection': '메모리 검사',
  'devOptions.memoryInspectionDesc': '메모리 항목을 탐색, 쿼리 및 관리합니다',
  'voice.pushToTalk': '눌러서 말하기',
  'voice.recording': '녹음 중...',
  'voice.processing': '처리 중...',
  'voice.languageHint': '언어',
  'misc.rehydrating': '데이터를 불러오는 중...',
  'misc.checkingServices': '서비스 확인 중...',
  'misc.serviceUnavailable': '서비스를 사용할 수 없음',
  'misc.somethingWentWrong': '문제가 발생했습니다',
  'misc.tryAgainLater': '나중에 다시 시도해 주세요.',
  'misc.restartApp': '앱 다시 시작',
  'misc.updateAvailable': '업데이트 사용 가능',
  'misc.updateNow': '지금 업데이트',
  'misc.updateLater': '나중에',
  'misc.downloading': '다운로드 중...',
  'misc.installing': '설치 중...',
  'misc.beta':
    'OpenHuman은 초기 베타 버전입니다. 피드백을 공유하거나 발견한 버그를 신고해 주세요 — 모든 신고는 더 빠른 출시를 돕습니다.',
  'misc.betaFeedback': '피드백 보내기',
  'mnemonic.title': '복구 문구',
  'mnemonic.warning': '이 단어들을 순서대로 적어 안전한 곳에 보관하세요.',
  'mnemonic.copyWarning':
    '복구 문구를 절대 공유하지 마세요. 이 단어를 가진 사람은 누구나 계정에 접근할 수 있습니다.',
  'mnemonic.copied': '복구 문구가 클립보드에 복사되었습니다',
  'mnemonic.reveal': '문구 보기',
  'mnemonic.revealPhrase': '복구 문구 표시',
  'mnemonic.hidden': '복구 문구가 숨겨져 있습니다',
  'privacy.title': '개인정보 및 보안',
  'privacy.description': '외부 서비스로 전송되는 데이터에 대한 투명성 보고서입니다.',
  'privacy.empty': '감지된 외부 데이터 전송이 없습니다.',
  'privacy.whatLeavesComputer': '내 컴퓨터를 떠나는 데이터',
  'privacy.loading': '개인정보 세부 정보를 불러오는 중...',
  'privacy.loadError':
    '실시간 개인정보 목록을 불러올 수 없습니다. 아래의 분석 제어 기능은 계속 작동합니다.',
  'privacy.noCapabilities': '현재 데이터 이동을 공개하는 기능이 없습니다.',
  'privacy.sentTo': '전송 대상',
  'privacy.leavesDevice': '기기를 떠남',
  'privacy.staysLocal': '로컬에 유지됨',
  'privacy.anonymizedAnalytics': '제품 분석',
  'privacy.shareAnonymizedData': '제품 분석 및 진단 공유',
  'privacy.shareAnonymizedDataDesc':
    '안정적인 계정 ID와 앱 버전 메타데이터를 포함한 개인정보 제한 충돌 보고서와 사용 이벤트를 공유하여 OpenHuman 개선을 도와주세요. 메시지, 지갑 키, API 키, 세션 토큰은 절대 수집되지 않습니다.',
  'privacy.meetingFollowUps': '회의 후속 조치',
  'privacy.autoHandoffMeet': 'Google Meet transcript를 오케스트레이터에 자동 전달',
  'privacy.autoHandoffMeetDesc':
    'Google Meet 통화가 끝나면 OpenHuman의 오케스트레이터가 transcript를 읽고 메시지 초안 작성, 후속 일정 예약, 연결된 Slack 워크스페이스에 요약 게시 같은 작업을 수행할 수 있습니다. 기본값은 꺼짐입니다.',
  'privacy.analyticsDisclaimer':
    '활성화하면 제품 분석 및 진단에 개인정보가 제한된 충돌 보고서와 사용 이벤트, 안정적인 계정 ID, 앱 버전 메타데이터가 포함될 수 있습니다. 메시지, 지갑 키, API 키, 세션 토큰은 절대 수집되지 않습니다. 이 설정은 언제든지 변경할 수 있습니다.',
  'settings.about.version': '버전',
  'settings.about.updateAvailable': '사용 가능',
  'settings.about.softwareUpdates': '소프트웨어 업데이트',
  'settings.about.lastChecked': '마지막 확인',
  'settings.about.checking': '확인 중...',
  'settings.about.checkForUpdates': '업데이트 확인',
  'settings.about.releases': '릴리스',
  'settings.about.releasesDesc': 'GitHub에서 릴리스 노트와 이전 빌드를 찾아보세요.',
  'settings.about.openReleases': 'GitHub 릴리스 열기',
  'settings.about.connection': '연결',
  'settings.about.connectionMode': '모드',
  'settings.about.connectionModeLocal': '로컬',
  'settings.about.connectionModeCloud': '클라우드',
  'settings.about.connectionModeUnset': '선택되지 않음',
  'settings.about.serverUrl': '서버 URL',
  'settings.about.serverUrlUnavailable': '사용할 수 없음',
  'settings.about.connectionHelperLocal':
    '앱 실행 시 Tauri 셸이 프로세스 내부에서 시작합니다. 포트는 시작할 때 선택되므로 이 URL은 실행할 때마다 달라집니다.',
  'settings.about.connectionHelperCloud':
    '원격 코어에 연결되었습니다. BootCheck 또는 클라우드 모드 선택기에서 변경하세요.',
  'settings.heartbeat.title': '하트비트 및 루프',
  'settings.usage.title': '사용량 및 한도',
  'settings.usage.menuDesc': '비용, 토큰 사용량, 예산 및 백그라운드 활동',
  'settings.costDashboard.title': '비용 대시보드',
  'settings.costDashboard.sevenDayCost': '7일 일별 비용',
  'settings.costDashboard.sevenDayTokens': '7일 토큰 사용량',
  'settings.costDashboard.totalSpend': '7일 합계',
  'settings.costDashboard.monthlyPace': '월간 속도',
  'settings.costDashboard.budgetLimit': '예산 한도',
  'settings.costDashboard.utilization': '사용률',
  'settings.costDashboard.modelBreakdown': '모델별 세부 내역',
  'settings.costDashboard.model': '모델',
  'settings.costDashboard.provider': '제공업체',
  'settings.costDashboard.cost': '비용',
  'settings.costDashboard.tokens': '토큰',
  'settings.costDashboard.requests': '요청',
  'settings.costDashboard.percentOfTotal': '전체 대비 %',
  'settings.costDashboard.inputTokens': '입력',
  'settings.costDashboard.outputTokens': '출력',
  'settings.costDashboard.budgetNormal': '정상 진행 중',
  'settings.costDashboard.budgetWarning': '경고',
  'settings.costDashboard.budgetExceeded': '예산 초과',
  'settings.costDashboard.noBudget': '한도 설정 없음',
  'settings.costDashboard.noData': '지난 7일 동안 기록된 비용이 없습니다.',
  'settings.costDashboard.noModels': '지난 7일 동안 모델 활동이 없습니다.',
  'settings.costDashboard.loading': '비용 대시보드 로드 중…',
  'settings.costDashboard.disabledHint':
    '비용 대시보드가 config에서 비활성화되어 있습니다. 다시 활성화하려면 config.toml에서 [cost.dashboard] enabled = true로 설정하세요.',
  'settings.costDashboard.subtitle':
    '전체 스웜의 실시간 지출과 토큰 사용량입니다. 막대는 몇 초마다 자동으로 새로고침되며 페이지를 다시 로드할 필요가 없습니다.',
  'settings.costDashboard.summaryAriaLabel': '비용 요약 지표',
  'settings.costDashboard.lastSevenDays': '지난 7일',
  'settings.costDashboard.utilizationOf': '/',
  'settings.costDashboard.thisMonth': '이번 달',
  'settings.costDashboard.monthlyPaceHint':
    '현재 일일 실행 속도(평균 × 30)를 기준으로 예상한 월간 지출입니다.',
  'settings.costDashboard.budgetLimitHint':
    'config.toml의 cost.monthly_limit_usd에서 읽은 월간 예산입니다.',
  'settings.costDashboard.dailyTarget': '일일 목표',
  'settings.costDashboard.today': '오늘',
  'settings.costDashboard.todayBadge': '오늘',
  'settings.costDashboard.unknownProvider': '—',
  'settings.costDashboard.justNow': '방금 전',
  'settings.costDashboard.secondsAgo': '{value}초 전',
  'settings.costDashboard.minutesAgo': '{value}분 전',
  'settings.costDashboard.hoursAgo': '{value}시간 전',
  'settings.costDashboard.daysAgo': '{value}일 전',
  'settings.costDashboard.updated': '업데이트됨',
  'settings.costDashboard.refresh': '새로고침',
  'settings.costDashboard.utcNote': '일자는 UTC 기준으로 묶입니다',
  'settings.costDashboard.stackedNote': '입력 + 출력 누적',
  'settings.costDashboard.modelBreakdownHint': '지난 7일 전체 집계입니다.',
  'settings.costDashboard.categoryDistribution': '카테고리별 지출',
  'settings.costDashboard.categoryDistributionHint':
    '최근 채팅, 임베딩, 음성, 이미지, 재순위화 호출 기록에서 추정했습니다.',
  'settings.costDashboard.noCategories': '아직 기록된 카테고리별 지출이 없습니다.',
  'settings.costDashboard.categoryMeta': '{requests}개 요청 • {tokens}개 토큰',
  'settings.costDashboard.usageLog': '사용 로그',
  'settings.costDashboard.usageLogHint':
    '최근 {days}일의 최신 기록이며 최대 {limit}행까지 표시합니다.',
  'settings.costDashboard.logTotal': '{requests}개 요청 • {cost}',
  'settings.costDashboard.noUsageLog': '이 기간의 사용 기록이 없습니다.',
  'settings.costDashboard.when': '시간',
  'settings.costDashboard.category': '카테고리',
  'settings.costDashboard.session': '세션',
  'settings.costDashboard.noDataHint':
    '에이전트 메시지를 보내세요. 다음 제공업체 호출의 토큰 사용량이 약 10초 안에 차트에 표시됩니다.',
  'settings.search.title': '검색 엔진',
  'settings.search.menuDesc':
    'OpenHuman 관리 검색을 기본값으로 사용하거나 API 키로 자체 제공업체를 연결하세요.',
  'settings.search.description':
    '에이전트가 사용할 검색 엔진을 선택하거나 검색 도구를 완전히 비활성화합니다. 관리형은 OpenHuman의 백엔드를 사용합니다(설정 불필요). 병렬, Brave, Querit은 API 키를 사용하여 내 컴퓨터에서 직접 실행됩니다.',
  'settings.search.engineAria': '검색 엔진',
  'settings.search.engineDisabledLabel': 'Disabled',
  'settings.search.engineDisabledDesc':
    '에이전트 컨텍스트 및 사용 가능한 도구 목록에서 검색 도구를 제거합니다.',
  'settings.search.engineManagedLabel': 'OpenHuman 관리됨',
  'settings.search.engineManagedDesc':
    '기본값입니다. OpenHuman 백엔드를 통해 라우팅되며 API 키가 필요하지 않습니다.',
  'settings.search.localManagedUnavailable':
    '로컬 사용자는 OpenHuman 관리 검색을 사용할 수 없습니다. 웹 검색을 활성화하려면 자체 Parallel, Brave 또는 Querit API 키를 추가하세요.',
  'settings.search.engineParallelLabel': 'Parallel',
  'settings.search.engineParallelDesc':
    '직접 Parallel API: 검색, 추출, 채팅, 리서치, 보강, 데이터셋 도구.',
  'settings.search.engineBraveLabel': 'Brave 검색',
  'settings.search.engineBraveDesc': '직접 Brave 검색 API: 웹, 뉴스, 이미지 및 비디오 도구.',
  'settings.search.engineQueritLabel': 'Querit',
  'settings.search.engineQueritDesc':
    '직접 Querit API: 사이트, 시간 범위, 국가 및 언어 필터가 있는 웹 검색.',
  'settings.search.statusConfigured': '구성됨',
  'settings.search.statusNeedsKey': 'API 키 필요',
  'settings.search.fallbackToManaged':
    '구성된 키가 없습니다. 키가 저장될 때까지 검색은 관리형으로 대체됩니다.',
  'settings.search.getApiKey': 'API 키 가져오기',
  'settings.search.save': '저장',
  'settings.search.clear': '지우기',
  'settings.search.show': '표시',
  'settings.search.hide': '숨기기',
  'settings.search.statusSaving': '저장…',
  'settings.search.statusSaved': '저장되었습니다.',
  'settings.search.statusError': '실패',
  'settings.search.parallelKeyLabel': 'Parallel API 키',
  'settings.search.braveKeyLabel': 'Brave 검색 API 키',
  'settings.search.queritKeyLabel': 'Querit API 키',
  'settings.search.placeholderStored': '•••••••(저장됨)',
  'settings.search.placeholderParallel': 'pk_...',
  'settings.search.placeholderBrave': 'BSA...',
  'settings.search.placeholderQuerit': 'Querit API 키',
  'settings.search.allowedSitesLabel': '허용된 웹사이트',
  'settings.search.allowedSitesHint':
    '리서치 중 어시스턴트가 열고 읽을 수 있는 웹사이트입니다(한 줄에 호스트 하나, 예: reuters.com). 호스트에는 하위 도메인도 포함됩니다. 모든 웹 접근을 차단하려면 비워 두세요.',
  'settings.search.allowedSitesAllOn':
    '어시스턴트가 모든 공개 웹사이트를 열 수 있습니다. 로컬 및 비공개 주소는 계속 차단됩니다.',
  'settings.search.allowedSitesPlaceholder': 'reuters.com\napnews.com\ngithub.com',
  'settings.search.allowedSitesSave': '웹사이트 저장',
  'settings.search.accessModeAria': '웹 접근 모드',
  'settings.search.accessAllowAll': '모두 허용',
  'settings.search.accessCustom': '사용자 정의',
  'settings.search.accessBlockAll': '모두 차단',
  'settings.search.accessBlockAllHint':
    '모든 웹 접근이 차단됩니다. 어시스턴트는 어떤 웹사이트도 열거나 읽을 수 없습니다.',
  // ─── Settings global search bar ────────────────────────────
  'settings.settingsSearch.placeholder': '설정 검색…',
  'settings.settingsSearch.ariaLabel': '설정 검색',
  'settings.settingsSearch.clear': '검색 지우기',
  'settings.settingsSearch.resultsLabel': '검색 결과',
  'settings.settingsSearch.noResults': '“{query}”에 대한 설정을 찾을 수 없습니다',
  'settings.embeddings.title': '임베딩',
  'settings.embeddings.description':
    '시맨틱 검색을 위해 메모리를 벡터로 변환할 임베딩 제공자를 선택하세요. 제공자, 모델 또는 차원을 변경하면 저장된 벡터가 무효화되며 전체 메모리 초기화가 필요합니다.',
  'settings.embeddings.providerAria': '임베딩 제공자',
  'settings.embeddings.statusConfigured': '구성됨',
  'settings.embeddings.statusNeedsKey': 'API 키 필요',
  'settings.embeddings.requiresSignIn': 'OpenHuman 로그인 필요',
  'settings.embeddings.managedLoginRequired':
    '관리형 임베딩을 사용하려면 OpenHuman 로그인이 필요합니다. OpenHuman 백엔드를 사용하려면 로그인하세요.',
  'settings.embeddings.managedBannerIntro':
    '관리형 임베딩은 OpenHuman 백엔드를 통해 라우팅되며 OpenHuman 계정 세션이 필요합니다.',
  'settings.embeddings.managedBannerLocalSession':
    '이 공급자를 사용하려면 로컬 세션을 종료하고 로그인하거나, 로컬 또는 자체 키 임베딩 공급자로 전환하세요.',
  'settings.embeddings.managedBannerRemoteSession':
    'OpenHuman 세션을 새로 고치려면 다시 로그인하거나, 로컬 또는 자체 키 임베딩 공급자로 전환하세요.',
  'settings.embeddings.signInAgain': '다시 로그인',
  'settings.embeddings.apiKeyLabel': '{provider} API 키',
  'settings.embeddings.placeholderStored': '•••••••(저장됨)',
  'settings.embeddings.placeholderKey': 'API 키를 붙여넣으세요…',
  'settings.embeddings.keyStoredEncrypted': 'API 키는 이 기기에 암호화되어 저장됩니다.',
  'settings.embeddings.show': '표시',
  'settings.embeddings.hide': '숨기기',
  'settings.embeddings.save': '저장',
  'settings.embeddings.clear': '지우기',
  'settings.embeddings.model': '모델',
  'settings.embeddings.dimensions': '차원',
  'settings.embeddings.customEndpoint': '사용자 정의 엔드포인트',
  'settings.embeddings.customModelPlaceholder': '모델 이름',
  'settings.embeddings.customDimsPlaceholder': '차원',
  'settings.embeddings.applyCustom': '적용',
  'settings.embeddings.testConnection': '연결 테스트',
  'settings.embeddings.testing': '테스트 중…',
  'settings.embeddings.testSuccess': '연결됨 — {dims} 차원',
  'settings.embeddings.connectionTestFailed': '테스트 실패',
  'settings.embeddings.verifyFallback':
    '임베딩 엔드포인트를 확인할 수 없습니다. 엔드포인트가 실행 중이고 임베딩 모델을 제공하는지 확인한 후 다시 저장하세요.',
  'settings.embeddings.testFailed': '실패: {error}',
  'settings.embeddings.saving': '저장 중…',
  'settings.embeddings.saved': '저장됨.',
  'settings.embeddings.errorPrefix': '실패',
  'settings.embeddings.wipeTitle': '메모리 벡터를 초기화하시겠습니까?',
  'settings.embeddings.wipeBody':
    '임베딩 제공자, 모델 또는 차원을 변경하면 저장된 모든 메모리 벡터가 삭제됩니다. 검색이 다시 작동하려면 메모리를 재구축해야 합니다. 이 작업은 취소할 수 없습니다.',
  'settings.embeddings.cancel': '취소',
  'settings.embeddings.confirmWipe': '삭제 및 적용',
  'settings.embeddings.setupTitle': '{provider} 설정',
  'settings.embeddings.saveAndSwitch': '저장 및 전환',
  'settings.embeddings.optional': '선택사항',
  'settings.embeddings.vectorSearchDisabled':
    '벡터 검색이 비활성화되어 있습니다. 메모리 회상은 의미 순위 없이 키워드 매칭과 최신성만 사용합니다.',
  'settings.embeddings.clearKey': 'API 키 삭제',
  'pages.settings.ai.embeddings': '임베딩',
  'pages.settings.ai.embeddingsDesc': '메모리 검색을 위한 벡터 인코딩 모델',
  'mcp.alphaBadge': '알파',
  'mcp.alphaBannerText':
    'MCP 서버 지원은 초기 알파 단계입니다. 레지스트리, 설치 흐름 및 도구 연결은 릴리스 사이에 오작동하거나 형태가 바뀔 수 있습니다.',
  'mcp.toolList.noTools': '사용 가능한 도구가 없습니다.',
  'mcp.setup.secretDialog.title': 'MCP 설정 - 비밀번호 입력',
  'mcp.setup.secretDialog.bodyPrefix': 'MCP 설정 에이전트에는 다음이 필요합니다.',
  'mcp.setup.secretDialog.bodySuffix':
    '. 입력한 값은 코어 프로세스로 직접 전송되며 AI 대화에는 절대 들어가지 않습니다.',
  'mcp.setup.secretDialog.inputLabel': '값',
  'mcp.setup.secretDialog.inputPlaceholder': '여기에 붙여넣으세요.',
  'mcp.setup.secretDialog.show': '표시',
  'mcp.setup.secretDialog.hide': '숨기기',
  'mcp.setup.secretDialog.submit': '제출',
  'mcp.setup.secretDialog.cancel': '취소',
  'mcp.setup.secretDialog.submitting': '제출 중…',
  'mcp.setup.secretDialog.errorPrefix': '제출 실패:',
  'mcp.setup.secretDialog.privacyNote':
    '로컬 MCP 비밀 테이블에 암호화되어 저장됩니다. 로그에 남기거나 모델로 전송하지 않습니다.',
  'devices.betaBadge': '베타',
  'devices.betaText':
    '이 기능은 현재 베타 버전입니다. iOS 기기를 이 OpenHuman과 페어링하여 원격 클라이언트로 사용할 수 있습니다.',
  'devices.comingSoonDescription':
    '기기 페어링이 곧 제공됩니다. 이 페이지에서 iPhone을 페어링하고 연결된 기기를 관리할 수 있게 됩니다.',
  'devices.title': '장치',
  'devices.pairIphone': 'iPhone 페어링',
  'devices.noPaired': '페어링된 장치가 없습니다.',
  'devices.emptyState': 'iPhone에서 QR code을 스캔하여 이 OpenHuman 세션에 연결하세요.',
  'devices.devicePairedTitle': '기기 페어링됨',
  'devices.devicePairedMessage': 'iPhone이 성공적으로 연결되었습니다.',
  'devices.deviceRevokedTitle': '장치가 취소되었습니다.',
  'devices.deviceRevokedMessage': '{label}이(가) 제거되었습니다.',
  'devices.revokeFailedTitle': '취소 실패',
  'devices.online': '온라인',
  'devices.offline': '오프라인',
  'devices.lastSeenNever': '없음',
  'devices.lastSeenNow': '방금',
  'devices.lastSeenMinutes': '{count}분 전',
  'devices.lastSeenHours': '{count}시간 전',
  'devices.lastSeenDays': '{count}일 전',
  'devices.revoke': '취소',
  'devices.revokeAria': '{label} 취소',
  'devices.confirmRevokeTitle': '장치를 취소하시겠습니까?',
  'devices.confirmRevokeBody':
    '{label}의 연결이 더 이상 허용되지 않습니다. 이 작업은 취소할 수 없습니다.',
  'devices.loadFailed': '장치를 로드하지 못했습니다: {message}',
  'devices.pairModal.title': 'iPhone 페어링',
  'devices.pairModal.loading': '페어링 코드 생성 중…',
  'devices.pairModal.instructions': 'iPhone에서 OpenHuman 앱을 열고 이 코드를 스캔하세요.',
  'devices.pairModal.expiresIn': '코드는 ~{count}분 후에 만료됩니다.',
  'devices.pairModal.expiresInPlural': '코드는 ~{count}분 후에 만료됩니다.',
  'devices.pairModal.showDetails': '세부 정보 표시',
  'devices.pairModal.hideDetails': '세부 정보 숨기기',
  'devices.pairModal.channelId': '채널 ID',
  'devices.pairModal.pairingUrl': '페어링 URL',
  'devices.pairModal.expiredTitle': 'QR code 만료',
  'devices.pairModal.expiredBody': '페어링을 계속하려면 새 코드를 생성하세요.',
  'devices.pairModal.generateNewCode': '새 코드 생성',
  'devices.pairModal.successTitle': 'iPhone과 페어링됨',
  'devices.pairModal.autoClose': '자동으로 종료 중…',
  'devices.pairModal.errorPrefix': '페어링 생성 실패: {message}',
  'devices.pairModal.errorTitle': '문제가 발생했습니다.',
  'devices.pairModal.copyUrl': '복사',
  'mcp.catalog.searchAria': 'MCP 서버 카탈로그 검색',
  'mcp.catalog.searchPlaceholder': 'MCP 서버 카탈로그 검색...',
  'mcp.catalog.loadFailed': '카탈로그를 로드하지 못했습니다.',
  'mcp.catalog.noResults': '서버를 찾을 수 없습니다.',
  'mcp.catalog.noResultsFor': '"{query}"에 대한 서버를 찾을 수 없습니다.',
  'mcp.catalog.loadMore': '추가 로드',
  'mcp.configAssistant.title': '구성 도우미',
  'mcp.configAssistant.empty': '구성, 필수 환경 변수 또는 설정 단계에 대해 문의하세요.',
  'mcp.configAssistant.autoPromptCta': '단계별 설정 도움말 보기',
  'mcp.configAssistant.suggestedValues': '제안 값:',
  'mcp.configAssistant.valueHidden': '(값 숨김)',
  'mcp.configAssistant.applySuggested': '제안 값 적용',
  'mcp.configAssistant.reinstallHint': '해당 값을 적용하려면 해당 값을 다시 설치하세요.',
  'mcp.configAssistant.thinking': '생각 중...',
  'mcp.configAssistant.inputPlaceholder': '질문하기(보내려면 Enter, 줄 바꿈하려면 Shift+Enter)',
  'mcp.configAssistant.send': '보내기',
  'mcp.configAssistant.failedResponse': '응답을 받지 못했습니다.',
  'mcp.toolList.availableSingular': '{count} 도구 사용 가능',
  'mcp.toolList.availablePlural': '{count} 도구 사용 가능',
  'mcp.toolList.tryTool': '시도',
  'mcp.toolList.tryToolAria': '{name} 실행 플레이그라운드 열기',
  'mcp.playground.title': '{name} 실행',
  'mcp.playground.close': '플레이그라운드 닫기',
  'mcp.playground.inputSchema': '입력 스키마',
  'mcp.playground.argsLabel': '인수(JSON)',
  'mcp.playground.argsHelp': '입력 스키마와 일치하는 JSON을 입력하세요. 빈 입력은 {}로 처리됩니다.',
  'mcp.playground.runShortcut': '실행하려면 ⌘/Ctrl + Enter',
  'mcp.playground.format': '서식 지정',
  'mcp.playground.invalidJson': '유효하지 않은 JSON',
  'mcp.playground.run': '도구 실행',
  'mcp.playground.running': '실행 중…',
  'mcp.playground.result': '결과',
  'mcp.playground.resultError': '도구가 오류를 반환했습니다.',
  'mcp.playground.copyResult': '결과 복사',
  'mcp.playground.copied': '복사됨',
  'mcp.playground.history': '기록',
  'mcp.playground.historyEmpty': '이 세션에는 아직 호출이 없습니다.',
  'mcp.playground.historyLoad': '불러오기',
  'mcp.playground.unexpectedError': '도구 호출 중 예기치 않은 오류가 발생했습니다.',
  'mcp.catalog.deployed': '배포됨',
  'mcp.catalog.installCount': '{count} 설치',
  'app.update.dismissNotification': '업데이트 알림 닫기',
  'bootCheck.rpcAuthSuffix': 'RPC마다.',
  'app.localAiDownload.expandAria': '다운로드 진행률 확장',
  'app.localAiDownload.collapseAria': '다운로드 진행률 축소',
  'app.localAiDownload.dismissAria': '다운로드 알림 닫기',
  'mobile.nav.ariaLabel': '모바일 탐색',
  'progress.stepsAria': '진행 단계',
  'progress.stepAria': '{total}의 {current} 단계',
  'workspace.vaultsTitle': '지식 저장소',
  'workspace.vaultsDesc': '로컬 폴더를 가리킵니다. 파일은 청크로 분할되어 메모리에 미러링됩니다.',
  'calls.title': '통화',
  'calls.comingSoonBody': 'AI 지원 통화가 곧 제공될 예정입니다. 계속 지켜봐 주시기 바랍니다.',
  'art.rotatingTetrahedronAria': '회전하는 역사면체 우주선',
  'mcp.installed.title': '설치됨',
  'mcp.installed.browseCatalog': '카탈로그 찾아보기',
  'mcp.installed.empty': '아직 MCP 서버가 설치되지 않았습니다.',
  'mcp.installed.toolSingular': '{count} 도구',
  'mcp.installed.toolPlural': '{count} 도구',
  'mcp.health.title': '상태',
  'mcp.health.summaryAria': 'MCP 연결 상태 요약',
  'mcp.health.connectedCount': '{count}개 연결됨',
  'mcp.health.connectingCount': '{count}개 연결 중',
  'mcp.health.errorCount': '{count}개 오류',
  'mcp.health.disconnectedCount': '{count}개 유휴',
  'mcp.health.retryAll': '모두 다시 시도({count})',
  'mcp.health.retryAllAria': '오류가 발생한 MCP 서버 {count}개 모두 다시 시도',
  'mcp.health.disconnectAll': '모두 연결 끊기({count})',
  'mcp.health.disconnectAllAria': '연결된 MCP 서버 {count}개 모두 연결 끊기',
  'mcp.health.disconnectConfirm.title': '모든 MCP 서버 연결을 끊으시겠습니까?',
  'mcp.health.disconnectConfirm.body':
    '현재 연결된 MCP 서버 {count}개의 연결을 끊습니다. 설치된 구성과 비밀 값은 유지되며 나중에 어떤 서버든 다시 연결할 수 있습니다.',
  'mcp.health.disconnectConfirm.cancel': '취소',
  'mcp.health.disconnectConfirm.confirm': '모두 연결 끊기',
  'mcp.health.opErrorGeneric': '일괄 작업에 실패했습니다. 로그를 확인하세요.',
  'mcp.health.bulkPartialFailure':
    '{total}개 서버 중 {failed}개가 실패했습니다. 로그를 확인하세요.',
  'mcp.installed.search.landmarkAria': '설치된 MCP 서버 검색',
  'mcp.installed.search.inputAria': '이름으로 설치된 MCP 서버 필터링',
  'mcp.installed.search.placeholder': '서버 필터링…',
  'mcp.installed.search.clearAria': '필터 지우기',
  'mcp.installed.search.countMatches': '{total}개 중 {shown}개 서버',
  'mcp.installed.search.noMatches': '"{query}"와 일치하는 서버가 없습니다.',
  'mcp.inventory.openButton': '인벤토리',
  'mcp.inventory.openAria': '공유 가능한 MCP 인벤토리 패널 열기',
  'mcp.inventory.title': '공유 가능한 MCP 인벤토리',
  'mcp.inventory.subtitle':
    '설치된 MCP 서버를 비밀 값이 없는 휴대용 매니페스트로 내보내거나 팀원의 매니페스트를 가져옵니다. 비밀 env 값은 포함되거나 가져오지 않습니다.',
  'mcp.inventory.close': '인벤토리 패널 닫기',
  'mcp.inventory.tablistAria': '인벤토리 섹션',
  'mcp.inventory.tab.export': '내보내기',
  'mcp.inventory.tab.import': '가져오기',
  'mcp.inventory.export.empty':
    '아직 설치된 MCP 서버가 없어 내보낼 항목이 없습니다. 먼저 카탈로그에서 서버를 설치하세요.',
  'mcp.inventory.export.privacyTitle': '이 매니페스트에 포함되는 내용',
  'mcp.inventory.export.privacyBody':
    '서버 이름, 정규 이름, env 변수 KEY NAMES 및 비밀 값이 아닌 구성만 포함됩니다. 비밀 값, 기기 식별자 및 설치별 타임스탬프는 의도적으로 제거됩니다.',
  'mcp.inventory.export.serverCount': '이 매니페스트의 서버 {count}개',
  'mcp.inventory.export.copy': '복사',
  'mcp.inventory.export.copied': '복사됨',
  'mcp.inventory.export.copyAria': '매니페스트 JSON을 클립보드에 복사',
  'mcp.inventory.export.download': '다운로드',
  'mcp.inventory.export.downloadAria': '매니페스트를 JSON 파일로 다운로드',
  'mcp.inventory.import.trustTitle': '가져온 매니페스트를 신뢰할 수 없는 코드로 취급',
  'mcp.inventory.import.trustBody':
    'MCP 서버는 에이전트에 권한을 부여하는 도구입니다. 신뢰하는 출처의 매니페스트만 가져오세요. 각 설치에는 명시적인 클릭이 필요하며 자동 설치되는 항목은 없습니다.',
  'mcp.inventory.import.pasteLabel': '매니페스트 JSON 붙여넣기',
  'mcp.inventory.import.pastePlaceholder':
    '여기에 매니페스트를 붙여넣거나 아래에서 .json 파일을 업로드하세요.',
  'mcp.inventory.import.preview': '미리 보기',
  'mcp.inventory.import.clear': '지우기',
  'mcp.inventory.import.uploadFile': '또는 .json 파일 업로드',
  'mcp.inventory.import.uploadFileAria': '매니페스트 .json 파일 업로드',
  'mcp.inventory.import.fileTooLarge': '파일이 너무 큽니다(1MB 초과). 로드를 거부합니다.',
  'mcp.inventory.import.fileReadFailed': '파일을 읽을 수 없습니다.',
  'mcp.inventory.import.parseErrorPrefix': '매니페스트를 파싱할 수 없습니다:',
  'mcp.inventory.import.previewHeading': '미리 보기',
  'mcp.inventory.import.previewCounts': '서버 {total}개 - 신규 {newly}개, 이미 설치됨 {already}개',
  'mcp.inventory.import.previewEmpty': '매니페스트에 서버가 없습니다.',
  'mcp.inventory.import.exportedFrom': '{exporter}에서 내보냄',
  'mcp.inventory.import.exportedAt': '{when}에',
  'mcp.inventory.import.statusNew': '신규',
  'mcp.inventory.import.statusAlreadyInstalled': '이미 설치됨',
  'mcp.inventory.import.envKeysLabel': 'env 키',
  'mcp.inventory.import.install': '설치',
  'mcp.inventory.import.installAria': '이 매니페스트에서 {name} 설치',
  'mcp.inventory.import.skipped': '건너뜀',
  'mcp.inventory.parseError.empty': '매니페스트가 비어 있습니다.',
  'mcp.inventory.parseError.invalidJson': '유효하지 않은 JSON입니다.',
  'mcp.inventory.parseError.rootNotObject': '매니페스트 루트는 JSON 객체여야 합니다.',
  'mcp.inventory.parseError.unsupportedSchema':
    '지원되지 않는 매니페스트 스키마입니다. 이 파일은 호환되는 내보내기 도구에서 생성되지 않았습니다.',
  'mcp.inventory.parseError.missingExportedAt': '`exported_at` 필드가 없거나 유효하지 않습니다.',
  'mcp.inventory.parseError.missingExportedBy': '`exported_by` 필드가 없거나 유효하지 않습니다.',
  'mcp.inventory.parseError.invalidServers': '`servers` 배열이 없거나 유효하지 않습니다.',
  'mcp.inventory.parseError.serverNotObject': '서버 항목이 객체가 아닙니다.',
  'mcp.inventory.parseError.serverMissingQualifiedName': '서버 항목에 qualified_name이 없습니다.',
  'mcp.inventory.parseError.serverMissingDisplayName': '서버 항목에 display_name이 없습니다.',
  'mcp.inventory.parseError.serverEnvKeysNotArray':
    '서버 항목의 env_keys 필드가 문자열 배열이 아닙니다.',
  'mcp.inventory.parseError.serverContainsEnv':
    '서버 항목에 `env` 값 맵이 포함되어 있습니다. 가져오기를 거부합니다. 매니페스트에는 env_keys(이름)만 포함되어야 하며 비밀 값은 포함할 수 없습니다.',
  'mcp.inventory.parseError.duplicateQualifiedName':
    '매니페스트에서 중복된 qualified_name을 찾았습니다. 각 서버는 최대 한 번만 나타나야 합니다.',
  'mcp.tab.loading': 'MCP 서버 로드 중...',
  'mcp.tab.emptyDetail': '서버를 선택하거나 카탈로그를 찾아보세요.',
  'mcp.tab.filter.all': '전체',
  'mcp.tab.filter.installed': '설치됨 ({count})',
  'mcp.tab.filter.registry': '레지스트리',
  'mcp.tab.column.name': '이름',
  'mcp.tab.column.description': '설명',
  'mcp.tab.column.type': '유형',
  'mcp.tab.column.author': '작성자',
  'mcp.tab.column.action': '작업',
  'mcp.tab.transport.hosted': '호스팅됨',
  'mcp.tab.transport.local': 'Stdio',
  'mcp.tab.transportFilter.label': '유형',
  'mcp.tab.transportFilter.aria': '전송 방식으로 서버 필터링',
  'mcp.tab.link.website': '웹사이트',
  'mcp.tab.link.repo': '저장소',
  'mcp.tab.transport.hostedHint': '원격 서버에서 실행 — 설치 시 로그인 또는 토큰을 설정합니다',
  'mcp.tab.transport.localHint': '기기에서 실행 — 설치 시 토큰이 필요할 수 있습니다',
  'mcp.tab.officialBadge': '공식',
  'mcp.tab.officialHint': '공급업체의 공식 서버',
  'mcp.tab.badge.installed': '설치됨',
  'mcp.tab.badge.registry': '레지스트리',
  'mcp.tab.action.manage': '관리',
  'mcp.tab.aria.viewDetails': '{name} 세부정보 보기',
  'mcp.tab.aria.installServer': '{name} 설치',
  'mcp.install.loadingDetail': '서버 세부정보 로드 중...',
  'mcp.install.back': '뒤로 가기',
  'mcp.install.title': '{name} 설치',
  'mcp.install.requiredEnv': '필수 환경 변수',
  'mcp.install.enterValue': '{key} 입력',
  'mcp.install.show': '표시',
  'mcp.install.hide': '숨기기',
  'mcp.install.configLabel': '구성(선택적 JSON)',
  'mcp.install.configPlaceholder': '{"key": "value"}',
  'mcp.install.missingRequired': '"{key}"이 필요합니다.',
  'mcp.install.invalidJson': '구성 JSON이 유효한 JSON이 아닙니다.',
  'mcp.install.failedDetail': '서버 세부 정보를 로드하지 못했습니다.',
  'mcp.install.failedInstall': '설치에 실패했습니다.',
  'mcp.install.button': '설치',
  'mcp.install.installing': '설치 중...',
  'mcp.install.by': '제작',
  'mcp.install.useCount': '{count}회 설치',
  'mcp.install.connections': '사용 가능한 연결',
  'mcp.install.published': '게시됨',
  'mcp.install.configureAndInstall': '구성 및 설치',
  'mcp.install.configureTitle': '{name} 구성',
  'mcp.install.advancedConfig': '고급 구성',
  'mcp.detail.suggestedEnvReady': '제안된 환경 값이 준비되었습니다.',
  'mcp.detail.suggestedEnvBody':
    '제안 값을 적용하려면 이 서버를 해당 값으로 다시 설치하세요: {keys}',
  'mcp.detail.connect': '연결',
  'mcp.detail.connecting': '연결 중...',
  'mcp.detail.authenticate': '로그인',
  'mcp.detail.authRequired':
    '이 서버에 연결하려면 먼저 로그인하거나 액세스 토큰을 추가해야 합니다. 인증하려면 “로그인”을 클릭하세요.',
  'mcp.detail.disconnect': '연결 끊기',
  'mcp.detail.hideAssistant': '보조 숨기기',
  'mcp.detail.helpConfigure': '구성 도와주세요',
  'mcp.detail.confirmUninstall': '제거를 확인하시겠습니까?',
  'mcp.detail.confirmUninstallAction': '예, 제거합니다.',
  'mcp.detail.uninstall': '제거',
  'mcp.detail.envVars': '환경 변수',
  'mcp.detail.reconfigure': '재구성',
  'mcp.detail.reconfigureHint':
    '모든 변수에 새 값을 입력한 다음 다시 연결하세요. 저장된 값이 대체됩니다.',
  'mcp.detail.saveReconnect': '저장 후 다시 연결',
  'mcp.detail.reconfigureSaving': '저장 중…',
  'mcp.detail.reconfigureSuccess': '환경이 업데이트되고 다시 연결되었습니다.',
  'mcp.detail.reconfigureReconnectFailed': '저장했지만 새 값으로 다시 연결하지 못했습니다.',
  'mcp.detail.enable': '활성화',
  'mcp.detail.disable': '비활성화',
  'mcp.status.disabled': '비활성화됨',
  'mcp.status.unauthorized': '로그인 필요',
  'mcp.detail.tools': '도구',
  'mcp.connectAuth.title': '{name} 연결',
  'mcp.connectAuth.hint':
    '이 서버에 필요한 인증을 추가한 다음 연결하세요. 토큰은 암호화되어 저장됩니다. 인증이 필요 없는 서버는 비워 두세요.',
  'mcp.connectAuth.requiredLabel': '필수',
  'mcp.connectAuth.customHeadersLabel': '사용자 지정 헤더',
  'mcp.connectAuth.customHeadersEmpty':
    '사용자 지정 헤더가 없습니다. 레지스트리에 선언되지 않은 인증 헤더가 이 서버에 필요하면 하나 추가하세요.',
  'mcp.connectAuth.addHeader': '+ 헤더 추가',
  'mcp.connectAuth.headerName': '헤더 이름',
  'mcp.connectAuth.headerValue': '값',
  'mcp.connectAuth.removeHeader': '헤더 제거',
  'mcp.connectAuth.howToGetToken': '도움말 및 구성',
  'mcp.connectAuth.tokenProvider': '토큰 받는 곳:',
  'mcp.connectAuth.findToken': '토큰은 어디서 받나요?',
  'mcp.connectAuth.hideHelp': '도움말 숨기기',
  'mcp.connectAuth.schemeLabel': '값을 보내는 방법',
  'mcp.connectAuth.schemeBearer': 'Bearer',
  'mcp.connectAuth.schemeRaw': '없음',
  'mcp.connectAuth.reconnectFailed': '자격 증명은 저장했지만 연결에 실패했습니다.',
  'mcp.connectAuth.oauthHint':
    '이 서버는 OAuth를 사용합니다. OpenHuman을 인증하려면 브라우저로 로그인하세요.',
  'mcp.connectAuth.signIn': '브라우저로 로그인',
  'mcp.connectAuth.oauthWaiting': '로그인 대기 중…',
  'mcp.connectAuth.oauthOrToken':
    '이미 액세스 토큰이 있나요? 대신 아래에 Authorization 헤더로 붙여넣으세요.',
  'mcp.connectAuth.oauthTimeout': '브라우저 로그인 대기 시간이 초과되었습니다. 다시 시도하세요.',
  'mcp.connectAuth.authError.oauthRequired':
    '이 서버는 OAuth를 사용합니다. “브라우저로 로그인”을 사용하세요. 붙여넣은 토큰은 사용할 수 없습니다.',
  'mcp.connectAuth.authError.tokenRejected':
    '서버가 이 토큰을 거부했습니다. 토큰이 올바르고 만료되지 않았는지 확인하세요.',
  'mcp.connectAuth.authError.credentialRequired':
    '이 서버는 인증이 필요합니다. 토큰을 추가하거나 로그인하세요.',
  'onboarding.skipForNow': '지금 건너뛰기',
  'onboarding.localAI.continueWithCloud': '클라우드 계속하기',
  'onboarding.localAI.useLocalAnyway': '어쨌든 로컬 AI 사용(기기에 권장되지 않음)',
  'onboarding.localAI.useLocalInstead': '대신 로컬 AI 사용(지금 Ollama 연결)',
  'onboarding.localAI.setupIssue': '로컬 AI 설정에 문제가 발생했습니다.',
  'autonomy.title': '에이전트 자율성',
  'autonomy.maxActionsLabel': '시간당 최대 작업',
  'autonomy.maxActionsHelp':
    '에이전트가 롤링 1시간 동안 실행할 수 있는 최대 도구 작업 수입니다. 새 값은 다음 채팅부터 적용됩니다. 크론 작업 및 채널 리스너는 OpenHuman을 재시작할 때까지 현재 제한을 유지합니다.',
  'autonomy.statusSaving': '저장 중…',
  'autonomy.statusSaved': '저장되었습니다.',
  'autonomy.statusFailed': '실패',
  'autonomy.unlimitedNote': '무제한 — 속도 제한이 비활성화되었습니다.',
  'autonomy.invalidIntegerMsg': "양의 정수여야 합니다 (제한 없음은 '무제한' 프리셋을 사용하세요).",
  'autonomy.presetUnlimited': '무제한(기본값)',
  'triggers.toggleFailed': '{trigger}에 대해 {action} 실패: {message}',
  'settings.ai.overview': 'AI 시스템 개요',
  'settings.ai.configStatus': '구성 상태',
  'settings.ai.fallbackMode': '대체 모드',
  'settings.ai.loadedFromRuntime': '런타임에서 로드됨',
  'settings.ai.loadingDuration': '로드 시간',
  'settings.ai.localRuntime': '로컬 모델 런타임',
  'settings.ai.openManager': '관리자 열기',
  'settings.ai.retryDownload': '다운로드 다시 시도',
  'settings.ai.state': '상태',
  'settings.ai.targetModel': '대상 모델',
  'settings.ai.download': '다운로드',
  'settings.ai.localModelUnavailable': '로컬 모델 상태를 사용할 수 없습니다.',
  'settings.ai.soulConfig': 'SOUL 페르소나 구성',
  'settings.ai.refreshing': '새로고침 중...',
  'settings.ai.refreshSoul': 'SOUL 새로고침',
  'settings.ai.loadingSoul': 'SOUL 구성을 불러오는 중...',
  'settings.ai.identity': '정체성',
  'settings.ai.personality': '성격',
  'settings.ai.safetyRules': '안전 규칙',
  'settings.ai.source': '출처',
  'settings.ai.loaded': '로드됨',
  'settings.ai.toolsConfig': 'TOOLS 구성',
  'settings.ai.refreshTools': 'TOOLS 새로고침',
  'settings.ai.toolsAvailable': '사용 가능한 도구',
  'settings.ai.tools': '도구',
  'settings.ai.activeSkills': '활성 스킬',
  'settings.ai.skills': '스킬',
  'settings.ai.skillsOverview': '스킬 개요',
  'settings.ai.refreshingAll': '모두 새로고침 중...',
  'settings.ai.refreshAll': '모든 AI 구성 새로고침',
  'settings.notifications.suppressAll': '모든 알림 억제',
  'settings.notifications.suppressAllDesc':
    '포커스 상태와 관계없이 내장 앱의 모든 OS 알림 토스트를 차단합니다.',
  'settings.notifications.toggleDnd': '방해 금지 전환',
  'settings.notifications.categories': '카테고리',
  'settings.notifications.categoryFooter':
    '카테고리를 비활성화하면 해당 유형의 새 알림이 알림 센터에 표시되지 않습니다. 기존 알림은 삭제될 때까지 남아 있습니다.',
  'settings.billing.movedToWeb': '결제가 웹으로 이동됨',
  'settings.billing.openDashboard': '결제 대시보드 열기',
  'settings.billing.movedToWebDesc':
    '구독 변경, 결제 수단, 크레딧 및 인보이스는 이제 웹의 TinyHumans에서 관리됩니다.',
  'settings.billing.backToSettings': '설정으로 돌아가기',
  'settings.billing.openingBrowser': '브라우저를 여는 중...',
  'settings.billing.browserNotOpen': '브라우저가 열리지 않았다면 위 버튼을 사용하세요.',
  'settings.billing.browserOpenFailed': '브라우저를 자동으로 열 수 없습니다. 위 버튼을 사용하세요.',
  'settings.tools.chooseCapabilities':
    'OpenHuman이 사용자를 대신해 사용할 수 있는 기능을 선택하세요.',
  'settings.tools.saveChanges': '변경 사항 저장',
  'settings.tools.preferencesSaved': '기본 설정이 저장되었습니다',
  'settings.tools.saveFailed': '기본 설정 저장에 실패했습니다. 다시 시도하세요.',
  'settings.screenAwareness.mode': '모드',
  'settings.screenAwareness.allExceptBlacklist': '블랙리스트 제외 모두',
  'settings.screenAwareness.whitelistOnly': '화이트리스트만',
  'settings.screenAwareness.screenMonitoring': '화면 모니터링',
  'settings.screenAwareness.saveSettings': '설정 저장',
  'settings.screenAwareness.session': '세션',
  'settings.screenAwareness.status': '상태',
  'settings.screenAwareness.active': '활성',
  'settings.screenAwareness.stopped': '중지됨',
  'settings.screenAwareness.remaining': '남은 시간',
  'settings.screenAwareness.startSession': '세션 시작',
  'settings.screenAwareness.stopSession': '세션 중지',
  'settings.screenAwareness.analyzeNow': '지금 분석',
  'settings.screenAwareness.macosOnly':
    '화면 인식 데스크톱 캡처 및 권한 제어는 현재 macOS에서만 지원됩니다.',
  'connections.comingSoon': '곧 제공 예정',
  'connections.setUp': '설정',
  'connections.configured': '구성됨',
  'connections.unavailable': '사용할 수 없음',
  'connections.checking': '확인 중…',
  'connections.walletConfigured':
    '로컬 EVM, BTC, Solana 및 Tron ID가 복구 문구에서 구성되었습니다.',
  'connections.walletReady': '하나의 복구 문구에서 로컬 EVM, BTC, Solana 및 Tron ID를 설정합니다.',
  'connections.walletError': '지갑 상태를 확인할 수 없습니다. 복구 문구 패널에서 다시 시도하세요.',
  'connections.walletChecking': '지갑 상태 확인 중...',
  'connections.walletIdentities': '지갑 ID',
  'connections.walletDerived': '복구 문구에서 로컬로 파생되며 안전한 메타데이터로만 저장됩니다.',
  'connections.privacySecurity': '개인정보 및 보안',
  'connections.privacySecurityDesc':
    '모든 데이터와 자격 증명은 무데이터 보존 정책으로 로컬에 저장됩니다. 사용자의 정보는 암호화되며 제3자와 절대 공유되지 않습니다.',
  'channels.status.connecting': '연결 중',
  'channels.status.notConfigured': '구성되지 않음',
  'channels.noActiveRoute': '활성 경로 없음',
  'channels.activeRoute': '활성 경로',
  'channels.loadingDefinitions': '채널 정의를 불러오는 중...',
  'channels.channelConnections': '채널 연결',
  'channels.configureAuthModes': '각 메시징 채널의 인증 모드를 구성합니다.',
  'channels.configNotAvailable': '구성을 사용할 수 없음:',
  'channels.channel': '채널',
  'devOptions.coreModeNotSet': '코어 모드: 설정되지 않음',
  'devOptions.coreModeNotSetDesc':
    '부트 체크 선택기가 아직 확인되지 않았습니다. 선택기에서 모드 전환을 사용하여 로컬 또는 클라우드를 선택하세요.',
  'devOptions.local': '로컬',
  'devOptions.embeddedCoreSidecar': '내장 코어 사이드카',
  'devOptions.sidecarSpawned': '앱 실행 시 Tauri 셸에 의해 프로세스 내부에서 생성됩니다.',
  'devOptions.cloud': '클라우드',
  'devOptions.remoteCoreRpc': '원격 코어 RPC',
  'devOptions.token': '토큰',
  'devOptions.tokenNotSet': '설정되지 않음 — RPC가 401을 반환합니다',
  'devOptions.triggerSentryTest': 'Sentry 테스트 트리거(스테이징)',
  'devOptions.triggerSentryTestDesc':
    'Sentry 파이프라인을 확인하기 위해 태그가 지정된 오류를 발생시킵니다. 이슈 #1072 — 확인 후 제거.',
  'devOptions.sendTestEvent': '테스트 이벤트 보내기',
  'devOptions.sending': '보내는 중…',
  'devOptions.eventSent': '이벤트 전송됨',
  'devOptions.sentryDisabled': '(id 없음 — 이 빌드에서 센트리가 비활성화되었습니다.)',
  'devOptions.failed': '실패',
  'devOptions.appLogs': '앱 로그',
  'devOptions.appLogsDesc':
    '일별 롤링 로그 파일이 들어 있는 폴더를 엽니다. 문제를 보고할 때 가장 최근 파일을 첨부하세요.',
  'devOptions.openLogsFolder': '로그 폴더 열기',
  'mnemonic.phraseSaved': '복구 문구 저장됨',
  'mnemonic.walletReady': '멀티체인 지갑 ID가 준비되었습니다. 설정으로 돌아가는 중...',
  'mnemonic.writeDownWords': '다음 단어들을 적어 두세요',
  'mnemonic.wordsInOrder':
    '단어를 순서대로 적어 안전한 곳에 보관하세요. 이 문구는 로컬 암호화 키와 EVM, BTC, Solana 및 Tron 지갑 ID를 보호합니다.',
  'mnemonic.cannotRecover':
    '이 문구는 분실하면 복구할 수 없으며 기기에서만 완전히 로컬로 유지되어야 합니다.',
  'mnemonic.copyToClipboard': '클립보드에 복사',
  'mnemonic.alreadyHavePhrase': '이미 복구 문구가 있습니다',
  'mnemonic.consentSaved': '이 문구를 저장했으며 로컬 지갑 설정에 사용하는 데 동의합니다',
  'mnemonic.enterPhraseToRestore':
    '로컬 지갑 ID를 복원하려면 아래에 복구 문구를 입력하거나 전체 문구를 아무 입력란에 붙여넣으세요(새 백업은 12단어, 이전 버전의 24단어 문구도 작동합니다).',
  'mnemonic.words': '단어',
  'mnemonic.validPhrase': '유효한 복구 문구',
  'mnemonic.generateNewPhrase': '대신 새 복구 문구 생성',
  'mnemonic.securingData': '데이터 보호 중...',
  'mnemonic.saveRecoveryPhrase': '복구 문구 저장',
  'mnemonic.userNotLoaded':
    '사용자가 로드되지 않았습니다. 다시 로그인하거나 페이지를 새로고침하세요.',
  'mnemonic.invalidPhrase': '유효하지 않은 복구 문구입니다. 단어를 확인하고 다시 시도하세요.',
  'mnemonic.somethingWentWrong': '문제가 발생했습니다. 다시 시도해 주세요.',
  'mnemonic.walletAlreadyConfigured': '지갑이 이미 설정되어 있습니다.',
  'mnemonic.walletSource': '출처',
  'mnemonic.walletWordCount': '복구 구문 길이',
  'mnemonic.walletLastUpdated': '마지막 업데이트',
  'mnemonic.replaceWallet': '지갑 교체',
  'mnemonic.replaceWalletWarning':
    '현재 지갑이 영구적으로 교체됩니다. 진행하기 전에 복구 구문을 백업했는지 확인하세요.',
  'mnemonic.replaceWalletConfirm': '이해합니다. 지갑을 교체합니다',
  'mnemonic.loadingWalletStatus': '지갑 상태 확인 중...',
  'mnemonic.viewAccounts': '지갑 계정',
  'mnemonic.revealRecoveryPhrase': '복구 구문 표시',
  'mnemonic.hidePhrase': '구문 숨기기',
  'team.failedToCreate': '팀 생성에 실패했습니다',
  'team.invalidInviteCode': '유효하지 않거나 만료된 초대 코드입니다',
  'team.failedToSwitch': '팀 전환에 실패했습니다',
  'team.failedToLeave': '팀 나가기에 실패했습니다',
  'team.role.owner': '소유자',
  'team.role.admin': '관리자',
  'team.role.billingManager': '결제 관리자',
  'team.role.member': '멤버',
  'team.active': '활성',
  'team.personalTeam': '개인 팀',
  'team.manageTeam': '팀 관리',
  'team.switching': '전환 중...',
  'team.switch': '전환',
  'team.leaving': '나가는 중...',
  'team.leave': '나가기',
  'team.yourTeams': '내 팀',
  'team.createNewTeam': '새 팀 생성',
  'team.teamName': '팀 이름',
  'team.creating': '생성 중...',
  'team.joinExistingTeam': '기존 팀 참가',
  'team.personalAutoCreatedNote':
    '개인 팀은 자동으로 생성됩니다. 협업하려면 아래 초대 코드로 기존 팀에 참여하세요.',
  'team.inviteCode': '초대 코드',
  'team.joining': '참가 중...',
  'team.join': '참가',
  'team.leaveTeam': '팀 나가기',
  'team.confirmLeave': '정말로 나가시겠습니까',
  'team.leaveWarning':
    '팀과 모든 팀 리소스에 대한 접근 권한을 잃게 됩니다. 다시 참가하려면 새 초대가 필요합니다.',
  'team.management': '팀 관리',
  'team.notFound': '팀을 찾을 수 없습니다',
  'team.accessDenied': '접근이 거부되었습니다',
  'team.members': '멤버',
  'team.membersDesc': '팀 구성원 및 역할 관리',
  'team.invites': '초대',
  'team.invitesDesc': '초대 코드 생성 및 관리',
  'team.settings': '팀 설정',
  'team.settingsDesc': '팀 이름 및 설정 편집',
  'team.editSettings': '팀 설정 편집',
  'team.enterName': '팀 이름 입력',
  'team.saving': '저장 중...',
  'team.saveChanges': '저장 변경 사항',
  'team.delete': '팀 삭제',
  'team.deleteDesc': '이 팀을 영구적으로 삭제합니다.',
  'team.deleting': '삭제 중...',
  'team.failedToUpdate': '팀 업데이트 실패',
  'team.failedToDelete': '팀 삭제 실패',
  'team.manageTitle': '{name} 관리',
  'team.planCreated': '{plan} 계획 • {date} 생성됨',
  'team.confirmDelete': '{name}을(를) 삭제하시겠습니까?',
  'team.deleteWarning': '이 작업은 취소할 수 없습니다. 모든 팀 데이터가 영구적으로 제거됩니다.',
  'voice.title': '음성 받아쓰기',
  'voice.settings': '음성 설정',
  'voice.settingsDesc': '핫키를 길게 눌러 받아쓰기하고 활성 입력란에 텍스트를 삽입합니다.',
  'voice.hotkey': '핫키',
  'voice.activationMode': '활성화 모드',
  'voice.tapToToggle': '탭하여 전환',
  'voice.writingStyle': '작성 스타일',
  'voice.verbatimTranscription': '그대로 전사',
  'voice.naturalCleanup': '자연스럽게 정리',
  'voice.autoStart': '코어와 함께 음성 서버 자동 시작',
  'voice.customDictionary': '사용자 지정 사전',
  'voice.customDictionaryDesc': '이름, 기술 용어, 도메인 단어를 추가하여 인식 정확도를 향상합니다.',
  'voice.addWord': '단어 추가...',
  'voice.sttDisabled': '로컬 STT 모델이 다운로드되고 준비될 때까지 음성 받아쓰기가 비활성화됩니다.',
  'voice.openLocalAiModel': '로컬 AI 모델 열기',
  'voice.serverRestarted': '새 설정으로 음성 서버가 다시 시작되었습니다.',
  'voice.settingsSaved': '음성 설정이 저장되었습니다.',
  'voice.serverStarted': '음성 서버가 시작되었습니다.',
  'voice.serverStopped': '음성 서버가 중지되었습니다.',
  'voice.saveVoiceSettings': '음성 설정 저장',
  'voice.startVoiceServer': '음성 서버 시작',
  'voice.stopVoiceServer': '음성 서버 중지',
  'voice.debugTitle': '음성 디버그',
  'voice.failedToLoadSettings': '음성 설정 로드 실패',
  'voice.failedToSaveSettings': '음성 설정 저장 실패',
  'voice.failedToStartServer': '음성 서버 시작 실패',
  'voice.failedToStopServer': '음성 서버를 중지하지 못했습니다.',
  'voice.sttDisabledPrefix':
    '로컬 STT 모델이 다운로드될 때까지 음성 받아쓰기를 사용할 수 없습니다. 다음을 사용하세요:',
  'voice.sttDisabledSuffix': '섹션을 사용하세요.',
  'voice.debug.failedToLoadVoiceDebugData': '음성 디버그 데이터를 로드하지 못했습니다.',
  'voice.debug.settingsSaved': '디버그 설정이 저장되었습니다.',
  'voice.debug.failedToSaveSettings': '음성 설정을 저장하지 못했습니다.',
  'voice.debug.runtimeStatus': '런타임 상태',
  'voice.debug.runtimeStatusDesc': '음성 서버 및 음성-텍스트 변환 엔진의 실시간 진단입니다.',
  'voice.debug.server': '서버',
  'voice.debug.unavailable': '사용할 수 없음',
  'voice.debug.ready': '준비됨',
  'voice.debug.notReady': '준비되지 않음',
  'voice.debug.hotkey': '단축키',
  'voice.debug.notAvailable': '해당 없음',
  'voice.debug.mode': '모드',
  'voice.debug.transcriptions': '기록',
  'voice.debug.serverError': '서버 오류',
  'voice.debug.advancedSettings': '고급 설정',
  'voice.debug.advancedSettingsDesc': '녹음 및 무음 감지를 위한 저수준 조정 매개변수입니다.',
  'voice.debug.minimumRecordingSeconds': '최소 녹음 시간(초)',
  'voice.debug.silenceThreshold': '무음 임계값(RMS)',
  'voice.debug.silenceThresholdDesc':
    '이 값보다 에너지가 낮은 녹음은 무음으로 처리되어 건너뜁니다. 낮을수록 더 민감합니다.',
  'voice.debug.alwaysOn': '상시 청취',
  'voice.debug.alwaysOnDesc':
    '단축키 없이 마이크를 계속 열어 두고 말한 내용을 자동으로 에이전트에 보냅니다. 화면이 잠기면 일시 중지됩니다.',
  'voice.providers.saved': '음성 제공업체가 저장되었습니다.',
  'voice.providers.failedToSave': '음성 제공자를 저장하지 못했습니다.',
  'voice.providers.ellipsis': '…',
  'voice.providers.installing': '설치 중',
  'voice.providers.installingBusy': '설치 중...',
  'voice.providers.reinstallLocally': '로컬로 다시 설치',
  'voice.providers.repair': '복구',
  'voice.providers.retryLocally': '로컬로 다시 시도',
  'voice.providers.installLocally': '로컬로 설치',
  'voice.providers.whisperReady': '속삭임이 준비되었습니다.',
  'voice.providers.whisperInstallStarted': 'Whisper 설치가 시작되었습니다.',
  'voice.providers.queued': '대기 중입니다.',
  'voice.providers.failedToInstallWhisper': 'Whisper를 설치하지 못했습니다.',
  'voice.providers.piperReady': 'Piper가 준비되었습니다.',
  'voice.providers.piperInstallStarted': 'Piper 설치가 시작되었습니다.',
  'voice.providers.failedToInstallPiper': 'Piper를 설치하지 못했습니다.',
  'voice.providers.title': '음성 공급자',
  'voice.providers.desc':
    '전사 및 합성이 실행되는 위치를 선택하세요. 로컬 설치 버튼을 사용하여 바이너리 및 모델을 워크스페이스에 다운로드하세요. 로컬 공급자는 설치 완료 전에도 저장할 수 있으며 WHISPER_BIN 또는 PIPER_BIN 수동 설정이 필요 없습니다.',
  'voice.providers.sttProvider': '음성-텍스트 공급자',
  'voice.providers.sttProviderAria': 'STT 공급자',
  'voice.providers.cloudWhisperProxy': '클라우드(속삭임 프록시)',
  'voice.providers.localWhisper': '로컬 속삭임',
  'voice.providers.installRequired': '(설치 필요)',
  'voice.providers.whisperInstalledTitle': '위스퍼가 설치되었습니다. 다시 설치하려면 클릭하세요.',
  'voice.providers.whisperDownloadTitle':
    'whisper.cpp와 GGML 모델을 워크스페이스에 다운로드합니다.',
  'voice.providers.installed': '설치됨',
  'voice.providers.installFailed': '설치 실패',
  'voice.providers.notInstalled': '설치되지 않음',
  'voice.providers.whisperModel': '귓속말 모델',
  'voice.providers.whisperModelAria': '귓속말 모델',
  'voice.providers.whisperModelTiny': '소형(39MB, 가장 빠름)',
  'voice.providers.whisperModelBase': '기본(74MB)',
  'voice.providers.whisperModelSmall': '소형(244MB)',
  'voice.providers.whisperModelMedium': '중형(769MB, 권장)',
  'voice.providers.whisperModelLargeTurbo': '대형 v3 터보(1.5GB, 최고 정확도)',
  'voice.providers.ttsProvider': '텍스트 음성 변환 제공자',
  'voice.providers.ttsProviderAria': 'TTS 제공자',
  'voice.providers.cloudElevenLabsProxy': '클라우드(ElevenLabs 프록시)',
  'voice.providers.localPiper': '로컬 Piper',
  'voice.providers.piperInstalledTitle': 'Piper가 설치되었습니다. 다시 설치하려면 클릭하세요.',
  'voice.providers.piperDownloadTitle':
    'Piper와 번들된 en_US-lessac-medium 음성을 워크스페이스에 다운로드합니다.',
  'voice.providers.piperVoice': '파이퍼 목소리',
  'voice.providers.piperVoiceAria': '파이퍼 목소리',
  'voice.providers.customVoiceOption': '기타(아래 입력)…',
  'voice.providers.customVoiceAria': '파이퍼 음성 ID(사용자 정의)',
  'voice.providers.customVoicePlaceholder': 'en_US-lessac-medium',
  'voice.providers.piperVoicesDesc':
    '음성은 huggingface.co/rhasspy/piper-voices에서 제공됩니다. 음성을 변경하려면 새 .onnx를 다운로드하기 위해 설치/재설치를 클릭해야 할 수 있습니다.',
  'voice.providers.mascotVoice': '마스코트 음성',
  'voice.providers.mascotVoiceDescPrefix':
    '마스코트가 음성 답변에 사용하는 ElevenLabs 음성은 다음에서 구성됩니다',
  'voice.providers.mascotSettings': '마스코트 설정',
  'voice.providers.mascotVoiceDescSuffix': '.',
  'voice.providers.hotkeyPlaceholder': 'Fn',
  'voice.providers.piperPreset.lessacMedium': 'US · Lessac (중립, 권장)',
  'voice.providers.piperPreset.lessacHigh': 'US · Lessac (고품질, 대형)',
  'voice.providers.piperPreset.ryanMedium': 'US · Ryan (남성)',
  'voice.providers.piperPreset.amyMedium': 'US · Amy (여)',
  'voice.providers.piperPreset.librittsHigh': 'US · LibriTTS (멀티 스피커)',
  'voice.providers.piperPreset.alanMedium': 'GB · Alan (남)',
  'voice.providers.piperPreset.jennyDiocoMedium': 'GB · Jenny Dioco (여)',
  'voice.providers.piperPreset.northernEnglishMaleMedium': 'GB · 북부 영어(남성)',
  'voice.providers.chip.cloud': 'OpenHuman (관리형)',
  'voice.providers.chip.cloudAria': 'OpenHuman 관리형 공급자는 항상 활성화되어 있습니다',
  'voice.providers.chip.whisper': 'Whisper (로컬)',
  'voice.providers.chip.enableWhisper': '로컬 Whisper STT 활성화',
  'voice.providers.chip.disableWhisper': '로컬 Whisper STT 비활성화',
  'voice.providers.chip.piper': 'Piper (로컬)',
  'voice.providers.chip.enablePiper': '로컬 Piper TTS 활성화',
  'voice.providers.chip.disablePiper': '로컬 Piper TTS 비활성화',
  'voice.providers.chip.enableProvider': 'Enable',
  'voice.providers.chip.disableProvider': 'Disable',
  'voice.providers.chip.apiKeyLabel': 'API 키',
  'voice.providers.chip.apiKeyPlaceholder': 'sk-…',
  'voice.providers.chip.comingSoon': '출시 예정',
  'voice.modal.title': 'Configure',
  'voice.modal.desc':
    '이 공급자를 활성화하려면 API 키를 입력하세요. 저장하기 전에 연결을 테스트할 수 있습니다.',
  'voice.modal.testKey': '키 테스트',
  'voice.modal.testing': '테스트 중…',
  'voice.modal.saveAndEnable': '저장 및 활성화',
  'voice.modal.enable': 'Enable',
  'voice.modal.whisperDesc':
    '모델 크기를 선택하고 Whisper 바이너리 및 GGML 모델을 워크스페이스에 설치하세요. 더 큰 모델은 더 정확하지만 느립니다.',
  'voice.modal.piperDesc':
    '음성을 선택하고 Piper 바이너리 및 ONNX 모델을 워크스페이스에 설치하세요. Piper는 낮은 지연 시간으로 완전히 오프라인에서 실행됩니다.',
  'voice.routing.title': '음성 라우팅',
  'voice.routing.desc':
    '음성-텍스트 변환과 텍스트-음성 변환을 처리할 활성화된 공급자를 선택하세요.',
  'voice.routing.save': 'Save',
  'voice.routing.testStt': 'STT 테스트',
  'voice.routing.testTts': 'TTS 테스트',
  'voice.routing.elevenlabsVoice': 'ElevenLabs 음성',
  'voice.routing.elevenlabsVoiceAria': 'ElevenLabs 음성 선택',
  'voice.routing.elevenlabsVoiceIdAria': 'ElevenLabs 음성 ID (커스텀)',
  'voice.routing.elevenlabsVoiceDesc':
    '선별된 음성을 선택하거나 ElevenLabs 대시보드에서 커스텀 음성 ID를 붙여넣으세요.',
  'voice.externalProviders.title': '외부 음성 공급자',
  'voice.externalProviders.desc':
    'Deepgram, ElevenLabs 또는 OpenAI 같은 서드파티 STT/TTS API를 직접 연결하세요.',
  'voice.externalProviders.keySet': '키 설정됨',
  'voice.externalProviders.noKey': 'API 키 없음',
  'voice.externalProviders.test': 'Test',
  'voice.externalProviders.testing': '테스트 중…',
  'voice.externalProviders.remove': 'Remove',
  'voice.externalProviders.provider': 'Provider',
  'voice.externalProviders.selectProvider': '공급자 선택…',
  'voice.externalProviders.apiKey': 'API 키',
  'voice.externalProviders.apiKeyPlaceholder': 'sk-…',
  'voice.externalProviders.add': 'Add',
  'pttSettings.title': '눌러서 말하기',
  'pttSettings.description':
    "다른 앱을 사용하는 중에도 키를 누르고 있으면 OpenHuman과 대화할 수 있습니다. 키를 놓으면 녹음이 전송되고, '답변 읽어주기'가 켜져 있으면 OpenHuman이 답변을 음성으로 들려줍니다.",
  'pttSettings.shortcutLabel': '단축키',
  'pttSettings.shortcutPlaceholder': '키를 누르세요 (예: F13)',
  'pttSettings.shortcutUnsetHint':
    '눌러서 말하기가 꺼져 있습니다 — 활성화하려면 단축키를 선택하세요.',
  'pttSettings.speakRepliesLabel': '에이전트 답변 음성으로 읽어주기',
  'pttSettings.showOverlayLabel': '누르고 있는 동안 오버레이 표시',
  'pttSettings.errorConflictsWithDictation':
    '이 단축키는 받아쓰기에 이미 사용 중입니다. 다른 키를 선택하세요.',
  'pttSettings.errorModifierOnly':
    '일반 키를 선택하세요(예: F13) — 보조 키로만 구성된 단축키는 눌러서 말하기에서 동작하지 않습니다.',
  'pttSettings.errorEmpty': '바인딩할 키를 선택하세요.',
  'pttSettings.errorAccessibility':
    '이 단축키에는 macOS의 손쉬운 사용 권한이 필요합니다. 시스템 설정 → 개인정보 보호 및 보안 → 손쉬운 사용을 열고 OpenHuman을 활성화하세요.',
  'pttSettings.errorShortcutInUse':
    '다른 앱이 이미 이 단축키를 사용 중입니다. 다른 단축키를 선택하세요.',
  'pttSettings.errorUnsupportedWayland':
    'Wayland 세션은 OpenHuman의 전역 단축키를 아직 지원하지 않습니다 — X11 세션으로 전환하거나 앱 내 받아쓰기 토글을 사용하세요.',
  'pttSettings.exclusiveFullscreenHint':
    '전용 전체 화면 게임에서는 오버레이가 표시되지 않습니다 — 알림음만 들립니다. 오버레이를 보려면 테두리 없는 전체 화면으로 전환하세요.',
  'pttOverlay.listening': '듣는 중…',
  'pttOverlay.idle': '대기 중',
  'autocomplete.title': '자동 완성',
  'autocomplete.settings': '설정',
  'autocomplete.acceptWithTab': 'Tab으로 수락',
  'autocomplete.stylePreset': '스타일 프리셋',
  'autocomplete.style.balanced': '균형',
  'autocomplete.style.concise': '간결',
  'autocomplete.style.formal': '격식',
  'autocomplete.style.casual': '캐주얼',
  'autocomplete.style.custom': '사용자 지정',
  'autocomplete.disabledApps': '비활성화된 앱(줄마다 하나의 번들/앱 토큰)',
  'autocomplete.saveSettings': '설정 저장',
  'autocomplete.saving': '저장 중…',
  'autocomplete.runtime': '런타임',
  'autocomplete.running': '실행 중',
  'autocomplete.start': '시작',
  'autocomplete.stop': '중지',
  'autocomplete.settingsSaved': '자동 완성 설정이 저장되었습니다.',
  'autocomplete.started': '자동 완성이 시작되었습니다.',
  'autocomplete.didNotStart': '자동 완성이 시작되지 않았습니다. 활성화되어 있는지 확인하세요.',
  'autocomplete.stopped': '자동 완성이 중지되었습니다.',
  'autocomplete.advancedSettings': '고급 설정',
  'autocomplete.debugTitle': '자동 완성 디버그',
  'chat.agentChat': '에이전트 채팅',
  'chat.overrides': '재정의',
  'chat.model': '모델',
  'chat.temperature': '온도',
  'chat.conversation': '대화',
  'chat.startAgentConversation': '에이전트와 대화를 시작하세요.',
  'chat.you': '나',
  'chat.agent': '에이전트',
  'chat.askAgent': '에이전트에게 무엇이든 물어보세요...',
  'chat.sendMessage': '메시지 보내기',
  'composio.triageTitle': '통합 트리거',
  'composio.triageDesc':
    '활성화되면 들어오는 각 Composio 트리거가 이벤트를 분류하고 자동 작업을 시작할 수 있는 AI 선별 단계를 거칩니다 — 트리거당 로컬 LLM 턴 하나가 사용됩니다. 수동 검토를 선호한다면 전체 또는 통합별로 비활성화하세요. 환경 변수가',
  'composio.disableAllTriage': '모든 트리거에 대한 AI 선별 비활성화',
  'composio.triggersStillRecorded': '트리거는 기록에 계속 저장됩니다 — LLM 턴은 실행되지 않습니다.',
  'composio.disableSpecificIntegrations': '특정 통합에 대한 AI 선별 비활성화',
  'composio.settingsSaved': '설정이 저장되었습니다',
  'composio.saveFailed': '저장에 실패했습니다. 다시 시도하세요.',
  'cron.title': 'Cron 작업',
  'cron.scheduledJobs': '예약된 작업',
  'cron.manageCronJobs': '코어 스케줄러에서 cron 작업을 관리합니다.',
  'cron.refreshCronJobs': 'Cron 작업 새로고침',
  'localModel.modelStatus': '모델 상태',
  'localModel.downloadModels': '모델 다운로드',
  'localModel.usage': '사용량',
  'localModel.usageDesc':
    '로컬 모델에서 실행할 하위 시스템을 선택하세요. 꺼진 항목은 클라우드를 사용합니다.',
  'localModel.enableRuntime': '로컬 AI 런타임 활성화',
  'localModel.enableRuntimeDesc':
    '마스터 스위치입니다. 기본값은 꺼짐이며 Ollama는 유휴 상태로 유지됩니다. 켜면 트리 요약기, 화면 인텔리전스, 자동 완성이 항상 로컬 모델을 사용합니다.',
  'localModel.advancedSettings': '고급 설정',
  'localModel.debugTitle': '로컬 모델 디버그',
  'screenAwareness.debugTitle': '화면 인식 디버그',
  'screenAwareness.debug.debugAndDiagnostics': '디버그 및 진단',
  'screenAwareness.debug.collapse': '축소',
  'screenAwareness.debug.expand': '확장',
  'screenAwareness.debug.failedToSave': '화면 인텔리전스 저장 실패',
  'screenAwareness.debug.policyTitle': '화면 인텔리전스 정책',
  'screenAwareness.debug.baselineFps': '기준 FPS',
  'screenAwareness.debug.useVisionModel': '비전 모델 사용',
  'screenAwareness.debug.useVisionModelDesc':
    '더 풍부한 컨텍스트를 위해 비전 LLM에 스크린샷을 전송합니다. 꺼져 있으면 텍스트 LLM에서 OCR 텍스트만 사용하므로 더 빠르고 비전 모델이 필요 없습니다.',
  'screenAwareness.debug.keepScreenshots': '스크린샷 유지',
  'screenAwareness.debug.keepScreenshotsDesc':
    '처리 후 삭제하지 않고 캡처한 스크린샷을 워크스페이스에 저장합니다',
  'screenAwareness.debug.allowlist': '허용 목록(한 줄에 하나의 규칙)',
  'screenAwareness.debug.denylist': '차단 목록(한 줄에 하나의 규칙)',
  'screenAwareness.debug.saveSettings': '화면 인텔리전스 설정 저장',
  'screenAwareness.debug.sessionStats': '세션 통계',
  'screenAwareness.debug.framesEphemeral': '프레임(임시)',
  'screenAwareness.debug.panicStop': '패닉 중지',
  'screenAwareness.debug.defaultPanicHotkey': 'Cmd+Shift+.',
  'screenAwareness.debug.vision': '비전',
  'screenAwareness.debug.idle': '유휴',
  'screenAwareness.debug.visionQueue': '비전 대기열',
  'screenAwareness.debug.lastVision': '마지막 비전',
  'screenAwareness.debug.notAvailable': '해당 없음',
  'screenAwareness.debug.visionSummaries': '비전 요약',
  'screenAwareness.debug.refreshing': '새로 고침…',
  'screenAwareness.debug.noSummaries': '아직 요약이 없습니다.',
  'screenAwareness.debug.unknownApp': '알 수 없는 앱',
  'screenAwareness.debug.macosOnly': 'Screen Intelligence V1은 현재 macOS에서만 지원됩니다.',
  'memory.debugTitle': '메모리 디버그',
  'memory.documents': '문서',
  'memory.filterByNamespace': '네임스페이스로 필터링...',
  'memory.refresh': '새로고침',
  'memory.noDocumentsFound': '문서를 찾을 수 없습니다.',
  'memory.delete': '삭제',
  'memory.rawResponse': '원시 응답',
  'memory.namespaces': '네임스페이스',
  'memory.noNamespacesFound': '네임스페이스를 찾을 수 없습니다.',
  'memory.queryRecall': '쿼리 및 회수',
  'memory.namespace': '네임스페이스',
  'memory.queryText': '쿼리 텍스트...',
  'memory.defaultMaxChunks': '10',
  'memory.maxChunks': '최대 청크',
  'memory.query': '쿼리',
  'memory.recall': '리콜',
  'memory.queryLabel': '쿼리',
  'memory.recallLabel': '리콜',
  'memory.queryResult': '쿼리 결과',
  'memory.recallResult': '리콜 결과',
  'memory.clearNamespace': '네임스페이스 지우기',
  'memory.clearNamespaceDescription': '네임스페이스 내의 모든 문서를 영구적으로 삭제합니다.',
  'memory.selectNamespace': '네임스페이스 선택...',
  'memory.exampleNamespace': '예를 들어 스킬:gmail:user@example.com',
  'memory.clear': '지우기',
  'memory.deleteConfirm': '"{namespace}" 네임스페이스에서 "{documentId}" 문서를 삭제하시겠습니까?',
  'memory.clearNamespaceConfirm':
    '네임스페이스 "{namespace}"의 모든 문서가 영구적으로 삭제됩니다. 계속하시겠습니까?',
  'memory.clearNamespaceSuccess': '네임스페이스 "{namespace}"이 삭제되었습니다.',
  'memory.clearNamespaceEmpty': '"{namespace}"에서 지울 항목이 없습니다.',
  'webhooks.debugTitle': '웹훅 디버그',
  'webhooks.failedToLoadDebugData': '웹훅 디버그 데이터를 로드하지 못했습니다.',
  'webhooks.clearLogsConfirm': '캡처된 웹훅 디버그 로그를 모두 삭제하시겠습니까?',
  'webhooks.failedToClearLogs': '웹훅 로그를 지우지 못했습니다.',
  'webhooks.loading': '로드 중...',
  'webhooks.refresh': '새로 고침',
  'webhooks.clearing': '지우는 중...',
  'webhooks.clearLogs': '로그 지우기',
  'webhooks.registered': '등록됨',
  'webhooks.captured': '캡처됨',
  'webhooks.live': 'live',
  'webhooks.disconnected': '연결 끊김',
  'webhooks.lastEvent': '마지막 이벤트',
  'webhooks.at': 'at',
  'webhooks.registeredWebhooks': '등록된 웹훅',
  'webhooks.noActiveRegistrations': '활성 등록이 없습니다.',
  'webhooks.resolvingBackendUrl': '백엔드 URL 해결 중…',
  'webhooks.capturedRequests': '캡처된 요청',
  'webhooks.noRequestsCaptured': '아직 캡처된 웹훅 요청이 없습니다.',
  'webhooks.unrouted': '라우팅 해제됨',
  'webhooks.pending': '보류 중',
  'webhooks.requestHeaders': '요청 헤더',
  'webhooks.queryParams': '쿼리 매개변수',
  'webhooks.requestBody': '요청 본문',
  'webhooks.responseHeaders': '응답 헤더',
  'webhooks.responseBody': '응답 본문',
  'webhooks.rawPayload': '원시 페이로드',
  'webhooks.empty': '[비어 있음]',
  'providerSetup.error.defaultDetails': '공급자 설정에 실패했습니다.',
  'providerSetup.error.providerFallback': '공급자',
  'providerSetup.error.credentialsRejected':
    '{provider}에서 자격 증명을 거부했습니다. API 키를 확인하고 다시 시도하세요.',
  'providerSetup.error.endpointNotRecognized':
    '{provider}에서 엔드포인트를 인식하지 못했습니다. 기본 URL을 확인하고 다시 시도하세요.',
  'providerSetup.error.providerUnavailable':
    '{provider}를 현재 사용할 수 없습니다. 다시 시도하거나 공급자 상태를 확인하세요.',
  'providerSetup.error.unreachable':
    '{provider}에 연결할 수 없습니다. 엔드포인트 URL과 네트워크 연결을 확인한 후 다시 시도하세요.',
  'providerSetup.error.couldNotReachWithMessage': '{provider}에 연결할 수 없습니다: {message}',
  'providerSetup.error.technicalDetails': '기술 세부 정보',
  'notifications.routingTitle': '알림 라우팅',
  'notifications.routing.pipelineStats': '파이프라인 통계',
  'notifications.routing.total': '합계',
  'notifications.routing.unread': '읽지 않음',
  'notifications.routing.unscored': '점수가 매겨지지 않음',
  'notifications.routing.intelligenceTitle': '알림 인텔리전스',
  'notifications.routing.intelligenceDesc':
    '연결된 계정의 모든 알림은 로컬 AI 모델로 점수가 매겨집니다. 중요도가 높은 알림은 오케스트레이터 에이전트로 자동으로 라우팅되어 중요한 사항을 놓치지 않습니다.',
  'notifications.routing.howItWorks': '작동 방식',
  'notifications.routing.level.drop': '삭제',
  'notifications.routing.level.dropDesc': '소음/스팸 — 저장되었지만 표시되지 않음',
  'notifications.routing.level.acknowledge': '승인',
  'notifications.routing.level.acknowledgeDesc': '낮은 우선 순위 — 알림 센터에 표시됨',
  'notifications.routing.level.react': '반응',
  'notifications.routing.level.reactDesc': '중간 우선순위 — 집중된 에이전트 응답을 트리거합니다.',
  'notifications.routing.level.escalate': '에스컬레이션',
  'notifications.routing.level.escalateDesc': '높은 우선 순위 - 오케스트레이터 에이전트로 전달됨',
  'notifications.routing.perProvider': '공급자별 라우팅',
  'notifications.routing.threshold': '임계값',
  'notifications.routing.routeToOrchestrator': '오케스트레이터로 라우팅',
  'notifications.routing.loadSettingsError':
    '설정을 불러오지 못했습니다. 이 패널을 다시 열어 재시도하세요.',
  'common.reload': '다시 불러오기',
  'common.skip': '건너뛰기',
  'common.disable': '비활성화',
  'common.enable': '활성화',
  'chat.safetyTimeout': '2분 후에도 에이전트의 응답이 없습니다. 다시 시도하거나 연결을 확인하세요.',
  'chat.filter.general': '일반',
  'chat.filter.subconscious': '잠재의식',
  'chat.filter.meetings': '회의',
  'chat.filter.tasks': '작업',
  'chat.selectThread': '스레드 선택',
  'chat.threads': '스레드',
  'chat.noThreads': '아직 스레드가 없습니다',
  'chat.noLabelThreads': '"{label}" 스레드가 없습니다',
  'chat.deleteThread': '스레드 삭제',
  'chat.deleteThreadConfirm': '"{title}" 스레드를 삭제하시겠습니까?',
  'chat.untitledThread': '제목 없는 스레드',
  'chat.editThreadTitle': '스레드 제목 편집',
  'chat.hideSidebar': '사이드바 숨기기',
  'chat.showSidebar': '사이드바 표시',
  'chat.searchThreads': '대화 검색',
  'layout.resizeSidebar': '사이드바 크기 조정',
  'layout.showSidebar': '사이드바 표시',
  'chat.newThreadShortcut': '새 스레드 (/new)',
  'chat.new': '새로 만들기',
  'chat.failedToLoadMessages': '메시지를 불러오지 못했습니다',
  'chat.thinkingIteration': '생각 중... ({n})',
  'chat.thinkingDots': '생각 중...',
  'chat.approachingLimit': '사용 한도에 가까워지고 있습니다',
  'chat.approachingLimitMsg': '사용 가능한 할당량의 {pct}%를 사용했습니다.',
  'chat.upgrade': '업그레이드',
  'chat.weeklyLimitHit': '포함된 주기 예산을 모두 사용했습니다.',
  'chat.resets': '초기화',
  'chat.topUpToContinue': '계속하려면 충전하세요.',
  'chat.budgetComplete':
    '포함된 예산을 모두 사용했습니다. 계속하려면 크레딧을 추가하거나 업그레이드하세요.',
  'chat.topUp': '충전',
  'chat.cycle': '주기',
  'chat.cycleSpent': '이번 주기 사용량',
  'chat.cycleRemaining': '남은 양',
  'chat.left': '남음',
  'chat.setup': '설정',
  'chat.switchToText': '텍스트로 전환',
  'chat.superContext.label': '슈퍼 컨텍스트',
  'chat.superContext.hint':
    '슈퍼 컨텍스트를 사용하면 OpenHuman이 접근할 수 있는 모든 데이터에서 컨텍스트를 수집하고 준비하여 매우 관련성 높은 답변을 제공할 수 있습니다. 슈퍼 컨텍스트는 초기 베타 단계입니다.',
  'chat.transcribing': '전사 중...',
  'chat.stopAndSend': '중지하고 보내기',
  'chat.startTalking': '말하기 시작',
  'chat.playingVoiceReply': '음성 응답 재생 중',
  'chat.voiceHint': '마이크를 사용해 말하세요',
  'chat.micUnavailable': '마이크를 사용할 수 없습니다',
  'chat.turn': '턴',
  'chat.turns': '턴',
  'chat.openWorkerThread': '워커 스레드 열기',
  'chat.attachment.attach': '이미지 첨부',
  'chat.attachment.remove': '{name} 제거',
  'chat.attachment.tooMany': '메시지당 최대 {max}개 이미지',
  'chat.attachment.tooManyFiles': '메시지당 최대 {max}개 파일',
  'chat.attachment.tooManyVideos': '메시지당 최대 {max}개 동영상',
  'chat.attachment.videoNotSupported':
    '이 모델은 동영상을 읽을 수 없습니다. 동영상을 첨부하려면 OpenHuman 추론 등급을 사용할 수 있습니다.',
  'chat.attachment.dropToAttach': '파일을 놓아 첨부',
  'chat.attachment.tooLarge': '이미지가 {max} 크기 제한을 초과합니다',
  'chat.attachment.unsupportedType':
    '지원되지 않는 파일 형식입니다. 이미지(PNG, JPEG, WebP, GIF, BMP) 또는 PDF, TXT, Markdown 파일을 사용하세요.',
  'chat.attachment.imageNotSupported':
    '이 모델은 이미지를 읽을 수 없습니다. 이미지를 첨부하려면 OpenHuman 추론 등급을 사용할 수 있습니다.',
  'chat.attachment.readFailed': '파일을 읽을 수 없습니다',
  'memory.searchAria': '메모리 검색',
  'memory.searchPlaceholder': '메모리 항목 검색...',
  'memory.sourceFilter.all': '모든 소스',
  'memory.sourceFilter.email': '이메일',
  'memory.sourceFilter.calendar': '캘린더',
  'memory.sourceFilter.telegram': 'Telegram',
  'memory.sourceFilter.aiInsight': 'AI 인사이트',
  'memory.sourceFilter.system': '시스템',
  'memory.sourceFilter.trading': '거래',
  'memory.sourceFilter.security': '보안',
  'memory.ingestionActivity': '수집 활동',
  'memory.events': '이벤트',
  'memory.event': '이벤트',
  'memory.overTheLast': '지난 기간',
  'memory.months': '개월',
  'memory.peak': '최고치',
  'memory.perDay': '/일',
  'memory.less': '적음',
  'memory.more': '많음',
  'memory.on': '켜짐',
  'memory.loading': '메모리 불러오는 중',
  'memory.fetching': '메모리 항목을 가져오는 중...',
  'memory.analyzing': '메모리 분석 중',
  'memory.analyzingHint': '인사이트를 추출하기 위해 메모리를 처리하는 중...',
  'memory.noMatches': '일치하는 항목 없음',
  'memory.noMatchesHint': '검색어 또는 필터를 변경해 보세요.',
  'memory.allCaughtUp': '모두 완료됨',
  'memory.allCaughtUpHint': '처리할 새 메모리 항목이 없습니다.',
  'memory.noAnalysis': '아직 분석 없음',
  'memory.noAnalysisHint': '메모리에서 패턴을 발견하려면 분석을 실행하세요.',
  'memory.emptyHint': '첫 번째 메모리를 만들려면 상호작용을 시작하세요.',
  'mic.unavailable': '마이크를 사용할 수 없습니다',
  'mic.permissionDenied': '마이크 권한이 거부되었습니다',
  'mic.failedToStartRecorder': '녹음기를 시작하지 못했습니다',
  'mic.deviceUnavailable': '선택한 마이크를 사용할 수 없습니다 — 다른 장치를 사용해 보세요.',
  'mic.deviceInUse': '마이크가 다른 애플리케이션에서 사용 중입니다.',
  'mic.error': '마이크 오류',
  'mic.transcribing': '전사 중...',
  'mic.retryingTranscription': '재시도 중… ({attempt}/{max})',
  'mic.tapToSend': '탭하여 보내기',
  'mic.waitingForAgent': '에이전트를 기다리는 중...',
  'mic.tapAndSpeak': '탭하고 말하기',
  'mic.stopRecording': '녹음을 중지하고 보내기',
  'mic.startRecording': '녹음 시작',
  'mic.deviceSelector': '마이크 장치',
  'mic.tapToSendCountdown': '탭하여 보내기 ({seconds}초)',
  'token.usageLimitReached': '사용 한도에 도달했습니다',
  'token.approachingLimit': '한도에 가까워지고 있습니다',
  'token.planClickForDetails': '플랜 - 자세한 내용을 보려면 클릭',
  'token.sessionTokens': '입력: {in} | 출력: {out} | 턴: {turns}',
  'token.limit': '한도 도달',
  'token.inLabel': '입력',
  'token.outLabel': '출력',
  'token.inputTokens': '이 세션의 입력 토큰',
  'token.outputTokens': '이 세션의 출력 토큰',
  'token.turnsCount': '이 세션의 추론 턴',
  'token.turn': '턴',
  'token.turns': '턴',
  'token.ctxLabel': 'CTX',
  'token.contextWindow': '컨텍스트 윈도우 사용량 (마지막 턴)',
  'token.cachedLabel': '캐시됨',
  'token.costLabel': '비용',
  'token.costTitle': '이 세션의 예상 비용 (USD)',
  'token.sessionUsageTitle': '세션 사용량',
  'token.subAgentsHeading': '하위 에이전트 사용량',
  'token.byAgentHeading': '에이전트별',
  'token.orchestrator': '오케스트레이터',
  'token.noSubAgents': '아직 하위 에이전트 사용량이 없습니다',
  'token.popInput': '입력 토큰',
  'token.popOutput': '출력 토큰',
  'token.popCacheHit': '캐시 적중',
  'token.popContext': '컨텍스트 윈도우',
  'token.tipInput': '이 세션에서 모델로 보낸 토큰 — 사용자 프롬프트와 대화 기록.',
  'token.tipOutput': '이 세션에서 모델이 생성한 토큰.',
  'token.tipCacheHit': '캐시된 프롬프트 접두부에서 제공된 입력 토큰으로, 낮은 요금으로 청구됩니다.',
  'token.clickForDetails': '세션 사용량 세부정보를 보려면 클릭하세요',
  'catalog.noCapabilityBinding': '기능 바인딩 없음',
  'catalog.downloadFailed': '다운로드 실패',
  'catalog.active': '활성',
  'catalog.installed': '설치됨',
  'catalog.notDownloaded': '다운로드되지 않음',
  'catalog.inUse': '사용 중',
  'catalog.use': '사용',
  'catalog.deleteModel': '모델 삭제',
  'catalog.download': '다운로드',
  'navigator.recent': '최근',
  'navigator.today': '오늘',
  'navigator.thisWeek': '이번 주',
  'navigator.sources': '소스',
  'navigator.email': '이메일',
  'navigator.slack': 'Slack',
  'navigator.chat': '채팅',
  'navigator.documents': '문서',
  'navigator.people': '사람',
  'navigator.topics': '주제',
  'dreams.description': '꿈은 메모리의 패턴을 종합하는 AI 생성 반영입니다.',
  'dreams.comingSoon': '곧 제공 예정',
  'assignment.memoryLlm': '메모리 LLM',
  'assignment.memoryLlmAria': '메모리 LLM 선택',
  'assignment.embedder': '임베더',
  'assignment.loaded': '로드됨',
  'assignment.notDownloaded': '다운로드되지 않음',
  'assignment.usedForExtractSummarise': '추출 및 요약에 사용됨',
  'insights.knownFacts': '알려진 사실',
  'insights.preferences': '선호도',
  'insights.relationships': '관계',
  'insights.skills': '스킬',
  'insights.opinions': '의견',
  'insights.other': '기타',
  'insights.title': '인사이트',
  'insights.empty': '아직 인사이트가 없습니다. 메모리가 늘어나면 인사이트가 생성됩니다.',
  'insights.description': '메모리 그래프의 {count}개 관계를 기반으로 합니다.',
  'insights.items': '항목',
  'insights.more': '더 보기',
  'calls.joiningCall': '통화에 참여하는 중',
  'calls.meetWindowOpening': 'Meet 창이 열리는 중...',
  'calls.failedToStart': 'Meet 통화를 시작하지 못했습니다',
  'calls.couldNotStart': '통화를 시작할 수 없습니다',
  'calls.failedToClose': '통화를 닫지 못했습니다',
  'calls.couldNotClose': '통화를 닫을 수 없습니다',
  'calls.joinMeet': 'Google Meet 통화 참여',
  'calls.joinMeetDescription': '참여할 Google Meet 링크를 입력하세요.',
  'calls.meetLink': 'Meet 링크',
  'calls.displayName': '표시 이름',
  'calls.openingMeet': 'Meet 여는 중...',
  'calls.joinCall': '통화 참여',
  'calls.activeCalls': '활성 통화',
  'calls.leave': '나가기',
  'workspace.wipeConfirm': '모든 메모리를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
  'workspace.resetTreeConfirm': '메모리 트리를 다시 빌드하시겠습니까?',
  'workspace.wipeTitle': '메모리 삭제',
  'workspace.resetting': '초기화 중...',
  'workspace.resetMemory': '메모리 초기화',
  'workspace.resetTreeTitle': '메모리 트리 다시 빌드',
  'workspace.rebuilding': '다시 빌드 중...',
  'workspace.resetMemoryTree': '메모리 트리 초기화',
  'workspace.building': '빌드 중...',
  'workspace.buildSummaryTrees': '요약 트리 빌드',
  'workspace.viewVault': '볼트 보기',
  'workspace.openingVaultTitle': 'Obsidian에서 볼트 열기',
  'workspace.openingVaultMessage':
    'Obsidian이 열리지 않으면 obsidian.md에서 설치하거나 폴더 표시를 사용하세요. 볼트 경로:',
  'workspace.openVaultFailedTitle': 'Obsidian에서 볼트를 열 수 없습니다',
  'workspace.openVaultFailedMessage':
    '폴더 표시를 사용하여 볼트 디렉터리를 직접 엽니다. 볼트 경로:',
  'workspace.revealVaultFailed': '볼트 폴더를 표시할 수 없습니다',
  'workspace.revealFolder': '폴더 공개',
  'workspace.checkingVault': '확인 중…',
  'workspace.vaultNotRegisteredHelp':
    'Obsidian은 볼트로 추가된 폴더만 열 수 있습니다. Obsidian에서 "폴더를 볼트로 열기"를 선택하고 아래 폴더를 선택하세요 — 한 번만 하면 됩니다. 그런 다음 볼트 보기를 다시 클릭하세요.',
  'workspace.obsidianNotFoundHelp':
    '이 기기에서 Obsidian을 찾을 수 없습니다. 설치하거나, 비표준 위치에 설치되어 있는 경우 고급 설정에서 구성 폴더를 설정하세요.',
  'workspace.openAnyway': '어쨌든 Obsidian에서 열기',
  'workspace.installObsidian': 'Obsidian 설치',
  'workspace.obsidianAdvanced': 'Obsidian이 다른 위치에 설치되어 있나요?',
  'workspace.obsidianConfigDirLabel': 'Obsidian 구성 폴더',
  'workspace.obsidianConfigDirHint':
    'obsidian.json이 포함된 폴더 경로 (예: ~/.config/obsidian). 비워두면 자동 감지됩니다.',
  'workspace.obsidianConfigDirPlaceholder': '~/.config/obsidian',
  'workspace.graphLoadFailed': '메모리 그래프를 불러오지 못했습니다',
  'workspace.loadingGraph': '메모리 그래프를 불러오는 중...',
  'workspace.graphViewMode': '메모리 그래프 보기 모드',
  'workspace.trees': '트리',
  'workspace.contacts': '연락처',
  'graph.noContactMentions': '연락처 언급 없음',
  'graph.noMemory': '메모리 없음',
  'graph.source': '소스',
  'graph.topic': '주제',
  'graph.global': '전역',
  'graph.document': '문서',
  'graph.contact': '연락처',
  'graph.nodes': '노드',
  'graph.parentChild': '부모-자식',
  'graph.documentContact': '문서-연락처',
  'graph.link': '링크',
  'graph.links': '링크',
  'graph.children': '자식',
  'graph.clickToOpenObsidian': '클릭하여 Obsidian에서 열기',
  'graph.person': '사람',
  'graph.resetView': '보기 초기화',
  'modal.dontShowAgain': '비슷한 제안을 다시 표시하지 않기',
  'reflections.loading': '반영을 불러오는 중...',
  'reflections.empty': '아직 반영이 없습니다',
  'reflections.title': '반영',
  'reflections.proposedAction': '제안된 작업',
  'reflections.act': '실행',
  'reflections.dismiss': '닫기',
  'reflections.viewConversation': '보기',
  'subconscious.mode.label': '잠재의식 모드',
  'subconscious.mode.off.title': '끔',
  'subconscious.mode.off.desc': '잠재의식이 비활성화되었습니다.',
  'subconscious.mode.simple.title': '심플',
  'subconscious.mode.simple.desc': '읽기 전용 관찰. 메모리 및 파일 접근만 가능.',
  'subconscious.mode.aggressive.title': '적극적',
  'subconscious.mode.aggressive.desc': '전체 도구 접근. 쓰기, 에이전트 생성, 작업 위임 가능.',
  'subconscious.mode.aggressiveWarning':
    '적극적 모드는 잠재의식에 쓰기 및 하위 에이전트 생성을 포함한 전체 도구 접근 권한을 부여합니다.',
  'subconscious.interval.label': '빈도',
  'subconscious.interval.minutes': '{n}분',
  'subconscious.interval.hours': '{n}시간',
  'subconscious.interval.oneHour': '1시간',
  'subconscious.interval.oneDay': '24시간',
  'whatsapp.chatsSynced': '채팅 동기화됨',
  'whatsapp.chatSynced': '채팅 동기화됨',
  'sync.active': '활성',
  'sync.recent': '최근',
  'sync.idle': '유휴',
  'sync.memorySources': '메모리 소스',
  'sync.noConnectedSources': '연결된 소스 없음',
  'sync.chunks': '청크',
  'sync.lastChunk': '마지막 청크:',
  'sync.pending': '대기 중',
  'sync.processed': '처리됨',
  'sync.syncing': '동기화 중…',
  'sync.sync': '동기화',
  'sync.failedToLoad': '동기화 상태를 불러오지 못했습니다',
  'sync.noContent': '아직 메모리에 동기화된 콘텐츠가 없습니다. 시작하려면 통합을 연결하세요.',
  'memorySyncInterval.title': '동기화 일정',
  'memorySyncInterval.lastSynced': '마지막 동기화',
  'memorySyncInterval.never': '안 함',
  'memorySyncInterval.everyHours': '{h}시간마다',
  'memorySyncInterval.everyMinutes': '{m}분마다',
  'memorySyncInterval.manual': '수동만',
  'memorySyncInterval.saveFailed': '동기화 일정을 업데이트하지 못했습니다',
  'memorySources.title': '메모리 소스',
  'memorySources.empty': '아직 메모리 소스가 없습니다. 메모리를 채우려면 하나를 추가하세요.',
  'memorySources.customSources': '사용자 지정 소스',
  'memorySources.addSource': '소스 추가',
  'memorySources.noCustomSources':
    '아직 사용자 지정 소스가 없습니다. 폴더, GitHub 리포지토리, RSS 피드 또는 웹 페이지를 추가해 시작하세요.',
  'memorySources.loadingConnections': '연결을 불러오는 중…',
  'memorySources.noConnections': '활성 Composio 연결을 찾을 수 없습니다. 먼저 통합을 연결하세요.',
  'memorySources.pickConnection': '연결 선택',
  'memorySources.selectConnection': '— 연결 선택 —',
  'memorySources.comingSoon': '출시 예정',
  'memorySources.composioListFailed': 'Composio 연결을 불러오지 못했습니다.',
  'memorySources.browse': '찾아보기…',
  'memorySources.folderPathPlaceholder': '/Users/you/notes',
  'memorySources.globPatternPlaceholder': '**/*.md',
  'memorySources.repoUrlPlaceholder': 'https://github.com/org/repo',
  'memorySources.branchPlaceholder': 'main',
  'memorySources.feedUrlPlaceholder': 'https://example.com/feed.xml',
  'memorySources.pageUrlPlaceholder': 'https://example.com/article',
  'memorySources.cssSelectorPlaceholder': 'article',
  'memorySources.searchQueryPlaceholder': 'from:user AI 안전',
  'memorySources.kind.composio': '통합',
  'memorySources.kind.conversation': '대화',
  'memorySources.kind.folder': '로컬 폴더',
  'memorySources.kind.github_repo': 'GitHub 리포지토리',
  'memorySources.kind.twitter_query': 'Twitter 검색',
  'memorySources.kind.rss_feed': 'RSS 피드',
  'memorySources.kind.web_page': '웹 페이지',
  'memorySources.sync.successTitle': '동기화 중',
  'memorySources.sync.successMessage': '진행 상황이 곧 표시됩니다.',
  'memorySources.sync.failedTitle': '동기화 실패:',
  'memorySources.sync.completeTitle': '동기화됨',
  'memorySources.sync.itemsSynced': '항목 동기화됨',
  'memorySources.sync.upToDate': '최신 상태',
  'memorySources.sync.failedLabel': '실패',
  'time.justNow': '방금 전',
  'time.secondsAgoSuffix': '초 전',
  'time.minutesAgoSuffix': '분 전',
  'time.hoursAgoSuffix': '시간 전',
  'time.daysAgoSuffix': '일 전',
  'memorySources.pickKind': '어떤 종류의 소스를 추가하시겠습니까?',
  'memorySources.backToKinds': '소스 유형으로 돌아가기',
  'memorySources.label': '레이블',
  'memorySources.labelPlaceholder': '내 리서치 노트',
  'memorySources.add': '추가',
  'memorySources.adding': '추가 중…',
  'memorySources.added': '소스가 추가되었습니다',
  'memorySources.removed': '소스가 제거되었습니다',
  'memorySources.remove': '제거',
  'memorySources.enable': '활성화',
  'memorySources.disable': '비활성화',
  'memorySources.toggleFailed': '전환 실패',
  'memorySources.removeFailed': '제거 실패',
  'memorySources.folderPath': '폴더 경로',
  'memorySources.globPattern': 'Glob 패턴',
  'memorySources.repoUrl': '리포지토리 URL',
  'memorySources.branch': '브랜치',
  'memorySources.feedUrl': '피드 URL',
  'memorySources.pageUrl': '페이지 URL',
  'memorySources.cssSelector': 'CSS 선택자(선택 사항)',
  'memorySources.searchQuery': '검색 쿼리',
  'memorySources.build.title': '빌드',
  'memorySources.build.building': '빌드 중…',
  'memorySources.build.successTitle': '트리 빌드 완료',
  'memorySources.build.failedTitle': '빌드 실패',
  'memorySources.build.sealsMessage': '실링 완료',
  'memorySources.allIn.button': '전체 활성화',
  'memorySources.allIn.title': '전체 활성화할까요?',
  'memorySources.allIn.message':
    '모든 메모리 소스를 활성화하고 동기화 제한을 제거합니다. 가장 풍부한 메모리 그래프를 구축하지만 크레딧을 더 사용할 수 있습니다.',
  'memorySources.allIn.confirm': '예',
  'memorySources.allIn.cancel': '아니오',
  'memorySources.allIn.success': '제한 없이 모든 소스가 활성화되었습니다. 동기화가 시작되었습니다.',
  'memorySources.allIn.failed': '전체 활성화를 적용하지 못했습니다. 다시 시도해 주세요.',
  'memorySources.settings.button': '설정',
  'memorySources.settings.title': '동기화 설정',
  'memorySources.settings.maxPrs': '최대 풀 리퀘스트 수',
  'memorySources.settings.maxIssues': '최대 이슈 수',
  'memorySources.settings.maxCommits': '최대 커밋 수',
  'memorySources.settings.maxItems': '최대 항목 수',
  'memorySources.settings.sinceDays': '조회 기간 (일)',
  'memorySources.settings.syncDepthDays': '동기화 깊이 (일)',
  'memorySources.settings.maxTokens': '동기화당 최대 토큰',
  'memorySources.settings.maxCost': '동기화당 최대 비용 (USD)',
  'memorySources.settings.unlimited': '무제한',
  'memorySources.settings.unlimitedTooltip':
    '{toolkit}에 대해 최대로 동기화하도록 선택했습니다. 여기에서 한도를 변경할 수 있습니다.',
  'memorySources.settings.maxed': '최대',
  'memorySources.settings.save': '저장',
  'memorySources.settings.saving': '저장 중…',
  'memorySources.settings.saved': '설정이 저장되었습니다',
  'memorySources.settings.saveFailed': '설정을 저장하지 못했습니다',
  'backend.aiBackend': 'AI 백엔드',
  'backend.cloud': '클라우드',
  'backend.recommended': '추천',
  'backend.cloudDescription':
    '서버에서 호스팅되는 빠르고 강력한 모델입니다. 즉시 사용할 수 있습니다.',
  'backend.privacyNote': '개인 데이터, 메시지 또는 키는 서버로 전송되지 않습니다.',
  'backend.local': '로컬',
  'backend.advanced': '고급',
  'backend.localDescription':
    'Ollama를 사용하여 자신의 컴퓨터에서 모델을 실행합니다. 완전한 개인정보 보호를 제공하지만 설정이 필요합니다.',
  'backend.ramRecommended': '16GB 이상 RAM 권장',
  'subconscious.tasks': '작업',
  'subconscious.ticks': '틱',
  'subconscious.last': '마지막',
  'subconscious.failed': '실패',
  'subconscious.tickInterval': '틱 간격',
  'subconscious.runNow': '지금 실행',
  'subconscious.providerUnavailableTitle': 'Subconscious 일시 중지됨',
  'subconscious.providerSettings': 'AI 설정',
  'subconscious.scratchpadInfo':
    '잠재의식은 매 틱마다 연결된 소스에서 무엇이 바뀌었는지 확인한 뒤, 할 일 목록에 후속 작업을 기록하거나 목표를 업데이트하거나 주의가 필요한 일이 생기면 알려줍니다. 모드와 빈도를 구성하려면 설정 → 에이전트 접근을 확인하세요.',
  'subconscious.approvalNeeded': '승인 필요',
  'subconscious.requiresApproval': '승인이 필요함',
  'subconscious.fixInConnections': '연결에서 수정',
  'subconscious.goAhead': '진행',
  'subconscious.activeTasks': '활성 작업',
  'subconscious.noActiveTasks': '활성 작업 없음',
  'subconscious.default': '기본값',
  'subconscious.addTaskPlaceholder': '새 작업 추가...',
  'subconscious.activityLog': '활동 로그',
  'subconscious.noActivity': '아직 활동이 없습니다',
  'subconscious.decision.nothingNew': '새로운 내용 없음',
  'subconscious.decision.completed': '완료됨',
  'subconscious.decision.evaluating': '평가 중',
  'subconscious.decision.waitingApproval': '승인 대기 중',
  'subconscious.decision.failed': '실패',
  'subconscious.decision.cancelled': '취소됨',
  'subconscious.decision.skipped': '건너뜀',
  // Subconscious triggers (event-driven orchestrator) debug panel
  'subconsciousTriggers.title': '잠재의식 트리거',
  'subconsciousTriggers.subtitle': '이벤트 기반 백그라운드 오케스트레이터',
  'subconsciousTriggers.pipeline': '파이프라인',
  'subconsciousTriggers.mode': '모드',
  'subconsciousTriggers.orchestrator': '오케스트레이터',
  'subconsciousTriggers.running': '실행 중',
  'subconsciousTriggers.stopped': '중지됨',
  'subconsciousTriggers.promotionsPerHour': '승격 / 시간',
  'subconsciousTriggers.queueDepth': '큐 깊이',
  'subconsciousTriggers.orchestratorThread': '오케스트레이터 스레드',
  'subconsciousTriggers.userThread': '사용자 스레드',
  'subconsciousTriggers.disabledHint': '파이프라인을 활성화하려면 이벤트 기반 모드를 켜세요.',
  'subconsciousTriggers.enable': '활성화',
  'subconsciousTriggers.disable': '비활성화',
  'actionable.complete': '완료',
  'actionable.dismiss': '닫기',
  'actionable.snooze': '다시 알림',
  'actionable.new': '새 항목',
  'stats.storage': '저장소',
  'stats.files': '파일',
  'stats.documents': '문서',
  'stats.today': '오늘',
  'stats.namespaces': '네임스페이스',
  'stats.relations': '관계',
  'stats.firstMemory': '첫 번째 메모리',
  'stats.latest': '최신',
  'stats.sessions': '세션',
  'stats.tokens': '토큰',
  'bootCheck.invalidUrl': '런타임 URL을 입력해 주세요.',
  'bootCheck.urlMustStartWith': 'URL은 http:// 또는 https://로 시작해야 합니다',
  'bootCheck.validUrlRequired': '유효한 URL처럼 보이지 않습니다(예: https://core.example.com/rpc)',
  'bootCheck.tokenRequired': '연결하려면 인증 토큰이 필요합니다.',
  'bootCheck.httpPublicWarning':
    '공개 호스트의 일반 HTTP URL입니다 — 트래픽이 암호화되지 않습니다. 이 네트워크를 신뢰하지 않는다면 HTTPS를 사용하세요.',
  'bootCheck.chooseCoreMode': '런타임 선택',
  'bootCheck.connectToCore': '런타임에 연결',
  'bootCheck.desktopDescription':
    'OpenHuman은 생각하기 위한 런타임이 필요합니다. 어디에서 실행할지 선택하세요.',
  'bootCheck.webDescription':
    '웹에서 OpenHuman은 사용자가 제어하는 런타임에 연결됩니다. 아래에 URL과 인증 토큰을 입력하거나, 데스크톱 앱을 받아 이 컴퓨터에서 바로 실행하세요.',
  'bootCheck.preferDesktop': '모든 것을 자신의 기기에 보관하고 싶으신가요?',
  'bootCheck.downloadDesktop': '데스크톱 앱 받기',
  'bootCheck.localRecommended': '로컬에서 실행(추천)',
  'bootCheck.localDescription':
    '이 컴퓨터에서 바로 실행됩니다. 가장 빠르고, 완전히 비공개이며, 설정할 것이 없습니다.',
  'bootCheck.cloudMode': '클라우드에서 실행(복잡)',
  'bootCheck.cloudDescription':
    '다른 곳에서 호스팅 중인 런타임에 연결합니다. 24×7 온라인 상태를 유지하므로 이 기기를 계속 켜둘 필요가 없습니다.',
  'bootCheck.coreRpcUrl': '런타임 URL',
  'bootCheck.rpcUrlPlaceholder': 'https://core.example.com/rpc',
  'bootCheck.authToken': '인증 토큰',
  'bootCheck.bearerTokenPlaceholder': '원격 런타임의 bearer 토큰',
  'bootCheck.storedLocally': '이 기기에만 보관됩니다. 다음으로 전송됨: ',
  'bootCheck.testing': '테스트 중…',
  'bootCheck.testConnection': '연결 테스트',
  'bootCheck.connectedOk': '연결되었습니다. 사용할 준비가 되었습니다.',
  'bootCheck.authFailed': '해당 토큰이 작동하지 않았습니다. 다시 확인하고 시도하세요.',
  'bootCheck.unreachablePrefix': '연결할 수 없습니다:',
  'bootCheck.checkingCore': '런타임을 깨우는 중…',
  'bootCheck.cannotReach': '런타임에 연결할 수 없습니다',
  'bootCheck.cannotReachDesc': '런타임에 연결할 수 없습니다. 다른 런타임을 시도하시겠습니까?',
  'bootCheck.switchMode': '다른 런타임 선택',
  'bootCheck.quit': '종료',
  'bootCheck.legacyDetected': '레거시 백그라운드 런타임 감지됨',
  'bootCheck.legacyDescription':
    '별도로 설치된 OpenHuman 데몬이 이 기기에서 이미 실행 중입니다. 내장 런타임이 대신 실행되기 전에 이를 정리해야 합니다.',
  'bootCheck.removing': '제거 중…',
  'bootCheck.removeContinue': '제거하고 계속',
  'bootCheck.localNeedsRestart': '로컬 런타임을 다시 시작해야 함',
  'bootCheck.localNeedsRestartDesc':
    '로컬 런타임의 버전이 이 앱과 다릅니다. 빠르게 다시 시작하면 다시 동기화됩니다.',
  'bootCheck.restarting': '다시 시작 중…',
  'bootCheck.restartCore': '런타임 다시 시작',
  'bootCheck.cloudNeedsUpdate': '클라우드 런타임 업데이트 필요',
  'bootCheck.cloudNeedsUpdateDesc':
    '클라우드 런타임의 버전이 이 앱과 다릅니다. 업데이트 프로그램을 실행하여 다시 동기화하세요.',
  'bootCheck.updating': '업데이트 중…',
  'bootCheck.updateCloudCore': '클라우드 런타임 업데이트',
  'bootCheck.versionCheckFailed': '런타임 버전 확인 실패',
  'bootCheck.versionCheckFailedDesc':
    '런타임이 실행 중이지만 버전을 보고하지 않습니다. 오래된 버전일 수 있습니다. 계속하려면 다시 시작하거나 업데이트하세요.',
  'bootCheck.working': '작업 중…',
  'bootCheck.restartUpdateCore': '런타임 다시 시작 / 업데이트',
  'bootCheck.unexpectedError': '예상치 못한 부트 체크 오류',
  'bootCheck.actionFailed': '문제가 발생했습니다. 다시 시도해 주세요.',
  'bootCheck.portConflictTitle': '앱 엔진을 시작할 수 없습니다',
  'bootCheck.portConflictBody':
    '다른 프로세스가 OpenHuman에 필요한 네트워크 포트를 사용 중입니다. 자동으로 문제를 해결해 드리겠습니다.',
  'bootCheck.portConflictFixButton': '자동 수정',
  'bootCheck.portConflictFixing': '수정 중…',
  'bootCheck.portConflictFixFailed':
    '자동 수정에 실패했습니다. 컴퓨터를 재시작한 후 다시 시도해 주세요.',
  'bootCheck.portConflictOwner':
    '{name}(PID {pid})이(가) OpenHuman에 필요한 네트워크 포트를 사용하고 있습니다.',
  'bootCheck.portConflictGuidance':
    '포트를 비우려면 해당 프로그램을 닫거나 아래에서 강제 종료한 후 다시 시도하세요.',
  'bootCheck.portConflictForceQuit': '{name} 강제 종료',
  'bootCheck.portConflictForceQuitting': '{name} 종료 중…',
  'bootCheck.portConflictForceQuitFailed':
    '해당 프로그램을 닫지 못했습니다. 수동으로 닫은 후 다시 시도해야 할 수 있습니다.',
  'notifications.justNow': '방금 전',
  'notifications.minAgo': '{n}분 전',
  'notifications.hrAgo': '{n}시간 전',
  'notifications.dayAgo': '{n}일 전',
  'notifications.category.messages': '메시지',
  'notifications.category.agents': '에이전트',
  'notifications.category.skills': '스킬',
  'notifications.category.system': '시스템',
  'notifications.category.meetings': '회의',
  'notifications.category.reminders': '리마인더',
  'notifications.category.important': '중요',
  'notifications.filterAll': '전체',
  'notifications.filterEmpty': '이 카테고리에 알림이 없습니다',
  'about.update.status.checking': '확인 중...',
  'about.update.status.available': 'v{version} 사용 가능',
  'about.update.status.availableNoVersion': '업데이트 사용 가능',
  'about.update.status.downloading': '다운로드 중...',
  'about.update.status.readyToInstall': 'v{version} 설치 준비 완료',
  'about.update.status.readyToInstallNoVersion':
    '새 버전이 다운로드되어 준비되었습니다. 적용하려면 다시 시작하세요.',
  'about.update.status.installing': '설치 중...',
  'about.update.status.restarting': '다시 시작 중...',
  'about.update.status.upToDate': '최신 버전을 실행 중입니다.',
  'about.update.status.error': '업데이트 확인 실패',
  'about.update.status.default': '업데이트 확인',
  'welcome.connectionFailed': '연결 실패: {status} {statusText}',
  'welcome.connectionFailedMsg': '연결 실패: {message}',
  'welcome.continueLocally': '로컬에서 계속',
  'welcome.continueLocallyExperimental': '로컬에서 계속(실험적)',
  'welcome.localSessionStarting': '로컬 세션 시작 중...',
  'welcome.localSessionDesc': '오프라인 로컬 프로필을 사용하고 TinyHumans를 건너뜁니다. OAuth.',
  'chat.agentChatDesc': '에이전트와 직접 채팅 세션을 엽니다.',
  'chat.modelPlaceholder': 'gpt-4o',
  'channels.activeRouteValue': '{authMode}을(를) 통해 {channel}',
  'privacy.dataKind.messages': '메시지',
  'privacy.dataKind.agents': '에이전트',
  'privacy.dataKind.skills': '스킬',
  'privacy.dataKind.system': '시스템',
  'privacy.dataKind.meetings': '회의',
  'privacy.dataKind.reminders': '리마인더',
  'privacy.dataKind.important': '중요',
  'onboarding.enableLocalAI': '로컬 AI 활성화',
  'onboarding.skills.status.available': '사용 가능',
  'onboarding.skills.status.connected': '연결됨',
  'onboarding.skills.status.connecting': '연결 중',
  'onboarding.skills.status.error': '오류',
  'onboarding.skills.status.unavailable': '사용할 수 없음',
  'composio.statusUnavailable': '상태를 사용할 수 없음',
  'composio.authExpired': '인증이 만료됨',
  'composio.reconnect': '다시 연결',
  'composio.expiredAuthorization': '{name} 인증이 만료되었습니다.',
  'composio.expiredDescription':
    '{name} 도구를 다시 활성화하려면 다시 연결하세요. OpenHuman은 OAuth 액세스를 새로 고칠 때까지 이 통합을 사용할 수 없는 상태로 유지합니다.',
  'composio.envVarOverrides': '설정되어 있으며, 이 설정을 재정의합니다.',
  'composio.previewBadge': '미리보기',
  'composio.previewTooltip':
    '에이전트 통합이 곧 제공됩니다. 연결할 수는 있지만 에이전트는 아직 이 툴킷을 사용할 수 없습니다.',
  'memory.day.sun': '일',
  'memory.day.mon': '월',
  'memory.day.tue': '화',
  'memory.day.wed': '수',
  'memory.day.thu': '목',
  'memory.day.fri': '금',
  'memory.day.sat': '토',
  'memory.ingesting': '수집 중',
  'memory.ingestionQueued': '대기열에 추가됨',
  'memory.ingestingTitle': '{title} 수집 중',
  'mic.noAudioCaptured': '캡처된 오디오가 없습니다',
  'mic.noSpeechDetected': '음성이 감지되지 않았습니다',
  'mic.lowConfidenceResult': '오디오를 명확하게 이해할 수 없습니다 — 다시 시도해 주세요',
  'mic.failedToStopRecording': '녹음을 중지하지 못했습니다: {message}',
  'mic.transcriptionFailed': '전사에 실패했습니다: {message}',
  'reflections.kind.retrospective': '회고',
  'reflections.kind.derivedFact': '파생된 사실',
  'reflections.kind.moodInsight': '기분 인사이트',
  'reflections.kind.relationshipInsight': '관계 인사이트',
  'graph.tooltip.summary': '요약',
  'graph.tooltip.contact': '연락처',
  'localModel.usage.never': '사용 안 함',
  'localModel.usage.mediumLoad': '중간 부하',
  'localModel.usage.lowLoad': '낮은 부하',
  'localModel.usage.idleMode': '유휴 모드',
  'localModel.rebootstrapComplete': '모델 재부트스트랩 완료.',
  'localModel.modelsVerified': '로컬 모델 확인 완료.',
  'accounts.addModal.allConnected': '모두 연결됨',
  'accounts.addModal.title': '계정 추가',
  'accounts.respondQueue.empty': '비어 있음',
  'accounts.respondQueue.hide': '응답 대기열 숨기기',
  'accounts.respondQueue.loadFailed': '응답 대기열을 불러오지 못했습니다',
  'accounts.respondQueue.loading': '대기열 불러오는 중…',
  'accounts.respondQueue.pending': '대기 중',
  'accounts.respondQueue.show': '응답 대기열 표시',
  'accounts.respondQueue.title': '응답 대기열',
  'accounts.webviewHost.almostReady': '거의 준비됨...',
  'accounts.webviewHost.loadTimeout': 'Webview 로드 시간 초과',
  'accounts.webviewHost.loading': '{providerName} 불러오는 중...',
  'accounts.webviewHost.loadingAccount': '계정 불러오는 중',
  'accounts.webviewHost.restoringSession': '세션 복원 중...',
  'accounts.webviewHost.retryLoading': '다시 불러오기',
  'accounts.webviewHost.takingLonger': '{providerName}이 예상보다 오래 걸리고 있습니다.',
  'accounts.webviewHost.timeoutHint': '시간 초과 힌트',
  'app.connectionBadge.composio': 'Composio',
  'app.connectionBadge.messaging': '메시징',
  'app.connectionIndicator.connected': 'OpenHuman AI에 연결됨 🚀',
  'app.connectionIndicator.connecting': '연결 중',
  'app.connectionIndicator.coreOffline': '코어 오프라인',
  'app.connectionIndicator.disconnected': '연결 해제됨',
  'app.connectionIndicator.offline': '오프라인',
  'app.connectionIndicator.reconnecting': '다시 연결 중…',
  'app.errorFallback.componentStack': '컴포넌트 스택',
  'app.errorFallback.contactSupport': '지원팀에 문의',
  'app.errorFallback.copyEventId': '복사',
  'app.errorFallback.eventIdCopied': '복사됨',
  'app.errorFallback.eventIdLabel': '오류 ID',
  'app.errorFallback.revealLogs': '로그 보기',
  'app.errorFallback.downloadLatest': '최신 버전 다운로드',
  'app.errorFallback.heading': '제목',
  'app.errorFallback.hint': '힌트',
  'app.errorFallback.reloadApp': '앱 다시 불러오기',
  'app.errorFallback.subheading': '부제목',
  'app.errorFallback.tryRecover': '복구 시도',
  'app.localAiDownload.installing': '설치 중...',
  'app.localAiDownload.preparing': '준비 중...',
  'app.openhumanLink.accounts.continueWith': '{label} 로그인으로 계속',
  'app.openhumanLink.accounts.done': '완료',
  'app.openhumanLink.accounts.intro': '소개',
  'app.openhumanLink.accounts.webviewNote': 'Webview 안내',
  'app.openhumanLink.billing.openDashboard': '대시보드 열기',
  'app.openhumanLink.billing.stayOnTrial': '체험판 유지',
  'app.openhumanLink.billing.trialCredit': '가입 크레딧',
  'app.openhumanLink.billing.trialDesc':
    '크레딧 혜택은 프로모션과 계정 자격에 따라 달라질 수 있습니다.',
  'app.openhumanLink.defaultBody':
    '아직 팝업에서 준비되지 않았습니다. 필요하면 전체 설정 페이지를 여세요.',
  'app.openhumanLink.discord.intro': '소개',
  'app.openhumanLink.discord.openInvite': '초대 열기',
  'app.openhumanLink.discord.perk1': '혜택1',
  'app.openhumanLink.discord.perk2': '혜택2',
  'app.openhumanLink.discord.perk3': '혜택3',
  'app.openhumanLink.discord.perk4': '혜택4',
  'app.openhumanLink.discordReport.intro':
    '죄송합니다 — 저희 측에서 오류가 발생했습니다. 이러한 오류를 자동으로 기록하려고 하지만, Discord에 세부 정보를 공유해 주시면 더 빠르게 해결할 수 있습니다.',
  'app.openhumanLink.discordReport.openDiscord': 'Discord 열기',
  'app.openhumanLink.done': '완료',
  'app.openhumanLink.notifications.desktopOnly':
    '기본 알림은 데스크톱 앱에서만 사용할 수 있습니다 (`pnpm dev:app` 실행).',
  'app.openhumanLink.notifications.permissionOff':
    '알림 권한이 꺼져 있습니다. 시스템 설정 → 알림에서 OpenHuman을 활성화한 후 다시 시도하세요.',
  'app.openhumanLink.notifications.triggerFailed':
    'OpenHuman이 시스템 알림을 발생시킬 수 없습니다. 운영체제 알림 설정을 확인한 후 다시 시도하세요.',
  'app.openhumanLink.notifications.welcomeBody':
    '주의가 필요한 일이 생기면 여기에서 알림을 받게 됩니다.',
  'app.openhumanLink.notifications.welcomeTitle': 'OpenHuman 준비 완료',
  'app.openhumanLink.status.closed': '닫힘',
  'app.openhumanLink.status.connected': '연결됨',
  'app.openhumanLink.status.error': '오류',
  'app.openhumanLink.status.loading': '로드 중…',
  'app.openhumanLink.status.needsSignIn': '로그인 필요',
  'app.openhumanLink.status.timedOut': '시간 초과',
  'app.openhumanLink.loadingChannelSetup': '채널 설정 불러오는 중',
  'app.openhumanLink.maybeLater': '나중에',
  'app.openhumanLink.notifications.asking': 'OS에 요청 중…',
  'app.openhumanLink.notifications.blocked': '차단됨',
  'app.openhumanLink.notifications.blockedStep1': '차단 단계1',
  'app.openhumanLink.notifications.blockedStep2': '차단 단계2',
  'app.openhumanLink.notifications.blockedStep3': '차단 단계3',
  'app.openhumanLink.notifications.intro': '소개',
  'app.openhumanLink.notifications.promptHint': '프롬프트 힌트',
  'app.openhumanLink.notifications.retry': '테스트 알림 다시 시도',
  'app.openhumanLink.notifications.send': '테스트 알림 보내기',
  'app.openhumanLink.notifications.sendFailed': '보낼 수 없습니다: {error}',
  'app.openhumanLink.notifications.sent':
    '테스트 알림이 전송되었습니다. 받지 못했다면 시스템 설정 → 알림 → OpenHuman으로 이동해 알림 허용을 켜고 배너 스타일을 지속으로 설정하세요.',
  'app.openhumanLink.skipForNow': '지금은 건너뛰기',
  'app.openhumanLink.telegramUnavailable': 'Telegram을 사용할 수 없음',
  'app.openhumanLink.title.accounts': '앱 연결',
  'app.openhumanLink.title.billing': '결제 및 크레딧',
  'app.openhumanLink.title.discord': '커뮤니티 참여',
  'app.openhumanLink.title.discordReport': '이 오류 신고',
  'app.openhumanLink.title.messaging': '채팅 채널 연결',
  'app.openhumanLink.title.notifications': '알림 허용',
  'app.persistRehydration.body': '본문',
  'app.persistRehydration.heading': '제목',
  'app.persistRehydration.resetCta': '초기화 중…',
  'app.persistRehydration.resetting': '초기화 중…',
  'app.routeLoading.initializing': 'OpenHuman 초기화 중...',
  'app.update.currentlyOn': '{version}',
  'app.update.errorFallback': '업데이트 중 문제가 발생했습니다.',
  'app.update.header.default': '업데이트',
  'app.update.header.error': '업데이트 실패',
  'app.update.header.installing': '업데이트 설치 중',
  'app.update.header.readyToInstall': '업데이트 설치 준비 완료',
  'app.update.header.restarting': '다시 시작 중…',
  'app.update.later': '나중에',
  'app.update.newVersionReady': '새 버전을 설치할 준비가 되었습니다.',
  'app.update.progress.downloaded': '{amount} 다운로드됨',
  'app.update.progress.installing': '새 버전 설치 중…',
  'app.update.progress.restarting': '앱 다시 실행 중…',
  'app.update.progress.working': '{percent}%',
  'app.update.restartNote': '다시 시작 안내',
  'app.update.restartNow': '지금 다시 시작',
  'app.update.versionReady': '버전 {newVersion} 설치 준비 완료.',
  'channels.discord.accountLinked': '계정 연결됨',
  'channels.discord.connect': '연결',
  'channels.discord.linkTokenExpired': '링크 토큰이 만료되었습니다. 다시 시도하세요.',
  'channels.discord.linkTokenInstruction': '{token}',
  'channels.discord.linkTokenLabel': '링크 토큰 라벨',
  'channels.discord.linkTokenOnce': '링크 토큰 1회 사용',
  'channels.discord.picker.allPermissionsOk':
    '봇이 이 채널에서 필요한 모든 권한을 가지고 있습니다.',
  'channels.discord.picker.botNotInServers': '봇이 서버에 없습니다',
  'channels.discord.picker.category': '카테고리',
  'channels.discord.picker.channel': '채널',
  'channels.discord.picker.checkingPermissions': '권한 확인 중',
  'channels.discord.picker.loadingChannels': '채널 불러오는 중...',
  'channels.discord.picker.loadingServers': '서버 불러오는 중...',
  'channels.discord.picker.missingPermissions': '권한 누락',
  'channels.discord.picker.noChannels': '텍스트 채널을 찾을 수 없습니다',
  'channels.discord.picker.noServers': '서버를 찾을 수 없습니다',
  'channels.discord.picker.selectChannel': '채널 선택',
  'channels.discord.picker.selectServer': '서버 선택',
  'channels.discord.picker.server': '서버',
  'channels.discord.picker.serverChannelSelection': '서버 및 채널 선택',
  'channels.discord.savedRestartRequired':
    '채널이 저장되었습니다. 활성화하려면 앱을 다시 시작하세요.',
  'channels.telegram.connect': '연결',
  'channels.telegram.managedDmConnecting': '관리형 DM 연결 중',
  'channels.telegram.managedDmTimeout': '관리형 DM 시간이 초과됨',
  'channels.telegram.reconnect': '다시 연결',
  'channels.telegram.savedRestartRequired':
    '채널이 저장되었습니다. 활성화하려면 앱을 다시 시작하세요.',
  'channels.web.alwaysAvailable': '항상 사용 가능',
  'chat.approval.approve': '승인',
  'chat.approval.alwaysAllow': '항상 허용',
  'chat.approval.alwaysAllowHint': '이 도구에 대해 다시 묻지 않도록 항상 허용 목록에 추가합니다',
  'chat.approval.deciding': '작업 중…',
  'chat.approval.deny': '거부',
  'chat.approval.error': '결정을 기록할 수 없습니다. 다시 시도하세요.',
  'chat.approval.fallback': '에이전트가 승인이 필요한 작업을 실행하려고 합니다.',
  'chat.approval.title': '승인 필요',
  'chat.approval.tool': '도구:',
  'channels.authMode.managed_dm': 'OpenHuman로 로그인',
  'channels.authMode.oauth': 'OAuth 로그인',
  'channels.authMode.bot_token': '자체 봇 토큰 사용',
  'channels.authMode.api_key': '자체 API 키 사용',
  'channels.fieldRequired': '{field}이 필요합니다.',
  'channels.mcp.title': 'MCP 서버',
  'channels.mcp.description':
    'AI에 새로운 도구를 추가하는 Model Context Protocol 서버를 탐색하고 관리합니다.',
  'channels.discord.displayName': 'Discord',
  'channels.discord.description': 'Discord을(를) 통해 메시지를 보내고 받습니다.',
  'channels.discord.authMode.bot_token.description': '자신만의 Discord 봇 토큰을 제공하세요.',
  'channels.discord.authMode.oauth.description':
    'OAuth을 통해 OpenHuman 봇을 Discord 서버에 설치합니다.',
  'channels.discord.authMode.managed_dm.description':
    '개인 Discord 계정을 OpenHuman 봇에 연결하세요.',
  'channels.discord.fields.bot_token.label': '봇 토큰',
  'channels.discord.fields.bot_token.placeholder': '귀하의 Discord 봇 토큰',
  'channels.discord.fields.guild_id.label': '서버(길드) ID',
  'channels.discord.fields.guild_id.placeholder': '선택 사항: 특정 서버로 제한',
  'channels.telegram.displayName': 'Telegram',
  'channels.telegram.description': '메시지 보내기 및 받기 Telegram.',
  'channels.telegram.authMode.managed_dm.description':
    'OpenHuman Telegram 봇에게 직접 메시지를 보냅니다.',
  'channels.telegram.authMode.bot_token.description':
    '@BotFather에서 자신만의 Telegram 봇 토큰을 제공하세요.',
  'channels.telegram.fields.bot_token.label': '봇 토큰',
  'channels.telegram.fields.bot_token.placeholder': '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11',
  'channels.telegram.fields.allowed_users.label': '허용된 사용자',
  'channels.telegram.fields.allowed_users.placeholder': '쉼표로 구분 Telegram 사용자 이름',
  'channels.telegram.remoteControlTitle': '원격 제어(Telegram)',
  'channels.telegram.remoteControlBody':
    '허용된 Telegram 채팅에서 /status, /sessions, /new 또는 /help를 보냅니다. 모델 라우팅은 여전히 ​​/model 및 /models를 사용합니다.',
  'channels.web.displayName': '웹',
  'channels.web.description': '내장된 웹 UI를 통해 채팅합니다.',
  'channels.web.authMode.managed_dm.description':
    '내장된 웹 채팅을 사용하세요. 설정이 필요하지 않습니다.',
  'channels.yuanbao.connect': 'Connect',
  'channels.yuanbao.connecting': '연결 중…',
  'channels.yuanbao.fieldRequired': '{field}은(는) 필수입니다',
  'channels.yuanbao.reconnect': 'Reconnect',
  'channels.yuanbao.savedRestartRequired': '채널이 저장되었습니다. 활성화하려면 앱을 재시작하세요.',
  'channels.yuanbao.unexpectedStatus': '예상치 못한 연결 상태: {status}',
  'chat.unsubscribeApproval.approve': '승인 및 구독 취소',
  'chat.unsubscribeApproval.approved': '✓ 구독 취소가 완료되었습니다.',
  'chat.unsubscribeApproval.denied': '✕ 요청이 거부되었습니다.',
  'chat.unsubscribeApproval.deny': '거부',
  'chat.unsubscribeApproval.processing': '처리 중...',
  'chat.unsubscribeApproval.title': '구독 취소 요청',
  'commandPalette.ariaLabel': '명령 팔레트',
  'commandPalette.description': '설명',
  'commandPalette.label': '명령',
  'commandPalette.noResults': '결과 없음',
  'commandPalette.placeholder': '명령을 입력하거나 검색…',
  'commandPalette.searchAria': '명령 검색',
  'commandPalette.shortcutHint': '모든 단축키를 보려면 ?를 누르세요',
  'commandPalette.title': '명령 팔레트',
  'kbd.ariaLabel': '키보드 단축키: {shortcut}',
  'shortcuts.title': '키보드 단축키',
  'shortcuts.subtitle': '이 키보드 단축키로 작업 속도를 높이세요.',
  'shortcuts.menuDesc': '앱 전체의 모든 키보드 단축키를 살펴보세요.',
  'shortcuts.empty': '현재 사용할 수 있는 키보드 단축키가 없습니다.',
  'shortcuts.openHint': '언제든지 이 목록을 여는 방법:',
  'shortcuts.group.navigation': '탐색',
  'shortcuts.group.profiles': '프로필',
  'shortcuts.group.chat': '채팅',
  'shortcuts.group.view': '보기',
  'shortcuts.group.general': '일반',
  'shortcuts.group.help': '도움말',
  'shortcuts.action.home': '홈으로 이동',
  'shortcuts.action.chat': '채팅으로 이동',
  'shortcuts.action.knowledge': '지식 및 메모리로 이동',
  'shortcuts.action.connections': '연결로 이동',
  'shortcuts.action.activity': '활동으로 이동',
  'shortcuts.action.settings': '설정 열기',
  'shortcuts.action.newChat': '새 채팅',
  'shortcuts.action.toggleSidebar': '사이드바 전환',
  'shortcuts.action.commandPalette': '명령 팔레트',
  'iosMascot.connectedTo': '연결됨',
  'iosMascot.defaultPairedLabel': '데스크탑',
  'iosMascot.disconnect': '연결 끊기',
  'iosMascot.error.generic': '문제가 발생했습니다. 다시 시도해 주세요.',
  'iosMascot.error.sendFailed': '전송하지 못했습니다. 연결을 확인하세요.',
  'iosMascot.pushToTalk': '푸시하여 말하기',
  'iosMascot.sendMessage': '메시지 보내기',
  'iosMascot.thinking': '생각 중...',
  'iosMascot.typeMessage': '메시지 입력...',
  'iosPair.connectedLoading': '연결되었습니다! 로드 중...',
  'iosPair.connecting': '데스크톱에 연결하는 중...',
  'iosPair.desktopLabel': '데스크톱',
  'iosPair.error.camera': '카메라 스캔에 실패했습니다. 카메라 권한을 확인하고 다시 시도하세요.',
  'iosPair.error.connectionFailed':
    '연결에 실패했습니다. 데스크탑 앱이 실행 중인지 확인하고 다시 시도하세요.',
  'iosPair.error.invalidQr':
    '유효하지 않은 QR 코드입니다. OpenHuman 페어링 코드를 스캔하고 있는지 확인하세요.',
  'iosPair.error.unreachableDesktop':
    '데스크탑에 연결할 수 없습니다. 두 기기가 모두 온라인 상태인지 확인하고 다시 시도하세요.',
  'iosPair.expired': 'QR code이 만료되었습니다. 데스크탑에 코드 재생성을 요청하십시오.',
  'iosPair.instructions':
    '데스크탑에서 OpenHuman을 열고 설정 > 기기로 이동한 후 "기기 페어링"을 탭하여 QR 코드를 표시하세요.',
  'iosPair.retryScan': '스캔 재시도',
  'iosPair.scanQrCode': '스캔 QR code',
  'iosPair.scannerOpening': '스캐너 여는 중...',
  'iosPair.step.openDesktop': '데스크톱에서 OpenHuman 열기',
  'iosPair.step.openSettings': '설정 > 장치로 이동',
  'iosPair.step.showQr': '"기기 페어링"을 탭하여 QR 표시',
  'iosPair.title': '데스크톱과 페어링',
  'composio.connect.additionalConfigRequired': '추가 구성이 필요합니다',
  'composio.connect.atlassianSubdomainHint': 'acme',
  'composio.connect.atlassianSubdomainLabel': 'Atlassian 하위 도메인 라벨',
  'composio.connect.connect': '연결',
  'composio.connect.connectedAccounts': '연결된 계정',
  'composio.connect.defaultLabel': '기본',
  'composio.connect.disconnectAccount': '제거',
  'composio.connect.addAnotherAccount': '다른 계정 추가',
  'composio.connect.dynamicsOrgNameHint':
    '예를 들어 myorg.crm.dynamics.com의 경우 "myorg"입니다. 전체 URL이 아닌 짧은 조직 이름만 입력하세요.',
  'composio.connect.dynamicsOrgNameLabel': 'Dynamics 365 조직 이름',
  'composio.connect.connectionFailed': '연결 실패(상태: {status}).',
  'composio.connect.disconnectFailed': '연결 해제 실패: {msg}',
  'composio.connect.disconnecting': '연결 해제 중…',
  'composio.connect.idleDescription': '다음을 연결하세요:',
  'composio.connect.idleDescriptionSuffix':
    '계정. 브라우저 창을 열면 그곳에서 접근을 승인하고, 이 앱이 자동으로 연결을 감지합니다.',
  'composio.connect.isConnected': '연결되었습니다.',
  'composio.connect.manage': '관리',
  'composio.connect.needsFieldsPrefix': '연결하려면',
  'composio.connect.needsFieldsSuffix':
    '좀 더 많은 정보가 필요합니다. 아래의 누락된 필드를 입력하고 다시 시도하세요.',
  'composio.connect.needsSubdomain': '연결하려면',
  'composio.connect.needsSubdomainSuffix':
    'Atlassian 하위 도메인(예: acme.atlassian.net의 경우 acme)을 입력하고 다시 시도하세요.',
  'composio.connect.oauthComplete': 'OAuth 완료 대기 중…',
  'composio.connect.oauthTimeout': 'OAuth 시간이 초과되었습니다',
  'composio.connect.permissions': '권한',
  'composio.connect.permissionsDefault': '읽기 + 쓰기가 기본적으로 활성화됨',
  'composio.connect.permissionsNote': '노출할 수 있음',
  'composio.connect.permissionsNoteSuffix':
    'OpenHuman 자체 에이전트 권한은 아래에서 읽기, 쓰기, 관리자 토글로 제어됩니다.',
  'composio.connect.reopenBrowser': '브라우저 다시 열기',
  'composio.connect.requestingUrl': '연결 URL 요청 중…',
  'composio.connect.requiredFieldEmpty': '이 필드는 필수입니다.',
  'composio.connect.retryConnection': '연결 다시 시도',
  'composio.connect.scopeLoadError': '범위 기본 설정을 불러올 수 없습니다: {msg}',
  'composio.connect.scopeSaveError': '{key} 범위를 저장할 수 없습니다: {msg}',
  'composio.connect.scope.read': '읽기',
  'composio.connect.scope.readHint': '에이전트가 이 연결에서 데이터를 읽을 수 있도록 허용합니다.',
  'composio.connect.scope.write': '쓰기',
  'composio.connect.scope.writeHint':
    '에이전트가 이 연결을 통해 데이터를 생성하거나 수정할 수 있도록 허용합니다.',
  'composio.connect.scope.admin': '관리자',
  'composio.connect.scope.adminHint':
    '에이전트가 설정, 권한 또는 파괴적인 작업을 관리하도록 허용합니다.',
  'composio.connect.subdomainInvalid':
    '전체 URL이 아닌 짧은 하위 도메인만 입력하세요(예: "acme"). 문자, 숫자, 하이픈만 포함해야 합니다.',
  'composio.connect.subdomainRequired': '계속하려면 Atlassian 하위 도메인을 입력하세요.',
  'composio.connect.wabaIdHint':
    'GET /me/businesses를 통해 찾은 다음 Meta 액세스 토큰을 사용하여 /{business_id}/owned_whatsapp_business_accounts를 GET하세요.',
  'composio.connect.wabaIdLabel': 'WABA ID 라벨',
  'composio.connect.atlassianSubdomainPlaceholder': 'your-subdomain',
  'composio.connect.dynamicsOrgNamePlaceholder': 'myorg',
  'composio.connect.wabaIdPlaceholder': 'e.g. 123456789012345',
  'composio.connect.wabaIdRequired':
    '계속하려면 WhatsApp Business Account ID (WABA ID)를 입력하세요.',
  'composio.connect.waitingFor': '대기 중:',
  'composio.connect.waitingHint': '방금 열린 브라우저 창에서 연결을 완료하세요.',
  'composio.triggers.heading': '트리거',
  'composio.triggers.listenFrom': '다음에서 이벤트 수신:',
  'composio.triggers.loadError': '트리거를 불러올 수 없습니다',
  'composio.triggers.sessionExpired':
    'OpenHuman 세션이 만료되었습니다. 트리거를 불러오려면 다시 로그인하세요.',
  'composio.triggers.needsConfiguration': '구성이 필요합니다',
  'composio.triggers.noneAvailable': '현재 사용할 수 있는 트리거가 없습니다:',
  'conversations.taskKanban.moveLeft': '왼쪽으로 이동',
  'conversations.taskKanban.moveRight': '오른쪽으로 이동',
  'conversations.taskKanban.title': '작업',
  'conversations.threadTodo.title': '계획',
  'conversations.planReview.title': '계획 검토',
  'conversations.planReview.subtitle':
    '실행하려면 승인하고, 버리려면 거부하거나, 수정하려면 의견을 보내세요.',
  'conversations.planReview.approve': '승인 후 실행',
  'conversations.planReview.reject': '거부',
  'conversations.planReview.feedbackLabel': '변경 요청',
  'conversations.planReview.feedbackPlaceholder': '무엇을 바꿀지 설명하세요…',
  'conversations.planReview.sendFeedback': '의견 보내기',
  'conversations.threadGoal.label': '목표',
  'conversations.threadGoal.setCta': '목표 설정',
  'conversations.threadGoal.placeholder': '이 스레드가 무엇을 달성해야 하나요?',
  'conversations.threadGoal.save': '저장',
  'conversations.threadGoal.cancel': '취소',
  'conversations.threadGoal.edit': '목표 편집',
  'conversations.threadGoal.clear': '목표 지우기',
  'conversations.threadGoal.complete': '완료로 표시',
  'conversations.threadGoal.pause': '일시 중지',
  'conversations.threadGoal.resume': '재개',
  'conversations.threadGoal.tokensSuffix': '토큰',
  'conversations.threadGoal.status.active': '활성',
  'conversations.threadGoal.status.paused': '일시 중지됨',
  'conversations.threadGoal.status.budget_limited': '예산 도달',
  'conversations.threadGoal.status.complete': '완료',
  'conversations.taskKanban.approval.default': '기본값',
  'conversations.taskKanban.approval.notRequired': '필요 없음',
  'conversations.taskKanban.approval.notRequiredBadge': '승인 없음',
  'conversations.taskKanban.approval.required': '필수',
  'conversations.taskKanban.approval.requiredBadge': '승인',
  'conversations.taskKanban.approval.requiredBeforeExecution': '실행 전 필수',
  'conversations.taskKanban.briefButton': '작업 브리프',
  'conversations.taskKanban.briefTitle': '작업 브리프',
  'conversations.taskKanban.closeBrief': '작업 브리프 닫기',
  'conversations.taskKanban.field.acceptanceCriteria': '수락 기준',
  'conversations.taskKanban.field.allowedTools': '허용된 도구',
  'conversations.taskKanban.field.approval': '승인',
  'conversations.taskKanban.field.assignedAgent': '할당된 에이전트',
  'conversations.taskKanban.field.blocker': '차단 요소',
  'conversations.taskKanban.field.evidence': '증거',
  'conversations.taskKanban.field.notes': '메모',
  'conversations.taskKanban.field.objective': '목표',
  'conversations.taskKanban.field.plan': '계획',
  'conversations.taskKanban.field.status': '상태',
  'conversations.taskKanban.field.title': '제목',
  'conversations.taskKanban.saveChanges': '변경 사항 저장',
  'conversations.taskKanban.deleteCard': '삭제',
  'conversations.taskKanban.workTask': '작업 시작',
  'conversations.taskKanban.viewWork': '작업 보기',
  'conversations.taskKanban.startingTask': '시작 중…',
  'conversations.taskKanban.updateFailed':
    '작업을 업데이트할 수 없어 변경 사항이 저장되지 않았습니다.',
  'conversations.taskKanban.sourcesButton': '소스',
  'conversations.taskKanban.source.openExternal': '외부 작업 열기',
  'conversations.taskKanban.source.openExternalShort': '열기',
  'conversations.taskKanban.source.unknownProvider': '알 수 없는 소스',
  'conversations.taskKanban.source.urgencyValue': '긴급도 {percent}%',
  'conversations.taskKanban.sources.desktopOnly':
    '작업 소스 제어는 데스크톱 앱에서 사용할 수 있습니다.',
  'conversations.taskKanban.sources.title': '작업 소스',
  'conversations.taskKanban.sources.statusEnabled': '자동 폴링 켜짐',
  'conversations.taskKanban.sources.manage': '소스 관리',
  'conversations.taskKanban.source.title': '소스',
  'conversations.taskKanban.source.sourceId': '소스 ID',
  'conversations.taskKanban.source.externalId': '외부 ID',
  'conversations.taskKanban.source.repo': '저장소',
  'conversations.taskKanban.source.urgency': '긴급도',
  'conversations.toolTimeline.turn': '턴',
  'conversations.toolTimeline.step': '단계',
  'conversations.toolTimeline.workerThread': '워커 스레드',
  'conversations.subagent.viewProcessing': '전체 처리 과정 보기',
  'conversations.subagent.parent': '상위',
  'conversations.subagent.thinking': '생각 중',
  'conversations.subagent.thoughts': '생각',
  'conversations.subagent.response': '응답',
  'conversations.subagent.toolCalls': '도구 호출',
  'conversations.subagent.working': '작업 중…',
  'conversations.subagent.noOutputYet': '아직 출력이 없습니다',
  'conversations.subagent.input': '입력',
  'conversations.subagent.output': '출력',
  'conversations.subagent.noOutput': '반환된 출력 없음',
  'conversations.subagent.close': '닫기',
  'conversations.subagent.cancel': '작업 취소',
  'conversations.subagent.cancelling': '취소 중…',
  'conversations.subagent.cancelFailed': '작업을 취소할 수 없습니다. 다시 시도하세요.',
  'conversations.subagent.statusRunning': '실행 중',
  'conversations.subagent.statusCompleted': '완료됨',
  'conversations.subagent.statusFailed': '실패',
  'conversations.subagent.statusAwaitingUser': '사용자 대기 중',
  'conversations.subagent.statusCancelled': '취소됨',
  'conversations.agentTaskInsights.title': '에이전트 작업 인사이트',
  'conversations.agentTaskInsights.response': '응답',
  'conversations.agentTaskInsights.processSourceTitle': '에이전트 프로세스 소스',
  'conversations.agentTaskInsights.stepsHeading': '단계',
  'conversations.agentTaskInsights.sourcesHeading': '소스',
  'conversations.agentTaskInsights.noSteps': '기록된 단계 없음',
  'conversations.agentTaskInsights.viewProcessSource': '전체 에이전트 프로세스 소스 보기',
  'conversations.agentTaskInsights.processing': '처리 중',
  'conversations.agentTaskInsights.done': '완료',
  'conversations.agentTaskInsights.failed': '실패',
  'conversations.agentTaskInsights.running': '실행 중',
  'conversations.agentTaskInsights.cancelled': '취소됨',
  'conversations.agentTaskInsights.awaitingUser': '입력 대기 중',
  'conversations.agentTaskInsights.viewDetails': '세부 정보 보기',
  'conversations.agentTaskInsights.subagentsHeading': '서브 에이전트',
  'daemon.serviceBlockingGate.body': '본문',
  'daemon.serviceBlockingGate.downloadHint': '다운로드 안내',
  'daemon.serviceBlockingGate.downloadLatest': '최신 버전 다운로드',
  'daemon.serviceBlockingGate.retryCore': '코어 다시 시도',
  'daemon.serviceBlockingGate.retryFailed':
    '다시 시도에 실패했습니다. 최신 앱 빌드를 다운로드하고 다시 시도하세요.',
  'daemon.serviceBlockingGate.retrying': '다시 시도 중...',
  'daemon.serviceBlockingGate.title': 'OpenHuman 코어를 사용할 수 없습니다',
  'home.banners.discordSubtitle': 'Discord 부제목',
  'home.banners.discordTitle': 'Discord 참여하기',
  'home.banners.earlyBirdDismiss': '얼리버드 배너 닫기',
  'home.banners.earlyBirdFirstSub': '첫 구독.',
  'home.banners.earlyBirdOn': '얼리버드 적용',
  'home.banners.earlyBirdTitle': '첫 1,000명의 사용자는 60% 할인을 받습니다.',
  'home.banners.earlyBirdUseCode': '얼리버드 코드 사용',
  'home.banners.getSubscription': '구독하기',
  'home.banners.promoCreditsBody': '프로모션 크레딧 {amount}이(가) 있어요. 다음을 할 수 있어요:',
  'home.banners.promoCreditsUsage': '10배 더 많은 사용량을 받으세요.',
  'intelligence.memoryChunk.detail.chunk': '청크',
  'intelligence.memoryChunk.detail.copyChunkId': '청크 ID 복사',
  'intelligence.memoryChunk.detail.embeddingInfo': 'bge-m3 1024dim',
  'intelligence.memoryChunk.detail.noEmbedding': '임베딩 없음',
  'intelligence.memoryChunk.letterhead.from': '보낸 사람',
  'intelligence.memoryChunk.letterhead.to': '받는 사람',
  'intelligence.memoryChunk.mentioned.chunkOne': '청크 1개',
  'intelligence.memoryChunk.mentioned.chunkOther': '청크 {count}개',
  'intelligence.memoryChunk.mentioned.heading': '언급됨',
  'intelligence.memoryChunk.scoreBars.ariaScore': '{name} 점수 {pct}퍼센트',
  'intelligence.memoryChunk.scoreBars.atThreshold': '{threshold} 기준',
  'intelligence.memoryChunk.scoreBars.dropped': '제외됨',
  'intelligence.memoryChunk.scoreBars.heading': '유지된 이유',
  'intelligence.memoryChunk.scoreBars.kept': '유지됨',
  'intelligence.diagram.title': '아키텍처 다이어그램',
  'intelligence.diagram.description':
    '구성된 다이어그램 엔드포인트에서 가져온 최신 로컬 아키텍처 출력입니다.',
  'intelligence.diagram.refresh': 'Refresh',
  'intelligence.diagram.refreshAria': '다이어그램 새로 고침',
  'intelligence.diagram.emptyTitle': '아직 사용 가능한 다이어그램이 없습니다',
  'intelligence.diagram.emptyDescription':
    '오케스트레이터에서 아키텍처 다이어그램을 생성하면 이 패널이 구성된 로컬 엔드포인트에서 새로 고침됩니다.',
  'intelligence.diagram.skillInstallCommand': 'npx skills add yizhiyanhua-ai/fireworks-tech-graph',
  'intelligence.diagram.promptExample':
    '현재 스웜의 아키텍처 다이어그램을 다크 터미널 스타일로 생성하세요',
  'intelligence.diagram.imageAlt': '최신 생성된 OpenHuman 아키텍처 다이어그램',
  'intelligence.diagram.refreshesEvery': '{seconds}초마다 새로 고침',
  'intelligence.memoryText.entityTypePrefix': '엔터티 유형',
  'intelligence.screenDebug.active': '활성',
  'intelligence.screenDebug.app': '앱',
  'intelligence.screenDebug.bounds': '경계',
  'intelligence.screenDebug.captureAlt': '캡처 테스트 결과',
  'intelligence.screenDebug.captureFailed': '실패',
  'intelligence.screenDebug.captureSuccess': '성공',
  'intelligence.screenDebug.captureTest': '캡처 테스트',
  'intelligence.screenDebug.capturing': '캡처 중',
  'intelligence.screenDebug.frames': '프레임',
  'intelligence.screenDebug.idle': '유휴',
  'intelligence.screenDebug.lastApp': '마지막 앱',
  'intelligence.screenDebug.mode': '모드',
  'intelligence.screenDebug.permAccessibility': '접근성 권한',
  'intelligence.screenDebug.permInput': '입력 권한',
  'intelligence.screenDebug.permScreen': '접근성',
  'intelligence.screenDebug.permissions': '권한',
  'intelligence.screenDebug.platformNotSupported': '플랫폼이 지원되지 않음',
  'intelligence.screenDebug.recentVisionSummaries': '최근 비전 요약',
  'intelligence.screenDebug.session': '세션',
  'intelligence.screenDebug.size': '크기',
  'intelligence.screenDebug.status': '상태',
  'intelligence.screenDebug.testCapture': '테스트 캡처',
  'intelligence.screenDebug.time': '시간',
  'intelligence.screenDebug.title': '제목',
  'intelligence.screenDebug.unknown': '알 수 없음',
  'intelligence.screenDebug.visionQueue': '비전 대기열',
  'intelligence.screenDebug.visionState': '비전 상태',
  'intelligence.tasks.activeBoardOne': '대화 전반에 활성 보드 1개',
  'intelligence.tasks.activeBoardOther': '대화 전반에 활성 보드 {count}개',
  'intelligence.tasks.empty': '아직 에이전트 작업 보드가 없습니다',
  'intelligence.tasks.emptyHint': '빈 상태 안내',
  'intelligence.tasks.failedToLoad': '불러오지 못했습니다',
  'intelligence.tasks.live': '실시간',
  'intelligence.tasks.loadingBoards': '작업 보드 불러오는 중…',
  'intelligence.tasks.threadPrefix': '스레드 {thread}',
  'intelligence.tasks.subtitle': '워크스페이스 전반의 내 작업과 에이전트 작업 보드입니다.',
  'intelligence.tasks.newTask': '새 작업',
  'intelligence.tasks.personalBoardTitle': '에이전트 작업',
  'intelligence.tasks.personalEmpty': '아직 개인 작업이 없습니다',
  'intelligence.tasks.composer.title': '새 작업',
  'intelligence.tasks.composer.titleLabel': '제목',
  'intelligence.tasks.composer.titlePlaceholder': '무엇을 해야 하나요?',
  'intelligence.tasks.composer.statusLabel': '상태',
  'intelligence.tasks.composer.attachLabel': '대화에 첨부',
  'intelligence.tasks.composer.attachNone': '개인용(대화 없음)',
  'intelligence.tasks.composer.objectiveLabel': '목표',
  'intelligence.tasks.composer.objectivePlaceholder': '선택 사항 — 원하는 결과',
  'intelligence.tasks.composer.notesLabel': '메모',
  'intelligence.tasks.composer.notesPlaceholder': '선택 사항 메모',
  'intelligence.tasks.composer.create': '작업 만들기',
  'intelligence.tasks.composer.creating': '만드는 중…',
  'intelligence.tasks.composer.createFailed': '작업을 만들 수 없습니다',
  'intelligence.tasks.composer.assignAgentLabel': '에이전트가 이 작업을 자동으로 처리하도록 하기',
  'intelligence.tasks.composer.assignAgentHint':
    '작업 보드가 이를 가져와 대신 실행합니다. 일반 개인 할 일은 꺼 두세요.',
  'intelligence.tasks.sourceList.subtitle': '에이전트 작업으로 전환될 소스 작업입니다.',
  'intelligence.tasks.sourceList.empty': '대기 중인 소스 작업이 없습니다.',
  'intelligence.tasks.sourceList.queued': '대기열에 추가됨',
  'intelligence.tasks.sourceList.workOnTask': '작업 시작',
  'intelligence.tasks.sourcePlan.title': '소스 작업 다듬기',
  'intelligence.tasks.sourcePlan.subtitle': '에이전트 작업을 만들기 전에 리서치 초안을 검토하세요.',
  'intelligence.tasks.sourcePlan.researchAgent': '리서치 에이전트 초안',
  'intelligence.tasks.sourcePlan.approve': '계획 승인',
  'intelligence.tasks.sourcePlan.creating': '작업 만드는 중…',
  'intelligence.tasks.sourcePlan.createFailed': '에이전트 작업을 만들 수 없습니다',
  'intelligence.tasks.workTaskFailed': '작업을 시작할 수 없습니다',
  'intelligence.workTask.sourceTaskHeading': '소스 작업:',
  'intelligence.workTask.repositoryLine': '- 저장소: {repo}',
  'intelligence.workTask.externalIdLine': '- 외부 ID: {externalId}',
  'intelligence.workTask.urlLine': '- 링크: {url}',
  'intelligence.workTask.closingInstruction':
    '먼저 구체적인 구현 계획을 간략히 다시 설명한 다음 실행하세요. 이 스레드에서 진행 상황을 계속 보이게 하고 작업 상태가 바뀌면 작업 보드를 업데이트하세요.',
  'intelligence.agentWork.subtitle':
    '모든 백그라운드 에이전트 실행을 수명 주기 상태별로 그룹화합니다.',
  'intelligence.agentWork.loading': '에이전트 작업 불러오는 중…',
  'intelligence.agentWork.failedToLoad': '에이전트 작업을 불러오지 못했습니다',
  'intelligence.agentWork.empty': '아직 백그라운드 에이전트 실행이 없습니다.',
  'intelligence.agentWork.bucket.needsInput': '입력 필요',
  'intelligence.agentWork.bucket.working': '작업 중',
  'intelligence.agentWork.bucket.completed': '완료됨',
  'intelligence.agentWork.bucket.failed': '실패',
  'intelligence.agentWork.bucket.stopped': '중지됨',
  'intelligence.agentWork.column.agent': '에이전트',
  'intelligence.agentWork.column.status': '상태',
  'intelligence.agentWork.column.elapsed': '경과 시간',
  'intelligence.agentWork.column.cost': '비용',
  'intelligence.agentWork.column.tokens': '토큰',
  'intelligence.agentWork.status.pending': '대기 중',
  'intelligence.agentWork.status.running': '실행 중',
  'intelligence.agentWork.status.awaitingUser': '입력 필요',
  'intelligence.agentWork.status.paused': '일시 중지됨',
  'intelligence.agentWork.status.completed': '완료됨',
  'intelligence.agentWork.status.failed': '실패',
  'intelligence.agentWork.status.cancelled': '취소됨',
  'intelligence.agentWork.status.interrupted': '중단됨',
  'intelligence.agentWork.kind.subagent': '하위 에이전트',
  'intelligence.agentWork.kind.workerThread': '워커 스레드',
  'intelligence.agentWork.kind.backgroundAgent': '백그라운드 에이전트',
  'intelligence.agentWork.kind.teamMember': '팀 구성원',
  'intelligence.agentWork.kind.workflowChild': '워크플로 하위 항목',
  'intelligence.agentWork.openThread': '스레드 열기',
  'intelligence.agentWork.openWorker': '워커 열기',
  'worktree.label': '워크트리',
  'worktree.dirty': '커밋되지 않은 변경 사항',
  'worktree.clean': '깨끗함',
  'worktree.changedFile': '변경된 파일',
  'worktree.changedFiles': '변경된 파일',
  'worktree.removing': '제거 중…',
  'worktree.removeFailed': '워크트리 제거 실패',
  'worktree.diffFailed': 'diff 불러오기 실패',
  'worktree.diffLoading': 'diff 불러오는 중…',
  'worktree.diffEmpty': 'HEAD 대비 변경 사항이 없습니다.',
  'worktree.dirtyConfirm':
    '이 워크트리에는 커밋되지 않은 변경 사항이 있습니다. 제거하면 해당 작업이 삭제됩니다. 워커 브랜치는 유지됩니다.',
  'worktree.action.open': '폴더 열기',
  'worktree.action.diff': 'Diff',
  'worktree.action.hideDiff': 'diff 숨기기',
  'worktree.action.remove': '제거',
  'worktree.action.removeAnyway': '버리고 제거',
  'worktree.action.preserve': '보존',
  'worktree.panel.subtitle': '병렬 에이전트 워커가 생성한 격리된 git 워크트리입니다.',
  'worktree.panel.loading': '워크트리 불러오는 중…',
  'worktree.panel.failedToLoad': '워크트리 불러오기 실패',
  'worktree.panel.empty':
    '격리된 워크트리가 없습니다. 워크트리 격리를 사용하는 병렬 워커가 여기에 표시됩니다.',
  'worktree.panel.overlapsTitle': '겹치는 변경 사항',
  'worktree.panel.overlapHint':
    '이 파일들은 둘 이상의 워크트리에서 변경되었습니다 — 병합하기 전에 조정하세요.',
  'intelligence.agentWork.action.stop': '중지',
  'intelligence.agentWork.action.retry': '다시 시도',
  'intelligence.agentWork.action.continue': '계속',
  'intelligence.agentWork.action.followUp': '후속 조치',
  'intelligence.agentWork.action.send': '보내기',
  'intelligence.agentWork.action.cancel': '취소',
  'intelligence.agentWork.action.continuePlaceholder':
    '이 에이전트의 차단을 해제하려면 답장하세요…',
  'intelligence.agentWork.action.followUpPlaceholder': '후속 지시를 보내세요…',
  'intelligence.agentWork.action.failed': '작업 실패',
  'intelligence.teams.subtitle': '조율된 에이전트 팀과 그들이 공유하는 작업.',
  'intelligence.teams.loading': '팀 로딩 중…',
  'intelligence.teams.failedToLoad': '팀을 불러오지 못했습니다',
  'intelligence.teams.empty': '아직 에이전트 팀이 없습니다',
  'intelligence.teams.emptyHint':
    '에이전트가 하나의 목표를 공유하기 위해 조율된 하위 에이전트를 생성하면 팀이 여기에 표시됩니다.',
  'intelligence.teams.refresh': '새로고침',
  'intelligence.teams.backToList': '모든 팀',
  'intelligence.teams.status.active': '활성',
  'intelligence.teams.status.closed': '종료됨',
  'intelligence.teams.header.lead': '리드',
  'intelligence.teams.header.taskCount': '작업 {count}개',
  'intelligence.teams.header.memberCount': '구성원 {count}명',
  'intelligence.teams.member.active': '활성',
  'intelligence.teams.member.pending': '대기 중',
  'intelligence.teams.member.idle': '유휴',
  'intelligence.teams.member.stopped': '중지됨',
  'intelligence.teams.column.todo': '할 일',
  'intelligence.teams.column.ready': '준비됨',
  'intelligence.teams.column.inProgress': '진행 중',
  'intelligence.teams.column.blocked': '차단됨',
  'intelligence.teams.column.done': '완료',
  'intelligence.teams.emptyColumn': '비어 있음',
  'intelligence.teams.unclaimed': '미할당',
  'intelligence.teams.pickedUpBy': '{name}님이 맡음',
  'intelligence.teams.depLockTitle': '충족되지 않은 종속성 {count}개',
  'intelligence.teams.gate.pending': '게이트 대기 중',
  'intelligence.teams.gate.passed': '게이트 통과',
  'intelligence.teams.gate.failed': '게이트 실패',
  'intelligence.teams.gate.label': '게이트: {status}',
  'intelligence.teams.activity.title': '팀 활동',
  'intelligence.teams.activity.empty': '아직 메시지가 없습니다',
  'intelligence.teams.activity.toTeam': '팀',
  'intelligence.teams.member.start': '시작',
  'intelligence.teams.composer.placeholder': '메시지를 입력하세요…',
  'intelligence.teams.composer.send': '보내기',
  'intelligence.teams.composer.recipient': '받는 사람',
  'intelligence.teams.composer.toTeam': '전체 팀',
  'intelligence.teams.action.blocked': '종속성 대기 중',
  'intelligence.teams.action.alreadyClaimed': '다른 팀원이 이미 맡고 있습니다.',
  'intelligence.teams.action.alreadyActive': '팀원이 이미 실행 중입니다',
  'intelligence.teams.action.noClaimableTask': '이 팀원이 맡을 작업이 없습니다.',
  'intelligence.teams.action.unknownTask': '작업을 찾을 수 없음',
  'intelligence.refine.objectiveDefault':
    '소스 작업을 구현 준비가 된 에이전트 작업으로 전환하세요: {title}',
  'intelligence.refine.sourceLine': '소스: {url}',
  'intelligence.refine.sourceIntake': '소스: 작업 소스 수집',
  'intelligence.refine.repositoryLine': '저장소: {repo}',
  'intelligence.refine.externalTaskLine': '외부 작업: {externalId}',
  'intelligence.refine.planStep1': '연결된 소스 작업을 읽고 요청된 정확한 동작을 확인하세요.',
  'intelligence.refine.planStep2': '관련 코드 경로를 검토하고 가장 작은 구현 경계를 식별하세요.',
  'intelligence.refine.planStep3':
    '사용자에게 보이는 동작을 중심으로 한 집중 테스트와 함께 변경을 구현하세요.',
  'intelligence.refine.planStep4': '대상 검증을 실행하고 남은 위험이나 후속 작업을 기록하세요.',
  'intelligence.refine.acceptance1': '소스 작업 요구 사항이 최종 구현에 반영되어 있습니다.',
  'intelligence.refine.acceptance2': '관련 단위 또는 통합 테스트가 변경된 동작을 다룹니다.',
  'intelligence.refine.acceptance3': '검증 결과와 해결되지 않은 위험이 완료 시 기록됩니다.',
  'notifications.card.dismiss': '알림 닫기',
  'notifications.card.importanceTitle': '중요도: {pct}%',
  'notifications.center.empty': '아직 알림이 없습니다',
  'notifications.center.emptyHint': '빈 상태 안내',
  'notifications.center.filterAll': '전체 필터',
  'notifications.center.markAllRead': '모두 읽음으로 표시',
  'notifications.center.title': '알림',
  'notifications.meeting.joinListen': '참여 (듣기 전용)',
  'notifications.meeting.joinActive': '참여 및 응답',
  'notifications.meeting.skip': '이건 아니에요',
  'notifications.meeting.alwaysJoin': '항상 참여',
  'notifications.meeting.actionError': '작업을 완료할 수 없습니다. 다시 시도해 주세요.',
  'oauth.button.connecting': '연결 중...',
  'oauth.button.loopbackTimeout':
    '로그인 시간 초과 — 브라우저가 OAuth 리디렉션을 완료하지 못했습니다. 다시 시도해 주세요.',
  'oauth.login.continueWith': '다음으로 계속:',
  'onboarding.contextGathering.buildingDesc': '작성 설명',
  'onboarding.contextGathering.buildingProfile': '프로필을 만드는 중...',
  'onboarding.contextGathering.continueToChat': '채팅으로 계속',
  'onboarding.contextGathering.coreAlive':
    'Core에 접근 가능합니다. 처음 실행하는 데 1분 정도 걸릴 수 있습니다.',
  'onboarding.contextGathering.coreAliveProbing': '코어 연결 확인 중…',
  'onboarding.contextGathering.coreUnreachable':
    '코어가 응답하지 않습니다. 계속해서 나중에 다시 시도할 수 있습니다.',
  'onboarding.contextGathering.errorDesc':
    '채팅이 준비되었습니다. 전체 프로필은 백그라운드에서 계속 만들 예정이므로 지금 계속하고 나중에 점진적으로 개선할 수 있습니다.',
  'onboarding.contextGathering.stillWorkingDesc':
    '로컬 모델과 도구를 준비하는 동안 처음 실행하는 데 30~60초 정도 걸릴 수 있습니다. 언제든지 계속 채팅할 수 있습니다. 프로필 빌드는 백그라운드에서 계속 실행됩니다.',
  'onboarding.contextGathering.stillWorkingTitle': '아직 프로필 작업 중입니다…',
  'onboarding.contextGathering.title': '컨텍스트 수집',
  'openhuman.team_list_teams': '팀 목록 팀',
  'overlay.ariaAttention': '주의 메시지',
  'overlay.ariaCompanion': '컴패니언 활성',
  'overlay.ariaOrb': 'OpenHuman 오버레이',
  'overlay.ariaVoiceActive': '음성 입력 활성',
  'overlay.companion.error': '오류',
  'overlay.companion.listening': '듣는 중…',
  'overlay.companion.pointing': '가리키는 중…',
  'overlay.companion.speaking': '말하는 중…',
  'overlay.companion.thinking': '생각 중...',
  'overlay.orbTitle': '드래그하여 이동 · 두 번 클릭하여 위치 초기화',
  'pages.settings.account.connections': '연결',
  'pages.settings.account.connectionsDesc': '연결된 계정 연결을 검토하고 관리합니다',
  'pages.settings.account.migration': '다른 어시스턴트에서 가져오기',
  'pages.settings.account.migrationDesc':
    'OpenClaw(또는 곧 Hermes)의 메모리와 메모를 이 작업 공간으로 마이그레이션합니다.',
  'pages.settings.account.privacy': '개인정보 보호',
  'pages.settings.account.privacyDesc': '데이터 공유 및 익명화된 사용 기본 설정을 관리합니다',
  'pages.settings.account.recoveryPhrase': '복구 문구',
  'pages.settings.account.recoveryPhraseDesc':
    '암호화 및 지갑 접근을 위한 BIP39 복구 문구를 관리합니다',
  'pages.settings.account.team': '팀',
  'pages.settings.account.teamDesc': '팀, 멤버 및 초대를 관리합니다',
  'pages.settings.accountSection.description': '복구 문구, 팀, 연결 및 개인정보 설정.',
  'pages.settings.accountSection.title': '계정',
  'pages.settings.ai.llm': 'LLM',
  'pages.settings.ai.llmDesc': 'LLM 설명',
  'pages.settings.ai.voice': '음성',
  'pages.settings.ai.voiceDesc': '음성 설명',
  'pages.settings.aiSection.description': '언어 모델 제공업체, 로컬 Ollama 및 음성(STT / TTS).',
  'pages.settings.aiSection.title': 'AI',
  'settings.developerMenu.composio.title': 'Composio',
  'settings.developerMenu.composio.desc': '라우팅 모드, 통합 트리거 및 트리거 기록 아카이브.',
  'pages.settings.features.desktopCompanion': '데스크탑 동반자',
  'pages.settings.features.desktopCompanionDesc':
    '화면 인식 기능이 있는 음성 도우미 — 듣고, 보고, 말하고, 가리킵니다.',
  'pages.settings.features.messagingChannels': '메시징 채널',
  'pages.settings.features.messagingChannelsDesc': '메시징 채널 설명',
  'pages.settings.features.notifications': '알림',
  'pages.settings.features.notificationsDesc': '알림 설명',
  'pages.settings.features.screenAwareness': '화면 인식',
  'pages.settings.features.screenAwarenessDesc': '화면 인식 설명',
  'pages.settings.features.tools': '도구',
  'pages.settings.features.toolsDesc': '도구 설명',
  'pages.settings.featuresSection.description': '화면 인식, 메시징 및 도구.',
  'pages.settings.featuresSection.title': '기능',
  'privacy.dataKind.credentials': '자격 증명',
  'privacy.dataKind.derived': '파생됨',
  'privacy.dataKind.diagnostics': '진단',
  'privacy.dataKind.metadata': '메타데이터',
  'privacy.dataKind.raw': '원본',
  'privacy.whatLeaves.link.label': '내 컴퓨터를 떠나는 데이터는 무엇인가요?',
  'rewards.community.achievementsUnlocked': '{total}개 중 {unlocked}개 업적 잠금 해제됨',
  'rewards.community.connectDiscord': 'Discord 연결',
  'rewards.community.connectDiscordError': 'Discord 연결을 시작할 수 없습니다. 다시 시도해 주세요.',
  'rewards.community.connectingDiscord': '연결 중…',
  'rewards.community.cumulativeTokens': '누적 토큰',
  'rewards.community.currentStreak': '현재 연속 기록',
  'rewards.community.disconnectDiscord': '연결 해제',
  'rewards.community.disconnectDiscordError':
    'Discord 연결을 해제하지 못했습니다. 다시 시도해 주세요.',
  'rewards.community.disconnectingDiscord': '연결 해제 중…',
  'rewards.community.discordAccount': 'Discord 계정',
  'rewards.community.discordConnected': 'Discord 연결됨',
  'rewards.community.discordConnectedAs': '{username}(으)로 연결됨',
  'rewards.community.discordLinkedNotInGuild': '연결됨, 하지만 서버 멤버가 아님',
  'rewards.community.discordMember': '서버에 참여함',
  'rewards.community.discordNotLinked': '연결되지 않음',
  'rewards.community.discordServer': 'Discord 서버',
  'rewards.community.discordStatusUnavailable': '멤버십 상태를 사용할 수 없음',
  'rewards.community.discordWaiting': '백엔드 동기화 대기 중',
  'rewards.community.heroSubtitle':
    'Discord 계정을 연결하여 독점 채널, 후원자 배지 및 백엔드 동기화 보상을 잠금 해제하세요.',
  'rewards.community.heroTitle': '보상 및 Discord 역할 받기',
  'rewards.community.joinDiscord': 'Discord 참여',
  'rewards.community.loadingRewards': '보상 불러오는 중…',
  'rewards.community.locked': '잠김',
  'rewards.community.retrying': '다시 시도 중…',
  'rewards.community.roleAssigned': '역할이 부여됨',
  'rewards.community.roleAssignmentCount': '{unlocked}개 중 {assigned}개 역할 부여됨',
  'rewards.community.roleClaimDesc':
    'Discord 역할을 잠금 해제했지만 아직 OpenHuman 서버에 참여하지 않았습니다. 참여하면 자동으로 부여됩니다.',
  'rewards.community.roleClaimTitle': 'Discord 역할 받기',
  'rewards.community.roleJoinToClaim': '받으려면 서버 참여',
  'rewards.community.rolePending': '역할 동기화 중…',
  'rewards.community.rolesAndRewards': '역할 및 보상',
  'rewards.community.streakDays': '{n}일',
  'rewards.community.syncPending': '보상 동기화 대기 중',
  'rewards.community.syncPendingDesc': '동기화 대기 설명',
  'rewards.community.syncUnavailable': '동기화를 사용할 수 없음',
  'rewards.community.tryAgain': '다시 시도 중…',
  'rewards.community.unknown': '알 수 없음',
  'rewards.community.unlocked': '잠금 해제됨',
  'rewards.community.yourProgress': '내 진행 상황',
  'rewards.coupon.colCode': '코드',
  'rewards.coupon.colRedeemed': '교환됨',
  'rewards.coupon.colReward': '보상',
  'rewards.coupon.colStatus': '상태',
  'rewards.coupon.loadingHistory': '보상 기록 불러오는 중…',
  'rewards.coupon.noCodes': '아직 교환된 보상 코드가 없습니다.',
  'rewards.coupon.pending': '대기 중',
  'rewards.coupon.placeholder': '쿠폰 코드',
  'rewards.coupon.promoCredits': '프로모션 크레딧',
  'rewards.coupon.recentRedemptions': '최근 교환',
  'rewards.coupon.redeemAccepted':
    '{code}이(가) 승인되었습니다. 필요한 작업이 완료되면 {amount}이(가) 잠금 해제됩니다.',
  'rewards.coupon.redeemButton': '코드 교환',
  'rewards.coupon.redeemSuccess':
    '{code}이(가) 교환되었습니다. {amount}이(가) 크레딧에 추가되었습니다.',
  'rewards.coupon.redeemedCodes': '교환된 코드',
  'rewards.coupon.redeeming': '교환 중...',
  'rewards.coupon.statusApplied': '적용됨',
  'rewards.coupon.statusPendingAction': '작업 대기 중',
  'rewards.coupon.statusRedeemed': '교환됨',
  'rewards.coupon.subtitle': '부제목',
  'rewards.coupon.title': '쿠폰 코드 교환',
  'rewards.referralSection.activity': '추천 활동',
  'rewards.referralSection.apply': '적용 중…',
  'rewards.referralSection.applying': '적용 중…',
  'rewards.referralSection.colReferredUser': '추천된 사용자',
  'rewards.referralSection.colReward': '보상',
  'rewards.referralSection.colStatus': '상태',
  'rewards.referralSection.colUpdated': '업데이트됨',
  'rewards.referralSection.completed': '완료됨',
  'rewards.referralSection.copyCode': '코드 복사',
  'rewards.referralSection.copyFailed': '복사 실패',
  'rewards.referralSection.haveCode': '추천 코드가 있나요?',
  'rewards.referralSection.haveCodeDesc': '코드 있음 설명',
  'rewards.referralSection.linked': '연결됨',
  'rewards.referralSection.linkedCode': '(코드 {code})',
  'rewards.referralSection.loading': '추천 프로그램 불러오는 중…',
  'rewards.referralSection.retry': '재시도',
  'rewards.referralSection.noReferrals': '추천 없음',
  'rewards.referralSection.pendingReferrals': '대기 중인 추천',
  'rewards.referralSection.placeholder': '추천 코드',
  'rewards.referralSection.share': '공유',
  'rewards.referralSection.statusCompleted': '완료 상태',
  'rewards.referralSection.statusExpired': '만료 상태',
  'rewards.referralSection.statusJoined': '참여 상태',
  'rewards.referralSection.subtitle': '부제목',
  'rewards.referralSection.title': '친구를 초대하고 크레딧 받기',
  'rewards.referralSection.totalEarned': '총 적립',
  'rewards.referralSection.yourCode': '내 코드',
  'settings.ai.addCloudProvider': '클라우드 제공업체 추가',
  'settings.ai.addProvider': '저장 중…',
  'settings.ai.apiKeyFieldLabel': 'API 키 필드 라벨',
  'settings.ai.apiKeyRequired': '계속하려면 API 키를 붙여넣어 주세요.',
  'settings.ai.apiKeyStoredEncrypted': 'API 키가 암호화되어 저장됨',
  'settings.ai.apiKeysEncrypted': 'auth-profiles.json',
  'settings.ai.clearStoredKey': '저장된 키 지우기',
  'settings.ai.connectProvider': '제공업체 연결',
  'settings.ai.customRouting': '사용자 지정 라우팅',
  'settings.ai.defaultResolvesTo': '기본값은 다음으로 확인됨',
  'settings.ai.discard': '취소',
  'settings.ai.editProvider': '제공업체 편집',
  'settings.ai.llmProviders': 'LLM 제공업체',
  'settings.ai.llmProvidersDesc': 'LLM 제공업체 설명',
  'settings.ai.localOllama': '로컬(Ollama)',
  'settings.ai.modelLabel': '모델',
  'settings.ai.noCustomProviders': '사용자 지정 제공업체 없음',
  'settings.ai.openAiCompat.authHeaderExample': '권한 부여: Bearer <your key>',
  'settings.ai.openAiCompat.authHeaderLabel': '인증 헤더',
  'settings.ai.openAiCompat.baseUrlLabel': '기본 URL',
  'settings.ai.openAiCompat.baseUrlUnavailable': '사용할 수 없음',
  'settings.ai.openAiCompat.clearKey': '키 지우기',
  'settings.ai.openAiCompat.description':
    '로컬 하네스를 이 /v1 서버로 지정하면 아래에 구성된 제공업체를 통해 라우팅됩니다. 인증에는 앱 내부 코어 bearer가 아니라 여기에서 설정한 고정 키를 사용합니다.',
  'settings.ai.openAiCompat.keyConfigured': '키 구성됨',
  'settings.ai.openAiCompat.keyRequired': '키 필요',
  'settings.ai.openAiCompat.rotateKey': '키 회전',
  'settings.ai.openAiCompat.setKey': '키 설정',
  'settings.ai.openAiCompat.title': 'OpenAI 호환 엔드포인트',
  'settings.ai.providerLabel': '제공업체',
  'skills.mcpComingSoon.title': 'MCP 서버',
  'skills.mcpComingSoon.description':
    'MCP 서버 관리가 곧 제공됩니다. 이 탭에서 MCP 서버 통합을 검색, 연결 및 모니터링할 수 있게 됩니다.',
  'settings.ai.routing': '라우팅',
  'settings.ai.claudeCode.button': 'Claude Code',
  'settings.ai.claudeCode.inlineNotConnected':
    '연결되지 않음 — 로컬 Claude Code CLI를 통해 채팅을 라우팅합니다.',
  'settings.ai.claudeCode.checkingSignIn': '로그인 확인 중…',
  'settings.ai.claudeCode.inlineConnected': '연결됨.',
  'settings.ai.claudeCode.signedInAs': '로그인 계정',
  'settings.ai.claudeCode.subscriptionFallback': 'Claude 구독',
  'settings.ai.claudeCode.usingApiKeyEnv': 'ANTHROPIC_API_KEY 사용 중',
  'settings.ai.claudeCode.cliNotInstalled': 'CLI가 설치되지 않음',
  'settings.ai.claudeCode.signInUnknown': '로그인 상태 알 수 없음',
  'settings.ai.claudeCode.connectedNotSignedIn': '연결됨 · 로그인되지 않음',
  'settings.ai.claudeCode.modalTitle': 'Claude Code CLI',
  'settings.ai.claudeCode.modalDescription':
    '채팅, 에이전트, 추론 작업을 로컬에 설치된 Claude Code CLI를 통해 라우팅합니다. API 키가 필요 없으며 CLI 자체 로그인을 사용합니다.',
  'settings.ai.claudeCode.close': '닫기',
  'settings.ai.claudeCode.connection': '연결',
  'settings.ai.claudeCode.enabled': '사용 설정됨',
  'settings.ai.claudeCode.notEnabled': '사용 설정 안 됨',
  'settings.ai.claudeCode.disconnect': '연결 해제',
  'settings.ai.claudeCode.disconnecting': '연결 해제 중…',
  'settings.ai.claudeCode.enable': 'Claude Code 사용 설정',
  'settings.ai.claudeCode.enabling': '사용 설정 중…',
  'settings.ai.claudeCode.authentication': '인증',
  'settings.ai.claudeCode.recheck': '다시 확인',
  'settings.ai.claudeCode.checking': '확인 중…',
  'settings.ai.claudeCode.openingTerminal': '터미널 여는 중…',
  'settings.ai.claudeCode.signIn': 'Claude로 로그인',
  'settings.ai.claudeCode.reconnect': '다시 연결',
  'settings.ai.claudeCode.loginHint':
    'claude login을 실행하는 터미널을 엽니다. 완료된 후 다시 확인을 클릭하세요.',
  'settings.ai.claudeCode.loginError': '로그인 터미널을 열 수 없습니다. 다시 시도해 주세요.',
  'settings.ai.claudeCode.fullAccess': '전체 액세스',
  'settings.ai.claudeCode.fullAccessOn':
    'Claude Code가 명령을 실행하고 네트워크를 사용하며 하위 에이전트를 생성할 수 있습니다.',
  'settings.ai.claudeCode.fullAccessOff':
    '편집만 수락 — 파일 편집을 자동으로 적용하고 명령과 네트워크를 제한합니다.',
  'settings.ai.claudeCode.sandboxNoteMac':
    'macOS에서는 두 모드 모두 ~/.openhuman이 샌드박스로 보호됩니다.',
  'settings.ai.claudeCode.sandboxNoteOther':
    '이 플랫폼에서는 전체 액세스가 제한되지 않습니다 — 작업 공간을 신뢰하는 경우에만 사용 설정하세요.',
  'settings.ai.claudeCode.enableToCheck': '로그인을 확인하려면 Claude Code를 사용 설정하세요.',
  'settings.ai.claudeCode.usingApiKeyEnvDetail': '환경에서 ANTHROPIC_API_KEY를 사용 중입니다.',
  'settings.ai.claudeCode.notFoundInstall':
    'Claude Code CLI를 찾을 수 없습니다 — 다음으로 설치하세요: npm install -g @anthropic-ai/claude-code',
  'settings.ai.claudeCode.unknownDetail':
    '로그인 상태를 확인할 수 없습니다. claude CLI가 인증 상태 지원 이전 버전일 수 있습니다 — 다시 연결한 후 다시 확인하세요.',
  'settings.ai.claudeCode.notSignedIn': '로그인되지 않음.',
  'settings.ai.routingCustom': '사용자 지정 라우팅',
  'settings.ai.routingDefault': '기본값',
  'settings.ai.routingDesc': '라우팅 설명',
  'settings.ai.saveChanges': '저장 중…',
  'settings.ai.saving': '저장 중…',
  'settings.ai.unsavedChange': '저장되지 않은 변경 사항',
  'settings.ai.unsavedChanges': '저장되지 않은 변경 사항',
  'settings.ai.workloadGroupBackground': '백그라운드 작업 그룹',
  'settings.ai.workloadGroupChat': '채팅 작업 그룹',
  'settings.ai.disconnectProvider': '{label} 연결 끊기',
  'settings.ai.connectProviderLabel': '{label} 연결',
  'settings.ai.editProviderEndpoint': '{label} 엔드포인트 편집',
  'settings.ai.defaultLocalEndpoint': 'http://localhost:11434/v1',
  'settings.ai.editEndpoint': '엔드포인트 편집',
  'settings.ai.endpointUrlLabel': '끝점 URL',
  'settings.ai.localRuntimeHelper':
    '{label}에 연결할 수 있는 위치입니다. 기본값은 localhost입니다. 공유 인스턴스를 사용하려면 원격 호스트(예: http://10.0.0.4:11434/v1)를 가리키세요.',
  'settings.ai.endpointUrlRequired': '엔드포인트 URL이(가) 필요합니다.',
  'settings.ai.endpointProtocolRequired': '엔드포인트는 http:// 또는 https://로 시작해야 합니다.',
  'settings.ai.connectProviderDialog': '{label}에 연결',
  'settings.ai.getProviderApiKey': 'API Key 받기',
  'settings.ai.or': '또는',
  'settings.ai.codexOauthMissingAuthUrl':
    'Codex OAuth가 인증 URL을 반환하지 않았습니다. 다시 로그인해 보세요.',
  'settings.ai.codexOauthMissingCallbackUrl': '로그인한 뒤 브라우저의 리디렉션 URL을 붙여넣으세요.',
  'settings.ai.openRouterOauthDescription':
    'OpenRouter로 로그인하고 PKCE를 사용해 사용자가 제어하는 API 키를 가져옵니다.',
  'settings.ai.connecting': '연결 중...',
  'settings.ai.backgroundLoops': '백그라운드 루프',
  'settings.ai.backgroundLoopsDesc':
    '채팅 메시지 없이 실행되는 항목을 확인하고, 하트비트 작업을 일시 중지하며, 최근 크레딧 원장 행을 검사합니다.',
  'settings.ai.heartbeatControls': '하트비트 제어',
  'settings.ai.heartbeatControlsDesc':
    '기본값은 꺼짐입니다. 활성화하면 루프가 시작되고 비활성화하면 실행 중인 작업이 중단됩니다.',
  'settings.ai.heartbeatLoop': '하트비트 루프',
  'settings.ai.heartbeatLoopDesc': '플래너 및 선택적 잠재의식 추론을 위한 마스터 스케줄러입니다.',
  'settings.ai.subconsciousInference': '잠재의식 추론',
  'settings.ai.subconsciousInferenceDesc': '하트비트 틱에서 모델 기반 작업/회고 평가를 실행합니다.',
  'settings.ai.calendarMeetingChecks': '캘린더 회의 확인',
  'settings.ai.calendarMeetingChecksDesc':
    '활성 Google Calendar 연결의 캘린더 이벤트 목록을 호출합니다.',
  'settings.ai.calendarCap': '캘린더 캡',
  'settings.ai.connectionsPerTick': '틱당 {count}개 연결',
  'settings.ai.meetingLookahead': '회의 미리보기',
  'settings.ai.minutesShort': '{count}분',
  'settings.ai.reminderLookahead': '알림 미리보기',
  'settings.ai.cronReminderChecks': '크론 알림 확인',
  'settings.ai.cronReminderChecksDesc':
    '활성화된 크론 작업에서 알림에 가까운 예정 항목을 스캔합니다.',
  'settings.ai.relevantNotificationChecks': '관련 알림 확인',
  'settings.ai.relevantNotificationChecksDesc': '긴급한 로컬 알림을 선제적 알림으로 승격합니다.',
  'settings.ai.externalDelivery': '외부 전달',
  'settings.ai.externalDeliveryDesc':
    '하트비트 알림이 외부 채널로 선제적 메시지를 보낼 수 있게 합니다.',
  'settings.ai.interval': '간격',
  'settings.ai.running': '실행 중...',
  'settings.ai.plannerTickNow': '지금 플래너 체크',
  'settings.ai.loadingHeartbeatControls': '하트비트 제어 로드 중...',
  'settings.ai.heartbeatControlsUnavailable': '하트비트 제어를 사용할 수 없습니다.',
  'settings.ai.loopMap': '루프 맵',
  'settings.ai.plannerSummary':
    '플래너: {sourceEvents} 소스 이벤트, {sent} 전송, {deduped} 중복 제거.',
  'settings.ai.routeLabel': '경로: {route}',
  'settings.ai.on': '켜짐',
  'settings.ai.off': '꺼짐',
  'settings.ai.recentUsageLedger': '최근 사용량 원장',
  'settings.ai.recentUsageLedgerDesc':
    '백엔드 행은 오늘의 작업/시간을 표시합니다. 소스 태그에는 백엔드 지원이 필요합니다.',
  'settings.ai.latestSpend': '최근 지출: {time}({action})의 {amount}',
  'settings.ai.topActions': '주요 작업',
  'settings.ai.noSpendRows': '로드된 지출 행이 없습니다.',
  'settings.ai.topHours': '상위 시간',
  'settings.ai.noHourlySpend': '아직 시간당 지출이 없습니다.',
  'settings.ai.openhumanDefault': 'OpenHuman(기본값)',
  'settings.ai.localModelResolved': 'Ollama · {model}',
  'settings.ai.customRoutingForWorkload': '{label}에 대한 사용자 정의 라우팅',
  'settings.ai.loadingModels': '모델 로드 중...',
  'settings.ai.enterModelIdManually': '또는 모델 ID를 수동으로 입력:',
  'settings.ai.modelIdPlaceholderForProvider': '{slug} 모델 ID',
  'settings.ai.modelIdPlaceholder': 'model-id',
  'settings.ai.selectModel': '모델 선택...',
  'settings.ai.temperatureOverride': '온도 재정의',
  'settings.ai.temperatureOverrideSlider': '온도 재정의(슬라이더)',
  'settings.ai.temperatureOverrideValue': '온도 재정의(값)',
  'settings.ai.temperatureOverrideDesc':
    '낮을수록 더 결정적입니다. 제공업체 기본값을 사용하려면 선택하지 않은 상태로 두세요.',
  'settings.ai.modelVision': '비전 지원 (이미지 입력)',
  'settings.ai.modelVisionDesc':
    '이 모델이 이미지를 지원하면 활성화하세요. 이 모델을 선택하면 채팅 작성기에서 이미지를 첨부할 수 있습니다.',
  'settings.ai.testFailed': '테스트 실패',
  'settings.ai.testingModel': '모델 테스트 중...',
  'settings.ai.modelResponse': '모델 응답',
  'settings.ai.providerWithValue': '공급자: {value}',
  'settings.ai.noneDash': '—',
  'settings.ai.promptHelloWorld': '프롬프트: Hello world',
  'settings.ai.startedAt': '시작됨: {value}',
  'settings.ai.waitingForModelResponse': '선택한 모델의 응답을 기다리는 중...',
  'settings.ai.response': '응답',
  'settings.ai.testing': '테스트 중...',
  'settings.ai.test': '테스트',
  'settings.ai.slugMissingError': '슬러그를 생성하려면 공급자 이름을 입력하세요.',
  'settings.ai.slugInUseError': '해당 공급자 이름이 이미 사용 중입니다.',
  'settings.ai.slugReservedError': '다른 공급자 이름을 선택하세요.',
  'settings.ai.providerNamePlaceholder': '내 공급자',
  'settings.ai.slugLabel': '슬러그:',
  'settings.ai.openAiUrlLabel': 'OpenAI URL',
  'settings.ai.openAiUrlPlaceholder': 'https://api.openai.com/v1',
  'settings.ai.keepExistingKeyPlaceholder': '기존 키를 유지하려면 비워 두세요.',
  'settings.ai.reindexingMemory': '메모리 재색인 중',
  'settings.ai.reindexingMemoryMessage':
    '임베딩을 다시 처리하는 중입니다. {pending}개의 메모리 항목이 현재 모델로 다시 임베딩되고 있습니다. 완료될 때까지 의미 기반 회상 성능이 줄어듭니다. 키워드 검색은 계속 작동하며, 이 창을 닫아도 재임베딩은 백그라운드에서 계속됩니다.',
  'settings.ai.signInWithOpenRouter': 'OpenRouter로 로그인',
  'settings.ai.weekBudget': '주 예산',
  'settings.ai.cycleRemaining': '남은 주기',
  'settings.ai.cycleTotalSpend': '주기 총 지출',
  'settings.ai.avgSpendRow': '평균 지출 행',
  'settings.ai.backgroundApiReads': 'Bg API 읽기',
  'settings.ai.backgroundWakeups': '백그라운드 깨우기',
  'settings.ai.budgetMath': '예산 계산',
  'settings.ai.rowsLeft': '남은 행',
  'settings.ai.rowsPerFullWeekBudget': '전체 주 예산당 행',
  'settings.ai.sampleBurnRate': '샘플 소모율',
  'settings.ai.projectedEmpty': '비어 있을 것으로 예상됨',
  'settings.ai.apiReadsPerDollarRemaining': '남은 $당 API 읽기',
  'settings.ai.loopCallBudget': '루프 호출 예산',
  'settings.ai.heartbeatTicks': '하트비트 틱',
  'settings.ai.calendarPlannerCalls': '캘린더 플래너 호출',
  'settings.ai.calendarFanoutCap': '달력 팬아웃 한도',
  'settings.ai.subconsciousModelCalls': '잠재 의식 모델 호출',
  'settings.ai.composioSyncScans': 'Composio 동기화 검색',
  'settings.ai.totalBackgroundApiReadBudget': '총 bg API 읽기 예산',
  'settings.ai.memoryWorkerPolls': '메모리 작업자 설문 조사',
  'settings.ai.defaultProviderName': 'OpenHuman',
  'settings.ai.routing.managed': '관리됨',
  'settings.ai.routing.managedAlwaysOn': 'Always on',
  'settings.ai.routing.managedHint':
    'Managed is always available as a fallback. To use your own model, choose a routing mode below.',
  'settings.ai.routing.managedDesc':
    'OpenHuman이 모든 추론을 클라우드에서 실행하고, 작업에 가장 적합한 모델을 선택하며, 비용을 최적화하고 가장 안전한 라우팅 기본값을 유지합니다.',
  'settings.ai.routing.managedMsg':
    'OpenHuman이 모든 워크로드의 추론을 처리하고 비용, 품질, 보안을 고려해 최적의 경로를 자동으로 선택합니다.',
  'settings.ai.routing.useYourOwn': '자체 모델 사용',
  'settings.ai.routing.useYourOwnDesc':
    '제공업체와 모델 하나를 선택하고 모든 워크로드를 해당 경로로 라우팅합니다. 간단하지만 경량 추론과 대형 추론이 같은 경로를 공유하므로 비효율적일 수 있습니다.',
  'settings.ai.routing.advanced': '고급',
  'settings.ai.routing.advancedDesc':
    '작업별로 다른 모델을 선택합니다. 세밀한 비용 최적화와 최대 제어에 가장 적합한 옵션입니다.',
  'settings.ai.routing.customDesc':
    '세분화된 라우팅은 최고의 비용 최적화와 가장 많은 제어권을 제공합니다. 아래 행에서 관리형으로 유지할 워크로드, 공유 기본값을 사용할 워크로드, 특정 모델에 고정할 워크로드를 결정하세요.',
  'settings.ai.routing.chatAndConversations': '채팅 및 대화',
  'settings.ai.routing.chatDesc':
    '직접 사용자 상호작용, 답변, 추론, 에이전트 루프 및 코딩 도움에 사용되는 모델입니다.',
  'settings.ai.routing.backgroundTasks': '백그라운드 작업',
  'settings.ai.routing.bgTasksDesc':
    '요약, 하트비트, 학습 및 잠재의식 평가처럼 기본 대화 흐름 밖에서 사용되는 모델입니다.',
  'settings.ai.routing.workload.chat.label': 'Chat',
  'settings.ai.routing.workload.chat.description':
    'Direct conversational back-and-forth — “Quick” mode in Conversations',
  'settings.ai.routing.workload.chat.hint':
    'Recommended: a cheap or mid-cost fast chat model with high tokens/sec and low latency. Open-source local models can work well here if they feel responsive.',
  'settings.ai.routing.workload.reasoning.label': 'Reasoning',
  'settings.ai.routing.workload.reasoning.description':
    'Main chat agent, meeting summarizer — “Reasoning” mode in Conversations',
  'settings.ai.routing.workload.reasoning.hint':
    'Recommended: a more expensive frontier or strong reasoning model for deep thinking. This is used for the main chat agent, meeting summaries, and heavier answer synthesis.',
  'settings.ai.routing.workload.agentic.label': 'Agentic',
  'settings.ai.routing.workload.agentic.description':
    'Sub-agent runners, tool loops, GIF decisions',
  'settings.ai.routing.workload.agentic.hint':
    'Recommended: a reliable instruction-following model with strong tool use. Mid-cost frontier models are usually safest; capable open-source models can work if tool calling is stable.',
  'settings.ai.routing.workload.coding.label': 'Coding',
  'settings.ai.routing.workload.coding.description': 'Code generation and refactor passes',
  'settings.ai.routing.workload.coding.hint':
    'Recommended: a coding-tuned model with strong instruction following, edit quality, and long-context performance. This is usually worth spending more on.',
  'settings.ai.routing.workload.vision.label': 'Vision',
  'settings.ai.routing.workload.vision.description':
    'Image understanding for the vision sub-agent — always multimodal',
  'settings.ai.routing.workload.vision.hint':
    'Recommended: a multimodal model that accepts image input. The managed default (vision-v1) is image-capable; any provider you route here is always treated as vision-enabled.',
  'settings.ai.routing.workload.memory.label': 'Memory summarization',
  'settings.ai.routing.workload.memory.description': 'Tree-extracts and consolidations',
  'settings.ai.routing.workload.memory.hint':
    'Recommended: a cheaper summarization model. It should be consistent and compact, but it does not need premium frontier-level reasoning.',
  'settings.ai.routing.workload.heartbeat.label': 'Heartbeat',
  'settings.ai.routing.workload.heartbeat.description': 'Background reasoning between user turns',
  'settings.ai.routing.workload.heartbeat.hint':
    'Recommended: a cheap, efficient background model. This runs often between turns, so low cost matters more than maximum intelligence.',
  'settings.ai.routing.workload.learning.label': 'Learning · Reflections',
  'settings.ai.routing.workload.learning.description': 'Periodic reflection over recent history',
  'settings.ai.routing.workload.learning.hint':
    'Recommended: a stronger reflective model. This can be mid-cost or premium because it benefits from better synthesis over recent history.',
  'settings.ai.routing.workload.subconscious.label': 'Subconscious',
  'settings.ai.routing.workload.subconscious.description': 'Eventfulness scoring + drift checks',
  'settings.ai.routing.workload.subconscious.hint':
    'Recommended: a very cheap monitoring model, ideally one that is lightweight and predictable. This is for eventfulness scoring, drift checks, and quiet background evaluation.',
  'settings.ai.routing.addCustomProvider': '사용자 정의 공급자 추가',
  'settings.ai.globalModel.title': '모든 것에 대해 하나의 모델을 선택합니다.',
  'settings.ai.globalModel.desc':
    '모든 추론을 하나의 모델로 라우팅합니다. 더 간단하지만 경량 작업과 무거운 작업이 모두 같은 경로를 사용하므로 비용과 품질 면에서 비효율적일 수 있습니다.',
  'settings.ai.globalModel.noProviders':
    '먼저 제공업체를 추가하거나 연결하세요. 그런 다음 여기에서 모든 워크로드를 하나의 모델로 라우팅할 수 있습니다.',
  'settings.ai.globalModel.provider': '공급자',
  'settings.ai.globalModel.model': '모델',
  'settings.ai.globalModel.loadingModels': '모델 로드 중…',
  'settings.ai.globalModel.enterModelId': '모델 ID 입력',
  'settings.ai.globalModel.appliesToAll':
    '채팅, 추론, 코딩, 메모리, 하트비트, 학습 및 잠재의식에 동일한 제공업체와 모델을 적용합니다. 임베딩은 별도로 구성됩니다. 저장을 클릭하면 변경 사항이 저장됩니다.',
  'settings.ai.globalModel.saving': '저장 중…',
  'settings.ai.globalModel.saved': '저장됨',
  'settings.ai.workload.noModel': '선택된 모델 없음',
  'settings.ai.workload.changeModel': '모델 변경',
  'settings.ai.workload.chooseModel': '모델 선택',
  'settings.ai.provider.ollama': 'Ollama',
  'settings.autocomplete.appFilter.acceptSuggestion': '제안 수락',
  'settings.autocomplete.appFilter.app': '앱',
  'settings.autocomplete.appFilter.currentSuggestion': '현재 제안',
  'settings.autocomplete.appFilter.contextOverride': '컨텍스트 재정의(선택 사항)',
  'settings.autocomplete.appFilter.debounce': '디바운스',
  'settings.autocomplete.appFilter.debugFocus': '포커스 디버그',
  'settings.autocomplete.appFilter.enabled': '활성화됨',
  'settings.autocomplete.appFilter.getSuggestion': '제안 받기',
  'settings.autocomplete.appFilter.lastError': '마지막 오류',
  'settings.autocomplete.appFilter.liveLogs': '실시간 로그',
  'settings.autocomplete.appFilter.model': '모델',
  'settings.autocomplete.appFilter.noLogs': ') :',
  'settings.autocomplete.appFilter.phase': '단계',
  'settings.autocomplete.appFilter.platformSupported': '플랫폼 지원',
  'settings.autocomplete.appFilter.refreshStatus': '새로고침 중…',
  'settings.autocomplete.appFilter.refreshing': '새로고침 중…',
  'settings.autocomplete.appFilter.running': '실행 중',
  'settings.autocomplete.appFilter.runtime': '런타임',
  'settings.autocomplete.appFilter.test': '테스트',
  'settings.autocomplete.completionStyle.acceptedCompletion':
    '수락된 완성 {count}개가 저장됨 — 향후 제안을 개인화하는 데 사용됩니다.',
  'settings.autocomplete.completionStyle.acceptedCompletions':
    '수락된 완성 {count}개가 저장됨 — 향후 제안을 개인화하는 데 사용됩니다.',
  'settings.autocomplete.completionStyle.clearHistory': '지우는 중…',
  'settings.autocomplete.completionStyle.clearing': '지우는 중…',
  'settings.autocomplete.completionStyle.debounce': '디바운스(ms)',
  'settings.autocomplete.completionStyle.enabled': '활성화됨',
  'settings.autocomplete.completionStyle.maxChars': '최대 문자 수',
  'settings.autocomplete.completionStyle.noHistory':
    '아직 수락된 완성이 없습니다. Tab으로 제안을 수락하여 개인화를 시작하세요.',
  'settings.autocomplete.completionStyle.overlayTtl': '오버레이 TTL(ms)',
  'settings.autocomplete.completionStyle.personalizationHistory': '개인화 기록',
  'settings.autocomplete.completionStyle.styleExamples': '스타일 예시(줄마다 하나씩)',
  'settings.autocomplete.completionStyle.styleInstructions': '스타일 지침',
  'settings.autocomplete.debug.acceptedPrefix': '수락됨: {value}',
  'settings.autocomplete.debug.acceptFailed': '제안을 수락하지 못했습니다.',
  'settings.autocomplete.debug.alreadyRunning': '자동 완성이 이미 실행 중입니다.',
  'settings.autocomplete.debug.clearHistoryFailed': '기록을 지우지 못했습니다.',
  'settings.autocomplete.debug.didNotStart': '자동 완성이 시작되지 않았습니다.',
  'settings.autocomplete.debug.disabledInSettings':
    '설정에서 자동완성이 비활성화되어 있습니다. 활성화하고 먼저 저장하십시오.',
  'settings.autocomplete.debug.fetchSuggestionFailed': '현재 제안을 가져오지 못했습니다.',
  'settings.autocomplete.debug.inspectFocusedElementFailed': '중점 요소를 검사하지 못했습니다.',
  'settings.autocomplete.debug.loadSettingsFailed': '자동 완성 설정을 로드하지 못했습니다.',
  'settings.autocomplete.debug.noSuggestionApplied': '제안이 적용되지 않았습니다.',
  'settings.autocomplete.debug.noSuggestionReturned': '반환된 제안이 없습니다.',
  'settings.autocomplete.debug.refreshStatusFailed': '자동 완성 상태를 새로 고치지 못했습니다.',
  'settings.autocomplete.debug.saveAdvancedSettingsFailed': '고급 설정을 저장하지 못했습니다.',
  'settings.autocomplete.debug.startFailed': '자동 완성을 시작하지 못했습니다.',
  'settings.autocomplete.debug.stopFailed': '자동 완성을 중지하지 못했습니다.',
  'settings.autocomplete.debug.suggestionPrefix': '제안: {value}',
  'settings.autocomplete.shared.none': '없음',
  'settings.autocomplete.shared.notApplicable': '해당 없음',
  'settings.autocomplete.shared.unknown': '알 수 없음',
  'settings.billing.autoRecharge.addAmount': '이 금액 추가',
  'settings.billing.autoRecharge.addCard': '카드 추가',
  'settings.billing.autoRecharge.amountHint': '금액 안내',
  'settings.billing.autoRecharge.defaultCard': '기본 카드',
  'settings.billing.autoRecharge.lastRechargeFailed': '마지막 충전 실패',
  'settings.billing.autoRecharge.lastRecharged': '마지막 충전',
  'settings.billing.autoRecharge.expires': '{date}',
  'settings.billing.autoRecharge.noCards': '카드 없음',
  'settings.billing.autoRecharge.paymentMethods': '결제 수단',
  'settings.billing.autoRecharge.rechargeInProgress': '충전 진행 중',
  'settings.billing.autoRecharge.spentThisWeek': '${spent} 만료 이번 주에 ${limit} 사용됨',
  'settings.billing.autoRecharge.rechargeWhen': '잔액이 다음보다 낮아지면 충전',
  'settings.billing.autoRecharge.saveSettings': '저장 중…',
  'settings.billing.autoRecharge.saving': '저장 중…',
  'settings.billing.autoRecharge.setDefault': ':',
  'settings.billing.autoRecharge.subtitle': '부제목',
  'settings.billing.autoRecharge.title': '자동 충전 활성화',
  'settings.billing.autoRecharge.toggleAriaLabel': '자동 충전 전환',
  'settings.billing.autoRecharge.weeklyLimit': '주간 지출 한도',
  'settings.billing.history.desc': '설명',
  'settings.billing.history.empty': '비어 있음',
  'settings.billing.history.openPortal': '포털 열기',
  'settings.billing.history.posted': '게시됨',
  'settings.billing.history.title': '제목',
  'settings.billing.inferenceBudget.cycleEnds': '주기 종료',
  'settings.billing.inferenceBudget.exhausted': '소진됨',
  'settings.billing.inferenceBudget.loadError': '로드 오류',
  'settings.billing.inferenceBudget.noBudgetDesc': '예산 없음 설명',
  'settings.billing.inferenceBudget.noRecurringBudget': '반복 예산 없음',
  'settings.billing.inferenceBudget.noRecurringPlanBudget': '반복 계획 예산이 없습니다.',
  'settings.billing.inferenceBudget.noRecurringWeeklyDesc':
    '현재 플랜에는 반복 주간 추론 예산이 포함되어 있지 않습니다. 대신 사용 가능한 크레딧에서 사용량이 결제됩니다.',
  'settings.billing.inferenceBudget.remaining': '남음',
  'settings.billing.inferenceBudget.remainingSummary': '{remaining} / {budget} 남음',
  'settings.billing.inferenceBudget.spentThisCycle': '이번 주기에 {amount} 소비',
  'settings.billing.inferenceBudget.cycleEndsOn': '주기 종료 {date}',
  'settings.billing.inferenceBudget.exhaustedDesc':
    '구독에 포함된 사용량을 모두 소진했습니다. 다음 주기를 기다리지 않고 AI를 계속 사용하려면 크레딧을 충전하세요.',
  'settings.billing.inferenceBudget.discountVsPayg': '종량제보다 통화당 {pct}% 저렴합니다.',
  'settings.billing.inferenceBudget.cycleSpend': '주기 지출',
  'settings.billing.inferenceBudget.totalAmount': '{amount} 총계',
  'settings.billing.inferenceBudget.inference': '추론',
  'settings.billing.inferenceBudget.integrations': '통합',
  'settings.billing.inferenceBudget.calls': '{count} 호출',
  'settings.billing.inferenceBudget.dailySpend': '일일 지출',
  'settings.billing.inferenceBudget.dailySpendPoint': '{date}: {amount}',
  'settings.billing.inferenceBudget.topModels': '상위 모델',
  'settings.billing.inferenceBudget.noInferenceUsage': '이번 주기에는 추론 사용량이 없습니다.',
  'settings.billing.inferenceBudget.topIntegrations': '상위 통합',
  'settings.billing.inferenceBudget.noIntegrationUsage': '이번 주기에는 통합을 사용하지 않습니다.',
  'settings.billing.inferenceBudget.tenHourCap': '10시간 한도',
  'settings.billing.inferenceBudget.title': '제목',
  'settings.billing.inferenceBudget.unableToLoad': '사용량 데이터를 로드할 수 없습니다.',
  'settings.billing.inferenceBudget.notAvailable': '해당 사항 없음',
  'settings.billing.payAsYouGo.available': '사용 가능',
  'settings.billing.payAsYouGo.chargeCustomAmount': '여는 중…',
  'settings.billing.payAsYouGo.chooseTopUpDesc': '충전 선택 설명',
  'settings.billing.payAsYouGo.chooseTopUpTitle': '충전 선택 제목',
  'settings.billing.payAsYouGo.creditBalanceDesc': '크레딧 잔액 설명',
  'settings.billing.payAsYouGo.creditBalanceTitle': '크레딧 잔액 제목',
  'settings.billing.payAsYouGo.customAmount': '사용자 지정 금액',
  'settings.billing.payAsYouGo.enterAmount': '금액 입력',
  'settings.billing.payAsYouGo.opening': '여는 중',
  'settings.billing.payAsYouGo.promotionalCredits': '프로모션 크레딧',
  'settings.billing.payAsYouGo.topUpBalance': '충전 잔액',
  'settings.billing.payAsYouGo.topUpCredits': '크레딧 충전',
  'settings.billing.payAsYouGo.unableToLoad': '잔액을 불러올 수 없습니다.',
  'settings.billing.subscription.annual': '연간',
  'settings.billing.subscription.billedAnnually': '연간 청구',
  'settings.billing.subscription.chooseSubtitle': '부제목 선택',
  'settings.billing.subscription.chooseTitle': '제목 선택',
  'settings.billing.subscription.cryptoDesc': '암호화폐 설명',
  'settings.billing.subscription.cryptoQuestion': '암호화폐 질문',
  'settings.billing.subscription.current': '현재',
  'settings.billing.subscription.currentPlan': '현재 플랜',
  'settings.billing.subscription.monthly': '월간',
  'settings.billing.subscription.paymentConfirmed': '결제 확인됨',
  'settings.billing.subscription.perMonth': '월별',
  'settings.billing.subscription.popular': '인기',
  'settings.billing.subscription.save': '{pct}',
  'settings.billing.subscription.upgrade': '업그레이드',
  'settings.billing.subscription.waiting': '대기 중',
  'settings.billing.subscription.waitingPayment': '결제 대기 중',
  'settings.composio.apiKeyDesc': 'Composio API 키가 현재 이 기기에 저장되어 있습니다.',
  'settings.composio.apiKeyExamplePlaceholder': 'ck_live_xxxxxxxxxxxxxxxx',
  'settings.composio.apiKeyLabel': 'Composio API 키',
  'settings.composio.apiKeyStored': 'API 키 저장됨',
  'settings.composio.apiKeyStoredPlaceholder': '••••••••••••••••',
  'settings.composio.clearedToBackend': '백엔드 모드로 전환됨',
  'settings.composio.confirmItem1': 'API 키가 있는 app.composio.dev 계정',
  'settings.composio.confirmItem2': '개인 Composio 계정을 통해 각 통합을 다시 연결해야 합니다',
  'settings.composio.confirmItem3':
    '참고: Composio 트리거(실시간 웹훅)는 아직 Direct 모드에서 실행되지 않습니다 — 동기식 도구 호출만 지원됩니다',
  'settings.composio.confirmNeedItems': '필요한 항목:',
  'settings.composio.confirmSwitch': '이해했습니다. Direct로 전환',
  'settings.composio.confirmTitle': '⚠️ Direct 모드로 전환',
  'settings.composio.confirmWarning':
    '기존 통합(Gmail, Slack, GitHub 등 OpenHuman을 통해 연결된 통합)은 표시되지 않습니다 — OpenHuman 관리형 Composio 테넌트에 있습니다.',
  'settings.composio.intro':
    'Composio는 에이전트가 호출할 수 있는 도구로 250개 이상의 외부 앱을 통합합니다. 이러한 도구 호출이 라우팅되는 방식을 선택하세요.',
  'settings.composio.title': 'Composio',
  'settings.composio.modeDirect': 'Direct(직접 API 키 사용)',
  'settings.composio.modeDirectDesc':
    '호출이 backend.composio.dev로 직접 이동합니다. 독립적이고 오프라인 친화적입니다. 도구 실행은 동기식으로 작동하지만, 실시간 트리거 웹훅은 아직 Direct 모드에서 라우팅되지 않습니다(후속 이슈).',
  'settings.composio.modeManaged': '관리형(OpenHuman이 대신 처리)',
  'settings.composio.modeManagedDesc':
    'OpenHuman이 백엔드를 통해 도구 호출을 프록시합니다(권장). 인증은 중개되며, Composio API 키를 붙여넣을 필요가 없습니다. 웹훅은 완전히 라우팅됩니다.',
  'settings.composio.routingMode': '라우팅 모드',
  'settings.composio.saveErrorNoKey':
    '저장에 실패했습니다. Direct 모드에는 비어 있지 않은 API 키가 필요합니다.',
  'settings.composio.saving': '저장 중…',
  'settings.composio.switching': '전환 중…',
  'settings.companion.title': '데스크톱 컴패니언',
  'settings.companion.session': '세션',
  'settings.companion.activeLabel': '활성',
  'settings.companion.inactiveStatus': '비활성',
  'settings.companion.stopping': '중지 중…',
  'settings.companion.stopSession': '중지 세션',
  'settings.companion.starting': '시작 중…',
  'settings.companion.startSession': '세션 시작',
  'settings.companion.sessionId': '세션 ID',
  'settings.companion.turns': '회전',
  'settings.companion.remaining': '남음',
  'settings.companion.configuration': '구성',
  'settings.companion.hotkey': '단축키',
  'settings.companion.activationMode': '활성화 모드',
  'settings.companion.sessionTtl': '세션 TTL',
  'settings.companion.screenCapture': '화면 캡처',
  'settings.companion.appContext': '앱 컨텍스트',
  'settings.cron.jobs.commandRequired': '셸 작업에는 명령어가 필요합니다',
  'settings.cron.jobs.createJob': '새 예약 작업',
  'settings.cron.jobs.created': '작업이 생성되었습니다',
  'settings.cron.jobs.custom': '사용자 지정',
  'settings.cron.jobs.desc': '설명',
  'settings.cron.jobs.edit': '편집',
  'settings.cron.jobs.editJob': '예약 작업 편집',
  'settings.cron.jobs.empty': '코어 cron 작업을 찾을 수 없습니다.',
  'settings.cron.jobs.errorCreate': 'cron 작업 생성에 실패했습니다: {message}',
  'settings.cron.jobs.errorLoadList': '코어 cron 작업을 불러오지 못했습니다: {message}',
  'settings.cron.jobs.errorLoadRuns': '실행 기록을 불러오지 못했습니다: {message}',
  'settings.cron.jobs.errorRemove': '코어 cron 작업을 삭제하지 못했습니다: {message}',
  'settings.cron.jobs.errorRun': '코어 cron 작업을 실행하지 못했습니다: {message}',
  'settings.cron.jobs.errorToggle': '코어 cron 작업을 업데이트하지 못했습니다: {message}',
  'settings.cron.jobs.errorUpdate': 'cron 작업 업데이트에 실패했습니다: {message}',
  'settings.cron.jobs.formAtLabel': '실행 시각',
  'settings.cron.jobs.formCancel': '취소',
  'settings.cron.jobs.formCommand': '셸 명령어',
  'settings.cron.jobs.formCommandPlaceholder': '예: curl https://example.com/health',
  'settings.cron.jobs.formCreate': '생성',
  'settings.cron.jobs.formCronCustom': '사용자 지정 표현식',
  'settings.cron.jobs.formCronCustomPlaceholder': '예: */30 * * * *',
  'settings.cron.jobs.formCronPreset': '프리셋',
  'settings.cron.jobs.formCronPreview': '실행: {preview}',
  'settings.cron.jobs.formDeleteAfterRun': '첫 실행 후 삭제',
  'settings.cron.jobs.formDelivery': '전달 방식',
  'settings.cron.jobs.formDeliveryNone': '없음 (출력만)',
  'settings.cron.jobs.formDeliveryProactive': '선제적 (푸시 알림)',
  'settings.cron.jobs.formError': '작업 저장에 실패했습니다',
  'settings.cron.jobs.formEveryLabel': '간격 (밀리초)',
  'settings.cron.jobs.formEveryPlaceholder': '예: 3600000',
  'settings.cron.jobs.formJobType': '작업 유형',
  'settings.cron.jobs.formJobTypeAgent': 'Agent (AI 프롬프트)',
  'settings.cron.jobs.formJobTypeShell': '셸 명령어',
  'settings.cron.jobs.formName': '작업 이름',
  'settings.cron.jobs.formNamePlaceholder': '예: daily-report, cleanup-task',
  'settings.cron.jobs.formPrompt': 'Agent 프롬프트',
  'settings.cron.jobs.formPromptPlaceholder': '매 실행마다 에이전트가 무엇을 해야 하나요?',
  'settings.cron.jobs.formPromptRequired': '에이전트 작업에는 프롬프트가 필요합니다',
  'settings.cron.jobs.formSave': '저장',
  'settings.cron.jobs.formSaving': '저장 중…',
  'settings.cron.jobs.formScheduleAt': '일회성 (실행 시각)',
  'settings.cron.jobs.formScheduleCron': '반복 (cron)',
  'settings.cron.jobs.formScheduleEvery': '간격 (N밀리초마다)',
  'settings.cron.jobs.formScheduleRequired': '일정이 필요합니다',
  'settings.cron.jobs.formScheduleType': '일정 유형',
  'settings.cron.jobs.formSessionIsolated': '격리됨 (권장)',
  'settings.cron.jobs.formSessionMain': '메인 세션',
  'settings.cron.jobs.formSessionTarget': '세션 대상',
  'settings.cron.jobs.lastStatus': '마지막 상태',
  'settings.cron.jobs.loading': 'cron 작업 불러오는 중...',
  'settings.cron.jobs.loadingRuns': '실행 기록 불러오는 중',
  'settings.cron.jobs.nextRun': '다음 실행',
  'settings.cron.jobs.pause': '일시 중지',
  'settings.cron.jobs.paused': '일시 중지됨',
  'settings.cron.jobs.recentRuns': '최근 실행',
  'settings.cron.jobs.removing': '제거 중',
  'settings.cron.jobs.resume': '재개',
  'settings.cron.jobs.runningNow': '지금 실행 중',
  'settings.cron.jobs.saving': '저장 중…',
  'settings.cron.jobs.schedule': '일정',
  'settings.cron.jobs.title': '코어 Cron 작업',
  'settings.cron.jobs.updated': '작업이 업데이트되었습니다',
  'settings.cron.jobs.viewRuns': '실행 기록 보기',
  'settings.cron.schedule.every2hours': '2시간마다',
  'settings.cron.schedule.every30min': '30분마다',
  'settings.cron.schedule.every6hours': '6시간마다',
  'settings.cron.schedule.everyHour': '매시간',
  'settings.cron.schedule.onceDaily': '매일 1회 (오전 9시)',
  'settings.localModel.deviceCapability.active': '활성',
  'settings.localModel.deviceCapability.appliedTier': '적용된 티어',
  'settings.localModel.deviceCapability.applying': '적용 중',
  'settings.localModel.deviceCapability.cores': '{count}',
  'settings.localModel.deviceCapability.couldNotLoadPresets': '프리셋을 불러올 수 없습니다',
  'settings.localModel.deviceCapability.cpu': 'CPU',
  'settings.localModel.deviceCapability.customModelIds': '사용자 지정 모델 ID',
  'settings.localModel.deviceCapability.detected': '감지됨',
  'settings.localModel.deviceCapability.disabled': '비활성화됨',
  'settings.localModel.deviceCapability.disabledDesc': '비활성화 설명',
  'settings.localModel.deviceCapability.downloadingModels': '(모델 다운로드 중)',
  'settings.localModel.deviceCapability.downloadingSetupDesc':
    'OllamaSetup 설치 프로그램(~2GB)을 다운로드하고 압축을 푸는 중입니다. 첫 설치 시 시간이 걸릴 수 있습니다.',
  'settings.localModel.deviceCapability.failedToApplyPreset': '프리셋 적용 실패',
  'settings.localModel.deviceCapability.gpu': 'GPU',
  'settings.localModel.deviceCapability.installFailed': 'Ollama 설치 실패',
  'settings.localModel.deviceCapability.installFailedDesc':
    'Ollama를 사용할 수 있기 전에 설치 프로그램이 종료되었습니다. 다시 시도하려면 재시도를 클릭하거나 ollama.com에서 수동으로 설치하세요.',
  'settings.localModel.deviceCapability.installFirst': '먼저 Ollama를 실행하세요.',
  'settings.localModel.deviceCapability.installFirstDesc':
    '로컬 티어는 외부에서 관리되는 Ollama 엔드포인트에 의존합니다. 직접 시작하고 원하는 모델을 가져온 뒤, 런타임에 연결할 수 있을 때까지 "비활성화됨(클라우드 대체)"을 계속 사용하세요.',
  'settings.localModel.deviceCapability.installOllamaFirst':
    '이 티어를 사용하려면 먼저 Ollama를 실행하세요',
  'settings.localModel.deviceCapability.installingOllama': 'Ollama 설치 중',
  'settings.localModel.deviceCapability.loadingDeviceInfo': '기기 정보 불러오는 중',
  'settings.localModel.deviceCapability.localAiDisabled':
    '로컬 AI 비활성화됨 — 클라우드 대체 사용 중.',
  'settings.localModel.deviceCapability.modelTier': '모델 티어',
  'settings.localModel.deviceCapability.needsOllama': 'Ollama 필요',
  'settings.localModel.deviceCapability.notDetected': '감지되지 않음',
  'settings.localModel.deviceCapability.disabledLowercase': '비활성화됨',
  'settings.localModel.deviceCapability.presetDetails':
    '채팅: {chatModel} · 비전: {visionModel} · 대상 RAM: {targetRamGb}GB',
  'settings.localModel.deviceCapability.ram': 'RAM',
  'settings.localModel.deviceCapability.recommended': '권장',
  'settings.localModel.deviceCapability.retryInstall': '다시 시도 중…',
  'settings.localModel.deviceCapability.retrying': '다시 시도 중…',
  'settings.localModel.deviceCapability.starting': '시작 중…',
  'settings.localModel.download.audioPathPlaceholder': '오디오 파일의 절대 경로',
  'settings.localModel.download.capabilityChat': '채팅',
  'settings.localModel.download.capabilityEmbedding': '삽입 중',
  'settings.localModel.download.capabilityAssets': '기능 자산',
  'settings.localModel.download.capabilityStt': 'STT',
  'settings.localModel.download.capabilityTts': 'TTS',
  'settings.localModel.download.capabilityVision': '비전',
  'settings.localModel.download.downloading': '다운로드 중...',
  'settings.localModel.download.embeddingDimensions': '치수: {dimensions}',
  'settings.localModel.download.embeddingModel': '모델: {modelId}',
  'settings.localModel.download.embeddingPlaceholder': '줄마다 하나의 입력 문자열...',
  'settings.localModel.download.embeddingVectors': '벡터: {count}',
  'settings.localModel.download.noThinkMode': '생각 없음 모드',
  'settings.localModel.download.notAvailable': '해당 사항 없음',
  'settings.localModel.download.promptPlaceholder':
    '아무 프롬프트나 입력하고 로컬 모델에서 실행하세요...',
  'settings.localModel.download.quantizationPref': '양자화 기본 설정',
  'settings.localModel.download.runEmbeddingTest': '실행 중...',
  'settings.localModel.download.runPromptTest': '프롬프트 테스트 실행',
  'settings.localModel.download.runSummaryTest': '요약 테스트 실행',
  'settings.localModel.download.runTranscriptionTest': '실행 중...',
  'settings.localModel.download.runTtsTest': '실행 중...',
  'settings.localModel.download.runVisionTest': '실행 중...',
  'settings.localModel.download.running': '실행 중...',
  'settings.localModel.download.runningPrompt': '프롬프트 실행 중',
  'settings.localModel.download.summaryHelper':
    'Rust 코어를 통해 `openhuman.inference_summarize`를 호출합니다.',
  'settings.localModel.download.summarizePlaceholder':
    '로컬 모델로 요약할 텍스트를 붙여넣으세요...',
  'settings.localModel.download.testCustomPrompt': '사용자 지정 프롬프트 테스트',
  'settings.localModel.download.testEmbeddings': '임베딩 테스트',
  'settings.localModel.download.testSummarization': '요약 테스트',
  'settings.localModel.download.testVisionPrompt': '비전 프롬프트 테스트',
  'settings.localModel.download.testVoiceInput': '음성 입력 테스트(STT)',
  'settings.localModel.download.testVoiceOutput': '음성 출력 테스트(TTS)',
  'settings.localModel.download.transcript': '내용:',
  'settings.localModel.download.ttsOutput': '출력: {outputPath}',
  'settings.localModel.download.ttsOutputPlaceholder': '선택적 출력 WAV 경로',
  'settings.localModel.download.ttsPlaceholder': '합성할 텍스트 입력...',
  'settings.localModel.download.ttsVoice': '음성: {voiceId}',
  'settings.localModel.download.visionImagePlaceholder':
    '줄마다 하나의 이미지 참조(data URI, URL 또는 로컬 경로 표시)',
  'settings.localModel.download.visionPromptPlaceholder': '비전 모델용 프롬프트 입력...',
  'settings.localModel.status.allChecksPassed': '모든 확인 통과',
  'settings.localModel.status.artifact': '아티팩트',
  'settings.localModel.status.backend': '백엔드',
  'settings.localModel.status.binary': '바이너리',
  'settings.localModel.status.bootstrapResume': '부트스트랩 / 재개',
  'settings.localModel.status.checking': '확인 중...',
  'settings.localModel.status.checkingOllama': 'Ollama 확인 중',
  'settings.localModel.status.contextBelowMinimumBadge':
    '{contextLength} ctx - {required} min 미만',
  'settings.localModel.status.contextBelowMinimumTitle':
    '거부됨: 컨텍스트 창 {contextLength} 토큰이 메모리 계층에 필요한 {required} 토큰 최소값보다 낮습니다. 자동 잘림으로 인해 재현율이 손상될 수 있습니다.',
  'settings.localModel.status.contextOkBadge': '{contextLength} ctx ✓',
  'settings.localModel.status.contextOkTitle':
    '컨텍스트 창 {contextLength} 토큰은 메모리 계층 최소 {required} 토큰을 충족합니다.',
  'settings.localModel.status.contextUnknownBadge': 'ctx 알 수 없음',
  'settings.localModel.status.contextUnknownTitle':
    '컨텍스트 창을 알 수 없습니다. {required} 토큰 메모리 계층 최소값을 충족하는지 확인할 수 없습니다.',
  'settings.localModel.status.customLocation': '사용자 지정 위치',
  'settings.localModel.status.customLocationDesc': '사용자 지정 위치 설명',
  'settings.localModel.status.diagnosticsHint':
    '"진단 실행"을 클릭하여 Ollama가 실행 중이고 모델이 설치되어 있는지 확인하세요.',
  'settings.localModel.status.downloadingUnknown': '다운로드 중(크기 알 수 없음)',
  'settings.localModel.status.eta': '예상 시간',
  'settings.localModel.status.expectedModels': '예상 모델',
  'settings.localModel.status.expectedChat': '채팅: {model}',
  'settings.localModel.status.expectedEmbedding': '포함: {model}',
  'settings.localModel.status.expectedVision': '비전: {model}',
  'settings.localModel.status.externalProcess': '외부 프로세스',
  'settings.localModel.status.forceRebootstrap': '강제 재부트스트랩',
  'settings.localModel.status.generationTps': '생성 TPS',
  'settings.localModel.status.hideErrorDetails': '오류 세부 정보 숨기기',
  'settings.localModel.status.installManually': '수동 설치',
  'settings.localModel.status.installManuallyFrom': '다음에서 수동 설치',
  'settings.localModel.status.installOllama': '시작 중…',
  'settings.localModel.status.installedModels': '설치된 모델',
  'settings.localModel.status.installing': '설치 중...',
  'settings.localModel.status.installingOllama': 'Ollama 런타임 설치 중...',
  'settings.localModel.status.issues': '문제',
  'settings.localModel.status.issuesFound': '문제 {count}개 발견',
  'settings.localModel.status.lastLatency': '마지막 지연 시간',
  'settings.localModel.status.model': '모델',
  'settings.localModel.status.notAvailable': '해당 사항 없음',
  'settings.localModel.status.notFound': '찾을 수 없음',
  'settings.localModel.status.notRunning': '실행 중이 아님',
  'settings.localModel.status.ollamaBinaryPath': 'Ollama 바이너리 경로',
  'localModel.ollamaServer.helperText': '예: http://192.168.1.5:11434',
  'localModel.ollamaServer.label': 'Ollama 서버 URL',
  'localModel.ollamaServer.modelCount': '모델',
  'localModel.ollamaServer.placeholder': 'http://localhost:11434',
  'localModel.ollamaServer.reachable': '연결 가능',
  'localModel.ollamaServer.resetButton': '기본값으로 재설정',
  'localModel.ollamaServer.saveButton': '저장',
  'localModel.ollamaServer.testButton': '테스트 연결',
  'localModel.ollamaServer.unreachable': '연결할 수 없음',
  'localModel.ollamaServer.validationError': '유효한 http:// 또는 https:// URL이어야 합니다.',
  'settings.localModel.status.ollamaDiagnostics': 'Ollama 진단',
  'settings.localModel.status.ollamaNotInstalled': 'Ollama 런타임을 사용할 수 없음',
  'settings.localModel.status.ollamaNotInstalledDesc':
    'OpenHuman은 이제 Ollama를 외부 추론 런타임으로 취급합니다. 직접 Ollama 서버를 시작하고 원하는 모델을 가져온 뒤 작업 라우팅을 해당 서버로 지정하세요.',
  'settings.localModel.status.progress': '진행률',
  'settings.localModel.status.provider': '제공업체',
  'settings.localModel.status.retryBootstrap': '부트스트랩 다시 시도',
  'settings.localModel.status.runDiagnostics': '확인 중...',
  'settings.localModel.status.running': '실행 중',
  'settings.localModel.status.runningExternalProcess': '외부 프로세스로 실행 중',
  'settings.localModel.status.runtimeStatus': '런타임 상태',
  'settings.localModel.status.server': '서버',
  'settings.localModel.status.setPath': '설정 중...',
  'settings.localModel.status.setting': '설정 중...',
  'settings.localModel.status.showErrorDetails': '오류 세부 정보 숨기기',
  'settings.localModel.status.showInstallErrorDetails': '오류 세부 정보 숨기기',
  'settings.localModel.status.suggestedFixes': '제안된 수정 사항',
  'settings.localModel.status.thenSetPath': '그런 다음 경로 설정',
  'settings.localModel.status.triggering': '트리거 중...',
  'settings.localModel.status.unavailable': '사용할 수 없음',
  'settings.localModel.status.working': '작업 중...',
  'settings.developerMenu.ai.title': 'AI 구성',
  'settings.developerMenu.ai.desc': '클라우드 공급자, 로컬 Ollama 모델 및 워크로드별 라우팅',
  'settings.developerMenu.screenAwareness.title': '화면 인식',
  'settings.developerMenu.screenAwareness.desc': '화면 캡처 권한, 모니터링 정책 및 세션 제어',
  'settings.developerMenu.messagingChannels.title': '메시징 채널',
  'settings.developerMenu.messagingChannels.desc':
    'Telegram/Discord 인증 모드 및 기본 채널 라우팅 구성',
  'settings.developerMenu.tools.title': '도구',
  'settings.developerMenu.tools.desc':
    'OpenHuman이 사용자를 대신하여 사용할 수 있는 기능 활성화 또는 비활성화',
  'settings.developerMenu.agentChat.title': '에이전트 채팅',
  'settings.developerMenu.agentChat.desc': '모델 및 온도 재정의를 통한 테스트 에이전트 대화',
  'settings.developerMenu.devWorkflow.title': '개발 워크플로',
  'settings.developerMenu.devWorkflow.desc':
    'GitHub 이슈를 선택하고 일정에 따라 PR을 여는 자율 에이전트',
  'settings.developerMenu.devWorkflow.panelDesc':
    '내게 할당된 GitHub 이슈를 선택하고 일정에 따라 pull request를 자동으로 여는 자율 개발자 에이전트를 구성하세요.',
  'settings.developerMenu.skillsRunner.title': '스킬 실행기',
  'settings.developerMenu.skillsRunner.desc':
    '번들 스킬을 즉석에서 실행합니다. 입력을 채우고 백그라운드 자율 실행을 시작하세요.',
  'settings.developerMenu.skillsRunner.panelDesc':
    '번들 스킬을 선택하고 선언된 입력을 채운 뒤, 기다릴 필요 없는 백그라운드 실행을 시작하세요. cron 예약 반복 작업이 필요하면 대신 개발 워크플로를 사용하세요.',
  'settings.skillsRunner.skill': '스킬',
  'settings.skillsRunner.selectSkill': '스킬 선택…',
  'settings.skillsRunner.loadingSkills': '스킬 불러오는 중…',
  'settings.skillsRunner.loadingDescription': '스킬 입력 불러오는 중…',
  'settings.skillsRunner.noInputs': '이 스킬은 입력을 선언하지 않습니다.',
  'settings.skillsRunner.placeholder.required': '필수',
  'settings.skillsRunner.runNow': '지금 실행',
  'settings.skillsRunner.starting': '시작 중…',
  'settings.skillsRunner.started': '시작됨 — 실행 ID:',
  'settings.skillsRunner.logPath': '로그:',
  'settings.skillsRunner.error.listSkills': '스킬을 불러오지 못했습니다:',
  'settings.skillsRunner.error.describe': '입력을 불러오지 못했습니다:',
  'settings.skillsRunner.error.missingRequired': '필수 입력 누락:',
  'settings.skillsRunner.error.run': '실행을 시작하지 못했습니다:',
  'settings.skillsRunner.error.preflightGate': '사전 점검 게이트 실패',
  'settings.skillsRunner.error.runtimeUnavailable': '런타임을 사용할 수 없음',
  'settings.skillsRunner.error.runtimeUnavailableDefault': '사용할 수 없음',
  'settings.skillsRunner.schedule.heading': '일정(반복)',
  'settings.skillsRunner.schedule.help':
    '이 스킬과 입력을 반복 cron 작업으로 저장합니다. 에이전트는 각 tick마다 run_workflow을 호출합니다.',
  'settings.skillsRunner.schedule.frequency': '빈도',
  'settings.skillsRunner.schedule.every30min': '30분마다',
  'settings.skillsRunner.schedule.everyHour': '매시간',
  'settings.skillsRunner.schedule.every2hours': '2시간마다',
  'settings.skillsRunner.schedule.every6hours': '6시간마다',
  'settings.skillsRunner.schedule.onceDaily': '하루 한 번(9:00)',
  'settings.skillsRunner.schedule.save': '일정 저장',
  'settings.skillsRunner.schedule.saving': '저장 중…',
  'settings.skillsRunner.schedule.saved': '일정이 저장되었습니다.',
  'settings.skillsRunner.schedule.error': '일정 저장 실패:',
  'settings.skillsRunner.schedule.loadingJobs': '기존 일정 불러오는 중…',
  'settings.skillsRunner.schedule.noJobs': '이 스킬에 저장된 일정이 아직 없습니다.',
  'settings.skillsRunner.schedule.existing': '이 스킬의 예약된 작업:',
  'settings.skillsRunner.schedule.inputsLabel': '입력',
  'settings.skillsRunner.schedule.inputsNone': '입력 없음',
  'settings.skillsRunner.schedule.runNow': '실행',
  'settings.skillsRunner.schedule.remove': '제거',
  'settings.skillsRunner.scheduleEnabled': '활성화됨',
  'settings.skillsRunner.scheduleDisabled': '일시 중지됨',
  'settings.skillsRunner.scheduleToggleAria': '일정 활성화 전환',
  'settings.skillsRunner.schedule.history': '기록',
  'settings.skillsRunner.schedule.historyLoading': '기록 불러오는 중…',
  'settings.skillsRunner.schedule.historyEmpty': '이 일정의 실행 기록이 아직 없습니다.',
  'settings.skillsRunner.schedule.historyNoOutput': '캡처된 출력이 없습니다.',
  'settings.skillsRunner.schedule.active': '활성',
  'settings.skillsRunner.schedule.lastRunLabel': '마지막:',
  'settings.skillsRunner.recentRuns.headingForSkill': '이 스킬의 최근 실행',
  'settings.skillsRunner.recentRuns.headingAll': '최근 스킬 실행(전체)',
  'settings.skillsRunner.recentRuns.refresh': '새로고침',
  'settings.skillsRunner.recentRuns.loading': '최근 실행 불러오는 중…',
  'settings.skillsRunner.recentRuns.empty': '최근 실행이 없습니다.',
  'settings.skillsRunner.viewer.loading': '로그 불러오는 중…',
  'settings.skillsRunner.viewer.tailing': '실시간 tail',
  'settings.skillsRunner.viewer.fetching': '가져오는 중',
  'settings.skillsRunner.viewer.error': '로그 읽기 실패:',
  'settings.skillsRunner.repoPicker.loading': '리포지토리 불러오는 중…',
  'settings.skillsRunner.repoPicker.select': '리포지토리 선택…',
  'settings.skillsRunner.repoPicker.empty':
    '반환된 리포지토리가 없습니다. 이 목록을 채우려면 Composio를 통해 GitHub을 연결하세요.',
  'settings.skillsRunner.repoPicker.notConnected':
    'GitHub이 Composio를 통해 연결되어 있지 않습니다. 먼저 스킬 → Composio에서 연결하세요.',
  'settings.skillsRunner.repoPicker.privateTag': '(비공개)',
  'settings.skillsRunner.branchPicker.needRepo': '먼저 리포지토리를 선택하세요…',
  'settings.skillsRunner.branchPicker.loading': '브랜치 불러오는 중…',
  'settings.skillsRunner.branchPicker.select': '브랜치 선택…',
  'settings.devWorkflow.githubRepository': 'GitHub 리포지토리',
  'settings.devWorkflow.loadingRepositories': '리포지토리 불러오는 중...',
  'settings.devWorkflow.selectRepository': '리포지토리 선택',
  'settings.devWorkflow.privateTag': '(비공개)',
  'settings.devWorkflow.detectingForkInfo': '포크 정보 감지 중...',
  'settings.devWorkflow.forkDetected': '포크 감지됨',
  'settings.devWorkflow.upstream': '업스트림:',
  'settings.devWorkflow.forkPrNote': 'PR은 업스트림 리포지토리를 대상으로 열립니다.',
  'settings.devWorkflow.notForkNote':
    '포크가 아닙니다. PR은 이 리포지토리를 직접 대상으로 열립니다.',
  'settings.devWorkflow.targetBranch': '대상 브랜치',
  'settings.devWorkflow.targetBranchNote': 'PR은 이 브랜치를 대상으로 열립니다',
  'settings.devWorkflow.loadingBranches': '브랜치 불러오는 중...',
  'settings.devWorkflow.runFrequency': '실행 빈도',
  'settings.devWorkflow.runFrequencyNote': '에이전트가 이슈를 확인하고 PR을 여는 빈도입니다.',
  'settings.devWorkflow.updateConfiguration': '구성 업데이트',
  'settings.devWorkflow.saveConfiguration': '구성 저장',
  'settings.devWorkflow.remove': '제거',
  'settings.devWorkflow.saved': '저장됨',
  'settings.devWorkflow.activeConfiguration': '활성 구성',
  'settings.devWorkflow.activeConfigRepository': '리포지토리:',
  'settings.devWorkflow.activeConfigUpstream': '업스트림:',
  'settings.devWorkflow.activeConfigTargetBranch': '대상 브랜치:',
  'settings.devWorkflow.activeConfigSchedule': '일정:',
  'settings.devWorkflow.enabled': '활성화됨',
  'settings.devWorkflow.paused': '일시 중지됨',
  'settings.devWorkflow.nextRun': '다음 실행',
  'settings.devWorkflow.lastRun': '마지막 실행',
  'settings.devWorkflow.runNow': '지금 실행',
  'settings.devWorkflow.running': '실행 중…',
  'settings.devWorkflow.recentRuns': '최근 실행',
  'settings.devWorkflow.cronSaveError': '구성을 저장하지 못했습니다',
  'settings.devWorkflow.lastOutput': '마지막 출력',
  'settings.devWorkflow.noOutput': '캡처된 출력이 없습니다',
  'settings.devWorkflow.runningStatus':
    '에이전트가 실행 중입니다 — 이슈를 선택하고 수정 작업을 진행하는 중...',
  'settings.devWorkflow.errorNotConnected':
    'GitHub이 연결되어 있지 않습니다. 먼저 설정 > 고급 > Composio에서 GitHub을 연결하세요.',
  'settings.devWorkflow.errorToolNotEnabled':
    '이 백엔드에서 GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER 도구가 활성화되어 있지 않습니다. 관리자에게 Composio 통합에서 활성화해 달라고 요청하세요(backend#842).',
  'settings.devWorkflow.errorNotAuthenticated': '인증되지 않았습니다. 먼저 로그인하세요.',
  'settings.devWorkflow.errorNoRepositories': '이 GitHub 계정의 리포지토리를 찾을 수 없습니다.',
  'settings.devWorkflow.schedule.every30min': '30분마다',
  'settings.devWorkflow.schedule.everyHour': '매시간',
  'settings.devWorkflow.schedule.every2hours': '2시간마다',
  'settings.devWorkflow.schedule.every6hours': '6시간마다',
  'settings.devWorkflow.schedule.onceDaily': '하루 한 번(오전 9시)',
  'settings.developerMenu.tasks.title': '작업',
  'settings.developerMenu.tasks.desc':
    '작업 보드를 둘러보고 관리하세요 — 내 할 일과 대화 전반에서 에이전트가 만든 보드를 함께 확인합니다.',
  'settings.developerMenu.cronJobs.title': '크론 작업',
  'settings.developerMenu.cronJobs.desc': '예약 보기 및 구성 런타임 기술용 작업',
  'settings.developerMenu.localModelDebug.title': '로컬 모델 디버그',
  'settings.developerMenu.localModelDebug.desc': 'Ollama 구성, 자산 다운로드, 모델 테스트 및 진단',
  'settings.developerMenu.webhooks.title': '웹훅',
  'settings.developerMenu.webhooks.desc': '런타임 웹훅 등록 및 캡처된 요청 로그 검사',
  'settings.developerMenu.eventLog.title': '이벤트 로그',
  'settings.developerMenu.eventLog.desc':
    '모든 에이전트, 도구, 시스템 이벤트를 색상으로 구분해 실시간으로 표시합니다.',
  'settings.developerMenu.eventLog.allTypes': '모든 유형',
  'settings.developerMenu.eventLog.filterAgent': '필터...',
  'settings.developerMenu.eventLog.download': '다운로드',
  'settings.developerMenu.eventLog.events': '이벤트',
  'settings.developerMenu.eventLog.live': '실시간',
  'settings.developerMenu.eventLog.disconnected': '연결 끊김',
  'settings.developerMenu.eventLog.waiting': '이벤트 대기 중...',
  'settings.developerMenu.eventLog.notConnected': '코어에 연결되지 않음',
  'settings.developerMenu.eventLog.jumpToLatest': '최신으로 이동',
  'settings.developerMenu.eventLog.badge.tool': 'TOOL',
  'settings.developerMenu.eventLog.badge.agent': 'AGENT',
  'settings.developerMenu.eventLog.badge.info': 'INFO',
  'settings.developerMenu.eventLog.badge.mem': 'MEM',
  'settings.developerMenu.eventLog.badge.chan': 'CHAN',
  'settings.developerMenu.eventLog.badge.cron': 'CRON',
  'settings.developerMenu.eventLog.badge.hook': 'HOOK',
  'settings.developerMenu.eventLog.badge.warn': 'WARN',
  'settings.developerMenu.eventLog.badge.skill': 'SKILL',
  'settings.developerMenu.eventLog.badge.comp': 'COMP',
  'settings.developerMenu.eventLog.badge.mcp': 'MCP',
  'settings.developerMenu.intelligence.title': '인텔리전스',
  'settings.developerMenu.intelligence.desc': '메모리 작업 공간, 잠재의식 엔진, 드림 및 설정',
  'settings.developerMenu.notificationRouting.title': '알림 라우팅',
  'settings.developerMenu.notificationRouting.desc':
    '통합 경고에 대한 AI 중요도 점수 및 오케스트레이터 에스컬레이션',
  'settings.developerMenu.composeioTriggers.title': 'ComposeIO 트리거',
  'settings.developerMenu.composeioTriggers.desc': 'ComposeIO 트리거 기록 및 아카이브 보기',
  'settings.developerMenu.composioRouting.title': 'Composio 라우팅(직접 모드)',
  'settings.developerMenu.composioRouting.desc':
    '자신만의 Composio API 키를 가져와 호출을 backend.composio.dev로 직접 라우팅하세요.',
  'settings.developerMenu.integrationTriggers.title': '통합 트리거',
  'settings.developerMenu.integrationTriggers.desc':
    'Composio 통합 트리거에 대한 AI 분류 설정 구성',
  'settings.developerMenu.mcpServer.title': 'MCP 서버',
  'settings.developerMenu.mcpServer.desc': 'OpenHuman에 연결하도록 외부 MCP 클라이언트 구성',
  'settings.developerMenu.autonomy.title': '에이전트 자율성',
  'settings.developerMenu.autonomy.desc': '도구 작업 속도 제한 및 안전 임계값',
  'settings.developerMenu.autocomplete.title': '자동 완성',
  'settings.developerMenu.autocomplete.desc': 'AI 인라인 자동 완성 설정 및 디버그 패널',
  'settings.developerMenu.voiceDebug.title': '음성 (디버그)',
  'settings.developerMenu.voiceDebug.desc': '음성 받아쓰기 런타임 상태 및 디버그 설정',
  'settings.mcpServer.title': 'MCP 서버',
  'settings.mcpServer.toolsSectionTitle': '사용 가능한 도구',
  'settings.mcpServer.toolsSectionDesc':
    '도구 노출 openhuman-core mcp 실행 시 MCP stdio 서버를 통해',
  'settings.mcpServer.configSectionTitle': '클라이언트 구성',
  'settings.mcpServer.configSectionDesc':
    '올바른 구성 조각을 생성하려면 MCP 클라이언트를 선택하세요.',
  'settings.mcpServer.copySnippet': '클립보드에 복사',
  'settings.mcpServer.copied': '복사되었습니다!',
  'settings.mcpServer.openConfigFile': '구성 파일 열기',
  'settings.mcpServer.binaryPathNotFound':
    'OpenHuman 바이너리를 찾을 수 없습니다. 소스에서 실행하는 경우 다음을 사용하여 빌드하세요: cargo build --bin openhuman-core',
  'settings.mcpServer.openConfigError': '구성 파일을 열지 못했습니다.',
  'settings.mcpServer.clientClaudeDesktop': 'Claude Desktop',
  'settings.mcpServer.clientCursor': '커서',
  'settings.mcpServer.clientCodex': 'Codex',
  'settings.mcpServer.clientZed': 'Zed',
  'settings.mcpServer.configFilePath': '구성 파일',
  'settings.mcpServer.clientSelectorAriaLabel': 'MCP 클라이언트 선택기',
  'settings.appearance.menuDesc': '밝은 색, 어두운 색 선택 또는 시스템 테마와 일치',
  'settings.agentAccess.title': '에이전트 OS 접근',
  'settings.agentAccess.menuDesc':
    '에이전트가 읽고 쓸 수 있는 위치와 shell 사용 가능 여부를 제어합니다.',
  'settings.agentAccess.loadError': '접근 설정을 불러오지 못했습니다',
  'settings.agentAccess.saveError': '접근 설정을 저장하지 못했습니다',
  'settings.agentAccess.saved': '저장됨 — 다음 메시지부터 적용됩니다.',
  'settings.agentAccess.desktopOnly': '접근 설정은 데스크톱 앱에서만 사용할 수 있습니다.',
  'settings.agentAccess.loading': '불러오는 중…',
  'settings.agentAccess.accessMode': '접근 모드',
  'settings.agentAccess.tier.readonly.title': '읽기 전용',
  'settings.agentAccess.tier.readonly.desc':
    '탐색을 위해 파일을 읽고 읽기 전용 명령을 실행하지만, 쓰기, 편집 또는 상태를 변경하는 작업은 절대 실행하지 않습니다.',
  'settings.agentAccess.tier.supervised.title': '편집 전 확인',
  'settings.agentAccess.tier.supervised.desc':
    '새 파일은 자유롭게 만들 수 있지만 기존 파일 편집, 명령 실행, 네트워크 접근 또는 설치 전에는 승인을 요청합니다.',
  'settings.agentAccess.tier.full.title': '전체 접근',
  'settings.agentAccess.tier.full.desc':
    '사용자 계정의 전체 접근 권한으로 명령을 실행합니다. 자격 증명 및 시스템 저장소를 제외하고 허용된 모든 위치를 읽고 쓸 수 있습니다. 파괴적 명령, 네트워크 접근, 설치는 계속 승인을 요청합니다.',
  'settings.agentAccess.defaultTag': '(기본값)',
  'settings.agentAccess.fullWarning':
    '⚠ 전체 접근은 사용자 계정의 전체 접근 권한으로 명령을 실행하며 샌드박스가 적용되지 않습니다. 이 컴퓨터에서 에이전트를 신뢰할 때만 활성화하세요. 자격 증명 및 시스템 디렉터리는 계속 차단되며, 파괴적 작업, 네트워크 작업, 설치 작업은 계속 승인을 요청합니다.',
  'settings.agentAccess.confine.label': '작업공간으로 제한',
  'settings.agentAccess.confine.desc':
    '선택한 접근 모드와 관계없이 에이전트를 작업공간 디렉터리와 허용된 폴더로 제한합니다. 끄면 항상 차단되는 자격 증명 및 시스템 디렉터리를 제외하고 사용자가 접근할 수 있는 모든 위치에 접근할 수 있습니다.',
  'settings.agentAccess.requireTaskPlanApproval.label': '작업 계획 승인 필요',
  'settings.agentAccess.requireTaskPlanApproval.desc':
    '할당된 에이전트가 에이전트가 작성한 작업 브리프를 실행하기 전에 일시 중지합니다.',
  'settings.agentAccess.tinyplaceAutopilot.title': '자율 tiny.place 에이전트',
  'settings.agentAccess.tinyplaceAutopilot.desc':
    'OpenHuman이 tiny.place에서 스스로 행동하게 하세요: 일정에 따라 가치 있는 일을 찾고(열린 현상금 우선) 자신의 능력에 맞는 작업을 수행하며 당신의 신원으로 행동합니다. 감독 없이 작동하며 비용을 지출할 수 있으니 테스트 중에는 devnet을 사용하세요. 기본값은 꺼짐입니다.',
  'settings.agentAccess.tinyplaceAutopilot.label': '자동 실행',
  'settings.agentAccess.timeout.label': '작업 제한 시간',
  'settings.agentAccess.timeout.desc':
    '단일 도구나 작업이 취소되기 전까지 실행될 수 있는 시간입니다. 대형 로컬 모델이 응답을 끝내기 전에 중단되는 경우 이 값을 늘리세요.',
  'settings.agentAccess.timeout.unit': '초',
  'settings.agentAccess.timeout.invalid': '허용된 범위 내에서 정수 초를 입력하세요',
  'settings.agentAccess.timeout.envOverride':
    'OPENHUMAN_TOOL_TIMEOUT_SECS 환경 변수가 이 설정을 재정의하고 있으므로, 해당 변수를 해제하기 전까지 여기서의 변경 사항은 적용되지 않습니다.',
  'settings.agentAccess.grantedFolders': '허용된 폴더',
  'settings.agentAccess.alwaysAllow': '항상 허용된 도구',
  'settings.agentAccess.alwaysAllowDesc':
    '채팅에서 "항상 허용"으로 표시한 도구는 확인 없이 실행됩니다. 다시 확인을 받으려면 항목을 제거하세요.',
  'settings.agentAccess.alwaysAllowNone': '아직 항상 허용된 도구가 없습니다.',
  'settings.agentAccess.grantedDesc':
    '작업공간 외에 에이전트가 읽고 쓸 수 있는 폴더입니다. 자격 증명 저장소(~/.ssh, ~/.gnupg, ~/.aws, keychains)와 시스템 디렉터리(/etc, /System, C:\\Windows, …)는 허용된 폴더 안에 있어도 항상 차단됩니다.',
  'settings.agentAccess.noneGranted': '허용된 폴더가 없습니다.',
  'settings.agentAccess.readWrite': '읽기 + 쓰기',
  'settings.agentAccess.readOnly': '읽기 전용',
  'settings.agentAccess.remove': '제거',
  'settings.agentAccess.pathPlaceholder': '폴더의 절대 경로',
  'settings.agentAccess.accessLevelLabel': '접근 수준',
  'settings.agentAccess.add': '추가',
  'settings.agentAccess.saving': '저장 중…',
  'settings.agentAccess.changesApply': '변경 사항은 다음 메시지부터 적용됩니다.',
  'settings.agentAccess.directories': '디렉터리',
  'settings.agentAccess.actionSandbox': '액션 샌드박스',
  'settings.agentAccess.readWriteAccess': '읽기 + 쓰기',
  'settings.agentAccess.actionSandboxDesc': '셸, 파일 및 git 도구의 기본 작업 디렉터리.',
  'settings.agentAccess.actionDir.edit': '편집',
  'settings.agentAccess.actionDir.save': '저장',
  'settings.agentAccess.actionDir.cancel': '취소',
  'settings.agentAccess.actionDir.placeholder': '절대 경로, 예: /Users/you/Projects',
  'settings.agentAccess.actionDir.envLocked':
    'OPENHUMAN_ACTION_DIR로 설정됨. 재정의하려면 환경 변수를 변경하세요.',
  'settings.agentAccess.actionDir.saved': '작업 디렉터리가 업데이트되었습니다.',
  'settings.agentAccess.internalState': '내부 상태',
  'settings.agentAccess.agentBlocked': '에이전트 차단됨',
  'settings.agentAccess.internalStateDesc':
    '메모리 데이터베이스, 세션, 토큰 및 기타 핵심 데이터. 에이전트 도구에서 접근할 수 없습니다.',
  'settings.agentAccess.actionDirInputLabel': '작업 샌드박스 경로',
  'settings.agentAccess.actionDirSave': '저장',
  'settings.agentAccess.actionDirSaving': '저장 중…',
  'settings.agentAccess.actionDirSaved': '작업 샌드박스가 업데이트되었습니다.',
  'settings.agentAccess.actionDirEmptyError': '경로는 비워둘 수 없습니다.',
  'settings.agentAccess.actionDirSaveError': '작업 샌드박스를 업데이트할 수 없습니다.',
  'settings.agentAccess.actionDirEnvOverrideError':
    'OPENHUMAN_ACTION_DIR이 설정되어 있습니다 — 설정에서 편집하려면 환경 변수를 해제하세요.',
  'settings.agentAccess.actionDirEnvOverrideNote':
    'OPENHUMAN_ACTION_DIR에 의해 재정의됨 — 설정에서 관리하려면 환경 변수를 해제하세요.',
  'settings.agentAccess.approvalHistory': '승인 이력',
  'settings.agentAccess.approvalHistoryDesc': '에이전트가 요청한 이전 승인/거부 결정을 검토합니다.',
  'settings.agentAccess.viewApprovalHistory': '승인 기록 보기',

  // ── 권한 패널 ─────────────────────────────────────────────────────
  'settings.permissions.title': '권한',
  'settings.permissions.menuDesc':
    '어시스턴트가 무엇을 할 수 있고 어디서 작업할 수 있는지 선택하세요.',
  'settings.permissions.accessMode': '어시스턴트가 무엇을 할 수 있나요?',
  'settings.permissions.accessModeDesc':
    '어시스턴트가 컴퓨터에서 작업을 수행할 때 얼마나 많은 자유를 허용할지 선택하세요.',
  'settings.permissions.preset.readonly.title': '보기만 가능',
  'settings.permissions.preset.readonly.desc':
    '어시스턴트는 파일을 읽고 탐색할 수 있지만, 상태를 변경하는 쓰기, 편집 또는 실행은 절대 할 수 없습니다.',
  'settings.permissions.preset.supervised.title': '먼저 물어보기',
  'settings.permissions.preset.supervised.desc':
    '새 파일을 자유롭게 만들 수 있지만, 편집, 명령 실행 또는 네트워크 접근 전에 항상 승인을 요청합니다.',
  'settings.permissions.preset.full.title': '전체 제어',
  'settings.permissions.preset.full.desc':
    '전체 계정 접근 권한으로 실행됩니다. 파괴적 명령, 네트워크 접근 및 설치는 여전히 승인이 필요합니다.',
  'settings.permissions.folders': '어디서 작업할 수 있나요?',
  'settings.permissions.foldersDesc':
    '어시스턴트가 읽고 쓰는 기본 폴더입니다. 고급 설정에서 추가 폴더를 추가할 수 있습니다.',

  'settings.meetings.title': '회의',
  'settings.meetings.menuDesc': '회의 어시스턴트 자동 참여, 요약 및 대화록',
  'settings.meetings.desktopOnly': '회의 설정은 데스크톱에서만 사용할 수 있습니다.',
  'settings.meetings.loading': '불러오는 중…',
  'settings.meetings.loadError': '회의 설정을 불러오지 못했습니다.',
  'settings.meetings.saveError': '회의 설정을 저장하지 못했습니다.',
  'settings.meetings.saved': '저장됨',
  'settings.meetings.saving': '저장 중…',
  'settings.meetings.autoJoin.title': '자동 참여 정책',
  'settings.meetings.autoJoin.desc': '캘린더 일정에 Google Meet 링크가 있을 때',
  'settings.meetings.autoJoin.askEachTime': '매번 묻기',
  'settings.meetings.autoJoin.always': '항상 참여',
  'settings.meetings.autoJoin.never': '참여하지 않음',
  'settings.meetings.autoSummarize.title': '통화 후 요약',
  'settings.meetings.autoSummarize.desc': '통화가 끝난 후 요약 생성',
  'settings.meetings.autoSummarize.ask': '통화 후 묻기',
  'settings.meetings.autoSummarize.always': '항상 요약',
  'settings.meetings.autoSummarize.never': '요약하지 않음',
  'settings.meetings.listenOnly': '듣기 전용 모드',
  'settings.meetings.listenOnlyDesc': '마이크를 음소거하고 참여',
  'settings.meetings.ingestTranscripts': '백엔드 대화록 수집',
  'settings.meetings.ingestTranscriptsDesc': '회의 대화록을 메모리에 저장',
  'settings.sandbox.title': '샌드박스 실행',
  'settings.sandbox.menuDesc': '에이전트 도구 격리를 위한 샌드박스 백엔드를 구성합니다.',
  'settings.sandbox.loading': '로딩 중…',
  'settings.sandbox.desktopOnly': '샌드박스 설정은 데스크톱 앱에서만 사용할 수 있습니다.',
  'settings.sandbox.loadError': '샌드박스 설정을 불러오지 못했습니다.',
  'settings.sandbox.saveError': '샌드박스 설정을 저장하지 못했습니다.',
  'settings.sandbox.saved': '저장됨 — 새 에이전트 세션에 적용됩니다.',
  'settings.sandbox.saving': '저장 중…',
  'settings.sandbox.status': '상태',
  'settings.sandbox.dockerStatus': 'Docker',
  'settings.sandbox.available': '사용 가능',
  'settings.sandbox.unavailable': '사용 불가',
  'settings.sandbox.detectedBackend': 'OS 백엔드',
  'settings.sandbox.enableLabel': '샌드박스 실행 사용',
  'settings.sandbox.enableDesc': '격리된 샌드박스 환경에서 에이전트 도구를 실행합니다.',
  'settings.sandbox.backendLabel': '백엔드',
  'settings.sandbox.backendDesc': '샌드박스 실행에 사용할 격리 백엔드를 선택합니다.',
  'settings.sandbox.backend.auto': '자동 (최적 백엔드 자동 감지)',
  'settings.sandbox.backend.docker': 'Docker',
  'settings.sandbox.backend.landlock': 'Landlock (Linux)',
  'settings.sandbox.backend.firejail': 'Firejail (Linux)',
  'settings.sandbox.backend.bubblewrap': 'Bubblewrap (Linux)',
  'settings.sandbox.backend.none': '없음 (샌드박스 사용 안 함)',
  'settings.sandbox.dockerSettings': 'Docker 설정',
  'settings.sandbox.dockerImage': '이미지',
  'settings.sandbox.dockerImagePlaceholder': 'alpine:3.20',
  'settings.sandbox.memoryLimit': '메모리 제한',
  'settings.sandbox.memoryUnit': 'MB',
  'settings.sandbox.cpuLimit': 'CPU 제한',
  'settings.sandbox.cpuUnit': '코어',
  'settings.sandbox.envPassthrough': '환경 변수 전달',
  'settings.sandbox.envPassthroughDesc': '샌드박스로 전달되는 환경 변수입니다.',
  'settings.sandbox.noEnvVars': '구성된 환경 변수가 없습니다.',
  'settings.approvalHistory.title': '승인 이력',
  'settings.approvalHistory.subtitle': '최근 도구 승인 결정, 최신 순.',
  'settings.approvalHistory.refresh': 'Refresh',
  'settings.approvalHistory.loading': '승인 이력 로드 중…',
  'settings.approvalHistory.retry': 'Retry',
  'settings.approvalHistory.emptyState': '아직 기록된 승인 결정이 없습니다.',
  'settings.approvalHistory.errorGeneric': '승인 이력을 로드할 수 없습니다. 다시 시도하세요.',
  'settings.approvalHistory.decidedAt': '{date}에 결정됨',
  'settings.approvalHistory.decision.approveOnce': '1회 승인',
  'settings.approvalHistory.decision.approveAlways': '항상 허용',
  'settings.approvalHistory.decision.deny': 'Denied',
  'settings.theme.variantLight': '밝게',
  'settings.theme.variantDark': '어둡게',
  'settings.theme.variantAuto': '자동',
  'settings.theme.variantAria': '테마 변형',
  'settings.theme.backdropHeading': '배경',
  'settings.theme.backdrop.mesh': '메시',
  'settings.theme.backdrop.solid': '단색',
  'settings.theme.backdrop.image': '이미지',
  'settings.theme.backdropImageUrl': '배경 이미지 URL',
  'settings.theme.backdropDots': '배경 점 표시',
  'settings.theme.backdropHint':
    '메시는 애니메이션 그라데이션을 표시하고, 단색은 평면 배경을 사용하며, 이미지는 직접 지정한 배경을 사용합니다.',
  'settings.theme.autoForkHint':
    '프리셋을 편집하면 변경 사항이 자동으로 새 사용자 지정 테마로 저장됩니다.',
  'settings.theme.title': '테마 스튜디오',
  'settings.theme.menuDesc': '색상과 글꼴을 완전히 사용자 지정하거나 사전 설정 테마를 선택하세요.',
  'settings.theme.presetsHeading': '테마',
  'settings.theme.builtInBadge': '사전 설정',
  'settings.theme.customBadge': '사용자 지정',
  'settings.theme.customizeHint':
    '기본 제공 사전 설정은 읽기 전용입니다. 색상과 글꼴을 편집하려면 이 테마를 복제하세요.',
  'settings.theme.duplicate': '복제 후 사용자 지정',
  'settings.theme.copyName': '{name} (사용자 지정)',
  'settings.theme.importedName': '가져온 테마',
  'settings.theme.contrastWarn':
    '텍스트와 배경 사이의 대비가 낮습니다 — 이 테마는 읽기 어려울 수 있습니다.',
  'settings.theme.group.surfaces': '표면',
  'settings.theme.group.text': '텍스트',
  'settings.theme.group.borders': '테두리',
  'settings.theme.group.accents': '강조 색상',
  'settings.theme.showShades': '모든 강조 음영 표시',
  'settings.theme.hideShades': '모든 강조 음영 숨기기',
  'settings.theme.fontsHeading': '글꼴',
  'settings.theme.fontRole.title': '제목',
  'settings.theme.fontRole.heading': '헤딩',
  'settings.theme.fontRole.body': '본문',
  'settings.theme.fontRole.mono': '고정폭',
  'settings.theme.fontRole.serif': '세리프',
  'settings.theme.fontCurrent': '현재',
  'settings.theme.actions': '테마 관리',
  'settings.theme.reset': '재정의 초기화',
  'settings.theme.delete': '테마 삭제',
  'settings.theme.export': 'JSON 복사',
  'settings.theme.copied': '복사됨!',
  'settings.theme.import': '테마 가져오기',
  'settings.theme.importHint': '내보낸 테마 JSON을 붙여넣어 사용자 지정 테마로 추가하세요.',
  'settings.theme.importApply': '가져오기',
  'settings.theme.importError': '해당 테마 JSON을 구문 분석할 수 없습니다.',
  'settings.appearance.title': '외관',
  'settings.appearance.themeHeading': '테마',
  'settings.appearance.themeAria': '테마',
  'settings.appearance.modeLight': '라이트',
  'settings.appearance.modeLightDesc': '밝은 표면, 어두운 텍스트.',
  'settings.appearance.modeDark': '다크',
  'settings.appearance.modeDarkDesc': '어두운 표면, 해가 진 후 눈에 더 편안합니다.',
  'settings.appearance.modeSystem': '시스템과 일치',
  'settings.appearance.modeSystemDesc': 'OS 외관 설정을 따릅니다.',
  'settings.appearance.helperText':
    '다크 모드는 전체 앱 — 채팅, 설정, 패널 — 을 어두운 팔레트로 전환합니다. "시스템과 일치"는 OS 외관을 따르며 실시간으로 업데이트됩니다.',
  'settings.appearance.fontSizeHeading': '글꼴 크기',
  'settings.appearance.fontSizeAria': '글꼴 크기',
  'settings.appearance.fontSizeSmall': '작게',
  'settings.appearance.fontSizeSmallDesc': '간결한 텍스트 — 화면에 더 많이 표시.',
  'settings.appearance.fontSizeMedium': '보통',
  'settings.appearance.fontSizeMediumDesc': '기본의 균형 잡힌 크기.',
  'settings.appearance.fontSizeLarge': '크게',
  'settings.appearance.fontSizeLargeDesc': '읽기 쉬운 더 큰 텍스트.',
  'settings.appearance.fontSizeXLarge': '아주 크게',
  'settings.appearance.fontSizeXLargeDesc': '최대 가독성을 위한 가장 큰 텍스트.',
  'settings.appearance.fontSizeHelperText':
    '시스템 글꼴 설정과 관계없이 앱 전체 — 채팅, 설정, 패널 — 의 텍스트 크기를 조정합니다.',
  'settings.appearance.tabBarHeading': '하단 탭 표시줄',
  'settings.appearance.tabBarAlwaysShowLabels': '항상 레이블 표시',
  'settings.appearance.tabBarAlwaysShowLabelsDesc':
    '끄면 레이블은 마우스를 가져가거나 활성 탭에 대해서만 표시됩니다.',
  'settings.appearance.chatHeading': '채팅',
  'settings.appearance.assistantTextMode': '어시스턴트 답변을 텍스트로 표시',
  'settings.appearance.hideAgentInsights': '에이전트 사고 숨기기',
  'settings.appearance.hideAgentInsightsDesc':
    '채팅에서 에이전트의 단계별 실시간 타임라인을 접습니다. 깜박이는 "처리 중" 링크로 전체 과정을 열 수 있습니다.',
  'settings.appearance.assistantTextModeDesc':
    '사용자 메시지는 말풍선으로 유지하고 어시스턴트 답변은 프레임 없는 텍스트로 표시합니다.',
  'settings.mascot.active': '활성',
  'settings.mascot.characterDesc': '캐릭터 설명',
  'settings.mascot.characterDraft': '초안',
  'settings.mascot.characterHeading': '캐릭터 제목',
  'settings.mascot.customGifError':
    'HTTPS .gif URL, loopback HTTP .gif URL, file:// .gif URL 또는 로컬 .gif 경로를 입력하세요.',
  'settings.mascot.customGifHeading': '사용자 지정 GIF 아바타',
  'settings.mascot.customGifLabel': '사용자 지정 GIF 아바타 URL',
  'settings.mascot.customGifPlaceholder': 'https://example.com/avatar.gif',
  'settings.mascot.characterPreview': '미리보기',
  'settings.mascot.characterStates': '상태',
  'settings.mascot.characterVisemes': '입 모양',
  'settings.mascot.colorAria': 'OpenHuman 색상',
  'settings.mascot.colorDesc': '색상 설명',
  'settings.mascot.colorHeading': '색상 제목',
  'settings.mascot.colorBlack': '검정',
  'settings.mascot.colorBurgundy': '버건디',
  'settings.mascot.colorCustom': '사용자 지정',
  'settings.mascot.colorNavy': '네이비',
  'settings.mascot.primaryColor': '기본 색상',
  'settings.mascot.secondaryColor': '보조 색상',
  'settings.mascot.colorYellow': '노랑',
  'settings.mascot.libraryUnavailable': 'OpenHuman 라이브러리를 사용할 수 없음',
  'settings.mascot.title': 'OpenHuman',
  'settings.mascot.loadingLibrary': 'OpenHuman 라이브러리 불러오는 중…',
  'settings.mascot.loadDetailError': '마스코트를 로드할 수 없습니다.',
  'settings.mascot.loadLibraryError': '마스코트 라이브러리를 로드할 수 없습니다.',
  'settings.mascot.localDefault': '로컬 OpenHuman(기본값)',
  'settings.mascot.menuTitle': '마스코트',
  'settings.mascot.menuDesc': '앱 전체에서 사용되는 마스코트 색상 선택',
  'settings.mascot.noCharacters': '아직 사용할 수 있는 OpenHuman 캐릭터가 없습니다',
  'settings.mascot.noColorVariants': '색상 변형 없음',
  'settings.mascot.voice.current': '현재',
  'settings.mascot.voice.customDesc':
    'api.elevenlabs.io/v1/voices 또는 ElevenLabs 대시보드에서 음성 ID를 찾으세요. ID만 저장되며 API 키는 백엔드에 유지됩니다.',
  'settings.mascot.voice.customHeading': '사용자 지정 음성 ID',
  'settings.mascot.voice.customOption': '기타(음성 ID 붙여넣기)…',
  'settings.mascot.voice.customPlaceholder': '예: 21m00Tcm4TlvDq8ikWAM',
  'settings.mascot.voice.desc':
    '마스코트가 음성 응답에 사용할 ElevenLabs 음성을 선택하세요. 성별로 필터링하고, 선별된 목록에서 선택하거나, 사용자 지정 ID를 붙여넣거나, 앱이 인터페이스 언어에 맞는 음성을 선택하도록 할 수 있습니다.',
  'settings.mascot.voice.genderFemale': '여성',
  'settings.mascot.voice.genderHeading': '음성 성별',
  'settings.mascot.voice.genderMale': '남성',
  'settings.mascot.voice.heading': '음성',
  'settings.mascot.voice.preset': '음성 프리셋',
  'settings.mascot.voice.presetHeading': '음성 프리셋',
  'settings.mascot.voice.preview': '음성 미리듣기',
  'settings.mascot.voice.previewError': '음성 미리듣기 실패',
  'settings.mascot.voice.previewText':
    '안녕하세요, 저는 당신의 어시스턴트입니다. 음성 미리듣기입니다.',
  'settings.mascot.voice.previewing': '미리듣는 중…',
  'settings.mascot.voice.reset': '기본값으로 초기화',
  'settings.mascot.voice.useLocaleDefault': '앱 언어와 일치',
  'settings.mascot.voice.useLocaleDefaultDesc':
    '현재 인터페이스 언어에 맞는 음성을 자동으로 선택합니다.',
  'settings.persona.title': '페르소나',
  'settings.persona.menuTitle': '페르소나',
  'settings.persona.menuDesc':
    '이름, 성격, 아바타, 음성을 하나의 어시스턴트 정체성으로 관리합니다.',
  'settings.persona.identityHeading': '정체성',
  'settings.persona.identityDesc':
    '어시스턴트의 표시 이름과 짧은 설명입니다. 앱에 표시되며 어시스턴트의 추론 방식은 바꾸지 않습니다.',
  'settings.persona.displayNameLabel': '표시 이름',
  'settings.persona.displayNamePlaceholder': '예: Nova',
  'settings.persona.descriptionLabel': '설명',
  'settings.persona.descriptionPlaceholder': '예: 우리 팀을 위한 차분하고 간결한 어시스턴트.',
  'settings.persona.soul.heading': '성격(SOUL.md)',
  'settings.persona.soul.desc':
    '어시스턴트가 모든 대화에서 따르는 성격 프롬프트입니다. 편집 내용은 작업공간에 저장되며 다음 응답부터 적용됩니다.',
  'settings.persona.soul.editorLabel': 'SOUL.md 내용',
  'settings.persona.soul.reset': '기본값으로 초기화',
  'settings.persona.soul.usingDefault': '번들 기본값 사용 중',
  'settings.persona.soul.loadError': 'SOUL.md를 불러올 수 없습니다',
  'settings.persona.soul.saveError': 'SOUL.md를 저장할 수 없습니다',
  'settings.persona.soul.resetError': 'SOUL.md를 초기화할 수 없습니다',
  'settings.persona.appearanceHeading': '아바타 및 음성',
  'settings.persona.appearanceDesc':
    '마스코트 색상, 사용자 지정 GIF 아바타, 응답 음성은 마스코트 설정에서 구성합니다.',
  'settings.persona.openMascotSettings': '마스코트 설정 열기',
  'settings.memoryWindow.balanced.badge': '추천',
  'settings.memoryWindow.balanced.hint':
    '합리적인 기본값 — 매번 추가 토큰을 많이 쓰지 않으면서 좋은 연속성을 제공합니다.',
  'settings.memoryWindow.balanced.label': '균형',
  'settings.memoryWindow.description':
    'OpenHuman이 새 에이전트 실행마다 주입하는 기억된 컨텍스트의 양입니다. 창이 클수록 과거 대화를 더 잘 인식하지만, 매 실행마다 더 많은 토큰을 사용하고 비용도 더 듭니다.',
  'settings.memoryWindow.extended.badge': '더 많은 컨텍스트',
  'settings.memoryWindow.extended.hint':
    '각 실행에 더 많은 장기 메모리를 주입합니다. 턴당 토큰 비용이 더 높습니다.',
  'settings.memoryWindow.extended.label': '확장',
  'settings.memoryWindow.maximum.badge': '가장 높은 비용',
  'settings.memoryWindow.maximum.hint':
    '가장 큰 안전 창입니다. 최고의 연속성을 제공하지만 매 실행마다 토큰 비용이 의미 있게 증가합니다.',
  'settings.memoryWindow.maximum.label': '최대',
  'settings.memoryWindow.minimal.badge': '가장 저렴함',
  'settings.memoryWindow.minimal.hint':
    '가장 작은 메모리 창입니다. 가장 저렴하고 빠르지만 실행 간 연속성이 가장 낮습니다.',
  'settings.memoryWindow.minimal.label': '최소',
  'settings.memoryWindow.title': '장기 메모리 창',
  'settings.agentbox.title': 'AgentBox',
  'settings.agentbox.desc': 'GMI Cloud 마켓플레이스 어댑터 상태 및 공급자 구성',
  'settings.agentbox.intro':
    'AgentBox 마켓플레이스 어댑터의 읽기 전용 상태입니다. 모드와 GMI MaaS 공급자는 코어가 시작될 때 환경 변수로 설정됩니다.',
  'settings.agentbox.modeLabel': '마켓플레이스 모드',
  'settings.agentbox.providerHeading': 'GMI MaaS 공급자',
  'settings.agentbox.slug': '공급자 슬러그',
  'settings.agentbox.baseUrl': '기본 URL',
  'settings.agentbox.model': '모델',
  'settings.agentbox.notConfigured':
    '구성되지 않았습니다. GMI_MAAS_BASE_URL, GMI_MAAS_API_KEY 및 GMI_MODELS 환경 변수를 설정하세요.',
  'settings.agentbox.unavailable': 'AgentBox 상태를 사용할 수 없습니다',
  'settings.modelHealth.title': '모델 상태',
  'settings.modelHealth.desc': '활성 모델 전반의 모델별 품질, 환각률, 비용 비교',
  'settings.modelHealth.allStatuses': '모든 상태',
  'settings.modelHealth.models': '모델',
  'settings.modelHealth.loading': '모델 데이터 불러오는 중...',
  'settings.modelHealth.empty': '등록된 모델이 없습니다',
  'settings.modelHealth.col.model': '모델',
  'settings.modelHealth.col.quality': '품질',
  'settings.modelHealth.col.halluc': '환각률',
  'settings.modelHealth.col.cost': '1M 출력당 비용',
  'settings.modelHealth.col.agents': '에이전트',
  'settings.modelHealth.col.status': '상태',
  'settings.modelHealth.badge.keep': '유지',
  'settings.modelHealth.badge.replace': '교체',
  'settings.modelHealth.badge.staging': '스테이징 테스트',
  'settings.modelHealth.badge.vision': '비전 전용',
  'settings.modelHealth.swap': '교체?',
  'settings.modelHealth.modal.title': '모델을 교체하시겠습니까?',
  'settings.modelHealth.modal.hallucRate': '환각률',
  'settings.modelHealth.modal.cancel': '취소',
  'settings.modelHealth.modal.apply': '교체 적용',
  'settings.modelHealth.tag.cheaper': '더 저렴함',
  'settings.modelHealth.tag.better': '더 좋음',
  'settings.desktopAgent.title': '데스크톱 에이전트',
  'settings.desktopAgent.description': '데스크톱 에이전트에 필요한 권한을 확인하고 허용하세요.',
  'settings.desktopAgent.microphone': '마이크',
  'settings.desktopAgent.grant': '허용',
  'settings.desktopAgent.notRequiredOnOs': '이 운영 체제에서는 필요하지 않음',
  'settings.desktopAgent.allGranted':
    '모두 완료 — 데스크톱 에이전트에 필요한 모든 권한이 있습니다.',
  'settings.desktopAgent.recheck': '다시 확인',
  'settings.desktopAgent.restartAndRecheck': '코어 재시작 후 다시 확인',
  'settings.desktopAgent.seamless.title': '에이전트 작업',
  'settings.desktopAgent.seamless.label': '에이전트가 묻지 않고 실행하도록 허용',
  'settings.desktopAgent.seamless.description':
    '전체 접근을 허용하고 데스크톱 작업(앱 열기, 앱 인터페이스 제어)을 자동 승인하여 에이전트가 승인 요청 없이 실행하도록 합니다.',
  'settings.desktopAgent.seamless.note':
    '데스크톱 작업만 확인을 건너뜁니다 — 셸 명령 실행, 파일 편집, 네트워크 요청, 소프트웨어 설치는 여전히 확인을 요청합니다. 이 기능을 끄면 데스크톱 작업의 자동 승인이 중단되지만 접근 수준은 그대로 유지됩니다.',
  'settings.desktopAgent.beta':
    '베타 — 데스크톱 에이전트는 실험적 기능이며 항상 기대대로 작동하지 않을 수 있습니다.',
  'settings.desktopAgent.wakeWordHint': '에이전트를 깨우려면 명령 앞에 “Hey Tiny”라고 말하세요.',
  'settings.screenIntel.permissions.accessibility': '접근성',
  'settings.screenIntel.permissions.grantHint': '권한 허용 안내',
  'settings.screenIntel.permissions.inputMonitoring': '입력 모니터링',
  'settings.screenIntel.permissions.macosAppliesPrivacy': 'macOS 개인정보 보호 적용',
  'settings.screenIntel.permissions.openInputMonitoring': '요청 중…',
  'settings.screenIntel.permissions.refreshStatus': '새로고침 중…',
  'settings.screenIntel.permissions.refreshing': '새로고침 중…',
  'settings.screenIntel.permissions.requestAccessibility': '요청 중…',
  'settings.screenIntel.permissions.requestScreenRecording': '요청 중…',
  'settings.screenIntel.permissions.requesting': '요청 중…',
  'settings.screenIntel.permissions.restartRefresh': '코어 다시 시작 중…',
  'settings.screenIntel.permissions.restartingCore': '코어 다시 시작 중…',
  'settings.screenIntel.permissions.screenRecording': '화면 녹화',
  'settings.screenIntel.permissions.title': '권한',
  'skills.card.moreActions': '추가 작업',
  'skills.channelIcon.discord': 'Discord',
  'skills.channelIcon.imessage': 'iMessage',
  'skills.channelIcon.telegram': 'Telegram',
  'skills.channelIcon.web': '웹',
  'skills.channelIcon.yuanbao': 'Yuanbao',
  'skills.composio.poweredBy': 'Composio 제공',
  'skills.composio.staleStatusTitle': '연결이 오래된 상태를 표시합니다.',
  'skills.create.allowedTools': '허용된 도구',
  'skills.create.allowedToolsHelp': 'SKILL.md 앞부분에 다음과 같이 렌더링됩니다.',
  'skills.create.allowedToolsPlaceholder': 'node_exec, 가져오기',
  'skills.create.author': '작성자',
  'skills.create.authorPlaceholder': '이름',
  'skills.create.commaSeparated': '(쉼표로 구분)',
  'skills.create.createBtn': '스킬 생성',
  'skills.create.createError': '스킬을 생성할 수 없습니다',
  'skills.create.creating': '생성 중…',
  'skills.create.description': '설명',
  'skills.create.descriptionPlaceholder': '이 스킬은 무엇을 하나요?',
  'skills.create.optional': '(선택 사항)',
  'skills.create.inputs.heading': 'Inputs',
  'skills.create.inputs.help':
    '스킬에 필요한 매개변수를 선언하세요. Skills Runner가 런타임에 이에 대한 양식을 렌더링합니다.',
  'skills.create.inputs.add': '입력 추가',
  'skills.create.inputs.row.name': '입력 이름',
  'skills.create.inputs.row.namePlaceholder': '예: repo',
  'skills.create.inputs.row.nameError':
    '영문자, 숫자, 밑줄, 대시만 사용 가능하며 영문자로 시작해야 합니다.',
  'skills.create.inputs.row.description': '입력 설명',
  'skills.create.inputs.row.descriptionPlaceholder': '이 필드에 무엇이 들어가나요?',
  'skills.create.inputs.row.type': 'Type',
  'skills.create.inputs.row.required': 'Required',
  'skills.create.inputs.row.remove': '입력 제거',
  'skills.create.inputs.type.string': 'Text',
  'skills.create.inputs.type.integer': 'Number',
  'skills.create.inputs.type.boolean': '예 / 아니오',
  'skills.create.license': '라이선스',
  'skills.create.licensePlaceholder': 'MIT',
  'skills.create.name': '이름',
  'skills.create.namePlaceholder': '예: Trade Journal',
  'skills.create.scope': '범위',
  'skills.create.scopeProjectHint': '/.openhuman/skills/',
  'skills.create.scopeUserHint':
    '~/.openhuman/skills/<slug>/SKILL.md에 작성됨 — 모든 워크스페이스에서 사용 가능.',
  'skills.create.slugLabel': '슬러그 라벨',
  'skills.create.subtitle': 'SKILL.md',
  'skills.create.tags': '태그',
  'skills.create.tagsPlaceholder': '거래, 연구',
  'skills.create.title': '새 스킬',
  'skills.detail.allowedTools': '허용된 도구',
  'skills.detail.author': '작성자',
  'skills.detail.license': '라이선스',
  'skills.detail.bundledResources': '번들 리소스',
  'skills.detail.description': '설명',
  'skills.detail.closeAriaLabel': '스킬 세부 정보 닫기',
  'skills.detail.location': '위치',
  'skills.detail.noBundledResources': '번들 리소스가 없습니다.',
  'skills.detail.platforms': '플랫폼',
  'skills.detail.relatedSkills': '관련 스킬',
  'skills.detail.source': '소스 URL',
  'skills.detail.sourceFormat': '형식',
  'skills.detail.stars': '별점',
  'skills.detail.tags': '태그',
  'skills.detail.warnings': '경고',
  'skills.detail.version': '버전',
  'skills.install.errors.alreadyInstalledHint':
    '이 슬러그와 관련된 스킬이 이미 작업공간에 존재합니다. 먼저 제거하거나 `metadata.id` / `name` 머리말을 변경하세요.',
  'skills.install.errors.alreadyInstalledTitle': '스킬이 이미 설치되어 있습니다.',
  'skills.install.errors.fetchFailedHint':
    '요청이 성공적으로 완료되지 않았습니다. 연결 가능한 공용 파일에서 URL 지점을 확인하고 호스트가 2xx 응답을 반환했는지 확인하세요.',
  'skills.install.errors.fetchFailedTitle': '가져오기 실패',
  'skills.install.errors.fetchTimedOutHint':
    '원격 호스트가 제때 응답하지 않았습니다. 다시 시도하거나 제한 시간을 늘리세요(1~600초).',
  'skills.install.errors.fetchTimedOutTitle': '가져오기 시간이 초과되었습니다.',
  'skills.install.errors.fetchTooLargeHint':
    'SKILL.md는 1MiB 미만이어야 합니다. 번들 리소스를 인라인하는 대신 `references/` 또는 `scripts/` 파일로 분할하세요.',
  'skills.install.errors.fetchTooLargeTitle': 'SKILL.md가 너무 큽니다.',
  'skills.install.errors.genericHint':
    '백엔드에서 오류를 반환했습니다. 원시 메시지는 아래와 같습니다.',
  'skills.install.errors.genericTitle': '기술을 설치할 수 없습니다.',
  'skills.install.errors.invalidSkillHint':
    '머리말은 비어 있지 않은 `이름` 및 `설명` 필드가 있고 `---`로 끝나는 유효한 YAML이어야 합니다.',
  'skills.install.errors.invalidSkillTitle': 'SKILL.md가 구문 분석되지 않았습니다.',
  'skills.install.errors.invalidUrlHint':
    '공개 HTTPS URL만 허용됩니다. 개인, 루프백 및 메타데이터 호스트가 차단됩니다.',
  'skills.install.errors.invalidUrlTitle': 'URL 거부됨',
  'skills.install.errors.unsupportedUrlHint':
    '직접 `.md` 링크만 작동합니다. GitHub의 경우 파일 링크(github.com/owner/repo/blob/.../SKILL.md) - 트리 및 repo 루트는 설치되지 않습니다.',
  'skills.install.errors.unsupportedUrlTitle': 'URL 형식이 지원되지 않습니다.',
  'skills.install.errors.writeFailedHint':
    '작업공간 기술 디렉터리에 쓸 수 없습니다. `<workspace>/.openhuman/skills/`에 대한 파일 시스템 권한을 확인하세요.',
  'skills.install.errors.writeFailedTitle': 'SKILL.md를 쓸 수 없습니다.',
  'skills.install.fetchLog': '로그 가져오기',
  'skills.install.fetchingPrefix': '가져오는 중',
  'skills.install.fetchingSuffix': '이는 구성한 시간 초과까지 걸릴 수 있습니다.',
  'skills.install.installBtn': '설치 중…',
  'skills.install.installComplete': '설치 완료',
  'skills.install.installing': '설치 중…',
  'skills.install.parseWarnings': '파싱 경고',
  'skills.install.rawError': '원시 오류',
  'skills.install.subtitleMiddle': 'HTTPS을 통해',
  'skills.install.subtitlePrefix': '아래에 설치합니다. 단일',
  'skills.install.subtitleSuffix': 'HTTPS만 가져옵니다. 개인 및 루프백 호스트는 차단됩니다.',
  'skills.install.successDiscovered': '{count} 새로운 스킬을 발견했습니다.',
  'skills.install.successNoNewIds':
    '스킬이 설치되었지만 새 스킬 ID가 나타나지 않았습니다. 카탈로그에 이미 동일한 슬러그가 있는 스킬이 포함되어 있을 수 있습니다.',
  'skills.install.timeoutHint': '(초, 선택 사항)',
  'skills.install.timeoutHelp': '기본값은 60초입니다. 1-600 이외의 값은 서버측에서 고정됩니다.',
  'skills.install.timeoutInvalid': '1~600 사이의 정수여야 합니다.',
  'skills.install.timeoutLabel': '시간 초과 라벨',
  'skills.install.timeoutPlaceholder': '60',
  'skills.install.title': 'URL에서 스킬 설치',
  'skills.install.urlHelpMiddle': '파일.',
  'skills.install.urlHelpPrefix': '직접 링크',
  'skills.install.urlHelpSuffix': 'URLs 자동 재작성',
  'skills.install.urlInvalidPrefix': 'URL은 올바른 형식의',
  'skills.install.urlInvalidSuffix': '링크여야 합니다.',
  'skills.install.urlLabel': '스킬 URL',
  'skills.install.urlPlaceholder': 'https://raw.githubusercontent.com/owner/repo/main/SKILL.md',
  'skills.meetingBots.bannerDesc':
    'Google Meet 링크를 넣으면 OpenHuman이 게스트로 참여하여 말하고, 듣고, 반응합니다.',
  'skills.meetingBots.bannerTitle': 'OpenHuman을 회의에 보내기',
  'skills.meetingBots.busyTitle': 'OpenHuman이 바쁩니다',
  'skills.meetingBots.comingSoon': '곧 제공 예정',
  'skills.meetingBots.couldNotLeaveTitle': '회의에서 나갈 수 없습니다',
  'skills.meetingBots.couldNotStartTitle': 'OpenHuman을 시작할 수 없습니다',
  'skills.meetingBots.displayName': '표시 이름',
  'skills.meetingBots.failedToStart': 'OpenHuman 시작에 실패했습니다.',
  'skills.meetingBots.joiningMessage': '몇 초 안에 참가자로 표시될 것입니다.',
  'skills.meetingBots.joiningTitle': 'OpenHuman이 회의에 참여하는 중',
  'skills.meetingBots.meetingLink': '회의 링크',
  'skills.meetingBots.modalAriaLabel': 'OpenHuman을 회의에 보내기',
  'skills.meetingBots.modalDesc':
    'OpenHuman이 익명 게스트로 참여하여 비디오를 통화에 스트리밍하고 에이전트를 통해 응답합니다.',
  'skills.meetingBots.modalTitle': 'OpenHuman을 회의에 보내기',
  'skills.meetingBots.newBadge': '새 항목',
  'skills.meetingBots.platformComingSoon': '{label} 지원이 곧 제공될 예정입니다.',
  'skills.meetingBots.platformHints.gmeet': 'Meet.google.com/abc-defg-hij',
  'skills.meetingBots.platformHints.teams': 'Teams.microsoft.com/...',
  'skills.meetingBots.platformHints.webex': 'webex.com/meet/...',
  'skills.meetingBots.platformHints.zoom': 'Zoom.us/j/...',
  'skills.meetingBots.platforms.gmeet': 'Google 모임',
  'skills.meetingBots.platforms.teams': 'Microsoft Teams',
  'skills.meetingBots.platforms.webex': 'Webex',
  'skills.meetingBots.platforms.zoom': 'Zoom',
  'skills.meetingBots.sendTo': '보내기',
  'skills.meetingBots.serverOverloaded':
    '현재 OpenHuman의 부하가 매우 높습니다. 몇 분 후에 다시 시도해 주세요.',
  'skills.meetingBots.soonSuffix': '곧',
  'skills.meetingBots.starting': '시작 중…',
  'skills.meetingBots.recentCallsAriaLabel': '최근 회의 통화',
  'skills.meetingBots.recentCallsHeading': '최근 통화',
  'skills.meetingBots.recentCallsEmpty': '이전 통화가 없습니다 — 회의 기록이 여기에 표시됩니다.',
  'skills.meetingBots.recentCallsLoading': '로딩 중\u2026',
  'skills.meetingBots.recentCallAddedBy': '{name}님이 추가함',
  'skills.meetingBots.recentCallParticipants': '{names}님과 함께',
  'skills.meetingBots.recentCallTurnSingular': '{count}회 발언',
  'skills.meetingBots.recentCallTurnPlural': '{count}회 발언',
  'skills.meetingBots.recentCallDuration': '통화 {seconds}초',
  'skills.meetingBots.callDetailLoading': '스크립트를 불러오는 중…',
  'skills.meetingBots.callDetailError': '스크립트를 불러오지 못했습니다.',
  'skills.meetingBots.callDetailRetry': '다시 시도',
  'skills.meetingBots.callDetailEmpty': '이 통화에 대한 스크립트나 요약이 기록되지 않았습니다.',
  'skills.meetingBots.callSummaryHeading': '요약',
  'skills.meetingBots.callKeyPointsHeading': '핵심 사항',
  'skills.meetingBots.callActionItemsHeading': '실행 항목',
  'skills.meetingBots.callTranscriptHeading': '스크립트',
  'skills.meetingBots.liveBadge': '라이브',
  'skills.meetingBots.liveTitle': '회의 중',
  'skills.meetingBots.liveStatusJoining': '참가 중\u2026',
  'skills.meetingBots.liveStatusActive': '회의에서 라이브',
  'skills.meetingBots.liveStatusListening': '듣는 중 (음소거)',
  'skills.meetingBots.liveStatusEnded': '회의 종료',
  'skills.meetingBots.liveStatusError': '참가 실패',
  'skills.meetingBots.liveTranscriptHeading': '실시간 자막',
  'skills.meetingBots.liveTranscriptEmpty': '음성 대기 중…',
  'skills.meetingBots.leaveButton': '나가기',
  'skills.meetingBots.leavingButton': '나가는 중…',
  'skills.meetingBots.respondToParticipant': '이 회의에서 내 이름',
  'skills.meetingBots.respondToParticipantHint': '예: 김철수 (통화에서 표시되는 이름)',
  'skills.meetingBots.respondToParticipantDesc':
    '회의에서 사용하는 정확한 표시 이름을 입력하세요. 봇은 이름(웨이크 구문)을 말할 때만 응답합니다.',
  'skills.meetingBots.wakePhrase': '웨이크 구문',
  'skills.meetingBots.wakePhraseHint': 'Hey OpenHuman',
  'skills.meetingBots.wakePhraseDesc': '참가자가 봇이 응답하기 전에 이것을 말해야 합니다.',
  'skills.meetingBots.activeMode': '부르면 응답하기',
  'skills.meetingBots.activeModeDesc':
    '켜면 호출 문구를 말한 뒤 봇이 소리 내어 답합니다. 끄면 듣고 기록만 합니다.',
  'skills.meetingBots.history.allPlatforms': '모든 플랫폼',
  'skills.meetingBots.history.copyTranscript': '복사',
  'skills.meetingBots.history.downloadTranscript': '다운로드',
  'skills.meetingBots.history.earlier': '이전',
  'skills.meetingBots.history.participantCount': '{count}명 참가자',
  'skills.meetingBots.history.participantCountPlural': '{count}명 참가자',
  'skills.meetingBots.history.runWithOpenHuman': 'OpenHuman으로 실행',
  'skills.meetingBots.history.searchPlaceholder': '통화 검색…',
  'skills.meetingBots.history.selectPrompt': '통화를 선택하면 요약과 전사를 볼 수 있습니다.',
  'skills.meetingBots.history.today': '오늘',
  'skills.meetingBots.history.yesterday': '어제',
  'skills.meetingBots.upcoming.heading': '예정된 회의',
  'skills.meetingBots.upcoming.when': '시간',
  'skills.meetingBots.upcoming.meeting': '회의',
  'skills.meetingBots.upcoming.platform': '플랫폼',
  'skills.meetingBots.upcoming.people': '참가자',
  'skills.meetingBots.upcoming.joinPolicy': '참여 정책',
  'skills.meetingBots.upcoming.joinNow': '지금 참여',
  'skills.meetingBots.upcoming.joinNowAriaLabel': '{title} 참여',
  'skills.meetingBots.upcoming.join': '참여',
  'skills.meetingBots.upcoming.auto': '자동',
  'skills.meetingBots.upcoming.ask': '묻기',
  'skills.meetingBots.upcoming.skip': '건너뛰기',
  'skills.meetingBots.upcoming.today': '오늘',
  'skills.meetingBots.upcoming.tomorrow': '내일',
  'skills.meetingBots.upcoming.empty':
    '예정된 회의가 없습니다 — Google Calendar를 연결하여 여기에서 확인하세요.',
  'skills.meetingBots.upcoming.error': '예정된 회의를 불러올 수 없습니다.',
  'skills.meetingBots.upcoming.retry': '다시 시도',
  'skills.meetingBots.upcoming.refresh': '새로 고침',
  'skills.meetingBots.upcoming.filterAll': '모든 플랫폼',
  'skills.meetingBots.upcoming.participants': '{count}명',
  'skills.meetingBots.upcoming.imminent': '곧 시작',
  'skills.meetingBots.upcoming.autoJoinsAt': '~{time}에 자동 참가',
  'skills.meetingBots.upcoming.asksAtStart': '시작 시 묻기',
  'skills.meetingBots.upcoming.watchCalendarHint':
    "자동/묻기가 적용되도록 기본값(기어 아이콘)에서 '내 캘린더 감시'를 활성화하세요 — 그렇지 않으면 이 정책들은 저장되지만 트리거되지 않습니다.",
  'skills.meetingBots.relative.now': '지금',
  'skills.meetingBots.relative.inMinutes': '{count}분 후',
  'skills.meetingBots.relative.inHours': '{count}시간 후',
  'skills.meetingBots.relative.minutesAgo': '{count}분 전',
  'skills.meetingBots.relative.hoursAgo': '{count}시간 전',
  'skills.meetingBots.relative.daysAgo': '{count}일 전',
  'skills.meetingBots.relative.yesterday': '어제',
  'skills.meetingBots.defaults.drawerTitle': '회의 기본값',
  'skills.meetingBots.defaults.closeDrawer': '닫기',
  'skills.meetingBots.defaults.openDefaults': '회의 설정',
  'skills.meetingBots.defaults.watchCalendar': '내 캘린더 감시',
  'skills.meetingBots.defaults.watchCalendarDesc':
    'OpenHuman이 연결된 캘린더를 감시하여 아래 정책에 따라 회의에 자동 참가하거나 참가 여부를 묻도록 허용합니다. 이는 회의 알림과는 별개입니다.',
  'skills.meetingBots.defaults.globalPolicy': '전역 자동 참가 정책',
  'skills.meetingBots.defaults.perPlatformTitle': '플랫폼별 설정',
  'skills.meetingBots.defaults.perPlatformDesc': '특정 플랫폼에 대한 전역 정책을 재정의합니다.',
  'skills.meetingBots.defaults.useDefault': '기본값 사용',
  'skills.resource.preview.closeAriaLabel': '미리보기 닫기',
  'skills.resource.preview.failed': '미리보기 실패',
  'skills.resource.preview.loading': '미리보기 불러오는 중…',
  'skills.resource.tree.assets': '자산',
  'skills.resource.tree.examples': '예시',
  'skills.resource.tree.other': '기타',
  'skills.resource.tree.prompts': '프롬프트',
  'skills.resource.tree.references': '참조',
  'skills.resource.tree.scripts': '스크립트',
  'skills.resource.tree.templates': '템플릿',
  'skills.resource.tree.empty': '번들 리소스가 없습니다.',
  'skills.search.placeholder': '플레이스홀더',
  'skills.setup.autocomplete.acceptKey': '수락 키',
  'skills.setup.autocomplete.activeDesc': '활성 설명',
  'skills.setup.autocomplete.activeTitle': '자동 완성이 활성화됨',
  'skills.setup.autocomplete.customizeSettings': '설정 사용자 지정',
  'skills.setup.autocomplete.debounce': '디바운스',
  'skills.setup.autocomplete.description': '설명',
  'skills.setup.autocomplete.enableBtn': '활성화 중...',
  'skills.setup.autocomplete.enableError': '자동 완성을 활성화하지 못했습니다',
  'skills.setup.autocomplete.enabling': '활성화 중...',
  'skills.setup.autocomplete.notSupported': '지원되지 않음',
  'skills.setup.autocomplete.stepEnable': '인라인 완성 활성화',
  'skills.setup.autocomplete.stepSuccess': '사용 준비 완료',
  'skills.setup.autocomplete.stylePreset': '스타일 프리셋',
  'skills.setup.autocomplete.stylePresetValue': '균형(나중에 구성 가능)',
  'skills.setup.autocomplete.title': '텍스트 자동 완성',
  'skills.setup.screenIntel.activeDesc': '활성 설명',
  'skills.setup.screenIntel.activeTitle': '화면 인텔리전스가 활성화됨',
  'skills.setup.screenIntel.advancedSettings': '고급 설정',
  'skills.setup.screenIntel.allGranted': '모든 권한 허용됨',
  'skills.setup.screenIntel.captureMode': '캡처 모드',
  'skills.setup.screenIntel.captureModeValue': '모든 창(나중에 구성 가능)',
  'skills.setup.screenIntel.deniedHint':
    '시스템 설정에서 권한을 허용한 후 아래를 클릭하여 다시 시작하고 변경 사항을 적용하세요.',
  'skills.setup.screenIntel.enableBtn': '활성화 중...',
  'skills.setup.screenIntel.enableDesc':
    '화면의 내용을 읽고 유용한 컨텍스트를 에이전트에 제공합니다',
  'skills.setup.screenIntel.enableError': '화면 인텔리전스를 활성화하지 못했습니다',
  'skills.setup.screenIntel.enabling': '활성화 중...',
  'skills.setup.screenIntel.grant': '여는 중...',
  'skills.setup.screenIntel.granted': '허용됨',
  'skills.setup.screenIntel.macosOnly': 'macOS 전용',
  'skills.setup.screenIntel.opening': '여는 중...',
  'skills.setup.screenIntel.panicHotkey': '패닉 핫키',
  'skills.setup.screenIntel.permAccessibility': '접근성',
  'skills.setup.screenIntel.permInputMonitoring': '입력 모니터링',
  'skills.setup.screenIntel.permScreenRecording': '화면 녹화',
  'skills.setup.screenIntel.permissionsDesc': '권한 설명',
  'skills.setup.screenIntel.permissionPathLabel': 'macOS는 다음에 개인 정보 보호를 적용합니다.',
  'skills.setup.screenIntel.refreshStatus': '상태 새로고침',
  'skills.setup.screenIntel.restartRefresh': '다시 시작 중...',
  'skills.setup.screenIntel.restarting': '다시 시작 중...',
  'skills.setup.screenIntel.stepEnable': '스킬 활성화',
  'skills.setup.screenIntel.stepPermissions': '권한 허용',
  'skills.setup.screenIntel.stepSuccess': '사용 준비 완료',
  'skills.setup.screenIntel.title': '화면 인텔리전스',
  'skills.setup.screenIntel.visionModel': '비전 모델',
  'skills.setup.voice.activation': '활성화',
  'skills.setup.voice.activeDescPrefix': 'Fn',
  'skills.setup.voice.activeDescSuffix': 'Fn',
  'skills.setup.voice.activeTitle': '음성 인텔리전스가 활성화됨',
  'skills.setup.voice.customizeSettings': '설정 사용자 지정',
  'skills.setup.voice.downloadSttBtn': 'STT 다운로드 버튼',
  'skills.setup.voice.enableDesc': '활성화 설명',
  'skills.setup.voice.hotkey': '핫키',
  'skills.setup.voice.startBtn': '시작 중...',
  'skills.setup.voice.startError': '음성 서버를 시작하지 못했습니다',
  'skills.setup.voice.starting': '시작 중...',
  'skills.setup.voice.stepEnable': '음성 서버 시작',
  'skills.setup.voice.stepSetup': '모델 다운로드 필요',
  'skills.setup.voice.stepSuccess': '사용 준비 완료',
  'skills.setup.voice.sttNotReady': '음성-텍스트 모델이 준비되지 않음',
  'skills.setup.voice.sttNotReadyDesc':
    '음성 인텔리전스에는 전사용 로컬 Whisper 모델이 필요합니다. 로컬 모델 설정에서 다운로드하세요.',
  'skills.setup.voice.sttReady': '음성-텍스트 모델 준비됨',
  'skills.setup.voice.sttReturnHint': 'STT 반환 안내',
  'skills.setup.voice.title': '음성 인텔리전스',
  'skills.uninstall.couldNotUninstall': '제거할 수 없습니다',
  'skills.uninstall.description':
    '이 작업은 스킬 디렉터리와 모든 번들 리소스를 영구적으로 삭제합니다. 에이전트는 다음 턴부터 이를 더 이상 볼 수 없습니다.',
  'skills.uninstall.title': '제거',
  'skills.uninstall.uninstallBtn': '제거',
  'skills.uninstall.uninstalling': '제거 중…',
  'upsell.global.limitMessage': '계속하려면 플랜을 업그레이드하거나 크레딧을 충전하세요',
  'upsell.global.limitTitle': '사용자',
  'upsell.global.nearLimitMessage':
    '사용 한도의 {pct}%를 사용했습니다. 더 높은 한도를 위해 업그레이드하세요.',
  'upsell.global.nearLimitTitle': '사용 한도에 가까워지고 있습니다',
  'upsell.usageLimit.bodyBudget':
    '주간 한도에 도달했습니다.{reset} 한도를 피하려면 플랜을 업그레이드하거나 크레딧을 충전하세요.',
  'upsell.usageLimit.bodyRate':
    '10시간 추론 속도 한도에 도달했습니다.{reset} 더 높은 한도를 위해 업그레이드하세요.',
  'upsell.usageLimit.heading': '사용 한도에 도달했습니다',
  'upsell.usageLimit.notNow': '지금은 아님',
  'upsell.usageLimit.perWindow': '{amount}',
  'upsell.usageLimit.planIncludes': '{plan}',
  'upsell.usageLimit.resetsIn': '{time}에 초기화됩니다.',
  'upsell.usageLimit.upgradePlan': '플랜 업그레이드',
  'upsell.usageLimit.weeklyInference': '{amount}',
  'walkthrough.steps.startChat.title': '채팅에서 시작하기',
  'walkthrough.steps.startChat.content':
    '채팅이 시작점입니다. 새 창은 설정 후 보았던 같은 인사와 빠른 작업으로 열립니다.',
  'walkthrough.steps.sayHello.title': '인사하기',
  'walkthrough.steps.sayHello.content': '언제든 여기를 눌러 AI 어시스턴트와 대화를 시작하세요.',
  'walkthrough.steps.meetAi.title': 'AI 만나기',
  'walkthrough.steps.meetAi.content':
    '대화가 이루어지는 곳입니다. 질문하고, 요약을 받고, 아이디어를 정리하세요. 모든 내용은 검색할 수 있습니다.',
  'walkthrough.steps.connectWorld.title': '내 세계 연결하기',
  'walkthrough.steps.connectWorld.content':
    'Gmail, Slack, WhatsApp 등 각 연결은 어시스턴트에 더 많은 기능을 더합니다.',
  'walkthrough.steps.messagingApps.title': '이미 쓰는 곳에서 채팅하기',
  'walkthrough.steps.messagingApps.content':
    'WhatsApp, Telegram, Slack, Discord를 연결하면 어시스턴트가 어디서든 연락할 수 있습니다.',
  'walkthrough.steps.settings.title': '내 방식으로 설정하기',
  'walkthrough.steps.settings.content':
    '환경설정, 개인정보, 알림이 모두 여기에 있습니다. 이 페이지에서 언제든 투어를 다시 시작할 수 있습니다.',
  'walkthrough.steps.chatTab.title': '채팅으로 돌아가기',
  'walkthrough.steps.chatTab.content': '대화로 돌아가고 싶을 때 Chat 탭을 사용하세요.',
  'walkthrough.steps.humanTab.title': 'Human 프로필 보기',
  'walkthrough.steps.humanTab.content':
    'Human은 개인 맥락, 정체성, 어시스턴트가 보는 프로필을 한곳에 모읍니다.',
  'walkthrough.steps.brainTab.title': 'Brain 열기',
  'walkthrough.steps.brainTab.content':
    'Brain은 메모리 그래프입니다. OpenHuman이 무엇을 알고 아이디어가 어떻게 연결되는지 확인하는 곳입니다.',
  'walkthrough.steps.agentWorldTab.title': 'Agent World 탐색',
  'walkthrough.steps.agentWorldTab.content':
    'Agent World에는 재사용 가능한 에이전트와 공유 자동화가 있습니다.',
  'walkthrough.steps.connectionsTab.title': '연결 관리',
  'walkthrough.steps.connectionsTab.content':
    '서비스를 추가하거나 조정하고 싶을 때 Connections는 항상 기본 내비게이션에 있습니다.',
  'walkthrough.steps.feedbackTab.title': '피드백 보내기',
  'walkthrough.steps.feedbackTab.content':
    'Feedback은 문제를 보고하거나 개선을 요청하는 직접적인 공간입니다.',
  'walkthrough.steps.allSet.title': '준비 완료!',
  'walkthrough.steps.allSet.content':
    '어시스턴트가 환영 메모를 남겼습니다. 이곳에서 채팅하고, 질문하고, 아이디어를 정리해 보세요. 즐겁게 사용하세요!',
  'walkthrough.tooltip.letsGo': '시작해 봅시다!',
  'walkthrough.tooltip.next': '다음 →',
  'walkthrough.tooltip.skip': '투어 건너뛰기',
  'walkthrough.tooltip.stepCounter': '{total}개 중 {n}개',
  'webhooks.activity.empty': '비어 있음',
  'webhooks.activity.title': '최근 활동',
  'webhooks.composioHistory.empty': '비어 있음',
  'webhooks.composioHistory.metadataId': '메타데이터 ID',
  'webhooks.composioHistory.metadataUuid': '메타데이터 UUID',
  'webhooks.composioHistory.payload': '페이로드',
  'webhooks.composioHistory.title': 'ComposeIO 트리거 기록',
  'webhooks.tunnels.active': '활성',
  'webhooks.tunnels.createFailed': '터널 생성 실패',
  'webhooks.tunnels.creating': '생성 중...',
  'webhooks.tunnels.deleteFailed': '터널 삭제 실패',
  'webhooks.tunnels.descriptionPlaceholder': '설명(선택 사항)',
  'webhooks.tunnels.echo': '에코',
  'webhooks.tunnels.empty': '비어 있음',
  'webhooks.tunnels.enableEcho': 'Echo 활성화',
  'webhooks.tunnels.inactive': '비활성',
  'webhooks.tunnels.namePlaceholder': '터널 이름(예: telegram-bot)',
  'webhooks.tunnels.newTunnel': '새 터널',
  'webhooks.tunnels.removeEcho': 'Echo 제거',
  'webhooks.tunnels.title': '웹훅 터널',
  'webhooks.tunnels.toggleFailed': 'Echo 전환 실패',
  'composio.directModeRequiresKey':
    '저장에 실패했습니다. Direct 모드에는 비어 있지 않은 API 키가 필요합니다.',
  'composio.integrationSlugsHelp': '쉼표로 구분된 통합 슬러그, 예:',
  'composio.integrationSlugsExample': 'gmail, slack',
  'composio.integrationSlugsCaseInsensitive': '대소문자를 구분하지 않습니다.',
  'composio.integrationSlugsPlaceholder': 'gmail, slack, ...',
  'composio.notYetRouted': '아직 라우팅되지 않음',
  'composio.triggers.loading': '불러오는 중…',
  'conversations.taskKanban.todo': '할 일',
  'chat.addReaction': '반응 추가',
  'chat.agentProfile.create': '에이전트 프로필 생성',
  'chat.agentProfile.createFailed': '에이전트 프로필을 생성할 수 없습니다.',
  'chat.agentProfile.customDescription': '사용자 지정 에이전트 프로필',
  'chat.agentProfile.defaultAgentLabel': 'Orchestrator',
  'chat.agentProfile.exists': '에이전트 프로필 "{name}"이(가) 이미 존재합니다.',
  'chat.agentProfile.label': '에이전트 프로필',
  'chat.agentProfile.quick': '빠름',
  'chat.agentProfile.reasoning': '추론',
  'chat.agentProfile.namePlaceholder': '프로필 이름',
  'chat.agentProfile.promptStylePlaceholder': '프롬프트 스타일',
  'chat.agentProfile.allowedToolsPlaceholder': '허용된 도구',
  'chat.backToThread': '{title}로 돌아가기',
  'chat.parentThread': '상위 스레드',
  'chat.removeReaction': '{emoji} 제거',
  'settings.composio.loading': '불러오는 중…',
  'settings.mascot.noCharactersAvailable': '아직 사용할 수 있는 OpenHuman 캐릭터가 없습니다',
  'skills.uninstall.confirmTitle': '{name}을(를) 제거하시겠습니까?',
  'conversations.taskKanban.blocked': '차단됨',
  'conversations.taskKanban.done': '완료',
  'conversations.taskKanban.pending': '대기 중',
  'conversations.taskKanban.working': '작업 중',
  'conversations.taskKanban.awaitingApproval': '승인 대기 중',
  'conversations.taskKanban.ready': '준비됨',
  'conversations.taskKanban.rejected': '거부됨',
  'conversations.taskKanban.inProgress': '진행 중',
  'conversations.taskKanban.awaitingApprovalColumn': '승인 대기 중',
  'conversations.taskKanban.blockedColumn': '차단됨',
  'conversations.taskKanban.evidenceBadge': '증거 ({count})',
  'conversations.taskKanban.needsInput': '이 작업들은 귀하의 입력이 필요합니다',
  'conversations.taskKanban.emptyColumn': '작업 없음',
  'conversations.taskKanban.dragHint': '열 사이를 이동하려면 끌어다 놓으세요',
  'conversations.taskKanban.movingCard': '이동 중…',
  'conversations.taskKanban.statusBadge.ready': '시작 준비됨',
  'conversations.taskKanban.statusBadge.rejected': '거부됨',
  'intelligence.memoryChunk.detail.copiedHint': '복사됨',
  'settings.composio.notYetRouted': '아직 라우팅되지 않음',
  'settings.localModel.download.manageExternal': '외부 런타임에서 이 모델을 관리하세요.',
  'settings.localModel.status.manageOllamaExternal':
    'OpenHuman 외부에서 Ollama 프로세스와 모델 가져오기를 관리한 다음 진단을 다시 실행하세요.',
  'settings.localModel.status.ollamaDocs': 'Ollama 문서',
  'settings.localModel.status.thenRetry':
    '설정 지침을 확인한 다음 런타임에 연결할 수 있게 되면 다시 시도하세요.',
  'devOptions.menuAi': 'AI 구성',
  'devOptions.menuAiDesc': '클라우드 공급자, 로컬 Ollama 모델 및 워크로드별 라우팅',
  'devOptions.menuScreenAware': '화면 인식',
  'devOptions.menuScreenAwareDesc': '화면 캡처 권한, 모니터링 정책 및 세션 제어',
  'devOptions.menuMessaging': '메시징 채널',
  'devOptions.menuMessagingDesc': 'Telegram/Discord 인증 모드 및 기본 채널 라우팅 구성',
  'devOptions.menuTools': '도구',
  'devOptions.menuToolsDesc':
    'OpenHuman이(가) 사용자를 대신하여 사용할 수 있는 기능 활성화 또는 비활성화',
  'devOptions.menuAgentChat': '에이전트 채팅',
  'devOptions.menuAgentChatDesc': '모델 및 온도 재정의를 사용한 테스트 에이전트 대화',
  'devOptions.menuCronJobs': '크론 작업',
  'devOptions.menuCronJobsDesc': '런타임 기술에 대해 예약된 작업 보기 및 구성',
  'devOptions.menuLocalModelDebug': '로컬 모델 디버그',
  'devOptions.menuLocalModelDebugDesc': 'Ollama 구성, 자산 다운로드, 모델 테스트 및 진단',
  'devOptions.menuWebhooksDebug': '웹후크',
  'devOptions.menuWebhooksDebugDesc': '런타임 웹후크 등록 및 캡처된 요청 로그 검사',
  'devOptions.menuIntelligence': '인텔리전스',
  'devOptions.menuIntelligenceDesc': '메모리 작업 공간, 잠재의식 엔진, 드림 및 설정',
  'devOptions.menuNotificationRouting': '알림 라우팅',
  'devOptions.menuNotificationRoutingDesc':
    '통합 경고에 대한 AI 중요도 점수 및 오케스트레이터 에스컬레이션',
  'devOptions.menuComposeIOTriggers': 'ComposeIO 트리거',
  'devOptions.menuComposeIOTriggersDesc': 'ComposeIO 트리거 기록 및 아카이브 보기',
  'devOptions.menuComposioRouting': 'Composio 라우팅(직접 모드)',
  'devOptions.menuComposioRoutingDesc':
    '자체 Composio API 키를 가져와 호출을 backend.composio.dev로 직접 라우팅',
  'devOptions.menuComposioTriggers': '통합 트리거',
  'devOptions.menuComposioTriggersDesc': 'Composio 통합 트리거에 대한 AI 심사 설정 구성',
  'memory.sourceFilterAria': '소스별 필터링',
  'calls.comingSoonDescription': 'AI 지원 통화가 곧 제공됩니다. 기대해 주세요.',
  'whatsapp.title': 'WhatsApp',
  'subconscious.priority.critical': '심각',
  'subconscious.priority.important': '중요',
  'subconscious.priority.normal': '정상',
  'subconscious.durationSeconds': '{seconds}s',
  'subconscious.durationMilliseconds': '{milliseconds}ms',
  'settings.appearance': '모양',
  'settings.appearanceDesc': '밝은 색, 어두운 색 선택 또는 시스템 테마와 일치',
  'settings.mascot': '마스코트',
  'settings.mascotDesc': '앱 전체에서 사용되는 마스코트 색상 선택',
  'pages.settings.account.walletBalances': '지갑 잔액',
  'pages.settings.account.walletBalancesDesc': '로컬 지갑의 멀티체인 잔액을 확인하세요',
  'walletBalances.title': '지갑 잔액',
  'walletBalances.refresh': 'Refresh',
  'walletBalances.loading': '잔액 불러오는 중…',
  'walletBalances.retry': 'Retry',
  'walletBalances.emptyState': '아직 지갑 계정이 없습니다 — 복구 문구에서 지갑을 설정하세요.',
  'walletBalances.copyAddress': '주소 복사',
  'walletBalances.providerMissing': '공급자 사용 불가',
  'walletBalances.rawBalance': '원본: {raw}',
  'walletBalances.errorGeneric':
    '지갑 잔액을 불러올 수 없습니다. 복구 문구에서 지갑을 설정하고 다시 시도하세요.',
  'walletBalances.setupHint':
    '복구 문구가 아직 설정되지 않았습니다. 지갑을 활성화하고 실시간 잔액을 보려면 설정하세요.',
  'walletBalances.setupCta': '복구 문구 설정',
  'walletBalances.notSetUp': '설정 안 됨',
  'walletBalances.send': '보내기',
  'walletBalances.receive': '받기',
  'walletReceive.scanHint': '자금을 받으려면 이 코드를 스캔하거나 아래 주소를 복사하세요.',
  'walletReceive.addressLabel': '{network} 주소',
  'walletReceive.onlyChainWarning':
    '이 주소로는 {network} 자산만 보내세요. 다른 네트워크의 자산을 보내면 영구적으로 손실될 수 있습니다.',
  'walletSend.available': '사용 가능',
  'walletSend.recipient': '받는 사람 주소',
  'walletSend.recipientPlaceholder': '대상 주소 붙여넣기',
  'walletSend.recipientRequired': '받는 사람 주소를 입력하세요',
  'walletSend.amount': '금액',
  'walletSend.invalidAmount': '유효한 금액을 입력하세요',
  'walletSend.review': '검토',
  'walletSend.preparing': '준비 중…',
  'walletSend.confirmHint':
    '아래 세부 정보를 확인하세요. 서명은 로컬에서 이루어지며 확인하기 전에는 아무것도 전송되지 않습니다.',
  'walletSend.estimatedFee': '예상 네트워크 수수료',
  'walletSend.confirmSend': '확인 후 보내기',
  'walletSend.sending': '보내는 중…',
  'walletSend.sent': '거래가 전송됨',
  'walletSend.txHash': '거래 해시',
  'walletSend.viewExplorer': '익스플로러에서 보기',
  'walletSend.done': '완료',
  'walletSend.genericError': '전송을 완료할 수 없습니다. 다시 시도하세요.',
  'settings.taskSources.title': '작업 소스',
  'settings.integrations.title': '통합',
  'settings.integrations.menuDesc': '작업 소스, Composio 라우팅 및 웹훅 트리거',
  'settings.taskSources.subtitle': '도구의 작업을 에이전트 할 일 보드로 가져옵니다',
  'settings.taskSources.description':
    'GitHub, Notion, Linear, ClickUp에서 작업 항목을 수집하고 보강한 뒤 에이전트 할 일 보드로 라우팅합니다.',
  'settings.taskSources.connectHint':
    '작업 소스는 연결된 계정을 사용합니다. 먼저 통합에서 계정을 연결하세요.',
  'settings.taskSources.disabledBanner':
    '설정에서 작업 소스가 비활성화되어 있습니다. 자동으로 폴링하려면 활성화하세요.',
  'settings.taskSources.loadError': '작업 소스를 불러오지 못했습니다',
  'settings.taskSources.addTitle': '작업 소스 추가',
  'settings.taskSources.provider': '제공업체',
  'settings.taskSources.name': '이름(선택 사항)',
  'settings.taskSources.namePlaceholder': '예: 내 열린 이슈',
  'settings.taskSources.github.repo': '저장소 (소유자/이름, 선택 사항)',
  'settings.taskSources.github.labels': '레이블(쉼표로 구분)',
  'settings.taskSources.notion.database': '데이터베이스(보드) ID',
  'settings.taskSources.notion.browseDatabases': '데이터베이스 찾아보기',
  'settings.taskSources.notion.loadingDatabases': '데이터베이스 불러오는 중…',
  'settings.taskSources.notion.selectDatabase': '데이터베이스 선택…',
  'settings.taskSources.notion.noDatabases': '이 연결에 대한 데이터베이스가 없습니다.',
  'settings.taskSources.linear.team': '팀 ID(선택 사항)',
  'settings.taskSources.clickup.team': '작업공간(팀) ID(선택 사항)',
  'settings.taskSources.assignedToMe': '내게 할당된 항목만',
  'settings.taskSources.add': '소스 추가',
  'settings.taskSources.adding': '추가 중…',
  'settings.taskSources.preview': '미리보기',
  'settings.taskSources.previewResult': '{count}개 작업이 이 필터와 일치합니다',
  'settings.taskSources.fetchNow': '지금 가져오기',
  'settings.taskSources.fetching': '가져오는 중…',
  'settings.taskSources.fetchResult':
    '{fetched}개 작업 중 {routed}개 라우팅됨; 오래된 작업 {pruned}개 제거됨',
  'settings.taskSources.syncAll': '모두 동기화',
  'settings.taskSources.syncing': '동기화 중…',
  'settings.taskSources.configured': '구성된 소스',
  'settings.taskSources.empty': '아직 구성된 작업 소스가 없습니다.',
  'settings.taskSources.proactive': '능동형',
  'settings.taskSources.lastFetch': '마지막 가져오기',
  'settings.taskSources.never': '없음',
  'settings.taskSources.statusEnabled': '활성화됨',
  'settings.taskSources.statusDisabled': '비활성화됨',
  'settings.taskSources.enable': '활성화',
  'settings.taskSources.disable': '비활성화',
  'settings.taskSources.remove': '제거',
  'settings.taskSources.removeConfirm':
    '이 작업 소스를 제거하시겠습니까? 수집된 모든 작업 기록이 삭제되며 되돌릴 수 없습니다.',
  'settings.taskSources.refresh': '새로고침',
  'settings.taskSources.providers.github': 'GitHub',
  'settings.taskSources.providers.notion': 'Notion',
  'settings.taskSources.providers.linear': 'Linear',
  'settings.taskSources.providers.clickup': 'ClickUp',
  'skills.dashboard.enable': '예약된 워크플로 활성화',
  'skills.dashboard.disable': '예약된 워크플로 비활성화',
  'skills.dashboard.lastRun': '마지막 실행',
  'skills.dashboard.nextRun': '다음 실행',
  'skills.dashboard.cardOpenRunner': '러너에서 열기',
  'skills.new.title': '워크플로 만들기',
  'settings.agents.title': '에이전트',
  'settings.agents.subtitle':
    '위임에 사용할 수 있는 에이전트를 관리하세요. 기본 제공 에이전트와 직접 만든 사용자 지정 에이전트를 포함합니다.',
  'settings.agents.menuDesc': '기본 제공 및 사용자 지정 에이전트 관리',
  'settings.agents.newAgent': '새 에이전트',
  'settings.agents.loadError': '에이전트를 불러올 수 없습니다',
  'settings.agents.empty': '아직 에이전트가 없습니다',
  'settings.agents.sourceDefault': '기본 제공',
  'settings.agents.sourceCustom': '사용자 지정',
  'settings.agents.enable': '에이전트 활성화',
  'settings.agents.disable': '에이전트 비활성화',
  'settings.agents.edit': '편집',
  'settings.agents.delete': '삭제',
  'settings.agents.reset': '기본값으로 재설정',
  'settings.agents.modelLabel': '모델',
  'settings.agents.toolsLabel': '도구',
  'settings.agents.toolsAll': '모든 도구',
  'settings.agents.toolsCount': '도구 {count}개',
  'settings.agents.actionFailed': '에이전트를 업데이트할 수 없습니다',
  'settings.agents.orchestratorLocked': '오케스트레이터는 항상 활성화되어 있습니다.',
  'settings.agents.editor.createTitle': '새 에이전트',
  'settings.agents.editor.editTitle': '에이전트 편집',
  'settings.agents.editor.id': 'ID',
  'settings.agents.editor.idHint': '소문자, 숫자, _ 및 -만 사용할 수 있습니다.',
  'settings.agents.editor.name': '이름',
  'settings.agents.editor.description': '설명',
  'settings.agents.editor.model': '모델(선택 사항)',
  'settings.agents.editor.modelPlaceholder': '예: inherit, hint:fast 또는 모델 ID',
  'settings.agents.editor.systemPrompt': '시스템 프롬프트(선택 사항)',
  'settings.agents.editor.tools': '허용된 도구',
  'settings.agents.editor.toolsHint':
    '한 줄에 도구 이름을 하나씩 입력하세요. 모든 도구에는 *를 사용하세요.',
  'settings.agents.editor.defaultsNote':
    '기본 제공 에이전트를 편집하면 나중에 재설정할 수 있는 재정의로 저장됩니다.',
  'settings.agents.editor.save': '저장',
  'settings.agents.editor.create': '에이전트 만들기',
  'settings.agents.editor.saving': '저장 중…',
  'nav.workflows': 'Workflows',
  'workflows.title': '워크플로',
  'workflows.subtitle':
    '재사용 가능하고 실행 가능한 절차 — 목표와 그에 도달하는 단계. 새로 만들거나, URL에서 설치하거나, 워크플로를 열어 실행하세요.',
  'workflows.createNew': '새 워크플로',
  'workflows.listHeading': 'Workflows',
  'workflows.delete': '워크플로 삭제',
  'workflows.deleteError': '워크플로 삭제 실패',
  'workflows.warnings': '{count}개 경고',
  'workflows.empty.title': '아직 워크플로가 없습니다',
  'workflows.empty.body':
    '작업 생명주기 단계에 대한 규칙과 스크립트를 정의하려면 워크플로를 만드세요.',
  'workflows.create.title': '새 워크플로',
  'workflows.create.subtitle': '에이전트를 위한 생명주기 연동 규칙 세트를 정의합니다.',
  'workflows.create.name': 'Name',
  'workflows.create.namePlaceholder': '예: Python 프로젝트 워크플로',
  'workflows.create.description': 'Description',
  'workflows.create.descriptionPlaceholder': '이 워크플로는 무엇을 하나요?',
  'workflows.create.whenToUse': '사용 시기',
  'workflows.create.whenToUsePlaceholder': '에이전트가 이 워크플로를 언제 사용해야 하나요?',
  'workflows.create.optional': '(선택 사항)',
  'workflows.create.createBtn': '워크플로 만들기',
  'workflows.create.creating': 'Creating…',
  'workflows.create.createError': '워크플로를 만들 수 없습니다',
  'workflows.create.successTitle': '워크플로 생성됨',
  'workflows.create.successMessage': '성공적으로 생성되었습니다.',
  'workflows.deleteConfirm.title': '워크플로 삭제',
  'workflows.deleteConfirm.body': '"{name}"을(를) 제거하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
  'workflows.detail.tags': 'Tags',
  'workflows.detail.location': 'Location',
  'workflows.detail.warnings': 'Warnings',
  'workflows.detail.phases': 'Phases',
  'workflows.detail.noPhases': '정의된 단계가 없습니다.',
  'workflows.detail.loadError': '전체 워크플로 로드 실패',
  'workflows.phase.rules': 'Rules',
  'workflows.phase.rules.empty': '규칙 없음.',
  'workflows.phase.scripts': 'Scripts',
  'workflows.phase.scripts.empty': '스크립트 없음.',
  'workflows.phase.toolScope': '도구 범위',
  'workflows.phase.toolScope.allow': 'Allow',
  'workflows.phase.toolScope.deny': 'Deny',
  'workflows.phase.toolScope.inherited': '워크플로 기본값에서 상속됨.',
  'workflows.phase.toolScope.empty': '도구 제한 없음.',
  'workflows.phase.context': 'Context',
  'workflows.phase.context.empty': '컨텍스트 제공자 없음.',
  'settings.agentsSection.title': 'Agents',
  'settings.agentsSection.description':
    '에이전트와 그 자율성, 그리고 이 컴퓨터에서 액세스할 수 있는 항목을 관리하세요.',
  'settings.agentsSection.menuDesc': '레지스트리, 자율성 및 OS 접근',
  'settings.cryptoSection.title': '암호화폐',
  'settings.cryptoSection.description': '복구 문구를 관리하고 지갑 계정 전반의 잔액을 확인하세요.',
  'settings.cryptoSection.menuDesc': '복구 문구 및 지갑 잔액',
  'settings.notificationsHub.title': '알림',
  'settings.notificationsHub.description':
    '알림 받은 편지함을 확인하고 알림 환경설정과 라우팅을 관리하세요.',
  'settings.notificationsHub.menuDesc': '알림 받은 편지함 및 알림 환경설정',
  'settings.notificationsHub.settingsItem': '알림 설정',
  'settings.notificationsHub.settingsItemDesc': '환경설정 및 라우팅',
  'settings.agents.editor.notFound': '에이전트를 찾을 수 없습니다.',
  'settings.agents.editor.modelInherit': '상속 (플랫폼 기본값)',
  'settings.agents.editor.modelHints': '라우트 힌트',
  'settings.agents.editor.modelTiers': '모델 등급',
  'settings.agents.editor.modelCustom': '사용자 정의 모델 ID…',
  'settings.agents.editor.modelCustomPlaceholder': '예: anthropic/claude-sonnet-4',
  'settings.agents.editor.selectTools': '도구 추가',
  'settings.agents.editor.toolsAllSelected': '모든 도구',
  'settings.agents.editor.toolsNoneSelected': '선택된 도구 없음',
  'settings.agents.editor.removeToolAria': '{tool} 제거',
  'settings.agents.editor.toolsModalTitle': '허용된 도구',
  'settings.agents.editor.toolsSelectedCount': '{count}개 선택됨',
  'settings.agents.editor.toolsSearchPlaceholder': '도구 검색…',
  'settings.agents.editor.toolsAllowAll': '모든 도구 허용 (*)',
  'settings.agents.editor.toolsAllowAllHint':
    '이 에이전트는 사용 가능한 모든 도구를 사용할 수 있습니다.',
  'settings.agents.editor.toolsLoading': '도구 불러오는 중…',
  'settings.agents.editor.toolsLoadError': '도구를 불러올 수 없습니다',
  'settings.agents.editor.toolsEmpty': '검색 결과와 일치하는 도구가 없습니다.',
  'settings.agents.editor.toolsDone': 'Done',
  'settings.agents.editor.builtInReadonly':
    '기본 제공 에이전트는 편집할 수 없습니다. 에이전트 목록에서 활성화, 비활성화 또는 초기화할 수 있습니다.',
  // Chat — agent-generated artifacts (#2779)
  'chat.artifact.aria': '아티팩트: {title}',
  'chat.artifact.generating': '{kind} 생성 중…',
  'chat.artifact.ready': '준비됨',
  'chat.artifact.failed': '생성 실패',
  'chat.artifact.download': '다운로드',
  'chat.artifact.downloading': '다운로드 중…',
  'chat.artifact.downloaded': '{path}에 저장됨',
  'chat.artifact.download_failed': '다운로드 실패: {reason}',
  'chat.artifact.retry': '다시 시도',
  'chat.artifact.reveal': '폴더에서 보기',
  'chat.artifact.show_more': '더 보기',
  'chat.artifact.show_less': '간단히 보기',

  // Chat — files panel (#3024)
  'chat.files.chip.aria.one': '이 채팅의 파일 {count}개',
  'chat.files.chip.aria.other': '이 채팅의 파일 {count}개',
  'chat.files.panel.aria': '이 채팅의 파일',
  'chat.files.panel.title': '파일 ({count})',
  'chat.files.panel.empty': '아직 파일이 없습니다. 에이전트에 생성을 요청하세요.',
  'chat.files.panel.close': '파일 패널 닫기',
  'chat.files.delete.aria': '{title} 삭제',
  'chat.files.delete.confirm': '이 파일을 삭제할까요?',
  'chat.files.delete.cancel': '취소',
  'chat.files.delete.action': '삭제',
  'chat.files.delete.failed': '파일을 삭제하지 못했습니다. 다시 시도해주세요.',
  'chat.files.error.not_desktop': '다운로드는 데스크톱 앱에서만 사용할 수 있습니다.',
  'chat.files.error.missing_artifact_id': '아티팩트 ID가 없습니다.',
  'chat.files.error.missing_artifact_path': '코어 응답에 아티팩트 경로가 없습니다.',
  'chat.files.error.resolve_failed': '아티팩트를 해석할 수 없습니다. 다시 시도해주세요.',
  'chat.files.error.download_failed': '다운로드에 실패했습니다. 다시 시도해주세요.',
  'chat.files.error.delete_failed': '파일을 삭제하지 못했습니다. 다시 시도해주세요.',
  'autocomplete.debounceMs': '디바운스 (ms)',
  'autocomplete.maxChars': '최대 컨텍스트 문자 수',
  'autocomplete.overlayTtlMs': '오버레이 시간 초과 (ms)',
  'memory.tab.council': 'Council',
  'activity.tabs.automations': '자동화',
  'activity.tabs.automationsDescription':
    '재사용 가능하고 실행 가능한 절차 — 목표와 그것을 달성하기 위한 단계.',
  'activity.tabs.backgroundActivity': '잠재의식',
  'activity.tabs.alerts': '알림',

  'intelligence.agents.title': '에이전트 라이브러리',
  'intelligence.agents.subtitle':
    '실행 가능한 전문가를 살펴보고 지정한 에이전트에 작업을 보냅니다.',
  'intelligence.agents.refresh': '새로고침',
  'intelligence.agents.loading': '에이전트를 불러오는 중…',
  'intelligence.agents.failedToLoad': '에이전트를 불러올 수 없습니다',
  'intelligence.agents.empty': '실행 가능한 에이전트가 없습니다.',
  'intelligence.agents.readOnly': '읽기 전용',
  'intelligence.agents.writeCapable': '쓰기 가능',
  'intelligence.agents.allTools': '모든 도구',
  'intelligence.agents.toolCountOne': '도구 {count}개',
  'intelligence.agents.toolCountOther': '도구 {count}개',
  'intelligence.agents.subagentCountOne': '하위 에이전트 {count}개',
  'intelligence.agents.subagentCountOther': '하위 에이전트 {count}개',
  'intelligence.agents.startChat': '채팅 시작',
  'intelligence.agents.startChatPrompt':
    '이 에이전트와 채팅을 시작하세요. 전문 분야를 소개하고 필요한 정보를 물은 뒤 내 작업을 기다리세요.',
  'intelligence.agents.copyId': 'ID 복사',
  'intelligence.agents.copied': '복사됨',
  'intelligence.agents.taskPlaceholder': '이 에이전트에게 줄 작업',
  'intelligence.agents.runTask': '작업 실행',
  'intelligence.agents.running': '실행 중…',
  'intelligence.agents.runFailed': '선택한 에이전트를 시작할 수 없습니다',
  'intelligence.agents.model.inherit': '상속',
  'intelligence.agents.tier.chat': '채팅',
  'intelligence.agents.tier.reasoning': '추론',
  'intelligence.agents.tier.worker': '작업자',
  'modelCouncil.title': '모델 평의회',
  'modelCouncil.intro':
    '질문 하나를 하면 여러 모델에서 동시에 독립적인 답변을 받고, 의장 모델이 합의점, 이견, 각 모델의 고유한 기여를 종합합니다.',
  'modelCouncil.listTitle': 'Councils',
  'modelCouncil.listIntro':
    '저장된 평의회를 선택하거나, 에이전트와 판사를 편집하거나, 특정 유형의 결정을 위해 새 평의회를 만드세요.',
  'modelCouncil.addCouncil': '새 평의회',
  'modelCouncil.openCouncil': '평의회 열기',
  'modelCouncil.editCouncil': '평의회 편집',
  'modelCouncil.editCurrentCouncil': '현재 평의회 편집',
  'modelCouncil.editCouncilAria': '{name} 편집',
  'modelCouncil.deleteCouncilAria': '{name} 삭제',
  'modelCouncil.backToCouncils': '평의회 목록으로 돌아가기',
  'modelCouncil.saveCouncil': '평의회 저장',
  'modelCouncil.savingCouncil': 'Saving…',
  'modelCouncil.cancelEdit': 'Cancel',
  'modelCouncil.loadingCouncils': '평의회 로드 중…',
  'modelCouncil.noCouncils': '아직 평의회가 없습니다. 하나를 추가하여 시작하세요.',
  'modelCouncil.noCouncilDescription': '설명 없음',
  'modelCouncil.registryErrorPrefix': '평의회 레지스트리 실패:',
  'modelCouncil.councilNameLabel': '평의회 이름',
  'modelCouncil.councilDescriptionLabel': 'Description',
  'modelCouncil.councilDescriptionPlaceholder': '이 평의회를 사용할 시기',
  'modelCouncil.selectModel': 'Select',
  'modelCouncil.modelPickerHelp': '라우팅 힌트를 선택하거나 정확한 공급자 모델을 고정하세요.',
  'modelCouncil.closeModelPicker': 'Close',
  'modelCouncil.hint.chat': '채팅',
  'modelCouncil.hint.code': '코드',
  'modelCouncil.hint.default': '기본값',
  'modelCouncil.hint.reasoning': '추론',
  'modelCouncil.hint.summarize': '요약',
  'modelCouncil.modelPickerHints': 'Hints',
  'modelCouncil.modelPickerProviderModel': '공급자 + 모델',
  'modelCouncil.modelProviderLabel': '모델 공급자',
  'modelCouncil.modelIdLabel': '모델 ID',
  'modelCouncil.useProviderModel': '공급자 모델 사용',
  'modelCouncil.questionLabel': 'Question',
  'modelCouncil.questionPlaceholder': '평의회에 질문하세요…',
  'modelCouncil.membersLabel': '구성원 모델',
  'modelCouncil.maxMembersNote': '최대 {max}개',
  'modelCouncil.memberPlaceholder': '예: gpt-5.2',
  'modelCouncil.memberAria': '구성원 모델 {n}',
  'modelCouncil.removeMemberAria': '구성원 모델 {n} 제거',
  'modelCouncil.addMember': '+ 모델 추가',
  'modelCouncil.settingsTitle': '위원회 설정',
  'modelCouncil.settingsSummary': '배심원 {count}명 · 판사: {judge}',
  'modelCouncil.juryCountLabel': '배심원 수',
  'modelCouncil.debateRoundsLabel': '토론 라운드',
  'modelCouncil.debateRoundsHelp':
    '각 배심원은 판사가 최종 종합 의견을 작성하기 전에 여러 라운드에 걸쳐 토론합니다.',
  'modelCouncil.judgeAgentLabel': '판사 에이전트',
  'modelCouncil.defaultJudge': '기본 판사',
  'modelCouncil.savedProfile': '저장된 프로필',
  'modelCouncil.customAgent': '사용자 지정 에이전트',
  'modelCouncil.judgeProfileLabel': '판사 프로필',
  'modelCouncil.chooseProfile': '프로필 선택',
  'modelCouncil.judgeNameLabel': '판사 이름',
  'modelCouncil.judgeNamePlaceholder': '수석 판사',
  'modelCouncil.rosterHeading': '위원회 명단',
  'modelCouncil.rosterHelp':
    '각 배심원은 기본 에이전트를 상속하거나 저장된 프로필을 사용하거나 이번 실행용 사용자 지정 프로필이 될 수 있습니다.',
  'modelCouncil.loadingProfiles': '프로필 불러오는 중…',
  'modelCouncil.jurorLabel': '배심원 {n}',
  'modelCouncil.profileModeLabel': '프로필 출처',
  'modelCouncil.mode.default': '기본',
  'modelCouncil.mode.profile': '프로필',
  'modelCouncil.mode.custom': '사용자 지정',
  'modelCouncil.memberProfileAria': '배심원 {n} 프로필',
  'modelCouncil.memberNameAria': '배심원 {n} 이름',
  'modelCouncil.memberNamePlaceholder': '에이전트 이름',
  'modelCouncil.profileModelPlaceholder': '프로필 모델 재정의',
  'modelCouncil.memberBriefAria': '배심원 {n} 브리프',
  'modelCouncil.memberBriefPlaceholder': '이 배심원의 관점',
  'modelCouncil.jurorFallback': '배심원',
  'modelCouncil.sharedReasoningLabel': '공유 추론 파일',
  'modelCouncil.sharedReasoningHelp':
    '판사가 종합문을 쓰기 전에 위원회가 이 공유 초안으로 작업합니다.',
  'modelCouncil.liveScratchpadHelp':
    '각 라운드 후 배심원 업데이트가 여기에 추가되어 다음 라운드에 반영됩니다.',
  'modelCouncil.liveScratchpadBadge': 'Live',
  'modelCouncil.scratchpadRoundHeading': '라운드 {round} 업데이트',
  'modelCouncil.scratchpadNoResponse': '응답 없음',
  'modelCouncil.chairLabel': '의장 모델',
  'modelCouncil.chairPlaceholder': '예: claude-opus-4-8',
  'modelCouncil.chairHelp': '의장은 모든 구성원의 답변을 읽고 종합 의견을 작성합니다.',
  'modelCouncil.run': '평의회 소집',
  'modelCouncil.running': 'Convening…',
  'modelCouncil.runningHint': '구성원에게 동시 질의 중, 이후 종합…',
  'modelCouncil.deliberationHeading': '평의회 심의',
  'modelCouncil.deliberationHelp':
    '마스코트가 공유 추론 파일 사용 중 각 에이전트의 사고 상태를 보여줍니다.',
  'modelCouncil.debateRoundInstruction':
    '다른 배심원들에게 응답하세요. 이견을 유지하고, 근거가 있을 때 견해를 수정하며, 현재 결론을 명시적으로 유지하세요.',
  'modelCouncil.debateFinalInstruction':
    '이것은 마지막 배심원 라운드입니다. 증거가 뒷받침하는 곳에서 수렴하고, 남은 이견을 지적하며, 판사에게 명확한 결론을 제시하세요.',
  'modelCouncil.roundLabel': '라운드 {round}',
  'modelCouncil.currentRoundThinking': '다음 라운드 진행 중…',
  'modelCouncil.thinkingBadge': 'Thinking',
  'modelCouncil.thinkingWithBrief': '이 관점에서 작업 중: {brief}',
  'modelCouncil.thought.evidence': '증거, 가정 및 공유 추론 파일에 이미 담긴 내용을 확인 중입니다.',
  'modelCouncil.thought.plan': '실질적인 경로와 실행이 막힐 수 있는 지점을 구상 중입니다.',
  'modelCouncil.thought.risk': '실패 모드, 누락된 맥락, 취약한 결론을 탐색 중입니다.',
  'modelCouncil.thought.tradeoffs':
    '판사에게 간결한 입장을 전달하기 전에 트레이드오프를 비교 중입니다.',
  'modelCouncil.thought.synthesis':
    '판사가 실제 이견을 비교할 수 있도록 고유한 견해를 준비 중입니다.',
  'modelCouncil.judgeWaitingBadge': 'Judge',
  'modelCouncil.judgeWaitingThought': '배심원 답변을 기다린 후 공유 추론 파일을 읽어 종합합니다.',
  'modelCouncil.judgeSynthesizingBadge': 'Synthesizing',
  'modelCouncil.judgeSynthesizingThought':
    '배심원의 실시간 사고를 읽고 최종 평의회 종합 의견을 작성 중입니다.',
  'modelCouncil.errorPrefix': '평의회 실패:',
  'modelCouncil.resultsHeading': '평의회 결과',
  'modelCouncil.memberAnswered': 'Answered',
  'modelCouncil.memberFailed': 'Failed',
  'modelCouncil.synthesisHeading': 'Synthesis',
  'modelCouncil.synthesisBy': '{model} 작성',
  'modelCouncil.usageHeading': '토론 사용량',
  'modelCouncil.usageEstimated':
    '토론 프롬프트와 응답에서 추정된 토큰 수. 실제 가격은 평의회 RPC의 공급자 사용량이 필요합니다.',
  'modelCouncil.usageEstimatedBadge': '추정 토큰',
  'modelCouncil.usageInputTokens': 'Input',
  'modelCouncil.usageOutputTokens': 'Output',
  'modelCouncil.usageTotalTokens': 'Total',
  'graphCohesion.brokerBadge': '브로커',
  'graphCohesion.brokerTitle':
    '구조적 공백: 이 엔티티의 이웃들은 서로 연결되어 있지 않습니다 — 이들 사이의 유일한 연결고리입니다.',
  'graphCohesion.colCohesion': '응집도',
  'graphCohesion.colEntity': '엔티티',
  'graphCohesion.colLinks': '링크',
  'graphCohesion.colRank': '#',
  'graphCohesion.empty': '아직 지식 그래프가 없습니다.',
  'graphCohesion.emptyHint':
    '어시스턴트가 당신에 관한 연결된 사실들을 기록함에 따라, 그 군집화 구조가 여기에 드러납니다.',
  'graphCohesion.errorPrefix': '그래프를 불러올 수 없습니다:',
  'graphCohesion.intro':
    '각 엔티티 주변 이웃이 얼마나 촘촘히 엮여 있는지. 브로커 — 이웃들이 서로 연결되지 않은 엔티티 — 는 그렇지 않으면 분리되었을 클러스터를 묶어주는 단일 지점이며, 빈도나 PageRank 정렬로는 드러낼 수 없는 것입니다.',
  'graphCohesion.loading': '응집도 계산 중…',
  'graphCohesion.metricConnections': '연결',
  'graphCohesion.metricEntities': '엔티티',
  'graphCohesion.metricTriangles': '삼각형',
  'graphCohesion.namespaceAll': '모든 네임스페이스',
  'graphCohesion.namespaceLabel': '네임스페이스',
  'graphCohesion.noBrokers': '아직 연결이 둘 이상인 엔티티가 없습니다.',
  'graphCohesion.rankedHeading': '브로커 — 가장 느슨한 이웃',
  'graphCohesion.retry': '다시 시도',
  'graphCohesion.summaryCaption': '평균 군집계수 {avg} · 전이성 {transitivity}',
  'graphCohesion.title': '그래프 응집도',
  'memory.tab.cohesion': 'Cohesion',

  'harnessInit.title': '설정하는 중',

  'announcement.gotIt': '확인',
  'harnessInit.subtitle': 'OpenHuman이 처음 실행에 필요한 구성 요소를 준비하고 있습니다.',
  'harnessInit.stepPython': 'Python 런타임',
  'harnessInit.stepSpacy': '언어 모델',
  'harnessInit.stepNode': 'Node.js 런타임',
  'harnessInit.statePending': '대기 중',
  'harnessInit.stateRunning': '설치 중…',
  'harnessInit.stateDone': '준비됨',
  'harnessInit.stateSkipped': '건너뜀',
  'harnessInit.stateFailed': '실패',
  'harnessInit.failedMessage':
    '일부 설정 단계가 완료되지 않았습니다. 다시 시도하거나 계속 진행할 수 있습니다 — OpenHuman이 내장 대체 기능을 사용합니다.',
  'harnessInit.retry': '다시 시도',
  'harnessInit.continueAnyway': '그래도 계속',
  'harnessInit.runInBackground': '백그라운드에서 실행',
  'harnessInit.backgroundHint': '이 작업이 완료되는 동안 계속 OpenHuman을 사용할 수 있습니다.',

  'keyring.consent.title': '보안 저장소를 사용할 수 없음',
  'keyring.consent.description':
    '운영 체제 키체인에 접근할 수 없습니다. OpenHuman이 로컬 암호화 저장소를 사용하여 비밀을 저장하려면 귀하의 허가가 필요합니다.',
  'keyring.consent.reasonPrefix': '이유:',
  'keyring.consent.showDetails': '이것은 무엇을 의미하나요?',
  'keyring.consent.hideDetails': '세부 정보 숨기기',
  'keyring.consent.tradeoffTitle': '보안 절충',
  'keyring.consent.tradeoffBody':
    '로컬 암호화 저장소에서는 데이터와 함께 저장된 마스터 키를 사용하여 비밀이 디스크에 암호화됩니다. 이는 하드웨어 기반 보호를 사용하는 OS 키체인보다 덜 안전합니다. 백업이나 파일 동기화에 암호화된 데이터가 포함될 수 있습니다.',
  'keyring.consent.consentButton': '로컬 암호화 저장소 사용',
  'keyring.consent.retryButton': 'OS Keychain 재시도',
  'keyring.consent.declineButton': '거부',
  'keyring.consent.retrying': '재시도 중…',
  'keyring.consent.error': '설정을 저장하지 못했습니다. 다시 시도해 주세요.',
  'keyring.consent.retryFailed': '키체인이 여전히 사용할 수 없습니다.',
  'keyring.settings.title': '보안',
  'keyring.settings.storageMode': '비밀 저장 모드',
  'keyring.settings.mode.osKeychain': 'OS 키체인',
  'keyring.settings.mode.encryptedFile': '로컬 암호화',
  'keyring.settings.mode.consentPending': '구성되지 않음',
  'keyring.settings.mode.declined': '거부됨',
  'keyring.settings.availability': '키체인 가용성',
  'keyring.settings.available': 'OS 키체인 사용 가능',
  'keyring.settings.unavailable': 'OS 키체인 사용 불가',
  'keyring.settings.backend': '백엔드',
  'keyring.settings.retryButton': '키체인 감지 재시도',
  'keyring.settings.retryFailed': '재시도 실패. 키체인이 여전히 사용할 수 없습니다.',
  'keyring.settings.consentTitle': '저장소 동의',
  'keyring.settings.consentDescription':
    'OS 키체인을 사용할 수 없을 때 비밀을 저장하는 방법을 선택하세요.',
  'keyring.settings.grantConsent': '로컬 암호화 저장소 허용',
  'keyring.settings.revokeConsent': '로컬 저장소 거부',
  'pages.settings.account.security': '보안',
  'pages.settings.account.securityDesc': '비밀 저장 모드 및 키체인 상태',
  // #002 memory-pipeline-hardening: degraded badges + typed remediation.
  'memoryTree.status.statusDegraded': '저하됨',
  'memoryTree.status.degradedRecall': '의미 기반 검색 비활성화됨',
  'memoryTree.status.degradedStructure': '위키 구조 불완전',
  'memoryTree.status.extractionCoverage': '추출 범위: 청크의 {pct}%에 구조가 있음',
  'memory.health.remediation.budget_exhausted':
    '메모리 임베딩이 관리형 예산에 도달했습니다. 로컬 Ollama 임베딩을 설정하거나(설정 → AI → 임베딩) 메모리를 계속 구축하려면 자체 임베딩 API 키를 추가하세요.',
  'memory.health.remediation.auth_missing':
    '임베딩 자격 증명을 찾을 수 없습니다. OpenHuman에 로그인하거나 설정 → AI → 임베딩에서 로컬 Ollama 임베딩을 설정하세요.',
  'memory.health.remediation.auth_invalid':
    '임베딩 자격 증명이 거부되었습니다. 다시 인증하거나 설정 → AI → 임베딩에서 로컬 Ollama 임베딩으로 전환하세요.',
  'memory.health.remediation.embeddings_unconfigured':
    '구성된 임베딩 제공자가 없어 의미 기반 검색이 꺼져 있습니다. 로컬 Ollama 임베딩을 설정하거나(권장) 설정 → AI → 임베딩에서 임베딩 키를 추가하세요.',
  'memory.health.remediation.embedding_dim_mismatch':
    '임베딩 모델이 잘못된 벡터 크기를 반환합니다(메모리는 1024차원을 예상함). 1024차원 모델을 선택하거나 제공자에게 1024차원을 요청하세요.',
  'memory.health.remediation.local_model_unavailable':
    '필요한 로컬 모델을 사용할 수 없습니다. Ollama를 설치/실행하고 모델을 다운로드하거나, 설정 → AI에서 이 작업을 클라우드 제공자로 전환하세요.',
  'memory.health.remediation.extraction_timeout':
    '메모리 추출 모델이 시간 초과되어 위키 구조가 거의 없습니다. 설정 → AI에서 메모리 추출 모델을 더 빠른 것으로 변경하세요.',
  'memory.health.remediation.summarizer_unavailable':
    '요약 트리 만들기에 사용할 수 있는 요약 제공자가 없습니다. 로컬 AI(Ollama)를 활성화하거나, 설정 → AI → 메모리에서 클라우드 요약을 활성화하세요.',
  'memory.health.remediation.empty_input_refused':
    '텍스트가 비어 있어 메모리 항목이 건너뛰어졌습니다. 조치가 필요하지 않습니다 — 새 항목은 정상적으로 임베딩됩니다.',
  'memory.health.remediation.storage_unavailable':
    'OpenHuman이 메모리 저장소에 쓸 수 없습니다 — 디스크 또는 SD 카드가 손상되었거나 가득 찼거나 읽기 전용인 것 같습니다. 드라이브를 확인하고 공간을 확보하세요. 저장소에 다시 쓸 수 있게 되면 메모리 처리가 자동으로 재개됩니다.',
  'memory.health.remediation.transient':
    '일시적인 오류로 메모리 처리가 중단되었습니다. 자동으로 다시 시도됩니다.',
  'memory.health.remediation.unknown':
    '메모리 처리 중 문제가 발생했습니다. 설정 → AI에서 구성을 확인하세요.',
  // Chat — agent-generated artifacts (#2779)

  // Chat composer toolbar
  'composer.attachFile': '파일 첨부',
  'composer.modelSelector': '모델',
  'composer.voiceMode': '음성 모드',
  'composer.qualityHigh': '높음',
  // Agent activity level
  'activityLevel.title': '에이전트 활동 수준',
  'activityLevel.description':
    '에이전트의 능동성을 조절하세요. 높은 수준은 더 많은 토큰을 사용합니다.',
  'activityLevel.off': '끄기',
  'activityLevel.offDesc': '백그라운드 처리 없음. 버튼을 눌러야만 동기화됩니다.',
  'activityLevel.minimal': '최소',
  'activityLevel.minimalDesc': '소스를 하루에 한 번 동기화합니다. 능동적 메시지 없음.',
  'activityLevel.moderate': '보통',
  'activityLevel.moderateDesc': '매 시간 동기화. 일일 요약. 작업을 제안합니다.',
  'activityLevel.active': '활성',
  'activityLevel.activeDesc': '10분마다 동기화. 채널 모니터링, 분류, 답변 초안 작성.',
  'activityLevel.alwaysOn': '항상 켜짐',
  'activityLevel.alwaysOnDesc': '실시간 동기화. 가이드라인 내 완전한 자율성.',
  'activityLevel.currentMonth': '이번 달: ${amount}',
  'activityLevel.saved': '활동 수준이 업데이트되었습니다.',
  'activityLevel.default': '기본값',
  'activityLevel.costFree': '$0',
  'activityLevel.costRange': '~${min}–${max}/월',

  // Sync budget dialog
  'syncBudget.title': '동기화 예산',
  'syncBudget.maxTokens': '동기화당 최대 토큰',
  'syncBudget.maxTokensHelp': '이 토큰 수를 소비하면 동기화를 중지합니다.',
  'syncBudget.maxCost': '동기화당 최대 비용 (USD)',
  'syncBudget.maxCostHelp': '각 동기화 실행당 달러 한도.',
  'syncBudget.syncDepth': '동기화 깊이',
  'syncBudget.syncDepthHelp': '이 기간의 항목만 가져옵니다.',
  'syncBudget.days7': '최근 7일',
  'syncBudget.days30': '최근 30일',
  'syncBudget.days90': '최근 90일',
  'syncBudget.allTime': '전체 기간',
  'syncBudget.unlimited': '무제한',
  'syncBudget.saved': '예산이 저장되었습니다.',

  // Sync confirm dialog
  'syncConfirm.title': '동기화 확인',
  'syncConfirm.message': '이 동기화는 ~{items}개 항목 (~{tokens} 토큰, 예상 ${cost})을 처리합니다.',
  'syncConfirm.budgetNote': '예산 한도: ${max}',
  'syncConfirm.proceed': '진행',
  'syncConfirm.cancel': '취소',
  'syncConfirm.estimating': '비용 계산 중...',

  // Monthly cost badge
  'monthlyCost.badge': '이번 달 ${amount}',
  'monthlyCost.noData': '이번 달 동기화 없음',

  // Onboarding: Custom > Activity
  'onboarding.custom.stepperActivity': '활동',
  'onboarding.custom.stepperVault': '볼트',
  'onboarding.custom.activity.title': '에이전트 활동',
  'onboarding.custom.activity.subtitle':
    '에이전트가 백그라운드에서 얼마나 능동적으로 모니터링하고 행동하는지.',
  'onboarding.custom.activity.defaultDesc': '보통 활동 — 매시간 동기화, 일일 요약.',
  'onboarding.custom.activity.configureDesc':
    '자신만의 활동 수준을 선택하세요. 설정 › 에이전트 활동 수준에서 구성하세요.',
  'onboarding.custom.vault.title': '메모리 및 볼트 설정',
  'onboarding.custom.vault.subtitle':
    '메모리 노트가 기록되는 위치, 소스 데이터를 읽는 방법, 볼트 파이프라인이 정상인지 확인하세요.',
  'onboarding.custom.vault.defaultDesc':
    'OpenHuman 관리형 메모리 기본값을 사용합니다. 볼트 경로와 동기화 상태는 나중에 검토할 수 있습니다.',
  'onboarding.custom.vault.configureDesc':
    '볼트 소유권을 검토하고 상태 검사를 실행하며 메모리 컨트롤을 지금 조정하세요.',
  'onboarding.custom.vault.localDisabledReason':
    '관리형 설정은 OpenHuman 로그인이 필요하며 로컬 모드에서는 사용할 수 없습니다.',
  'onboarding.custom.vault.exitError': '온보딩을 완료할 수 없습니다. 다시 시도해 주세요.',
  'vaultHealth.title': '볼트 상태 체크리스트',
  'vaultHealth.setupTitle': '볼트 설정 상태',
  'vaultHealth.workspaceVault': '워크스페이스 볼트:',
  'vaultHealth.refresh': '새로 고침',
  'vaultHealth.refreshing': '새로 고침 중…',
  'vaultHealth.revealFolder': '폴더 표시',
  'vaultHealth.openInObsidian': 'Obsidian에서 열기',
  'vaultHealth.installObsidian': 'Obsidian 설치',
  'vaultHealth.openObsidianError': 'Obsidian을 열 수 없습니다',
  'vaultHealth.revealError': '볼트 폴더를 표시할 수 없습니다',
  'vaultHealth.downloadError': 'Obsidian 다운로드 페이지를 열 수 없습니다',
  'vaultHealth.loadError': '볼트 상태를 불러올 수 없습니다:',
  'vaultHealth.lastSync': '마지막 동기화:',
  'vaultHealth.passed': '통과',
  'vaultHealth.needsAttention': '주의 필요',
  'vaultHealth.existsLabel': '워크스페이스 볼트 경로가 존재합니다',
  'vaultHealth.existsRecovery':
    '볼트 폴더가 없습니다. 동기화를 시작하거나 이 폴더를 만든 후 체크리스트를 새로 고침하세요.',
  'vaultHealth.writableLabel': 'OpenHuman이 볼트에 쓸 수 있습니다',
  'vaultHealth.writableRecovery':
    'OpenHuman이 아직 이 볼트에 쓸 수 없습니다. 쓰기 권한을 부여하고 새로 고침하세요.',
  'vaultHealth.obsidianLabel': '볼트가 Obsidian에 등록되어 있습니다',
  'vaultHealth.obsidianRecovery':
    'Obsidian에서 이 경로에 대해 "폴더를 볼트로 열기"를 선택한 후 체크리스트를 새로 고침하세요.',
  'vaultHealth.pipelineLabel': '메모리 파이프라인이 정상입니다',
  'vaultHealth.pipelineRecovery':
    '메모리 파이프라인이 일시 중지되었거나 오류 상태입니다. 메모리 트리 상태에서 자동 동기화를 다시 활성화하고 재시도하세요.',
  'vaultHealth.timeNever': '없음',
  'vaultHealth.timeJustNow': '방금 전',
  'vaultHealth.timeMinAgo': '{n}분 전',
  'vaultHealth.timeHrAgo': '{n}시간 전',
  'vaultHealth.timeDayAgo': '{n}일 전',
  'vaultHealth.timeDaysAgo': '{n}일 전',
  'memoryData.howItWorks': '메모리 저장 방식',
  'memoryData.workspaceVault': '워크스페이스 볼트 · 쓰기',
  'memoryData.workspaceVaultDesc':
    'OpenHuman이 생성된 메모리 노트를 memory_tree/content에 기록합니다.',
  'memoryData.connectedSources': '연결된 소스 · 읽기',
  'memoryData.connectedSourcesDesc':
    '폴더, 사서함, 채팅, 저장소가 메모리 인덱싱을 위해 가져와집니다 — 원본 파일은 절대 수정되지 않습니다.',
  'memoryData.internalFiles': '내부 메모리 트리 파일',
  'memoryData.internalFilesDesc':
    '인덱스, 큐 상태, 요약은 OpenHuman이 관리하여 회상과 동기화를 정상 상태로 유지합니다.',
  'memoryData.windowError': '메모리 창',
  'memoryData.windowUpdated': '메모리 창 업데이트됨',
  'memoryData.windowUpdatedMsg': '{window}(으)로 설정되었습니다.',
  'skills.create.whenToUse': '사용 시점',
  'skills.create.whenToUsePlaceholder': '예: 사용자가 받은 편지함 정리를 요청할 때',
  'skills.create.whenToUseHelp':
    '에이전트가 이 워크플로 실행을 결정하는 트리거입니다. 비워 두면 설명을 사용합니다.',
  'skills.create.inputs.row.descriptionError': '각 입력에는 설명이 필요합니다.',
  'skills.detail.run': '실행',
  'skills.detail.runAriaLabel': '이 워크플로 실행',
  'skills.run.title': '워크플로',
  'workflows.installFromUrl': 'URL에서 설치',
  // Security banner (approval-gate host-aware boot state)
  'security.approvalGateDisabled.title': '승인 게이트 비활성화됨',
  'security.approvalGateDisabled.body':
    '환경에 OPENHUMAN_APPROVAL_GATE=0이 설정되어 있습니다. 외부 영향이 있는 도구가 확인을 요청하지 않고 실행됩니다.',
  'security.approvalGateOverrideIgnored.title': '재정의 차단됨',
  'security.approvalGateOverrideIgnored.body':
    'OPENHUMAN_APPROVAL_GATE=0 재정의가 감지되었지만 무시되었습니다: 데스크톱 앱은 승인 게이트를 항상 켜둡니다.',

  // Run queue
  'runQueue.mode.interrupt': '중단',
  'runQueue.mode.steer': '방향 조정',
  'runQueue.mode.followup': '후속 조치',
  'runQueue.mode.collect': '컨텍스트 추가',
  'runQueue.queued': '메시지가 대기열에 추가됨',
  'runQueue.steerHint': '현재 턴 방향 조정',
  'runQueue.followupHint': '후속 조치로 대기열에 추가',
  'runQueue.collectHint': '추가 컨텍스트로 추가',
  'runQueue.status': '{total}개 대기 중',
  'runQueue.cleared': '대기열이 비워졌습니다',
  'notch.ready': '준비됨',
  'notch.processing': '처리 중…',
  'notch.listening': '듣는 중…',
  'notch.thinking': '생각 중…',
  'notch.speaking': '말하는 중…',
  'notch.transcribing': '변환 중…',
  'notch.executing': '실행 중…',
  'memory.tab.orchestration': '오케스트레이션',
  'memory.tab.orchestrationDescription':
    '다중 에이전트 워크플로를 실행하세요. 하나의 질문을 병렬 에이전트들에 분산하고, 그 결과를 교차 검증하며, 각 단계가 하나의 종합된 답변으로 완성되는 과정을 지켜보세요.',
  'orchestration.subtitle':
    '다중 에이전트 워크플로를 시작하고, 단계 진행 상황을 지켜보며, 종합된 결과를 확인하세요.',
  'orchestration.loading': '워크플로 불러오는 중…',
  'orchestration.failedToLoad': '워크플로를 불러오지 못했습니다',
  'orchestration.definitions': '사용 가능한 워크플로',
  'orchestration.noDefinitions': '사용 가능한 워크플로 정의가 없습니다.',
  'orchestration.approvalRequired': '승인 필요',
  'orchestration.start': '시작',
  'orchestration.confirmStart': '실행 시작',
  'orchestration.starting': '시작 중…',
  'orchestration.questionLabel': '연구 질문 (선택 사항)',
  'orchestration.questionPlaceholder': '에이전트가 무엇을 조사해야 하나요?',
  'orchestration.runProgress': '실행 진행 상황',
  'orchestration.recentRuns': '최근 실행',
  'orchestration.noRuns': '아직 워크플로 실행이 없습니다.',
  'orchestration.close': '닫기',
  'orchestration.tier.readOnly': '읽기 전용',
  'orchestration.tier.standard': '표준',
  'orchestration.tier.editCapable': '편집 가능',
  'orchestration.approval.title': '이 워크플로 실행 승인',
  'orchestration.approval.body':
    '이것은 고비용 또는 고동시성 실행으로, 시작하기 전에 명시적인 승인이 필요합니다:',
  'orchestration.approval.reason.tier':
    '해당 에이전트는 읽기 전용 조사를 넘어서는 작업을 수행할 수 있습니다.',
  'orchestration.approval.reason.concurrency': '동시에 많은 에이전트를 실행합니다.',
  'orchestration.approval.reason.children':
    '전체적으로 매우 많은 수의 에이전트를 생성할 수 있습니다.',
  'orchestration.approval.tier': '보안 등급',
  'orchestration.approval.concurrency': '동시성',
  'orchestration.approval.maxChildren': '최대 에이전트 수',
  'orchestration.approval.approve': '승인 및 시작',
  'orchestration.approval.starting': '시작 중…',
  'orchestration.approval.cancel': '취소',
  'orchestration.runStatus.pending': '대기 중',
  'orchestration.runStatus.running': '실행 중',
  'orchestration.runStatus.completed': '완료됨',
  'orchestration.runStatus.failed': '실패함',
  'orchestration.runStatus.cancelled': '취소됨',
  'orchestration.runStatus.interrupted': '중단됨',
  'orchestration.phaseStatus.pending': '대기 중',
  'orchestration.phaseStatus.running': '실행 중',
  'orchestration.phaseStatus.completed': '완료됨',
  'orchestration.phaseStatus.failed': '실패함',
  'orchestration.detail.stop': '중지',
  'orchestration.detail.resume': '재개',
  'orchestration.detail.agents': '에이전트',
  'orchestration.detail.childRefs': '하위 에이전트',
  'orchestration.detail.synthesis': '최종 종합',
  // ── Agent Profiles ───────────────────────────────────────────────────────
  'settings.profiles.title': '에이전트 프로필',
  'settings.profiles.subtitle':
    '개성 있는 에이전트 — 각자 고유한 영혼, 기억, 커넥터, 기술을 갖습니다.',
  'settings.profiles.menuDesc': '에이전트 프로필 만들기 및 관리',
  'settings.profiles.new': '새 프로필',
  'settings.profiles.empty': '아직 에이전트 프로필이 없습니다',
  'settings.profiles.loadError': '프로필을 불러오지 못했습니다',
  'settings.profiles.active': '활성',
  'settings.profiles.setActive': '활성으로 설정',
  'settings.profiles.sourceBuiltIn': '기본 제공',
  'settings.profiles.sourceCustom': '사용자 지정',
  'settings.profiles.deleteConfirm': '이 프로필을 삭제할까요? 되돌릴 수 없습니다.',
  'settings.profiles.editor.createTitle': '새 프로필',
  'settings.profiles.editor.editTitle': '프로필 편집',
  'settings.profiles.editor.name': '이름',
  'settings.profiles.editor.id': '식별자',
  'settings.profiles.editor.idHint': '소문자, 숫자, 하이픈만 사용할 수 있습니다.',
  'settings.profiles.editor.description': '설명',
  'settings.profiles.editor.soul': '영혼 (SOUL.md)',
  'settings.profiles.editor.soulHint':
    '이 프로필의 사용자 지정 정체성. 비워 두면 작업 공간의 SOUL.md로 대체됩니다.',
  'settings.profiles.editor.baseAgent': '기본 에이전트',
  'settings.profiles.editor.baseAgentHint':
    '이 프로필이 어떤 에이전트 정의로 실행되는지 (예: orchestrator).',
  'settings.profiles.editor.model': '모델',
  'settings.profiles.editor.modelHint': '선택적 모델 재정의. 비워 두면 기본값을 상속합니다.',
  'settings.profiles.editor.temperature': '온도',
  'settings.profiles.editor.systemPromptSuffix': '시스템 프롬프트 접미사',
  'settings.profiles.editor.agentConversations': '에이전트 대화 회상',
  'settings.profiles.editor.agentConversationsHint':
    '이 프로필의 컨텍스트에 이전 및 교차 채팅 기억을 포함합니다.',
  'settings.profiles.editor.memorySources': '기억 소스',
  'settings.profiles.editor.memorySourcesHint': '이 프로필이 회상하는 기억 소스.',
  'settings.profiles.editor.connectors': '커넥터',
  'settings.profiles.editor.connectorsHint': '이 프로필이 사용할 수 있는 Composio 도구 모음.',
  'settings.profiles.editor.skills': '기술',
  'settings.profiles.editor.skillsHint': '이 프로필이 나열하고 실행할 수 있는 워크플로.',
  'settings.profiles.editor.mcpServers': 'MCP 서버',
  'settings.profiles.editor.mcpServersHint': '이 프로필이 접근할 수 있는 MCP 서버.',
  'settings.profiles.editor.all': '전체',
  'settings.profiles.editor.selected': '선택됨',
  'settings.profiles.editor.addPlaceholder': '식별자를 입력하고 Enter를 누르세요',
  'settings.profiles.editor.removeAria': '{item} 제거',
  'settings.profiles.editor.notFound': '프로필을 찾을 수 없습니다',
  'settings.profiles.editor.saving': '저장 중…',
  'settings.profiles.editor.idRequired': '프로필 식별자는 비워 둘 수 없습니다',
  'agentworld.jobs.applyModal.title': '채용 지원',
  'agentworld.jobs.applyModal.successHeading': '제안이 성공적으로 제출되었습니다!',
  'agentworld.jobs.applyModal.successBody': '채용 공고 게시자가 지원서를 검토할 것입니다.',
  'agentworld.jobs.applyModal.coverLetterLabel': '자기소개서',
  'agentworld.jobs.applyModal.coverLetterPlaceholder':
    '귀하의 경험과 이 직무에 적합한 이유를 설명하세요',
  'agentworld.jobs.applyModal.bidAmountLabel': '제안 금액',
  'agentworld.jobs.applyModal.bidAmountPlaceholder': '예: 450 USDC',
  'agentworld.jobs.applyModal.deliveryLabel': '예상 납기',
  'agentworld.jobs.applyModal.deliveryPlaceholder': '예: 2주',
  'agentworld.jobs.applyModal.cancel': '취소',
  'agentworld.jobs.applyModal.submit': '지원서 제출',
  'agentworld.jobs.applyModal.submitting': '지원 중…',
  'agentworld.messaging.missingSignalBundle':
    '이 사용자는 아직 암호화 메시지를 활성화하지 않았습니다. 메시지를 보내기 전에 Agent World를 열고 보안 DM을 활성화해 달라고 요청하세요.',

  // User-actionable runtime errors (#3931)
  'userErrors.title': '조치 필요',
  'userErrors.dismiss': '닫기',
  'userErrors.action.openBilling': '결제 열기',
  'userErrors.action.openProviderSettings': '제공업체 설정',
  'userErrors.budgetExceeded.title': '관리형 예산 소진',
  'userErrors.budgetExceeded.body': '관리형 AI 예산이 모두 소진되었습니다.',
  'userErrors.insufficientCredits.title': '제공업체 크레딧 필요',
  'userErrors.insufficientCredits.body': 'AI 제공업체 크레딧이 소진되었습니다.',
  'userErrors.apiKeyMissing.title': 'API 키 필요',
  'userErrors.apiKeyMissing.body':
    'AI 제공업체에 API 키가 설정되지 않았습니다. 제공업체 설정에서 추가하세요.',
  'userErrors.scope.chat': '채팅',
  'userErrors.scope.cron': '예약된 작업',
  // Agent World — Identity trading (confirm-before-spend + balance gate)
  'agentWorld.trading.amountLabel': '금액',
  'agentWorld.trading.networkLabel': '네트워크',
  'agentWorld.trading.balanceLabel': '내 잔액',
  'agentWorld.trading.walletLabel': '지갑',
  'agentWorld.trading.balanceUnknown': '알 수 없음',
  'agentWorld.trading.cancel': '취소',
  'agentWorld.trading.addFunds': '자금 추가',
  'agentWorld.trading.confirmPay': '확인 및 결제',
  'agentWorld.trading.confirmCommit': '확인',
  'agentWorld.trading.continue': '계속',
  'agentWorld.trading.submitting': '제출 중…',
  'agentWorld.trading.placeBid': '입찰하기',
  'agentWorld.trading.submitOffer': '제안 보내기',
  'agentWorld.trading.bidTitlePrefix': '입찰:',
  'agentWorld.trading.offerTitlePrefix': '제안:',
  'agentWorld.trading.bidReviewTitlePrefix': '입찰 확인:',
  'agentWorld.trading.offerReviewTitlePrefix': '제안 확인:',
  'agentWorld.trading.spendInsufficient':
    '이 결제를 완료하기에 잔액이 부족합니다. 계속하려면 지갑에 자금을 추가하세요.',
  'agentWorld.trading.spendBroadcastNote': '지갑이 이 결제에 서명하여 다음 네트워크에 전파합니다',
  'agentWorld.trading.commitInsufficientWarning':
    '약정이 수락되면 잔액이 이를 충당하지 못할 수 있습니다. 그래도 제출할 수 있습니다 — 자금은 수락 시에만 이동합니다.',
  'agentWorld.trading.commitSettleNote':
    '이것은 서명된 약정입니다 — 수락된 경우에만 자금이 이동합니다.',
  'agentWorld.trading.commitReviewSubtitle': '제출하기 전에 약정을 검토하세요.',
  'agentWorld.trading.balanceUnverified':
    '지갑 잔액을 확인할 수 없습니다. 그래도 계속할 수 있습니다 — 결제는 제출 시 확인됩니다.',
  'agentWorld.trading.amountTooManyDecimals': '이 금액의 소수점 자릿수가 너무 많습니다.',
  'agentWorld.trading.amountMustBePositive': '0보다 큰 금액을 입력하세요.',
  'agentWorld.trading.amountInvalid': '유효한 금액을 입력하세요.',

  // Code block chrome
  'codeBlock.copy': '복사',
  'codeBlock.copied': '복사됨!',
};

export default messages;
