import type { LocaleCatalog } from './types.ts'

const strings: Record<string, string> = {
  'common.save': '저장',
  'common.cancel': '취소',
  'common.close': '닫기',
  'common.delete': '삭제',
  'common.remove': '제거',
  'common.retry': '다시 시도',
  'common.continue': '계속',
  'common.back': '뒤로',
  'common.loading': '로딩 중…',
  'common.yes': '예',
  'common.no': '아니요',
  'common.unknown': '알 수 없음',
  'common.version': '버전',

  'login.welcome': '{{brandName}}에 오신 것을 환영합니다',
  'login.signInGoogle': 'Google로 로그인',
  'login.failed': '로그인 실패',
  'setup.welcomeUser': '환영합니다, {{name}}님',
  'setup.welcomeGeneric': '{{brandName}}에 오신 것을 환영합니다',
  'setup.description': '이 {{brandName}} 인스턴스의 기본 제공자와 모델을 선택하세요.',
  'setup.provider': '제공자',
  'setup.model': '모델',
  'setup.continue': '계속',
  'setup.saveFailed': '설정을 저장할 수 없습니다.',
  'setup.runtimeFailed': '제공된 자격 증명으로 런타임을 시작할 수 없습니다. API 키를 확인하고 다시 시도하세요.',
  'loading.boot': '시작 중…',
  'loading.auth': '인증 확인 중…',
  'loading.config': '설정 로딩 중…',
  'loading.runtime': '런타임 시작 중…',
  'loading.connecting': '런타임에 연결 중…',
  'loading.almostThere': '거의 다 됐어요…',
  'loading.runtimeNeedsAttention': '런타임 설정에 주의가 필요합니다.',
  'loading.error.title': '{{brandName}}이(가) 런타임을 시작할 수 없습니다',
  'loading.error.hint': '유효하지 않은 설정을 수정하고 앱을 다시 시작하세요.',

  'sidebar.home': '홈',
  'sidebar.agents': '에이전트',
  'sidebar.capabilities': '기능',
  'sidebar.settings': '설정',
  'sidebar.threads': '대화',
  'sidebar.search': '대화 검색…',
  'sidebar.searchTitle': '대화 검색 (⌘K)',
  'sidebar.noThreads': '아직 대화가 없습니다',
  'sidebar.noMatches': '일치하는 결과 없음',
  'sidebar.threadFallback': '대화 {{id}}',
  'sidebar.newThread': '새 대화',
  'sidebar.newThreadInProject': '프로젝트에서 새 대화…',
  'newThread.blank': '빈 대화',
  'newThread.blankHint': 'Build와 현재 사용 가능한 에이전트, 도구, 스킬로 시작',
  'newThread.project': '프로젝트 열기',
  'newThread.projectHint': '폴더를 선택하세요 — 에이전트가 파일을 읽고 편집할 수 있습니다',
  'sidebar.newChat': '새 채팅',
  'newChat.blankUnavailableReason': '이 작업 공간에서는 채팅을 만들 수 없습니다.',
  'newChat.unavailable': '사용할 수 없음',
  'newChat.blankHint': '로컬 작업 공간 - Build와 현재 사용 가능한 동료, 도구, 스킬로 시작',
  'newChat.blankCloudHint': 'Cloud 안전 작업 - 동기화된 cloud 채팅 시작',
  'newChat.localOnlyAction': '로컬 전용 작업',
  'newChat.cloudAction': 'Cloud 작업',
  'newChat.projectHint': '로컬 전용 작업 - 동료가 읽고 편집할 수 있는 프로젝트 디렉터리를 선택하세요',
  'newChat.cloudProjectHint': 'Cloud 안전 작업 - Git을 선택하거나 명시적 스냅샷을 업로드하세요',
  'newChat.projectBlocked': '프로젝트 채팅 만들기가 비활성화되어 있습니다.',
  'newChat.createFailed': '새 프로젝트 채팅을 만들 수 없습니다. 다시 시도하세요.',
  'newChat.blank': '빈 채팅',
  'newChat.cloudProjectSubtitle': 'Git 또는 명시적으로 업로드한 스냅샷에서 cloud 프로젝트 채팅을 시작합니다.',
  'newChat.createCloudProject': '프로젝트 채팅 만들기',
  'sidebar.busy': '진행 중',
  'sidebar.awaitingQuestion': '응답 대기 중',

  'thread.rename': '이름 바꾸기',
  'thread.exportMarkdown': 'Markdown으로 내보내기',
  'thread.shareLink': '링크 공유',
  'thread.linkCopied': '링크가 복사되었습니다!',
  'thread.viewChanges': '변경 사항 보기',
  'thread.delete': '삭제',
  'thread.deleteConfirm': '이 대화를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
  'agent.deleteConfirm': '에이전트 "{{name}}"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
  'mcp.deleteConfirm': 'MCP "{{name}}"을(를) 제거하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
  'skill.deleteConfirm': '스킬 "{{name}}"을(를) 제거하시겠습니까? 이 작업은 되돌릴 수 없습니다.',

  'statusbar.ready': '준비됨',
  'statusbar.runtimeError': '런타임 오류',
  'statusbar.sessionUsage': '세션 사용량',
  'statusbar.inputTokens': '입력 토큰',
  'statusbar.outputTokens': '출력 토큰',
  'statusbar.reasoningTokens': '추론 토큰',
  'statusbar.cacheTokens': '캐시 토큰',
  'statusbar.totalTokens': '합계',
  'statusbar.totalCost': '총 비용',

  'runtime.offline': '런타임을 사용할 수 없습니다: {{error}}',
  'runtime.offlineLabel': '런타임을 사용할 수 없습니다:',
  'runtime.tryAgain': '다시 시도',
  'runtime.restarting': '재시작 중…',

  'homepage.title': '한 화면에서 워크스페이스 상태, 기능, 실행 상태를 확인하세요.',
  'homepage.subtitle': '홈을 스플래시 화면이 아닌 관측 가능성 화면으로 사용하세요. 무엇이 로드되어 있고, 무엇이 연결되어 있으며, OpenCode가 무엇을 사용하고 있는지, 어디서 이어 할지 확인합니다.',
  'homepage.diagnostics': '{{brandName}} 진단',
  'homepage.refresh': '새로고침',
  'homepage.refreshing': '새로고침 중…',
  'homepage.range.last7d': '지난 7일',
  'homepage.range.last30d': '지난 30일',
  'homepage.range.ytd': '연초부터',
  'homepage.range.all': '전체 기간',

  'homepage.pill.runtime': '런타임',
  'homepage.pill.runtimeReady': '준비됨',
  'homepage.pill.runtimeLoading': '진단 로딩 중',
  'homepage.pill.runtimeNotReady': '준비 안 됨',
  'homepage.pill.provider': '제공자',
  'homepage.pill.providerNotConfigured': '설정되지 않음',
  'homepage.pill.context': '컨텍스트',
  'homepage.pill.contextTokens': '{{count}} 토큰',
  'homepage.pill.contextUnknown': '한도 알 수 없음',
  'homepage.pill.mcp': 'MCP',
  'homepage.pill.mcpConnected': '{{connected}}/{{total}} 연결됨',
  'homepage.pill.capabilities': '기능',
  'homepage.pill.capabilitiesSummary': '{{tools}} 도구 · {{skills}} 스킬',

  'homepage.card.toolsAndSkills': '도구 및 스킬',
  'homepage.card.configuredTools': '구성된 도구',
  'homepage.card.activeSkills': '활성 스킬',
  'homepage.card.customSkills': '사용자 정의 스킬',
  'homepage.card.customMcps': '사용자 정의 MCP',
  'homepage.card.connectedMcps': '연결된 MCP',
  'homepage.card.agents': '내장 및 사용자 정의 에이전트',
  'homepage.card.primaryModes': '기본 모드',
  'homepage.card.builtinAgents': '내장 에이전트',
  'homepage.card.enabledCustomAgents': '활성화된 사용자 정의',
  'homepage.card.invalidAgents': '주의 필요',
  'homepage.card.leadAgent': '리드 에이전트',
  'homepage.card.availableSubAgents': '사용 가능한 서브 에이전트',
  'homepage.card.usage': '대화, 토큰 및 비용',
  'homepage.card.threads': '대화',
  'homepage.card.totalMessages': '메시지',
  'homepage.card.trackedTokens': '추적된 토큰',
  'homepage.card.trackedCost': '추적된 비용',
  'homepage.card.userMessages': '사용자 메시지',
  'homepage.card.assistantMessages': '어시스턴트 메시지',
  'homepage.card.toolCalls': '도구 호출',
  'homepage.card.busySessions': '활성 세션',
  'homepage.card.refreshedAt': '{{time}}에 새로고침',
  'homepage.card.agentUsage': '서브 에이전트별 사용량',
  'homepage.card.agentUsageEmpty': '{{window}}에 서브 에이전트 위임이 없습니다.',
  'homepage.card.perf': '하이드레이션 및 패치 성능',
  'homepage.card.noPerfTelemetry': '아직 성능 원격 측정이 기록되지 않았습니다.',
  'homepage.card.bundledTools': '내장 도구',
  'homepage.card.customTools': '사용자 정의 도구',
  'homepage.card.primaryMode': '기본 모드',
  'homepage.card.visibleBuiltins': '표시된 내장',
  'homepage.card.noToolsDiscovered': '아직 발견된 도구가 없습니다.',
  'homepage.card.noBuiltinAgents': '사용 가능한 내장 에이전트가 없습니다.',
  'homepage.card.tokenMix': '토큰 구성',
  'homepage.card.window': '기간',
  'homepage.card.usageRefreshed': '사용량 새로고침',
  'homepage.card.notLoaded': '로드되지 않음',
  'homepage.card.busyRightNow': '현재 활성',
  'homepage.card.currentModel': '현재 모델',
  'homepage.card.contextWindow': '컨텍스트 창',
  'homepage.card.notSet': '설정되지 않음',
  'homepage.card.unknownLimit': '알 수 없음',
  'homepage.card.historicalUsageNote': '기록 사용량은 대화별로 보존되며 현재 하이드레이트된 라이브 세션 상태와 중첩됩니다. 합계는 더 이상 대화를 먼저 열 필요가 없습니다.',
  'homepage.card.backfillCompleted': ' 백그라운드에서 {{count}}개의 이전 요약을 새로고침했습니다.',
  'homepage.card.unknownSubAgent': '알 수 없는 서브 에이전트',
  'homepage.card.tasks': '작업',
  'homepage.card.tokShort': 'tok',
  'homepage.card.historyLoadP95': '기록 로드 p95',
  'homepage.card.coldSyncP95': '콜드 동기화 p95',
  'homepage.card.flushP95': 'Flush p95',
  'homepage.card.slowEvents': '느린 이벤트',
  'homepage.card.flushWaitP95': 'Flush 대기 p95',
  'homepage.card.patchPublishes': '패치 게시',
  'homepage.card.telemetrySamples': '원격 측정 샘플',
  'homepage.card.perfLiveNote': '진단은 메인 프로세스 엔진의 실시간 정보입니다. 수치는 채팅 뷰가 사용하는 동일한 하이드레이션 및 패치 파이프라인에서 가져옵니다.',
  'homepage.card.perfEmptyHint': '아직 성능 원격 측정이 없습니다. 대화를 열고 응답을 스트리밍한 후 여기로 돌아와 런타임 타이밍을 검사하세요.',

  'homepage.side.resumeThreads': '대화 재개',
  'homepage.side.resumeEmpty': '{{window}}에 대화가 없습니다.',
  'homepage.side.recentWork': '최근 작업',
  'homepage.side.actions': '작업',
  'homepage.side.openWorkingSurface': '작업 화면 열기',
  'homepage.side.newThread': '새 대화',
  'homepage.side.newThreadHint': '워크스페이스와 연결된 새 대화를 엽니다.',
  'homepage.side.openDirectory': '폴더 열기',
  'homepage.side.openDirectoryHint': '다음 세션을 실제 코드베이스나 프로젝트 폴더에 연결합니다.',
  'homepage.side.currentInventory': '현재 인벤토리',
  'homepage.side.availableTools': '사용 가능한 도구',
  'homepage.side.skillBundles': '스킬 번들',
  'homepage.side.runtimeInputs': '런타임 입력',
  'homepage.side.opencodeVersion': 'OpenCode',
  'homepage.side.providerName': '제공자',
  'homepage.side.providerSource': '제공자 출처',
  'homepage.side.model': '모델',
  'homepage.side.modelSource': '모델 출처',
  'homepage.side.package': '패키지',
  'homepage.side.packageFallback': '내장/런타임',
  'homepage.side.providerOptions': '제공자 옵션',
  'homepage.side.credentialOverrides': '자격 증명 재정의',
  'homepage.side.noOptions': '비밀이 아닌 제공자 옵션이 노출되지 않았습니다.',
  'homepage.side.usingDefaults': '기본값 사용.',

  'homepage.warning.backfillFailed': '{{count}}개 세션을 재구성할 수 없습니다 — 합계가 저평가될 수 있습니다.',
  'homepage.warning.backfillPending': '백그라운드에서 {{count}}개의 이전 세션을 로드 중입니다. 합계는 자동으로 새로고침됩니다.',

  'tokens.input': '입력',
  'tokens.output': '출력',
  'tokens.reasoning': '추론',
  'tokens.cache': '캐시',
  'provider.none': '제공자 없음',
  'agent.unknown': '알 수 없음',
  'thread.sandbox': '샌드박스 대화',
  'runtime.source.settings': '설정 재정의',
  'runtime.source.default': '구성 기본값',
  'runtime.source.fallback': '폴백',

  'settings.title': '설정',
  'settings.subtitle': '셸, 모델 런타임 및 로컬 권한을 조정합니다.',
  'settings.done': '완료',
  'settings.save': '저장',
  'settings.saved': '✓ 저장됨',
  'settings.saveChanges': '변경 사항 저장',
  'settings.saveHint': '외관 변경은 즉시 적용됩니다. 제공자 및 권한 변경은 필요 시 런타임을 재시작합니다.',
  'settings.tab.appearance': '외관',
  'settings.tab.appearanceDescription': '테마, 색상 구성표 및 글꼴',
  'settings.tab.models': '모델',
  'settings.tab.modelsDescription': '제공자, 모델 및 자격 증명',
  'settings.tab.permissions': '권한',
  'settings.tab.permissionsDescription': '로컬 도구 액세스',
  'settings.tab.storage': '저장소',
  'settings.tab.storageDescription': '샌드박스 아티팩트 및 정리',
  'settings.tab.language': '언어',
  'settings.appearance.colorScheme': '색상 구성표',
  'settings.appearance.theme': '테마',
  'settings.appearance.themeActive': '활성',
  'settings.appearance.uiFont': '인터페이스 글꼴',
  'settings.appearance.monoFont': '고정폭 글꼴',
  'settings.appearance.preview': '미리보기',
  'settings.appearance.previewHealth': '워크스페이스 상태',
  'settings.appearance.previewHealthDescription': '제공자 연결됨, 런타임 준비됨',
  'settings.appearance.previewActive': '활성',
  'settings.appearance.previewMessage': '테마 변경은 즉시 적용됩니다.',
  'settings.appearance.previewMessageSecondary': '제공자 및 권한 변경은 여전히 아래의 저장 버튼을 사용합니다.',
  'settings.models.provider': '제공자',
  'settings.models.model': '모델',
  'settings.models.featured': '추천',
  'settings.models.allModels': '모든 모델',
  'settings.models.refresh': '새로고침',
  'settings.models.refreshing': '새로고침 중…',
  'settings.models.refreshTitle': '동적 모델 카탈로그 새로고침',
  'settings.models.search': '{{count}}개 모델에서 검색…',
  'settings.models.noMatches': '검색과 일치하는 모델이 없습니다.',
  'settings.models.credentialsHeader': '자격 증명',
  'settings.permissions.header': '개발자 도구',
  'settings.permissions.bashTitle': '셸 명령',
  'settings.permissions.bashDescription': '에이전트가 활성 워크스페이스 내에서 터미널 명령을 실행할 수 있도록 허용합니다.',
  'settings.permissions.fileWriteTitle': '파일 편집',
  'settings.permissions.fileWriteDescription': '에이전트가 로컬 워크스페이스에서 파일을 만들고 수정할 수 있도록 허용합니다.',
  'settings.storage.loading': '샌드박스 저장소 로드 중…',
  'settings.storage.supportDiagnostics': '지원 진단',
  'settings.storage.supportDescription': '일반 텍스트 보고서(구성, 런타임 입력, 최근 로그 줄)를 클립보드에 복사합니다. 자격 증명은 마스킹/편집되어 버그 보고서에 안전하게 붙여 넣을 수 있습니다.',
  'settings.storage.copyDiagnostics': '진단을 클립보드에 복사',
  'settings.storage.preparing': '준비 중…',
  'settings.storage.copied': '클립보드에 복사됨',
  'settings.storage.copyFailed': '진단을 생성할 수 없습니다 — 다시 시도하세요',
  'settings.storage.diagnosticsHint': '이슈를 제출할 때 유용합니다 — 이 번들을 보고서에 포함하세요.',
  'settings.storage.sandboxStorage': '샌드박스 저장소',
  'settings.storage.totalSize': '총 크기',
  'settings.storage.workspaces': '워크스페이스',
  'settings.storage.referenced': '참조됨',
  'settings.storage.unreferenced': '참조되지 않음',
  'settings.storage.stale': '오래됨',
  'settings.storage.retention': '보존',
  'settings.storage.retentionDays': '{{days}}일',
  'settings.storage.cleanup': '정리',
  'settings.storage.clearOld': '오래된 샌드박스 아티팩트 삭제',
  'settings.storage.clearOldDescription': '{{days}}일 이상 된 참조되지 않은 샌드박스 워크스페이스를 제거합니다.',
  'settings.storage.clearAll': '사용되지 않는 모든 샌드박스 아티팩트 삭제',
  'settings.storage.clearAllDescription': '활성 대화 워크스페이스는 유지하면서 참조되지 않은 모든 샌드박스 워크스페이스를 제거합니다.',
  'settings.storage.cleaning': '정리 중…',
  'settings.storage.lastCleanup': '마지막 정리에서 {{count}}개 워크스페이스를 제거하고 {{size}}를 확보했습니다.',
  'settings.storage.sandboxNote': '샌드박스 대화는 {{root}} 아래의 개인 Cowork 워크스페이스에 기록됩니다. 오래된 참조되지 않은 워크스페이스는 자동으로 정리되며, 여기서 수동으로도 실행할 수 있습니다.',
  'settings.updates.header': '업데이트',
  'settings.updates.checkForUpdates': '업데이트 확인',
  'settings.updates.description': 'GitHub Releases 공개 API에서 최신 게시된 버전을 쿼리합니다. 읽기 전용 — 자동 다운로드나 자동 설치는 없습니다.',
  'settings.updates.checking': '확인 중…',
  'settings.updates.newAvailable': '새 버전 사용 가능: {{version}}',
  'settings.updates.upToDate': '최신 버전 사용 중입니다 ({{version}})',
  'settings.updates.unavailable': '업데이트 확인을 사용할 수 없음',
  'settings.updates.failed': '업데이트를 확인할 수 없습니다',
  'settings.updates.hint': '더 새로운 빌드가 있으면 GitHub 릴리스 페이지를 엽니다.',
  'settings.updates.currentHint': '현재 {{version}}입니다. 아래를 클릭하여 릴리스 노트를 엽니다.',
  'settings.updates.openReleaseNotes': '릴리스 노트 열기',
  'settings.updates.resetFailed': '앱 데이터를 재설정할 수 없습니다: {{message}}',
  'settings.updates.resetCheckLogs': '재설정 실패. 로그를 확인하세요.',
  'settings.updates.checkFailedGeneric': '업데이트 확인에 실패했습니다.',
  'settings.reset.header': '재설정',
  'settings.reset.title': '모든 앱 데이터 재설정',
  'settings.reset.description': '이 컴퓨터에서 모든 대화, 자격 증명, 사용자 정의 에이전트, 스킬 및 MCP를 삭제합니다. 앱은 첫 실행 흐름으로 재시작됩니다. 제거하기 전이나 깨끗한 데모에 유용하지만 파괴적이며 되돌릴 수 없습니다.',
  'settings.reset.button': '앱 데이터 재설정',
  'settings.reset.resetting': '재설정 중…',
  'settings.reset.requiresConfirm': '명시적인 확인이 필요합니다. 앱이 닫히고 다시 시작됩니다.',
  'settings.reset.confirm': '모든 앱 데이터를 재설정하시겠습니까?\n\n이 컴퓨터에서 모든 대화, 자격 증명, 사용자 정의 에이전트, 스킬 및 MCP를 삭제합니다. 앱은 첫 실행 흐름으로 재시작됩니다. 되돌릴 수 없습니다.',
  'settings.language.label': '언어',
  'settings.language.description': '인터페이스 언어를 선택합니다. 이 장치에서 선택이 기억됩니다. 부분적으로 번역된 언어는 누락된 문자열에 대해 영어로 폴백됩니다.',
  'settings.language.systemDefault': '자동 감지 (시스템)',

  'agents.tab.skills': '스킬',
  'agents.tab.tools': '도구',
  'agents.tab.instructions': '지시',
  'agents.tab.inference': '추론',
  'agents.new': '새 에이전트',
  'agents.save': '변경 사항 저장',
  'agents.create': '에이전트 생성',
  'agents.saving': '저장 중…',
  'agents.openCapabilities': '더 많은 도구나 스킬이 필요하십니까?',
  'agents.openCapabilitiesLink': '도구 및 스킬 열기',

  'capabilities.tab.tools': '도구',
  'capabilities.tab.skills': '스킬',
  'capabilities.addMcp': 'MCP 추가',
  'capabilities.addSkill': '스킬 추가',
  'capabilities.noTools': '사용 가능한 도구가 아직 없습니다. 기능 페이지에서 MCP를 추가하세요.',
  'capabilities.noSkills': '사용 가능한 스킬이 아직 없습니다. 기능 페이지에서 스킬 번들을 추가하세요.',

  'chat.placeholder': '{{brandName}}에 메시지 보내기…',
  'chat.showContext': '컨텍스트 표시',
  'chat.hideContext': '컨텍스트 숨기기',
  'chat.thinking': '생각 중…',

  'error.viewError': '뷰 오류',
  'error.viewErrorTitle': '이 페이지를 렌더링할 수 없습니다.',
  'error.viewErrorBody': '{{brandName}}이(가) 앱의 나머지 부분을 복구했습니다. 홈으로 돌아가서 다시 시도하세요.',
  'error.backToHome': '홈으로 돌아가기',

  'approval.sendEmail': '이메일 보내기',
  'approval.createSpreadsheet': '스프레드시트 만들기',
  'approval.createDocument': '문서 만들기',
  'approval.createPresentation': '프레젠테이션 만들기',
  'approval.delete': '삭제',
  'approval.shareFile': '파일 공유',
  'approval.createEvent': '이벤트 만들기',
  'approval.allowAction': '작업 허용',
  'approval.deny': '거부',
  'approval.approve': '승인',

  'messageActions.branchHere': '여기서 분기',
  'messageActions.branchHereDescription': '이 메시지에서 끝나는 새 대화 만들기',
  'messageActions.revertHere': '여기로 되돌리기',
  'messageActions.revertHereDescription': '이 메시지 직전의 세션 상태로 되돌리기',
  'messageActions.viewDiff': '차이 보기',
  'messageActions.viewDiffDescription': '이 메시지가 도입한 파일 변경 사항 표시',
  'messageActions.branchFailed': '이 메시지에서 분기할 수 없습니다. 다시 시도하세요.',
  'messageActions.revertConfirm': '세션을 이 메시지로 되돌리시겠습니까? 이후 턴은 되돌리기를 해제할 때까지 숨겨집니다.',
  'messageActions.revertFailed': '이 메시지로 되돌릴 수 없습니다. 다시 시도하세요.',

  'chat.attachFile': '파일 첨부',
  'chat.planMode': 'Plan',
  'chat.buildMode': 'Build',
  'chat.planModeDescription': 'Plan 모드: 읽기 전용 분석 및 감사',
  'chat.buildModeDescription': 'Build 모드: 전체 액세스 작업 및 위임',
  'chat.forkThread': '대화 포크',
  'chat.stopGenerating': '생성 중지 (Esc)',
  'chat.awaitingApproval': '승인 대기 중',
  'chat.awaitingApprovalTitle': '계속하려면 대기 중인 도구 요청을 승인하거나 거부하세요',
  'chat.awaitingAnswer': '답변 대기 중',
  'chat.awaitingAnswerTitle': '계속하려면 대기 중인 질문에 답변하세요',
  'chat.placeholder.answerPending': '계속하려면 위의 대기 중인 질문에 답변하세요…',
  'chat.placeholder.askPlan': 'Plan에게 작업 분석이나 구조화 요청…',
  'chat.placeholder.askBuild': 'Build에게 이 작업 요청…',
  'chat.placeholder.noThread': '먼저 새 대화를 시작하세요',

  'diff.changesFromMessage': '이 메시지의 변경 사항',
  'diff.changes': '변경 사항',
  'diff.closeChanges': '변경 사항 닫기',
  'diff.loading': '변경 사항 로딩 중…',
  'diff.noChanges': '이 세션에 파일 변경 사항이 없습니다',
  'diff.filesChanged': '{{count}}개 파일이 변경됨',
  'diff.unified': '통합',
  'diff.split': '분할',
  'diff.noTextual': '텍스트 차이가 없습니다 (바이너리 파일, 이름 변경 또는 공백만 변경).',
  'diff.couldNotLoad': '파일 내용을 로드할 수 없습니다',
  'diff.couldNotLoadWithError': '로드할 수 없음: {{error}}',
  'diff.showHiddenLines': '변경되지 않은 {{count}}줄 표시',
  'diff.collapse': '접기',
  'diff.statusNew': '새로 만듦',
  'diff.statusDeleted': '삭제됨',
  'diff.statusModified': '수정됨',

  'thinking.buildCoordinating': 'Build가 조정 중',
  'thinking.planning': '계획 중',
  'thinking.generalWorking': 'General이 작업 중',
  'thinking.exploreWorking': 'Explore가 작업 중',
  'thinking.awaitingApproval': '승인을 기다리는 중',
  'thinking.buildCoordinatingCount': 'Build가 {{count}}개 에이전트를 조정 중',
  'thinking.buildMerging': 'Build가 에이전트 결과를 병합 중',
  'thinking.agentWorking': '{{agent}}가 작업 중',
  'thinking.thinking': '생각 중',
  'thinking.compacting': '컨텍스트를 보존하기 위해 대화를 압축 중…',
  'thinking.agentPlan': '에이전트 계획',
  'thinking.sessionTodos': '세션 TODO',

  'compaction.running': '압축 중',
  'compaction.done': '압축됨',
  'compaction.causeOverflow': '오버플로',
  'compaction.causeAuto': '자동',
  'compaction.causeManual': '수동',
  'compaction.runningOverflow': '컨텍스트 창이 오버플로 — 공간을 확보하기 위해 오래된 턴을 단축 중.',
  'compaction.runningAuto': '컨텍스트 한도 접근 — 사전에 압축 중.',
  'compaction.runningManual': '오래된 턴을 줄이기 위해 세션을 수동으로 요약 중.',
  'compaction.doneOverflow': '컨텍스트 창이 가득 차서 오래된 턴이 요약되었습니다.',
  'compaction.doneAuto': '새로운 응답을 위한 공간을 남기기 위해 오래된 턴이 자동으로 요약되었습니다.',
  'compaction.doneManual': '오래된 턴이 수동으로 요약되었습니다.',

  'taskStatus.running': '실행 중',
  'taskStatus.done': '완료',
  'taskStatus.errored': '오류',
  'taskStatus.queued': '대기열',

  'taskRun.deeperTitle': '이 서브 에이전트는 {{count}}개의 추가 서브 태스크를 발송했습니다. 레인을 클릭하여 자세히 보기.',
  'taskDrillIn.backToParent': '상위 작업으로 돌아가기',
  'taskDrillIn.abortTask': '이 작업 중단',
  'taskDrillIn.abortTaskDescription': '이 서브 에이전트만 중단; 형제 및 기본은 계속 실행',
  'taskDrillIn.closeDrawer': '서랍 닫기',
  'questionDock.pendingCount': '이 대화에 {{count}}개의 대기 중인 질문이 있습니다',
  'questionDock.scrollToToolCall': '이 질문의 도구 호출로 스크롤',
  'questionDock.typeOwnAnswer': '자신의 답변 입력',

  'mermaid.zoomOut': 'Mermaid 다이어그램 축소',
  'mermaid.resetZoom': 'Mermaid 확대/축소 재설정',
  'mermaid.zoomIn': 'Mermaid 다이어그램 확대',
  'chatModelMenu.selectModel': '모델 선택',
  'chatModelMenu.search': '모델 검색…',

  'agentsPage.title': '에이전트',
  'agentsPage.subtitle': '스킬, 도구 및 지시로부터 전문가를 구성하세요. 카드를 클릭하여 빌더에서 엽니다.',
  'agentsPage.backToChat': '채팅으로 돌아가기',
  'agentsPage.search': '에이전트, 스킬, 도구 또는 지시 검색…',
  'agentsPage.importTitle': '.cowork-agent.json 파일에서 사용자 정의 에이전트 가져오기',
  'agentsPage.import': '가져오기',
  'agentsPage.importFailed': '{{filename}}을(를) 가져올 수 없음: {{error}}',
  'agentsPage.importConflict': '"{{name}}"이라는 사용자 정의 에이전트가 이미 존재합니다. 가져온 것으로 교체하시겠습니까?',
  'studioTeamPage.eyebrow': '팀',
  'studioTeamPage.title': '동료',
  'studioTeamPage.subtitle': 'OpenCode 에이전트를 명확한 역할, 스킬, 도구, 채팅 배정이 있는 동료 명단으로 구성하세요.',
  'studioTeamPage.customCount': '사용자 정의',
  'studioTeamPage.builtInCount': '내장',
  'studioTeamPage.runtimeCount': '런타임',
  'studioTeamPage.search': '동료, 스킬, 도구 또는 지시 검색…',
  'studioTeamPage.filterLabel': '동료 필터',
  'studioTeamPage.importTitle': '.cowork-agent.json 파일에서 사용자 정의 동료 가져오기',
  'studioTeamPage.importFailed': '{{filename}}을(를) 가져올 수 없음: {{error}}',
  'studioTeamPage.importConflict': '"{{name}}"이라는 사용자 정의 동료가 이미 존재합니다. 가져온 것으로 교체하시겠습니까?',
  'studioTeamPage.newCoworker': '새 동료',
  'studioTeamPage.customSection': '사용자 정의 동료',
  'studioTeamPage.customSectionHelp': '직접 만든 동료입니다. 카드에서 편집, 활성화, 내보내기 또는 삭제하세요.',
  'studioTeamPage.noCustom': '아직 사용자 정의 동료가 없습니다. 반복 가능한 역할, 지시, 스킬, 도구를 묶을 동료를 만드세요.',
  'studioTeamPage.noCustomMatch': '검색과 일치하는 사용자 정의 동료가 없습니다.',
  'studioTeamPage.builtInSection': '내장 동료',
  'studioTeamPage.builtInSectionHelp': '번들 스킬과 도구로 구성된 Open Cowork 전문가입니다.',
  'studioTeamPage.noBuiltInMatch': '검색과 일치하는 내장 동료가 없습니다.',
  'studioTeamPage.runtimeSection': '런타임 등록 동료',
  'studioTeamPage.runtimeSectionHelp': 'SDK 플러그인이 등록한 동료입니다. 런타임 동작은 계속 OpenCode가 소유합니다.',
  'studioTeamPage.noRuntimeMatch': '검색과 일치하는 런타임 동료가 없습니다.',
  'studioTeamPage.noOpenCodeMatch': '검색과 일치하는 OpenCode 기본값이 없습니다.',
  'agentCard.editAvatar': '에이전트 아바타 편집',
  'agentCard.idPlaceholder': 'agent-id',
  'agentCard.descriptionPlaceholder': '이 에이전트는 무엇에 특화되어 있나요?',
  'agentCard.enabledTitle': '채팅에 표시됨',
  'agentCard.disabledTitle': '비활성화 — 채팅에 표시되지 않음',
  'agentCard.removeLabel': '{{label}} 제거',
  'agentCard.missingTool': '누락된 도구: {{label}}',
  'avatarEditor.setColor': '색상을 {{label}}(으)로 설정',
  'skillLibrary.empty': '사용 가능한 스킬이 아직 없습니다. 기능 페이지에서 스킬 번들을 추가하세요.',
  'skillLibrary.needsTools': '{{count}}개의 도구가 필요함',
  'toolLibrary.empty': '사용 가능한 도구가 아직 없습니다. 기능 페이지에서 MCP를 추가하세요.',
  'toolLibrary.writeTooltip': '이 도구는 쓰기 가능 — 에이전트의 영향 범위가 확대됩니다',

  'agentCard.edit': '편집',
  'agentCard.export': '내보내기',
  'agentCard.exportTitle': '이 에이전트를 공유 가능한 JSON 번들로 내보내기',
  'agentCard.noDescription': '설명 없음',

  'capabilities.title': '도구 및 스킬',
  'capabilities.subtitle': '현재 OpenCode 컨텍스트에서 사용 가능한 도구와 스킬 번들을 검사합니다. 내장, 머신, 프로젝트 및 사용자 정의 추가를 포함합니다.',
  'capabilities.addTool': '도구 추가',
  'capabilities.addSkillButton': '스킬 추가',
  'capabilities.searchTools': '도구, 설명 또는 동료 검색…',
  'capabilities.searchSkills': '스킬, 설명 또는 동료 검색…',
  'capabilities.details': '상세',
  'capabilities.connection': '연결',
  'capabilities.linkedAgents': '연결된 에이전트',
  'capabilities.linkedCoworkers': '연결된 동료',
  'capabilities.linkedTools': '연결된 도구',
  'capabilities.skillContent': '스킬 내용',
  'capabilities.usedByAgents': '에이전트에서 사용 중',
  'capabilities.usedByCoworkers': '동료에서 사용 중',
  'capabilities.bundleFiles': '번들 파일',
  'capabilities.noToolsDiscovered': '아직 발견된 도구가 없습니다. 사용자 정의 MCP를 추가하여 런타임을 확장하세요.',
  'capabilities.noToolsMatch': '검색과 일치하는 도구가 없습니다.',
  'capabilities.noSkillsDiscovered': '아직 발견된 스킬이 없습니다. 사용자 정의 번들을 추가하여 에이전트를 확장하세요.',
  'capabilities.noSkillsMatch': '검색과 일치하는 스킬이 없습니다.',
  'capabilities.kindOpencodeTool': 'OpenCode 도구',
  'capabilities.kindCustomMcp': '사용자 정의 MCP',
  'capabilities.kindBuiltinTool': '내장 도구',
  'capabilities.kindMcpTool': 'MCP 도구',
  'capabilities.kindCustomSkill': '사용자 정의 스킬',
  'capabilities.kindBuiltinSkill': '내장 스킬',
  'capabilities.skillSourceBundled': '{{brand}} 번들 스킬',
  'capabilities.skillSourceProject': '프로젝트 스킬',
  'capabilities.skillSourceMachine': '머신 스킬',
  'capabilities.skillSourceBundle': '스킬 번들',

  'mcpForm.titleAdd': 'MCP 도구 추가',
  'mcpForm.titleEdit': 'MCP 도구 편집 — {{name}}',
  'mcpForm.subtitleAdd': 'Model Context Protocol 서버를 연결하고 그 도구 세트를 {{brand}} 및 OpenCode 내에서 사용할 수 있게 합니다.',
  'mcpForm.subtitleEdit': '이 MCP의 설정을 업데이트합니다. 변경 사항은 {{brand}}이(가) 런타임을 다시 로드한 후 적용됩니다.',
  'mcpForm.saving': '저장 중…',
  'mcpForm.saveChanges': '변경 사항 저장',
  'mcpForm.addMcp': 'MCP 추가',
  'mcpForm.completeBeforeSave': '저장 전에 완료하세요',
  'mcpForm.whereToSave': '저장 위치',
  'mcpForm.connectionType': '연결 유형',
  'mcpForm.connectionDetails': '연결 세부 정보',
  'mcpForm.mcpId': 'MCP ID',
  'mcpForm.displayName': '표시 이름',
  'mcpForm.displayNamePlaceholder': '예: GitHub, Jira, Slack',
  'mcpForm.description': '설명',
  'mcpForm.descriptionPlaceholder': '이 MCP가 에이전트에 제공하는 접근 권한.',
  'mcpForm.command': '명령',
  'mcpForm.commandPlaceholder': '예: npx, node, python',
  'mcpForm.arguments': '인수',
  'mcpForm.argumentsPlaceholder': '예: -y @modelcontextprotocol/server-github',
  'mcpForm.envVars': '환경 변수',
  'mcpForm.envValuePlaceholder': '값',
  'mcpForm.url': 'URL',
  'mcpForm.headers': '헤더',
  'mcpForm.allowPrivateNetwork': '개인 네트워크 허용',
  'mcpForm.linkedSkills': '연결된 스킬',
  'mcpForm.preview': 'MCP 미리보기',

  'skillForm.titleAdd': '스킬 번들 추가',
  'skillForm.titleEdit': '번들 편집 — {{name}}',
  'skillForm.subtitle': '실제 OpenCode 스킬 번들을 `SKILL.md`와 필요한 참조, 예제 또는 템플릿과 함께 생성합니다.',
  'skillForm.addSkill': '스킬 추가',
  'skillForm.importing': '가져오는 중…',
  'skillForm.importDirectory': '디렉터리 가져오기',
  'skillForm.bundleIdentity': '번들 ID',
  'skillForm.skillDirectory': '스킬 디렉터리',
  'skillForm.skillDirectoryPlaceholder': '예: code-review, data-pipeline',
  'skillForm.skillDirectoryHint': '스킬 번들 디렉터리로 저장됩니다. 소문자로 안정적으로 유지하세요.',
  'skillForm.requiredTools': '필요한 도구',
  'skillForm.additionalFiles': '추가 파일',
  'skillForm.fileContents': '파일 내용',
  'skillForm.bundlePreview': '번들 미리보기',

  'mcpRestriction.removeRestriction': '이 제한을 제거하려면 클릭하세요',

  'commandPalette.search': '동작, 에이전트 및 명령 검색…',
  'commandPalette.noMatches': '일치하는 동작이 없습니다. 더 넓은 검색을 시도하세요.',
  'commandPalette.hint': 'Enter로 실행. Esc로 닫기.',

  'chart.generatedChart': '생성된 차트',

  'chat.composerAriaLabel': '메시지 작성기 (파일을 끌어다 놓으면 첨부)',
  'chat.revertedSessionTitle': '이 세션은 되돌려졌습니다 — 이후 메시지를 복원하려면 클릭하세요',
  'chat.transcriptAriaLabel': '채팅 기록',

  'homepage.card.usageEyebrow': '사용량',
  'homepage.card.agentUsageEyebrow': '에이전트 사용량',
  'homepage.card.perfEyebrow': '성능',
  'homepage.card.selectedWindow': '선택된 기간',
  'homepage.side.selectedPeriod': '선택된 기간',
  'homepage.side.noRecentThreads': '{{window}}에 아직 대화가 없습니다. 아래 동작에서 하나 시작하면 홈이 대기열이 됩니다.',

  'setup.modelIdPlaceholder': '모델 ID',

  'statusbar.thinking': '생각 중…',
  'statusbar.agentWorking': '{{agent}} 작업 중…',
  'statusbar.compacting': '압축 중…',
  'statusbar.contextPercent': '{{percent}}% 컨텍스트',
  'statusbar.contextCompactingSoon': '{{percent}}% · 곧 압축',
  'statusbar.contextCompactingDetail': '컨텍스트 보존을 위해 이전 턴을 압축 중',
  'statusbar.contextCompactedDetail': '{{limit}} 중 {{percent}}% 이후 압축됨',
  'statusbar.contextNearThreshold': '{{limit}} 중 {{percent}}% — 자동 압축이 곧 실행됩니다',
  'statusbar.contextOfLimit': '{{limit}} 중 {{percent}}%',
  'statusbar.tokensCount': '{{count}} 토큰',
  'statusbar.cacheRead': '캐시 읽기',
  'statusbar.cacheWrite': '캐시 쓰기',
  'statusbar.contextWindow': '컨텍스트 창',
  'statusbar.compactions': '압축 횟수',
  'statusbar.lastCompacted': '마지막 압축',
  'statusbar.lastMeasuredInput': '마지막 측정된 입력',
  'statusbar.sessionCost': '세션 비용',
  'statusbar.totalAllSessions': '총계 (모든 세션)',

  'threadList.waitingForAnswer': '답변을 기다리는 중',
  'threadList.working': '작업 중',
  'threadList.forked': '분기된 스레드',
  'threadList.forkedFrom': '다른 스레드에서 분기',
  'threadList.reverted': '되돌림',
  'threadList.revertedTitle': '세션이 이전 메시지로 되돌려졌습니다',

  'agentBuilder.saveThisAgentIn': '이 에이전트를 저장할 위치',
  'agentCard.scope': '범위',

  'agentPreview.title': '정적 미리보기',
  'agentPreview.subtitle': '호출될 때 OpenCode가 이 에이전트를 어떻게 보는지. 네트워크 호출 없음 — 컴파일된 뷰만 표시.',
  'agentPreview.scopeLabel': '{{scope}} 범위',
  'agentPreview.mention': '멘션',
  'agentPreview.toolsResolved': '해결된 도구',
  'agentPreview.skillsResolved': '해결된 스킬',
  'agentPreview.nOfM': '{{m}} 중 {{n}}',
  'agentPreview.missingTools': '누락된 도구: {{list}}',
  'agentPreview.missingSkills': '누락된 스킬: {{list}}',
  'agentPreview.systemPrompt': '시스템 프롬프트',
  'agentPreview.toolPatterns': '도구 패턴',
  'agentPreview.skillsAvailable': '로드 가능한 스킬',

  'agentTemplate.title': '새 에이전트 시작',
  'agentTemplate.subtitle': '빈 캔버스를 건너뛰려면 시작 템플릿을 선택하세요 — 이후에 무엇이든 변경할 수 있습니다.',
  'agentTemplate.startBlank': '빈 상태에서 시작',
  'agentTemplate.startBlankHint': '사전 선택된 도구나 지시 없음 — 에이전트를 처음부터 설계합니다.',
  'agentTemplate.temp': 'temp {{value}}',
  'agentTemplate.steps': '{{count}} 단계',
  'agentTemplate.toolHints': '{{count}}개 도구 힌트',

  'avatarEditor.avatar': '아바타',
  'avatarEditor.color': '색상',

  'capabilities.noSkillContent': '아직 사용 가능한 스킬 번들 내용이 없습니다.',
  'capabilities.skillNotTiedToTool': '이 스킬은 특정 도구에 연결되어 있지 않습니다.',

  'chart.savedAs': '저장된 이름',

  'chatModelMenu.noMatches': '일치 항목 없음.',

  'instructions.headerHint': '톤, 우선순위, 출력 형식을 정하세요. 좋은 지시는 구체적이고 운영적입니다.',
  'instructions.addSnippet': '+ 스니펫',
  'instructions.noInstructions': '지시 없음.',
  'instructions.placeholderExamples': '예시:\n- 결과를 3개 항목과 증거로 요약.\n- 블로그보다 공식 문서 우선.\n- 이메일을 보내지 않고 초안만.\n- 외부 쓰기 전에 승인 요청.',
  'instructions.charCount': '{{count}}자',
  'instructions.longPromptWarning': '긴 프롬프트는 토큰을 소모합니다 — 줄이는 것을 고려하세요',
  'instructions.snippet.conciseLabel': '간결하게',
  'instructions.snippet.conciseBody': '3-5개 항목으로 답변하세요. 산문은 짧게 유지. 중요하지 않은 부분은 잘라내세요.',
  'instructions.snippet.askFirstLabel': '명확화 질문하기',
  'instructions.snippet.askFirstBody': '요청이 모호하면 행동 전에 한 가지 명확화 질문을 하세요.',
  'instructions.snippet.citeLabel': '출처 인용',
  'instructions.snippet.citeBody': '결과를 요약할 때 각 주장을 출처 문서 또는 URL과 함께 인용하세요.',
  'instructions.snippet.draftOnlyLabel': '초안만, 전송 안 함',
  'instructions.snippet.draftOnlyBody': '초안만 생성하세요. 확인 없이 메시지, 이메일 또는 외부 동작을 전송하지 마세요.',
  'instructions.snippet.structuredLabel': '구조화된 출력',
  'instructions.snippet.structuredBody': '짧은 경영 요약 다음 번호 매긴 세부 분해로 결과를 반환하세요.',

  'mcpForm.mcpIdHint': '런타임 네임스페이스 및 권한 접두사가 됩니다.',
  'mcpForm.runtimeNamespace': '런타임 네임스페이스',
  'mcpForm.permissionPrefix': '권한 접두사',
  'mcpForm.connectionSummary': '연결 요약',
  'mcpForm.connectivityTest': '연결 테스트',
  'mcpForm.couldNotConnect': '이 MCP에 연결할 수 없습니다.',
  'mcpForm.runTestHint': '저장 전에 테스트를 실행하여 서버가 응답하고 메서드를 노출하는지 확인하세요.',
  'mcpForm.reloadsRuntimeNote': '저장 후 {{brand}}이(가) 런타임을 자동으로 다시 로드합니다.',

  'questionDock.question': '질문',
  'sessionInspector.planFromTaskRuns': '활성 작업 실행에서 파생',
  'sessionInspector.session': '세션',

  'skillForm.bundleId': '번들 ID',
  'skillForm.frontmatterName': 'Frontmatter 이름',
  'skillForm.noExtraBundleFiles': '추가 번들 파일이 아직 없습니다.',
  'skillForm.whatWillBeSaved': '저장될 내용',

  'todo.untitled': '제목 없는 TODO',

  'toolTrace.artifact': '산출물',
  'toolTrace.agent': '에이전트',
  'toolTrace.subAgent': '서브 에이전트',
  'toolTrace.reveal': '표시',
  'toolTrace.saving': '저장 중…',
  'toolTrace.saveAs': '다른 이름으로 저장…',
  'toolTrace.input': '입력',
  'toolTrace.output': '출력',
  'toolTrace.noDetails': '사용 가능한 세부 정보 없음',
  'toolTrace.generatedInSubAgent': '서브 에이전트 작업에서 {{tool}}(으)로 생성',
  'toolTrace.generatedInThread': '이 스레드에서 {{tool}}(으)로 생성',

  // ────────────────────────────────────────────────────────────
  // Home (welcoming landing)
  // ────────────────────────────────────────────────────────────
  'home.greeting.cowork': '오늘 함께 무엇을 할까요?',
  'home.subtitle': '{{brand}} · 무엇이든 묻거나 @로 에이전트 호출',
  'home.composer.placeholder': '무엇이든 묻거나 @로 에이전트 호출',
  'home.composer.send': '보내기',
  'home.composer.dropZone': '작성기 — 파일을 드롭하여 첨부',
  'studioHome.greeting': '오늘 팀이 무엇을 해결할까요?',
  'studioHome.subtitle': '{{brand}} · 리드 동료를 선택하고, 전문가를 @멘션하고, 한곳에서 작업을 검토하세요',
  'studioHome.composer.placeholder': '무엇이든 묻거나 동료를 @멘션하세요',
  'studioHome.coachmark': '프롬프트를 쓰고, 컨텍스트를 첨부하거나 동료를 @멘션하세요 — 명령은 ⌘K.',
  'studioHome.agentNudge': '동료를 @멘션하세요',
  'home.suggestions.title': '시도',
  'home.recent.title': '이어서 작업하기',
  'home.recent.untitled': '제목 없는 스레드',
  'home.statusStrip.ready': '준비됨',
  'home.statusStrip.mcps': '{{connected}}/{{total}} MCP',
  'home.statusStrip.viewMore': '펄스',

}

export const ko: LocaleCatalog = {
  locale: 'ko',
  nativeLabel: '한국어',
  strings,
}
