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

const ko: TranslationMap = {
  // Navigation
  'nav.home': '홈',
  'nav.human': '휴먼',
  'nav.chat': '채팅',
  'nav.connections': '연결',
  'nav.memory': '인텔리전스',
  'nav.alerts': '알림',
  'nav.rewards': '보상',
  'nav.settings': '설정',

  // Common
  // Common
  'common.cancel': '취소',
  'common.save': '저장',
  'common.confirm': '확인',
  'common.delete': '삭제',
  'common.edit': '편집',
  'common.create': '생성',
  'common.search': '검색',
  'common.loading': '로딩 중…',
  '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.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': '계속',

  // Settings Home
  // Settings Home
  'settings.general': '일반',
  'settings.featuresAndAI': '기능 및 AI',
  'settings.billingAndRewards': '결제 및 보상',
  'settings.support': '지원',
  'settings.advanced': '고급',
  'settings.dangerZone': '위험 영역',
  'settings.account': '계정',
  'settings.accountDesc': '복구 문구, 팀, 연결 및 개인정보',
  'settings.notifications': '알림',
  'settings.notificationsDesc': '방해 금지 및 계정별 알림 설정',
  '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.clearAppData': '앱 데이터 삭제',
  'settings.clearAppDataDesc': '로그아웃하고 모든 로컬 앱 데이터를 영구적으로 삭제',
  'settings.logOut': '로그아웃',
  'settings.logOutDesc': '계정에서 로그아웃',
  'settings.language': '언어',
  'settings.languageDesc': '앱 인터페이스 표시 언어',
  'settings.alerts': '알림',
  'settings.alertsDesc': '받은 편지함에서 최근 알림 및 활동 보기',

  // Settings: Account
  'settings.account.recoveryPhrase': '복구 문구',
  'settings.account.recoveryPhraseDesc': '계정 복구 문구를 확인하고 백업합니다',
  'settings.account.team': '팀',
  'settings.account.teamDesc': '팀 구성원과 권한을 관리합니다',
  'settings.account.connections': '연결',
  'settings.account.connectionsDesc': '연결된 계정과 서비스를 관리합니다',
  'settings.account.privacy': '개인정보 보호',
  'settings.account.privacyDesc': '컴퓨터 밖으로 나가는 데이터를 제어합니다',

  // Settings: Notifications
  'settings.notifications.doNotDisturb': '방해 금지',
  'settings.notifications.doNotDisturbDesc': '정해진 시간 동안 모든 알림을 일시 중지합니다',
  'settings.notifications.channelControls': '채널별 설정',
  'settings.notifications.channelControlsDesc': '각 채널의 알림 기본 설정을 구성합니다',

  // Settings: Features
  'settings.features.screenAwareness': '화면 인식',
  'settings.features.screenAwarenessDesc': '어시스턴트가 현재 활성 창을 볼 수 있게 합니다',
  'settings.features.messaging': '메시징',
  'settings.features.messagingDesc': '채널 및 메시징 통합 설정',
  'settings.features.tools': '도구',
  'settings.features.toolsDesc': '연결된 도구와 통합을 관리합니다',

  // Settings: AI & Models
  'settings.ai.localSetup': '로컬 AI 설정',
  'settings.ai.localSetupDesc': '로컬 AI 모델을 다운로드하고 구성합니다',
  'settings.ai.llmProvider': 'LLM 제공업체',
  'settings.ai.llmProviderDesc': 'AI 제공업체를 선택하고 구성합니다',

  // Clear App Data modal
  'clearData.title': '앱 데이터 삭제',
  'clearData.warning': '이 작업은 로그아웃하고 다음 로컬 앱 데이터를 영구적으로 삭제합니다:',
  'clearData.bulletSettings': '앱 설정 및 대화',
  'clearData.bulletCache': '모든 로컬 통합 캐시 데이터',
  'clearData.bulletWorkspace': '워크스페이스 데이터',
  'clearData.bulletOther': '기타 모든 로컬 데이터',
  'clearData.irreversible': '이 작업은 되돌릴 수 없습니다.',
  'clearData.clearing': '앱 데이터를 삭제하는 중...',
  'clearData.failed': '데이터 삭제 및 로그아웃에 실패했습니다. 다시 시도해 주세요.',
  'clearData.failedLogout': '로그아웃에 실패했습니다. 다시 시도해 주세요.',
  'clearData.failedPersist': '저장된 앱 상태를 삭제하지 못했습니다. 다시 시도해 주세요.',

  // Welcome page
  'welcome.title': 'OpenHuman에 오신 것을 환영합니다',
  'welcome.subtitle': '개인용 AI 슈퍼 인텔리전스입니다. 비공개이며, 간단하고, 매우 강력합니다.',
  'welcome.connectPrompt': 'RPC URL 구성(고급)',
  'welcome.selectRuntime': '런타임 선택',
  'welcome.urlPlaceholder': 'http://localhost:8089',
  'welcome.invalidUrl': '올바른 HTTP 또는 HTTPS URL을 입력해 주세요',
  'welcome.connecting': '테스트 중',
  'welcome.connect': '테스트',

  // Home page
  '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': '다크 모드로 전환',

  // Chat / Conversations
  'chat.newThread': '새 스레드',
  'chat.typeMessage': '메시지를 입력하세요...',
  'chat.send': '메시지 보내기',
  'chat.thinking': '생각 중...',
  'chat.noMessages': '아직 메시지가 없습니다',
  'chat.startConversation': '대화 시작',
  'chat.regenerate': '다시 생성',
  'chat.copyResponse': '응답 복사',
  'chat.citations': '인용',
  'chat.toolUsed': '사용된 도구',

  // Skills / Connections
  'scope.legacy': '레거시',
  'scope.user': '사용자',
  'scope.project': '프로젝트',
  'skills.title': '연결',
  'skills.search': '연결 검색...',
  'skills.noResults': '연결을 찾을 수 없습니다',
  'skills.connect': '연결',
  'skills.disconnect': '연결 해제',
  'skills.configure': '관리',
  'skills.connected': '연결됨',
  'skills.available': '사용 가능',
  'skills.addAccount': '계정 추가',
  'skills.channels': '채널',
  'skills.integrations': '통합',

  // Intelligence / Memory
  'memory.title': '메모리',
  'memory.search': '메모리 검색...',
  'memory.noResults': '메모리를 찾을 수 없습니다',
  'memory.empty': '아직 메모리가 없습니다. 메모리는 상호작용하면서 자동으로 생성됩니다.',
  'memory.tab.memory': '메모리',
  'memory.tab.subconscious': '잠재의식',
  'memory.tab.dreams': '꿈',
  'memory.tab.calls': '통화',
  'memory.tab.settings': '설정',
  'memory.analyzeNow': '지금 분석',

  // Notifications / Alerts
  'alerts.title': '알림',
  'alerts.empty': '아직 알림이 없습니다',
  'alerts.markAllRead': '모두 읽음으로 표시',
  'alerts.unread': '읽지 않음',

  // Rewards
  'rewards.title': '보상',
  'rewards.referrals': '추천',
  'rewards.coupons': '교환',
  'rewards.credits': '크레딧',
  'rewards.referralCode': '내 추천 코드',
  'rewards.copyCode': '코드 복사',
  'rewards.share': '공유',

  // Onboarding
  '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: runtime-choice step (Cloud vs Custom)
  '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': '체험용 $1 무료 크레딧',
  'onboarding.runtimeChoice.continueCloud': '간단 모드로 계속',
  'onboarding.runtimeChoice.continueCustom': '사용자 지정으로 계속',
  'onboarding.runtimeChoice.recommended': '추천',

  // Onboarding: API keys step (only when Custom is picked)
  'onboarding.apiKeys.title': 'API 키를 추가해 봅시다',
  'onboarding.apiKeys.subtitle':
    '지금 붙여넣거나 건너뛰고 나중에 설정 › AI에서 추가할 수 있습니다. 키는 이 기기에 저장되며 저장 시 암호화됩니다.',
  'onboarding.apiKeys.openaiLabel': 'OpenAI API 키',
  'onboarding.apiKeys.openaiPlaceholder': 'sk-...',
  'onboarding.apiKeys.anthropicLabel': 'Anthropic API 키',
  'onboarding.apiKeys.anthropicPlaceholder': 'sk-ant-...',
  'onboarding.apiKeys.saveError':
    '해당 키를 저장할 수 없습니다. 다시 확인한 후 다시 시도해 주세요.',
  'onboarding.apiKeys.skipForNow': '지금은 건너뛰기',
  'onboarding.apiKeys.continue': '저장하고 계속',
  'onboarding.apiKeys.saving': '저장 중…',

  // Onboarding: Custom wizard (Inference / Voice / OAuth / Search / Memory)
  'onboarding.custom.stepperInference': '추론',
  'onboarding.custom.stepperVoice': '음성',
  'onboarding.custom.stepperOAuth': 'OAuth',
  'onboarding.custom.stepperSearch': '검색',
  '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 (text)
  'onboarding.custom.inference.title': '추론(텍스트)',
  'onboarding.custom.inference.subtitle':
    '어떤 언어 모델이 질문에 답하고 에이전트를 실행해야 하나요?',
  'onboarding.custom.inference.defaultDesc':
    'OpenHuman은 모든 작업을 적절한 기본 모델로 라우팅합니다. 키도 필요 없고 설정도 필요 없습니다.',
  'onboarding.custom.inference.configureDesc':
    '직접 OpenAI 또는 Anthropic 키를 가져오세요. 모든 텍스트 기반 작업에 이 키를 사용합니다.',
  // Onboarding: Custom > Voice
  '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 (Composio)
  '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
  'onboarding.custom.search.title': '웹 검색',
  'onboarding.custom.search.subtitle': 'OpenHuman이 사용자를 대신해 웹을 검색하는 방식입니다.',
  'onboarding.custom.search.defaultDesc':
    'OpenHuman은 관리형 검색 백엔드를 사용합니다. 키가 필요 없습니다.',
  'onboarding.custom.search.configureDesc':
    '직접 검색 제공업체 키(Tavily, Brave 등)를 가져오세요. 설정 › 도구에서 구성할 수 있습니다.',

  // Onboarding: Custom > Memory
  'onboarding.custom.memory.title': '메모리',
  'onboarding.custom.memory.subtitle':
    'OpenHuman이 사용자의 컨텍스트, 선호도, 이전 대화를 기억하는 방식입니다.',
  'onboarding.custom.memory.defaultDesc':
    'OpenHuman은 메모리 저장과 검색을 자동으로 관리합니다. 설정할 것이 없습니다.',
  'onboarding.custom.memory.configureDesc':
    '메모리를 직접 검사, 내보내기 또는 삭제할 수 있습니다. 설정 › 메모리에서 구성할 수 있습니다.',

  // Accounts
  'accounts.addAccount': '계정 추가',
  'accounts.manageAccounts': '계정 관리',
  'accounts.noAccounts': '연결된 계정이 없습니다',
  'accounts.connectAccount': '시작하려면 계정을 연결하세요',
  'accounts.agent': '에이전트',
  'accounts.respondQueue': '응답 대기열',
  'accounts.disconnect': '연결 해제',
  'accounts.disconnectConfirm': '이 계정의 연결을 해제하시겠습니까?',
  'accounts.searchAccounts': '계정 검색...',

  // Channels
  'channels.title': '채널',
  'channels.configure': '채널 구성',
  'channels.setup': '설정',
  'channels.noChannels': '구성된 채널이 없습니다',
  'channels.addChannel': '채널 추가',
  'channels.status.connected': '연결됨',
  'channels.status.disconnected': '연결 해제됨',
  'channels.status.error': '오류',
  'channels.status.configuring': '구성 중',
  'channels.defaultMessaging': '기본 메시징 채널',

  // Webhooks
  'webhooks.title': '웹훅',
  'webhooks.create': '웹훅 생성',
  'webhooks.noWebhooks': '구성된 웹훅이 없습니다',
  'webhooks.url': 'URL',
  'webhooks.secret': '시크릿',
  'webhooks.events': '이벤트',
  'webhooks.archiveDirectory': '보관 디렉터리',
  'webhooks.todayFile': '오늘의 파일',

  // Invites
  'invites.title': '초대',
  'invites.create': '초대 생성',
  'invites.noInvites': '대기 중인 초대가 없습니다',
  'invites.code': '초대 코드',
  'invites.copyLink': '링크 복사',

  // Developer Options
  'devOptions.title': '고급',
  'devOptions.diagnostics': '진단',
  'devOptions.diagnosticsDesc': '시스템 상태, 로그 및 성능 지표',
  'devOptions.debugPanels': '디버그 패널',
  'devOptions.debugPanelsDesc': '기능 플래그, 상태 검사 및 디버깅 도구',
  'devOptions.webhooks': '웹훅',
  'devOptions.webhooksDesc': '웹훅 통합을 구성하고 테스트합니다',
  'devOptions.memoryInspection': '메모리 검사',
  'devOptions.memoryInspectionDesc': '메모리 항목을 탐색, 쿼리 및 관리합니다',

  // Voice / Dictation
  'voice.pushToTalk': '눌러서 말하기',
  'voice.recording': '녹음 중...',
  'voice.processing': '처리 중...',
  'voice.languageHint': '언어',

  // Misc
  '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 / Recovery
  'mnemonic.title': '복구 문구',
  'mnemonic.warning': '이 단어들을 순서대로 적어 안전한 곳에 보관하세요.',
  'mnemonic.copyWarning':
    '복구 문구를 절대 공유하지 마세요. 이 단어를 가진 사람은 누구나 계정에 접근할 수 있습니다.',
  'mnemonic.copied': '복구 문구가 클립보드에 복사되었습니다',
  'mnemonic.reveal': '문구 보기',
  'mnemonic.hidden': '복구 문구가 숨겨져 있습니다',

  // What Leaves My Computer
  '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':
    '익명 충돌 보고서와 사용 분석을 공유하여 OpenHuman 개선을 도와주세요. 모든 데이터는 완전히 익명화되며, 개인 데이터, 메시지, 지갑 키 또는 세션 정보는 절대 수집되지 않습니다.',
  'privacy.meetingFollowUps': '회의 후속 조치',
  'privacy.autoHandoffMeet': 'Google Meet transcript를 오케스트레이터에 자동 전달',
  'privacy.autoHandoffMeetDesc':
    'Google Meet 통화가 끝나면 OpenHuman의 오케스트레이터가 transcript를 읽고 메시지 초안 작성, 후속 일정 예약, 연결된 Slack 워크스페이스에 요약 게시 같은 작업을 수행할 수 있습니다. 기본값은 꺼짐입니다.',
  'privacy.analyticsDisclaimer':
    '모든 분석 및 버그 보고서는 완전히 익명화됩니다. 활성화하면 충돌 정보, 기기 유형, 오류 파일 위치만 수집합니다. 메시지, 세션 데이터, 지갑 키, API 키 또는 개인 식별 정보에는 절대 접근하지 않습니다. 이 설정은 언제든지 변경할 수 있습니다.',

  // Settings: About
  '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: AI
  '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
  'settings.notifications.suppressAll': '모든 알림 억제',
  'settings.notifications.suppressAllDesc':
    '포커스 상태와 관계없이 내장 앱의 모든 OS 알림 토스트를 차단합니다.',
  'settings.notifications.toggleDnd': '방해 금지 전환',
  'settings.notifications.categories': '카테고리',
  'settings.notifications.categoryFooter':
    '카테고리를 비활성화하면 해당 유형의 새 알림이 알림 센터에 표시되지 않습니다. 기존 알림은 삭제될 때까지 남아 있습니다.',

  // Settings: Billing
  'settings.billing.movedToWeb': '결제가 웹으로 이동됨',
  'settings.billing.openDashboard': '결제 대시보드 열기',
  'settings.billing.movedToWebDesc':
    '구독 변경, 결제 수단, 크레딧 및 인보이스는 이제 웹의 TinyHumans에서 관리됩니다.',
  'settings.billing.backToSettings': '설정으로 돌아가기',
  'settings.billing.openingBrowser': '브라우저를 여는 중...',
  'settings.billing.browserNotOpen': '브라우저가 열리지 않았다면 위 버튼을 사용하세요.',
  'settings.billing.browserOpenFailed': '브라우저를 자동으로 열 수 없습니다. 위 버튼을 사용하세요.',

  // Settings: Tools
  'settings.tools.chooseCapabilities':
    'OpenHuman이 사용자를 대신해 사용할 수 있는 기능을 선택하세요.',
  'settings.tools.saveChanges': '변경 사항 저장',
  'settings.tools.preferencesSaved': '기본 설정이 저장되었습니다',
  'settings.tools.saveFailed': '기본 설정 저장에 실패했습니다. 다시 시도하세요.',

  // Settings: Screen Awareness
  '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
  '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
  'channels.status.connecting': '연결 중',
  'channels.status.notConfigured': '구성되지 않음',
  'channels.noActiveRoute': '활성 경로 없음',
  'channels.activeRoute': '활성 경로',
  'channels.loadingDefinitions': '채널 정의를 불러오는 중...',
  'channels.channelConnections': '채널 연결',
  'channels.configureAuthModes': '각 메시징 채널의 인증 모드를 구성합니다.',
  'channels.configNotAvailable': '구성을 사용할 수 없음:',
  'channels.channel': '채널',

  // Dev Options
  '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.failed': '실패',
  'devOptions.appLogs': '앱 로그',
  'devOptions.appLogsDesc':
    '일별 롤링 로그 파일이 들어 있는 폴더를 엽니다. 문제를 보고할 때 가장 최근 파일을 첨부하세요.',
  'devOptions.openLogsFolder': '로그 폴더 열기',

  // Mnemonic
  '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': '문제가 발생했습니다. 다시 시도해 주세요.',

  // Team
  '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.inviteCode': '초대 코드',
  'team.joining': '참가 중...',
  'team.join': '참가',
  'team.leaveTeam': '팀 나가기',
  'team.confirmLeave': '정말로 나가시겠습니까',
  'team.leaveWarning':
    '팀과 모든 팀 리소스에 대한 접근 권한을 잃게 됩니다. 다시 참가하려면 새 초대가 필요합니다.',
  'team.management': '팀 관리',
  'team.notFound': '팀을 찾을 수 없습니다',
  'team.accessDenied': '접근이 거부되었습니다',
  'team.members': '멤버',

  // Voice
  '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': '음성 디버그',

  // Autocomplete
  '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
  'chat.agentChat': '에이전트 채팅',
  'chat.overrides': '재정의',
  'chat.model': '모델',
  'chat.temperature': '온도',
  'chat.conversation': '대화',
  'chat.startAgentConversation': '에이전트와 대화를 시작하세요.',
  'chat.you': '나',
  'chat.agent': '에이전트',
  'chat.askAgent': '에이전트에게 무엇이든 물어보세요...',
  'chat.sendMessage': '메시지 보내기',

  // Composio
  'composio.triageTitle': '통합 트리거',
  'composio.triageDesc':
    '활성화되면 들어오는 각 Composio 트리거가 이벤트를 분류하고 자동 작업을 시작할 수 있는 AI 선별 단계를 거칩니다 — 트리거당 로컬 LLM 턴 하나가 사용됩니다. 수동 검토를 선호한다면 전체 또는 통합별로 비활성화하세요. 환경 변수가',
  'composio.disableAllTriage': '모든 트리거에 대한 AI 선별 비활성화',
  'composio.triggersStillRecorded': '트리거는 기록에 계속 저장됩니다 — LLM 턴은 실행되지 않습니다.',
  'composio.disableSpecificIntegrations': '특정 통합에 대한 AI 선별 비활성화',
  'composio.settingsSaved': '설정이 저장되었습니다',
  'composio.saveFailed': '저장에 실패했습니다. 다시 시도하세요.',

  // Cron
  'cron.title': 'Cron 작업',
  'cron.scheduledJobs': '예약된 작업',
  'cron.manageCronJobs': '코어 스케줄러에서 cron 작업을 관리합니다.',
  'cron.refreshCronJobs': 'Cron 작업 새로고침',

  // Local Model
  'localModel.modelStatus': '모델 상태',
  'localModel.downloadModels': '모델 다운로드',
  'localModel.usage': '사용량',
  'localModel.usageDesc':
    '로컬 모델에서 실행할 하위 시스템을 선택하세요. 꺼진 항목은 클라우드를 사용합니다.',
  'localModel.enableRuntime': '로컬 AI 런타임 활성화',
  'localModel.enableRuntimeDesc':
    '마스터 스위치입니다. 기본값은 꺼짐이며 Ollama는 유휴 상태로 유지됩니다. 켜면 트리 요약기, 화면 인텔리전스, 자동 완성이 항상 로컬 모델을 사용합니다.',
  'localModel.advancedSettings': '고급 설정',
  'localModel.debugTitle': '로컬 모델 디버그',

  // Screen Awareness
  'screenAwareness.debugTitle': '화면 인식 디버그',

  // Memory
  'memory.debugTitle': '메모리 디버그',

  // Webhooks
  'webhooks.debugTitle': '웹훅 디버그',

  // Notifications
  'notifications.routingTitle': '알림 라우팅',

  // Common (additional)
  'common.reload': '다시 불러오기',
  'common.skip': '건너뛰기',
  'common.disable': '비활성화',
  'common.enable': '활성화',

  // Chat (additional)
  'chat.safetyTimeout': '2분 후에도 에이전트의 응답이 없습니다. 다시 시도하거나 연결을 확인하세요.',
  'chat.filter.all': '전체',
  'chat.filter.work': '업무',
  'chat.filter.briefing': '브리핑',
  'chat.filter.notification': '알림',
  'chat.filter.workers': '워커',
  'chat.selectThread': '스레드 선택',
  'chat.threads': '스레드',
  'chat.noThreads': '아직 스레드가 없습니다',
  'chat.noLabelThreads': '"{label}" 스레드가 없습니다',
  'chat.noWorkerThreads': '아직 워커 스레드가 없습니다',
  'chat.deleteThread': '스레드 삭제',
  'chat.deleteThreadConfirm': '"{title}" 스레드를 삭제하시겠습니까?',
  'chat.untitledThread': '제목 없는 스레드',
  'chat.hideSidebar': '사이드바 숨기기',
  'chat.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.transcribing': '전사 중...',
  'chat.stopAndSend': '중지하고 보내기',
  'chat.startTalking': '말하기 시작',
  'chat.playingVoiceReply': '음성 응답 재생 중',
  'chat.voiceHint': '마이크를 사용해 말하세요',
  'chat.micUnavailable': '마이크를 사용할 수 없습니다',
  'chat.turn': '턴',
  'chat.turns': '턴',
  'chat.openWorkerThread': '워커 스레드 열기',

  // Memory (additional)
  '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
  'mic.unavailable': '마이크를 사용할 수 없습니다',
  'mic.permissionDenied': '마이크 권한이 거부되었습니다',
  'mic.failedToStartRecorder': '녹음기를 시작하지 못했습니다',
  'mic.transcribing': '전사 중...',
  'mic.tapToSend': '탭하여 보내기',
  'mic.waitingForAgent': '에이전트를 기다리는 중...',
  'mic.tapAndSpeak': '탭하고 말하기',
  'mic.stopRecording': '녹음을 중지하고 보내기',
  'mic.startRecording': '녹음 시작',

  // Token
  'token.usageLimitReached': '사용 한도에 도달했습니다',
  'token.approachingLimit': '한도에 가까워지고 있습니다',
  'token.planClickForDetails': '플랜 - 자세한 내용을 보려면 클릭',
  'token.sessionTokens': '입력: {in} | 출력: {out} | 턴: {turns}',
  'token.limit': '한도 도달',

  // Catalog
  'catalog.noCapabilityBinding': '기능 바인딩 없음',
  'catalog.downloadFailed': '다운로드 실패',
  'catalog.active': '활성',
  'catalog.installed': '설치됨',
  'catalog.notDownloaded': '다운로드되지 않음',
  'catalog.inUse': '사용 중',
  'catalog.use': '사용',
  'catalog.deleteModel': '모델 삭제',
  'catalog.download': '다운로드',

  // Navigator
  'navigator.recent': '최근',
  'navigator.today': '오늘',
  'navigator.thisWeek': '이번 주',
  'navigator.sources': '소스',
  'navigator.email': '이메일',
  'navigator.slack': 'Slack',
  'navigator.chat': '채팅',
  'navigator.documents': '문서',
  'navigator.people': '사람',
  'navigator.topics': '주제',

  // Dreams
  'dreams.description': '꿈은 메모리의 패턴을 종합하는 AI 생성 반영입니다.',
  'dreams.comingSoon': '곧 제공 예정',

  // Assignment
  'assignment.memoryLlm': '메모리 LLM',
  'assignment.memoryLlmAria': '메모리 LLM 선택',
  'assignment.embedder': '임베더',
  'assignment.loaded': '로드됨',
  'assignment.notDownloaded': '다운로드되지 않음',
  'assignment.usedForExtractSummarise': '추출 및 요약에 사용됨',

  // Insights
  'insights.knownFacts': '알려진 사실',
  'insights.preferences': '선호도',
  'insights.relationships': '관계',
  'insights.skills': '스킬',
  'insights.opinions': '의견',
  'insights.other': '기타',
  'insights.title': '인사이트',
  'insights.empty': '아직 인사이트가 없습니다. 메모리가 늘어나면 인사이트가 생성됩니다.',
  'insights.description': '메모리 그래프의 {count}개 관계를 기반으로 합니다.',
  'insights.items': '항목',
  'insights.more': '더 보기',

  // Calls
  '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
  'workspace.wipeConfirm': '모든 메모리를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
  'workspace.resetTreeConfirm': '메모리 트리를 다시 빌드하시겠습니까?',
  'workspace.wipeTitle': '메모리 삭제',
  'workspace.resetting': '초기화 중...',
  'workspace.resetMemory': '메모리 초기화',
  'workspace.resetTreeTitle': '메모리 트리 다시 빌드',
  'workspace.rebuilding': '다시 빌드 중...',
  'workspace.resetMemoryTree': '메모리 트리 초기화',
  'workspace.building': '빌드 중...',
  'workspace.buildSummaryTrees': '요약 트리 빌드',
  'workspace.viewVault': '볼트 보기',
  'workspace.graphLoadFailed': '메모리 그래프를 불러오지 못했습니다',
  'workspace.loadingGraph': '메모리 그래프를 불러오는 중...',
  'workspace.graphViewMode': '메모리 그래프 보기 모드',
  'workspace.trees': '트리',
  'workspace.contacts': '연락처',

  // Graph
  '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': '사람',

  // Modal
  'modal.dontShowAgain': '비슷한 제안을 다시 표시하지 않기',

  // Reflections
  'reflections.loading': '반영을 불러오는 중...',
  'reflections.empty': '아직 반영이 없습니다',
  'reflections.title': '반영',
  'reflections.proposedAction': '제안된 작업',
  'reflections.act': '실행',
  'reflections.dismiss': '닫기',

  // WhatsApp
  'whatsapp.chatsSynced': '채팅 동기화됨',
  'whatsapp.chatSynced': '채팅 동기화됨',

  // Sync
  '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': '아직 메모리에 동기화된 콘텐츠가 없습니다. 시작하려면 통합을 연결하세요.',

  // Backend
  'backend.aiBackend': 'AI 백엔드',
  'backend.cloud': '클라우드',
  'backend.recommended': '추천',
  'backend.cloudDescription':
    '서버에서 호스팅되는 빠르고 강력한 모델입니다. 즉시 사용할 수 있습니다.',
  'backend.privacyNote': '개인 데이터, 메시지 또는 키는 서버로 전송되지 않습니다.',
  'backend.local': '로컬',
  'backend.advanced': '고급',
  'backend.localDescription':
    'Ollama를 사용하여 자신의 컴퓨터에서 모델을 실행합니다. 완전한 개인정보 보호를 제공하지만 설정이 필요합니다.',
  'backend.ramRecommended': '16GB 이상 RAM 권장',

  // Subconscious
  'subconscious.tasks': '작업',
  'subconscious.ticks': '틱',
  'subconscious.last': '마지막',
  'subconscious.failed': '실패',
  'subconscious.tickInterval': '틱 간격',
  'subconscious.runNow': '지금 실행',
  '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': '건너뜀',

  // Actionable
  'actionable.complete': '완료',
  'actionable.dismiss': '닫기',
  'actionable.snooze': '다시 알림',
  'actionable.new': '새 항목',

  // Stats
  'stats.storage': '저장소',
  'stats.files': '파일',
  'stats.documents': '문서',
  'stats.today': '오늘',
  'stats.namespaces': '네임스페이스',
  'stats.relations': '관계',
  'stats.firstMemory': '첫 번째 메모리',
  'stats.latest': '최신',
  'stats.sessions': '세션',
  'stats.tokens': '토큰',

  // Boot Check Gate
  'bootCheck.invalidUrl': '런타임 URL을 입력해 주세요.',
  'bootCheck.urlMustStartWith': 'URL은 http:// 또는 https://로 시작해야 합니다',
  'bootCheck.validUrlRequired': '유효한 URL처럼 보이지 않습니다(예: https://core.example.com/rpc)',
  'bootCheck.tokenRequired': '연결하려면 인증 토큰이 필요합니다.',
  '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': '문제가 발생했습니다. 다시 시도해 주세요.',

  // Notifications: category labels & timestamps
  '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': '중요',

  // About / Updates: status summary phrases
  '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: connection error messages
  'welcome.connectionFailed': '연결 실패: {status} {statusText}',
  'welcome.connectionFailedMsg': '연결 실패: {message}',

  // Chat: Agent chat panel description
  'chat.agentChatDesc': '에이전트와 직접 채팅 세션을 엽니다.',

  // Channels: active route interpolated value
  'channels.activeRouteValue': '{channel} via {authMode}',

  // Privacy: data kind labels for What Leaves My Computer
  'privacy.dataKind.messages': '메시지',
  'privacy.dataKind.agents': '에이전트',
  'privacy.dataKind.skills': '스킬',
  'privacy.dataKind.system': '시스템',
  'privacy.dataKind.meetings': '회의',
  'privacy.dataKind.reminders': '리마인더',
  'privacy.dataKind.important': '중요',

  // Onboarding: supplementary keys
  'onboarding.enableLocalAI': '로컬 AI 활성화',
  'onboarding.skills.status.available': '사용 가능',
  'onboarding.skills.status.connected': '연결됨',
  'onboarding.skills.status.connecting': '연결 중',
  'onboarding.skills.status.error': '오류',
  'onboarding.skills.status.unavailable': '사용할 수 없음',

  // Composio: miscellaneous
  'composio.statusUnavailable': '상태를 사용할 수 없음',
  'composio.authExpired': '인증이 만료됨',
  'composio.reconnect': '다시 연결',
  'composio.envVarOverrides': '설정되어 있으며, 이 설정을 재정의합니다.',

  // Memory: day-of-week labels for heatmap
  'memory.day.sun': '일',
  'memory.day.mon': '월',
  'memory.day.tue': '화',
  'memory.day.wed': '수',
  'memory.day.thu': '목',
  'memory.day.fri': '금',
  'memory.day.sat': '토',

  // Memory: ingestion status labels
  'memory.ingesting': '수집 중',
  'memory.ingestionQueued': '대기열에 추가됨',
  'memory.ingestingTitle': '{title} 수집 중',

  // Mic: error messages
  'mic.noAudioCaptured': '캡처된 오디오가 없습니다',
  'mic.noSpeechDetected': '음성이 감지되지 않았습니다',
  'mic.failedToStopRecording': '녹음을 중지하지 못했습니다: {message}',
  'mic.transcriptionFailed': '전사에 실패했습니다: {message}',

  // Reflections: kind labels
  'reflections.kind.retrospective': '회고',
  'reflections.kind.derivedFact': '파생된 사실',
  'reflections.kind.moodInsight': '기분 인사이트',
  'reflections.kind.relationshipInsight': '관계 인사이트',

  // Graph: tooltip keys
  'graph.tooltip.summary': '요약',
  'graph.tooltip.contact': '연락처',

  // Local Model: usage labels
  'localModel.usage.never': '사용 안 함',
  'localModel.usage.mediumLoad': '중간 부하',
  'localModel.usage.lowLoad': '낮은 부하',
  'localModel.usage.idleMode': '유휴 모드',
  'localModel.rebootstrapComplete': '모델 재부트스트랩 완료.',
  'localModel.modelsVerified': '로컬 모델 확인 완료.',

  // === i18n migration: extracted strings (auto-merged) ===
  '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.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': 'OpenHuman이 계정에 접근할 수 있도록 앱을 연결하세요.',
  'app.openhumanLink.accounts.webviewNote':
    '자격 증명은 이 기기에 보관되며 절대 공유되지 않습니다.',
  'app.openhumanLink.billing.openDashboard': '대시보드 열기',
  'app.openhumanLink.billing.stayOnTrial': '체험판 유지',
  'app.openhumanLink.billing.trialCredit': '체험 크레딧',
  'app.openhumanLink.billing.trialDesc': '체험 설명',
  'app.openhumanLink.defaultBody':
    '아직 팝업에서 준비되지 않았습니다. 완료되면 전체 설정 페이지를 여세요.',
  'app.openhumanLink.discord.intro': 'Discord에서 OpenHuman 커뮤니티에 참여하세요.',
  'app.openhumanLink.discord.openInvite': '초대 링크 열기',
  'app.openhumanLink.discord.perk1': '새 기능 조기 이용',
  'app.openhumanLink.discord.perk2': '다른 OpenHuman 사용자와 연결',
  'app.openhumanLink.discord.perk3': '팀에 직접 피드백 공유',
  'app.openhumanLink.discord.perk4': '커뮤니티 도움말 및 지원',
  'app.openhumanLink.done': '완료',
  'app.openhumanLink.loadingChannelSetup': '채널 설정 불러오는 중',
  'app.openhumanLink.maybeLater': '나중에',
  'app.openhumanLink.notifications.asking': 'OS에 요청 중…',
  'app.openhumanLink.notifications.blocked': '알림이 차단됨',
  'app.openhumanLink.notifications.blockedStep1': '시스템 설정 열기',
  'app.openhumanLink.notifications.blockedStep2': '알림 → OpenHuman으로 이동',
  'app.openhumanLink.notifications.blockedStep3': '알림 허용 활성화',
  'app.openhumanLink.notifications.intro': 'OpenHuman이 알림을 보낼 수 있도록 허용하세요.',
  '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.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': '${formatBytes(downloaded)} 다운로드됨',
  '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': '이 토큰은 한 번만 사용할 수 있습니다.',
  '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': 'Telegram 계정 연결 중…',
  'channels.telegram.managedDmTimeout': '연결 시간이 초과되었습니다. 다시 시도하세요.',
  'channels.telegram.reconnect': '다시 연결',
  'channels.telegram.savedRestartRequired':
    '채널이 저장되었습니다. 활성화하려면 앱을 다시 시작하세요.',
  'channels.web.alwaysAvailable': '항상 사용 가능',
  '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': '명령 팔레트',
  'composio.connect.additionalConfigRequired': '추가 구성이 필요합니다',
  'composio.connect.atlassianSubdomainHint': 'acme',
  'composio.connect.atlassianSubdomainLabel': 'Atlassian 하위 도메인',
  'composio.connect.connect': '연결',
  'composio.connect.connectionFailed': '연결 실패(상태: ${hit.status}).',
  'composio.connect.disconnectFailed': '연결 해제 실패: {msg}',
  'composio.connect.disconnecting': '연결 해제 중…',
  'composio.connect.idleDescription': '다음을 연결하세요:',
  'composio.connect.idleDescriptionSuffix':
    '계정. 브라우저 창을 열면 그곳에서 접근을 승인하고, 이 앱이 자동으로 연결을 감지합니다.',
  'composio.connect.isConnected': '연결되었습니다.',
  'composio.connect.manage': '관리',
  '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.retryConnection': '연결 다시 시도',
  'composio.connect.scopeLoadError': '범위 기본 설정을 불러올 수 없습니다: {msg}',
  'composio.connect.scopeSaveError': '{key} 범위를 저장할 수 없습니다: {msg}',
  'composio.connect.subdomainInvalid':
    '전체 URL이 아닌 짧은 하위 도메인만 입력하세요(예: "acme"). 문자, 숫자, 하이픈만 포함해야 합니다.',
  'composio.connect.subdomainRequired': '계속하려면 Atlassian 하위 도메인을 입력하세요.',
  'composio.connect.wabaIdLabel': 'WhatsApp Business Account ID (WABA ID)',
  '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.needsConfiguration': '구성이 필요합니다',
  'composio.triggers.noneAvailable': '현재 사용할 수 있는 트리거가 없습니다:',
  'conversations.taskKanban.moveLeft': '왼쪽으로 이동',
  'conversations.taskKanban.moveRight': '오른쪽으로 이동',
  'conversations.taskKanban.title': '작업',
  'conversations.toolTimeline.turn': '턴',
  'conversations.toolTimeline.workerThread': '워커 스레드',
  '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': '지원을 받고, 피드백을 공유하고, 커뮤니티를 만나보세요.',
  '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': '프로모션 크레딧이 계정에 추가되었습니다.',
  'home.banners.promoCreditsTitle': '{amount}',
  'home.banners.promoCreditsUsage': '모든 AI 작업에 사용할 수 있습니다.',
  '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.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': '스레드 {id}',
  'notifications.card.dismiss': '알림 닫기',
  'notifications.card.importanceTitle': '중요도: {pct}%',
  'notifications.center.empty': '아직 알림이 없습니다',
  'notifications.center.emptyHint': '모두 확인했습니다.',
  'notifications.center.filterAll': '전체 필터',
  'notifications.center.markAllRead': '모두 읽음으로 표시',
  'notifications.center.title': '알림',
  'oauth.button.connecting': '연결 중...',
  'oauth.login.continueWith': '다음으로 계속:',
  'onboarding.contextGathering.buildingDesc': '연결된 계정에서 컨텍스트를 수집하는 중…',
  'onboarding.contextGathering.buildingProfile': '프로필을 만드는 중...',
  'onboarding.contextGathering.continueToChat': '채팅으로 계속',
  'onboarding.contextGathering.errorDesc':
    '채팅이 준비되었습니다. 전체 프로필은 백그라운드에서 계속 만들 예정이므로 지금 계속하고 나중에 점진적으로 개선할 수 있습니다.',
  'onboarding.contextGathering.title': '컨텍스트 수집',
  'openhuman.team_list_teams': '팀 목록 팀',
  'overlay.ariaAttention': '주의 메시지',
  'overlay.ariaOrb': 'OpenHuman 오버레이',
  'overlay.ariaVoiceActive': '음성 입력 활성',
  'overlay.orbTitle': '드래그하여 이동 · 두 번 클릭하여 위치 초기화',
  'pages.settings.account.connections': '연결',
  'pages.settings.account.connectionsDesc': '연결된 계정과 서비스를 관리합니다',
  'pages.settings.account.privacy': '개인정보 보호',
  'pages.settings.account.privacyDesc': '컴퓨터 밖으로 나가는 데이터를 제어합니다',
  'pages.settings.account.recoveryPhrase': '복구 문구',
  'pages.settings.account.recoveryPhraseDesc': '계정 복구 문구를 확인하고 백업합니다',
  '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': '언어 모델 제공업체 및 라우팅',
  'pages.settings.ai.voice': '음성',
  'pages.settings.ai.voiceDesc': '음성-텍스트 및 텍스트-음성 설정',
  'pages.settings.aiSection.description': '언어 모델 제공업체, 로컬 Ollama 및 음성(STT / TTS).',
  'pages.settings.aiSection.title': 'AI',
  '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.cumulativeTokens': '누적 토큰',
  'rewards.community.currentStreak': '현재 연속 기록',
  'rewards.community.discordLinkedNotInGuild': 'Discord 연결됨 — 아직 서버 멤버가 아닙니다',
  'rewards.community.discordMember': '서버에 참여함',
  'rewards.community.discordNotLinked': 'Discord가 연결되지 않음',
  'rewards.community.discordServer': 'Discord 서버',
  'rewards.community.discordStatusUnavailable': 'Discord 상태를 사용할 수 없음',
  'rewards.community.discordWaiting': 'Discord 대기 중…',
  'rewards.community.heroSubtitle': '친구를 추천하고 챌린지를 완료하여 크레딧을 받으세요.',
  'rewards.community.heroTitle': 'OpenHuman으로 보상 받기',
  'rewards.community.joinDiscord': 'Discord 참여',
  'rewards.community.loadingRewards': '보상 불러오는 중…',
  'rewards.community.locked': '잠김',
  'rewards.community.retrying': '다시 시도 중…',
  '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': '연결됨',
  'rewards.referralSection.loading': '추천 프로그램 불러오는 중…',
  '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': 'OpenHuman',
  'settings.ai.discard': '취소',
  'settings.ai.editProvider': '{label} 편집',
  'settings.ai.llmProviders': 'LLM 제공업체',
  'settings.ai.llmProvidersDesc': '언어 모델 제공업체를 추가하고 구성합니다.',
  'settings.ai.localOllama': '로컬(Ollama)',
  'settings.ai.modelLabel': '모델',
  'settings.ai.noCustomProviders': '사용자 지정 제공업체 없음',
  'settings.ai.providerLabel': '제공업체',
  'settings.ai.routing': '라우팅',
  '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.autocomplete.appFilter.acceptSuggestion': '제안 수락',
  'settings.autocomplete.appFilter.contextOverride': '컨텍스트 재정의(선택 사항)',
  'settings.autocomplete.appFilter.debugFocus': '포커스 디버그',
  'settings.autocomplete.appFilter.getSuggestion': '제안 받기',
  'settings.autocomplete.appFilter.liveLogs': '실시간 로그',
  'settings.autocomplete.appFilter.noLogs': ') :',
  'settings.autocomplete.appFilter.refreshStatus': '새로고침 중…',
  'settings.autocomplete.appFilter.refreshing': '새로고침 중…',
  '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.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.noCards': '카드 없음',
  'settings.billing.autoRecharge.paymentMethods': '결제 수단',
  'settings.billing.autoRecharge.rechargeInProgress': '충전 진행 중',
  '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.remaining': '남음',
  'settings.billing.inferenceBudget.tenHourCap': '10시간 한도',
  'settings.billing.inferenceBudget.title': '추론 예산',
  'settings.billing.payAsYouGo.available': '사용 가능',
  'settings.billing.payAsYouGo.chargeCustomAmount': '여는 중…',
  'settings.billing.payAsYouGo.chooseTopUpDesc': '크레딧 잔액에 추가할 금액을 선택하세요.',
  'settings.billing.payAsYouGo.chooseTopUpTitle': '크레딧 충전',
  'settings.billing.payAsYouGo.creditBalanceDesc': 'AI 사용을 위한 사용 가능 크레딧입니다.',
  'settings.billing.payAsYouGo.creditBalanceTitle': '크레딧 잔액',
  'settings.billing.payAsYouGo.customAmount': '사용자 지정 금액',
  'settings.billing.payAsYouGo.enterAmount': '금액 입력',
  'settings.billing.payAsYouGo.opening': '{amount}',
  '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.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.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.cron.jobs.desc': '코어에서 실행 중인 예약 작업을 보고 관리합니다.',
  'settings.cron.jobs.empty': '코어 cron 작업을 찾을 수 없습니다.',
  '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.viewRuns': '실행 기록 보기',
  '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':
    '로컬 AI가 꺼져 있습니다. 모든 추론은 클라우드를 사용합니다.',
  '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.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.capabilityAssets': '기능 자산',
  'settings.localModel.download.downloading': '다운로드 중...',
  'settings.localModel.download.embeddingPlaceholder': '줄마다 하나의 입력 문자열...',
  'settings.localModel.download.noThinkMode': '생각 없음 모드',
  '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': 'TTS 테스트 실행',
  'settings.localModel.download.runVisionTest': '비전 테스트 실행',
  'settings.localModel.download.running': '실행 중...',
  'settings.localModel.download.runningPrompt': '프롬프트 실행 중',
  '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.ttsOutputPlaceholder': '선택적 출력 WAV 경로',
  'settings.localModel.download.ttsPlaceholder': '합성할 텍스트 입력...',
  '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.customLocation': '사용자 지정 위치',
  'settings.localModel.status.customLocationDesc': '사용자 지정 Ollama 바이너리 위치를 지정합니다.',
  'settings.localModel.status.diagnosticsHint':
    '"진단 실행"을 클릭하여 Ollama가 실행 중이고 모델이 설치되어 있는지 확인하세요.',
  'settings.localModel.status.downloadingUnknown': '다운로드 중(크기 알 수 없음)',
  'settings.localModel.status.eta': '예상 시간',
  'settings.localModel.status.expectedModels': '예상 모델',
  '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': 'Ollama 설치',
  '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.notFound': '찾을 수 없음',
  'settings.localModel.status.notRunning': '실행 중이 아님',
  'settings.localModel.status.ollamaBinaryPath': 'Ollama 바이너리 경로',
  '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.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.mascot.active': '활성',
  'settings.mascot.characterDesc': 'OpenHuman 캐릭터를 선택하세요.',
  'settings.mascot.characterHeading': '캐릭터',
  '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.colorGreen': '초록',
  'settings.mascot.colorNavy': '네이비',
  'settings.mascot.colorYellow': '노랑',
  'settings.mascot.libraryUnavailable': 'OpenHuman 라이브러리를 사용할 수 없음',
  'settings.mascot.title': 'OpenHuman',
  'settings.mascot.loadingLibrary': 'OpenHuman 라이브러리 불러오는 중…',
  'settings.mascot.localDefault': '로컬 OpenHuman(기본값)',
  '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.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.previewing': '미리듣는 중…',
  'settings.mascot.voice.reset': '기본값으로 초기화',
  'settings.mascot.voice.useLocaleDefault': '앱 언어와 일치',
  'settings.mascot.voice.useLocaleDefaultDesc':
    '현재 인터페이스 언어에 맞는 음성을 자동으로 선택합니다.',
  '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.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.create.allowedTools': '허용된 도구',
  '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.license': '라이선스',
  '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.title': '새 스킬',
  'skills.detail.allowedTools': '허용된 도구',
  'skills.detail.author': '작성자',
  'skills.detail.bundledResources': '번들 리소스',
  'skills.detail.closeAriaLabel': '스킬 세부 정보 닫기',
  'skills.detail.location': '위치',
  'skills.detail.noBundledResources': '번들 리소스가 없습니다.',
  'skills.detail.tags': '태그',
  'skills.detail.warnings': '경고',
  'skills.install.fetchLog': '로그 가져오기',
  'skills.install.installBtn': '설치 중…',
  'skills.install.installComplete': '설치 완료',
  'skills.install.installing': '설치 중…',
  'skills.install.parseWarnings': '파싱 경고',
  'skills.install.rawError': '원시 오류',
  'skills.install.timeoutHint': '(초, 선택 사항)',
  'skills.install.timeoutLabel': '시간 초과',
  'skills.install.title': 'URL에서 스킬 설치',
  'skills.install.urlLabel': '스킬 URL',
  'skills.meetingBots.bannerDesc':
    'OpenHuman이 통화에 조용히 참여하여 메모와 후속 조치를 자동으로 처리합니다.',
  'skills.meetingBots.bannerTitle': '다음 회의에 OpenHuman 보내기',
  'skills.meetingBots.busyTitle': 'OpenHuman이 바쁩니다',
  'skills.meetingBots.comingSoon': '{label} 곧 제공 예정',
  '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.sendTo': '{label}로 보내기',
  'skills.meetingBots.starting': '시작 중…',
  'skills.resource.preview.closeAriaLabel': '미리보기 닫기',
  'skills.resource.preview.failed': '미리보기 실패',
  'skills.resource.preview.loading': '미리보기 불러오는 중…',
  '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': '입력하는 동안 AI 기반 인라인 텍스트 완성을 제공합니다.',
  '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.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': '음성-텍스트 모델을 불러오는 중입니다. 잠시 후 다시 오세요.',
  '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': '주간 한도에 도달했습니다. {resetTime}',
  'upsell.usageLimit.bodyRate': '10시간 추론 속도 한도에 도달했습니다. {resetTime}',
  '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.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': 'Composio 트리거 기록',
  'webhooks.tunnels.active': '활성',
  'webhooks.tunnels.createFailed': '터널 생성 실패',
  'webhooks.tunnels.creating': '생성 중...',
  'webhooks.tunnels.deleteFailed': '터널 삭제 실패',
  'webhooks.tunnels.descriptionPlaceholder': '설명(선택 사항)',
  'webhooks.tunnels.echo': '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.notYetRouted': '아직 라우팅되지 않음',
  'composio.triggers.loading': '불러오는 중…',
  'conversations.taskKanban.todo': '할 일',
  'settings.composio.loading': '불러오는 중…',
  'settings.mascot.noCharactersAvailable': '아직 사용할 수 있는 OpenHuman 캐릭터가 없습니다',
  'skills.uninstall.confirmTitle': '{name}을(를) 제거하시겠습니까?',
  'conversations.taskKanban.blocked': '차단됨',
  'conversations.taskKanban.done': '완료',
  'conversations.taskKanban.inProgress': '진행 중',
  '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':
    '설정 지침을 확인한 다음 런타임에 연결할 수 있게 되면 다시 시도하세요.',
};

export default ko;
