Files
claude-code-haha/desktop/src/i18n/locales/kr.ts
T
2026-08-24 02:32:23 +08:00

3024 lines
217 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { TranslationKey } from './en'
export const kr: Record<TranslationKey, string> = {
// ─── Common ──────────────────────────────────────
'common.cancel': '취소',
'common.close': '닫기',
'common.save': '저장',
'common.delete': '삭제',
'common.add': '추가',
'common.run': '실행',
'common.send': '전송',
'common.stop': '중지',
'common.tokens': '{count} 토큰',
'common.rename': '이름 바꾸기',
'common.retry': '다시 시도',
'common.loading': '불러오는 중...',
'common.select': '선택',
'common.enable': '사용',
'common.disable': '사용 안 함',
'common.active': '활성',
'common.error': '오류',
'common.clearSearch': '검색 지우기',
'common.copyFailed': '복사하지 못했습니다.',
'common.copied': '복사됨',
'h5Connect.failed': 'H5 서버에 연결할 수 없습니다.',
'h5Connect.submit': '연결',
'h5Connect.token': 'H5 토큰',
'h5Connect.serverUrl': '서버 URL',
'h5Connect.subtitle': '데스크톱 앱의 서버 URL과 H5 액세스 토큰을 입력하세요.',
'h5Connect.title': 'H5 액세스에 연결',
'attachments.selectionNoteTitle': '수정 내용',
'attachments.selectionBatch': '페이지 수정 {count}개',
'attachments.selectionItem': '선택한 요소 {number}: {name}',
'chat.pendingMessageQueuedLabel': '대기 중',
'repoLaunch.worktreeIsolatedDesc': '이 세션용 격리 worktree를 만들어 병합 전까지 {branch}에 영향을 주지 않습니다.',
'repoLaunch.worktreeCurrentDesc': '프로젝트 디렉터리에서 직접 작업하며 변경 사항이 즉시 {branch}에 반영됩니다.',
'permMode.badge.risky': '고위험',
'permMode.badge.optIn': '옵트인 필요',
'chat.generatingDiagram': '다이어그램 생성 중…',
'chat.copyReply': '답변 복사',
'chat.copyPrompt': '프롬프트 복사',
'chat.teammateMessage': '팀원 메시지',
'chat.copyPath': '경로 복사',
'common.dismissNotification': '알림 닫기',
// ─── Sidebar ──────────────────────────────────────
'sidebar.newSession': '새 세션',
'sidebar.scheduled': '예약 작업',
'sidebar.skills': '스킬',
'sidebar.terminal': '터미널',
'sidebar.settings': '설정',
'sidebar.searchPlaceholder': '세션 검색...',
'sidebar.noSessions': '아직 세션이 없습니다',
'sidebar.noMatching': '일치하는 세션이 없습니다',
'sidebar.sessionListFailed': '세션 목록을 불러오지 못했습니다',
'sidebar.refreshSessions': '세션 새로 고침',
'sidebar.indexDegraded': '표준 기록 불러오기를 사용하고 있습니다',
'search.global.trigger': '대화 검색',
'search.global.placeholder': '모든 대화 검색…',
'search.global.recentTitle': '최근 세션',
'search.global.noResults': '일치하는 내용이 없습니다',
'search.global.matchCount': '{count}개 일치',
'search.global.truncated': '처음 {count}개 세션만 표시합니다. 검색어를 좁혀 주세요',
'search.global.roleUser': '나',
'search.global.roleAssistant': '어시스턴트',
'search.global.loading': '검색 중…',
'search.global.error': '검색 실패',
'search.global.close': '닫기',
'search.findInPage.title': '페이지에서 찾기',
'search.findInPage.placeholder': '찾기',
'search.findInPage.previousMatch': '이전 일치 항목',
'search.findInPage.nextMatch': '다음 일치 항목',
'search.findInPage.close': '찾기 막대 닫기',
'sidebar.projects': '프로젝트',
'sidebar.projectMenu': '프로젝트 메뉴',
'sidebar.newProject': '새 프로젝트',
'sidebar.archiveAllChats': '모든 채팅 보관',
'sidebar.organizeSidebar': '사이드바 정리',
'sidebar.sortCondition': '정렬 조건',
'sidebar.organizeByProject': '프로젝트별',
'sidebar.organizeByRecentProject': '최근 프로젝트',
'sidebar.organizeByTime': '시간순',
'sidebar.sortByCreatedAt': '생성 시간',
'sidebar.sortByUpdatedAt': '업데이트 시간',
'sidebar.newBlankProject': '새 빈 프로젝트',
'sidebar.newBlankSession': '새 빈 세션',
'sidebar.projectEditor.createTitle': '프로젝트 만들기',
'sidebar.projectEditor.editTitle': '프로젝트 편집',
'sidebar.projectEditor.name': '프로젝트 이름',
'sidebar.projectEditor.nameHint': '최대 {count}자',
'sidebar.projectEditor.nameRequired': '프로젝트 이름을 입력하세요.',
'sidebar.projectEditor.nameTooLong': '프로젝트 이름은 최대 80자까지 입력할 수 있습니다.',
'sidebar.projectEditor.sourceFolder': '원본 폴더',
'sidebar.projectEditor.sourceFolderRequired': '원본 폴더를 선택하세요.',
'sidebar.projectEditor.realPath': '실제 경로',
'sidebar.projectEditor.realPathHint': '이 프로젝트 경로는 고정되어 여기서 변경할 수 없습니다.',
'sidebar.projectEditor.restoreFolderName': '폴더 이름으로 복원',
'sidebar.projectEditor.removeFromSidebar': '사이드바에서 제거',
'sidebar.projectEditor.removeFromSidebarHint': '사이드바에서만 프로젝트를 제거합니다. 기존 세션과 파일은 변경되지 않습니다.',
'sidebar.projectEditor.create': '프로젝트 만들기',
'sidebar.projectEditor.actionFailed': '프로젝트 변경 사항을 저장하지 못했습니다.',
'sidebar.useExistingFolder': '기존 폴더 사용',
'sidebar.chooseProjectFolderUnavailable': '폴더 선택은 데스크톱 앱에서만 사용할 수 있습니다.',
'sidebar.projectActions': '{project}의 프로젝트 작업',
'sidebar.pinProject': '프로젝트 고정',
'sidebar.unpinProject': '고정 해제',
'sidebar.openInFileManager.darwin': 'Finder에서 열기',
'sidebar.openInFileManager.win32': '파일 탐색기에서 열기',
'sidebar.openInFileManager.linux': '파일 관리자에서 열기',
'sidebar.openInFileManager.default': '파일 관리자에서 열기',
'sidebar.openInFileManagerFailed': '파일 관리자에서 프로젝트를 열 수 없습니다.',
'sidebar.openInFileManagerUnavailable': '사용할 수 있는 파일 관리자가 없습니다.',
'sidebar.hideProjectFromSidebar': '사이드바에서 숨기기',
'sidebar.restoreProjectToSidebar': '사이드바로 복원',
'sidebar.restoreHiddenProjects': '숨긴 프로젝트 복원 ({count})',
'sidebar.projectHidden': '{project}을(를) 사이드바에서 숨겼습니다. 기존 세션은 삭제되지 않았습니다.',
'sidebar.newSessionInProject': '{project}에서 새 세션',
'sidebar.showMoreSessions': '펼쳐서 표시',
'sidebar.showFewerSessions': '접어서 표시',
'sidebar.expandProject': '{project} 펼치기',
'sidebar.collapseProject': '{project} 접기',
'sidebar.worktree': 'worktree',
'sidebar.sessionRunning': '세션 실행 중',
'sidebar.missingDir': '디렉터리 없음',
'sidebar.confirmDelete': '이 세션을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
'sidebar.batchManage': '일괄 관리',
'sidebar.batchSelectedCount': '{count}개 선택됨',
'sidebar.batchSelectAll': '모두 선택',
'sidebar.batchDeselectAll': '모두 선택 해제',
'sidebar.batchSelectGroup': '{group} 선택',
'sidebar.batchDeleteSelected': '선택 항목 삭제 ({count})',
'sidebar.batchDeleteConfirm': '{count}개의 세션을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
'sidebar.batchDeleteConfirmBody': '다음 세션이 삭제됩니다:',
'sidebar.batchDeleteMore': '...외 {count}개',
'sidebar.batchExit': '일괄 모드 취소',
'sidebar.batchDeleteSucceeded': '{count}개의 세션을 삭제했습니다.',
'sidebar.batchDeleteFailed': '{count}개의 세션을 삭제하지 못했습니다.',
'sidebar.allProjects': '모든 프로젝트',
'sidebar.other': '기타',
'sidebar.timeGroup.today': '오늘',
'sidebar.timeGroup.yesterday': '어제',
'sidebar.timeGroup.last7days': '지난 7일',
'sidebar.timeGroup.last30days': '지난 30일',
'sidebar.timeGroup.older': '그 이전',
'sidebar.collapse': '사이드바 접기',
'sidebar.expand': '사이드바 펼치기',
'sidebar.resize': '사이드바 너비 조절',
// ─── Title Bar ──────────────────────────────────────
'titlebar.code': '코드',
'titlebar.terminal': '터미널',
'titlebar.history': '기록',
// ─── Open Project ──────────────────────────────────────
'openProject.openProject': '프로젝트 열기',
'openProject.openIn': '{target}에서 열기',
'openProject.openFailed': '프로젝트를 열 수 없습니다',
// ─── Open With ─────────────────────────────────────
'openWith.title': '열기 방식',
'openWith.inAppBrowser': '앱 내 브라우저',
'openWith.systemBrowser': '시스템 브라우저',
'openWith.systemDefault': '기본 애플리케이션',
'openWith.workspacePreview': '작업 공간 미리 보기',
'openWith.openInTarget': '{target}에서 열기',
'openWith.openInDefaultTarget': '{target}에서 열기(기본)',
'openWith.openFailed': '{name}을(를) 열 수 없습니다. 파일이 이동되었거나 삭제되었을 수 있습니다.',
'openWith.revealIn.darwin': 'Finder에서 표시',
'openWith.revealIn.win32': '파일 탐색기에서 표시',
'openWith.revealIn.linux': '파일 관리자에서 표시',
'openWith.revealIn.default': '파일 관리자에서 표시',
'openWith.copyPath': '경로 복사',
'openWith.copyFileContent': '파일 내용 복사',
'openWith.fileType.document': '문서',
'openWith.fileType.web': '웹',
'openWith.fileType.image': '이미지',
'openWith.fileType.code': '코드',
'openWith.fileType.spreadsheet': '스프레드시트',
'openWith.fileType.presentation': '프레젠테이션',
'openWith.fileType.archive': '압축 파일',
'openWith.fileType.audio': '오디오',
'openWith.fileType.video': '비디오',
'openWith.fileType.file': '파일',
// ─── Assistant Output Targets ──────────────────────
'assistantOutputs.kind.markdown': 'Markdown',
'assistantOutputs.kind.html': 'HTML',
'assistantOutputs.kind.image': '이미지',
'assistantOutputs.kind.localhost': 'Localhost',
'assistantOutputs.moreOutputs': '+{count}개',
'assistantOutputs.open': '열기',
// ─── Workspace Panel ───────────────────────────────
'workspace.changedFiles': '변경된 파일',
'workspace.allFiles': '모든 파일',
'workspace.viewTabs': '작업 공간 보기',
'workspace.previewTabs': '미리 보기 탭',
'workspace.filterPlaceholder': '파일 필터링...',
'workspace.filterChangedPlaceholder': '변경된 파일 필터링...',
'workspace.searchAllPlaceholder': '모든 파일 검색...',
'workspace.clearFilter': '파일 필터 지우기',
'workspace.searching': '작업 공간 검색 중...',
'workspace.searchResults': '파일 검색 결과',
'workspace.searchResultsCount': '검색 결과 {count}개',
'workspace.searchResultsTruncated': '처음 {count}개 결과를 표시합니다. 검색어를 구체화하세요.',
'workspace.reviewWorkspace': '작업 공간 검토',
'workspace.filesCount': '파일 {count}개',
'workspace.filteredFilesCount': '파일 {total}개 중 {visible}개',
'workspace.itemsCount': '항목 {count}개',
'workspace.filteredItemsCount': '항목 {total}개 중 {visible}개',
'workspace.refresh': '작업 공간 새로 고침',
'workspace.closePanel': '작업 공간 패널 닫기',
'workspace.resizePanel': '작업 공간 패널 크기 조정',
'workspace.showNavigator': '파일 탐색기 표시',
'workspace.hideNavigator': '파일 탐색기 숨기기',
'workbench.modeSwitch': '워크벤치 모드',
'workbench.modeWorkspace': '파일',
'workbench.modeBrowser': '브라우저',
'workbench.expand': '패널 펼치기',
'workbench.close': '닫기',
'workbench.tabTitle': '워크벤치',
'workbench.backToConversation': '대화로 돌아가기',
'workbench.navigation': '워크벤치 탐색',
'workspace.closeTab': '탭 닫기',
'workspace.preview': '미리 보기',
'workspace.previewEmpty': '미리 볼 파일을 선택하세요.',
'workspace.notGitRepo': 'Git 저장소가 아닙니다.',
'workspace.missingWorkdir': '작업 디렉터리가 없습니다.',
'workspace.loadError': '작업 공간 데이터를 불러오지 못했습니다.',
'workspace.noChanges': '변경 사항 없음',
'workspace.noFiles': '파일 없음',
'workspace.noMatchingFiles': '일치하는 파일 없음',
'workspace.previewKind.diff': '변경 내용',
'workspace.previewKind.file': '파일',
'workspace.status.modified': '수정됨',
'workspace.status.added': '추가됨',
'workspace.status.deleted': '삭제됨',
'workspace.status.renamed': '이름 변경됨',
'workspace.status.untracked': '추적되지 않음',
'workspace.status.copied': '복사됨',
'workspace.status.typeChanged': '유형 변경됨',
'workspace.status.unknown': '알 수 없는 상태',
'workspace.previewState.loading': '미리 보기 불러오는 중...',
'workspace.previewState.binary': '바이너리 파일은 미리 볼 수 없습니다.',
'workspace.previewState.tooLarge': '파일이 너무 커서 미리 볼 수 없습니다.',
'workspace.previewState.missing': '파일을 찾을 수 없습니다.',
'workspace.imagePreviewUnavailable': '이미지를 미리 볼 수 없습니다.',
'workspace.previewLineLimit': '불러온 {total}줄 중 처음 {count}줄을 표시합니다.',
'workspace.previewAllLines': '불러온 {total}줄을 모두 표시합니다.',
'workspace.showAllLoadedLines': '불러온 줄 모두 표시',
'workspace.collapsePreview': '미리 보기 접기',
'workspace.addToChat': '채팅에 추가',
'workspace.addSelectionToChat': '채팅에 추가',
'workspace.copyPath': '경로 복사',
'workspace.copyAbsolutePath': '절대 경로 복사',
'workspace.pathCopied': '경로를 복사했습니다.',
'workspace.localComment': '로컬 댓글',
'workspace.commentLine': '{line}번째 줄에 댓글',
'workspace.commentLineTarget': '{line}번째 줄',
'workspace.commentLineRangeTarget': '{start}~{end}번째 줄',
'workspace.commentPlaceholder': '여기서 무엇을 변경해야 하는지 설명하세요...',
'workspace.addCommentToChat': '댓글 추가',
'workspace.diffReview.commentLineAria': '{path}의 {side} 쪽 {line}번 줄에 댓글 달기',
'workspace.diffReview.editorLabel': '리뷰 댓글',
'workspace.diffReview.submit': '제출',
'workspace.diffReview.submitAria': '리뷰 댓글 제출',
'workspace.diffReview.side.old': '이전',
'workspace.diffReview.side.new': '새',
'workspace.diffReview.selectionReset': '선택이 재설정되었습니다. 같은 쪽과 같은 헝크의 줄을 선택하세요.',
'workspace.diffReview.diffChanged': 'Diff가 변경되었습니다. 이 댓글을 제출하려면 줄을 다시 선택하세요.',
'workspace.diffReview.collapsedSelection': '선택한 줄이 접힌 미리보기 범위 밖에 있습니다. 표시된 줄을 다시 선택하세요.',
'attachments.remove': '{name} 제거',
'attachments.open': '{name} 열기',
'attachments.previousImage': '이전 이미지',
'attachments.nextImage': '다음 이미지',
'attachments.selectionNote': '선택 영역 메모: {note}',
'attachments.openFailed': '{name}을(를) 열 수 없습니다. 파일이 이동되었거나 삭제되었을 수 있습니다.',
// ─── Status Bar ──────────────────────────────────────
'status.connected': '연결됨',
'status.connecting': '연결 중...',
'status.reconnecting': '다시 연결 중...',
'status.disconnected': '연결 끊김',
// ─── Settings ──────────────────────────────────────
'settings.title': '설정',
'settings.tab.providers': '공급자',
'settings.tab.permissions': '권한',
'settings.tab.activity': '토큰 사용량',
'settings.tab.trace': 'Trace',
'settings.tab.general': '일반',
'settings.tab.h5Access': 'H5 액세스',
'settings.tab.terminal': '터미널',
'settings.tab.skills': '스킬',
'settings.tab.mcp': 'MCP',
'settings.tab.plugins': '플러그인',
'settings.tab.pets': '펫',
'settings.tab.diagnostics': '진단',
// Settings > Pets
'settings.pets.title': '데스크톱 펫',
'settings.pets.subtitle': '현재 작업을 지켜보고 후속 메시지도 받을 수 있는 작은 동반자입니다.',
'settings.pets.enableTitle': '데스크톱 펫 표시',
'settings.pets.enableDescription': '선택한 펫을 데스크톱 플로팅 창에 표시합니다.',
'settings.pets.loading': '펫 불러오는 중…',
'settings.pets.loadError': '펫을 불러올 수 없습니다.',
'settings.pets.saveError': '펫 설정을 저장할 수 없습니다.',
'settings.pets.retry': '다시 시도',
'settings.pets.refresh': '새로 고침',
'settings.pets.create': '펫 추가',
'settings.pets.createTitle': '나만의 펫 만들기',
'settings.pets.createMethodIntro': '만드는 방법을 골라 주세요. 이미지는 모두 내 컴퓨터 안에서 처리되며, 업로드되지 않고 대화 사용량도 쓰지 않습니다.',
'settings.pets.createRecommended': '추천',
'settings.pets.createImageTitle': '가지고 있는 그림 사용하기',
'settings.pets.createImageDescription': '캐릭터 그림 한 장이면 충분합니다. 가볍게 숨을 쉬듯 떠오르고, 바쁠 때는 함께 움직입니다.',
'settings.pets.createImageDetail': '1분이면 완료 · 다만 달리거나 손을 흔들지는 않습니다',
'settings.pets.createImageBadge': '가장 간단',
'settings.pets.createImageHint': '잠시 후 배경이 투명한 PNG 또는 WebP를 고릅니다(가로세로 32~4096픽셀, 8MB 이하). 이 방식은 살짝 흔들리기만 하고 실제로 달리지는 않습니다. 달리고 뛰고 손을 흔들게 하려면 이전 화면에서 "AI로 달리고 뛰는 펫 그리기"를 선택하세요.',
'settings.pets.createImageSubmit': '그림 골라서 만들기',
'settings.pets.createAtlasTitle': '이미 동작 시트가 있어요',
'settings.pets.createAtlasDescription': '이미 그려 둔 여러 칸짜리 동작 시트를 바로 가져오고 안내는 건너뜁니다.',
'settings.pets.createAtlasDetail': '크기 계산 불필요 · 알아서 맞춰 줍니다',
'settings.pets.createAtlasSubmit': '동작 시트 골라서 만들기',
'settings.pets.createAtlasHint': '잠시 후 가로 8칸, 세로 9줄짜리 동작 시트를 고릅니다. 크기가 딱 맞지 않아도 됩니다. 알아서 칸을 나누고 크기를 조정하며, "왼쪽으로 달리기" 줄은 좌우 반전으로 채워 줍니다. 이미 완성된 1536×2288 아틀라스도 그대로 쓸 수 있습니다.',
'settings.pets.createAiTitle': 'AI로 달리고 뛰는 펫 그리기',
'settings.pets.createAiDescription': '세 단계입니다. 프롬프트를 복사하고, AI에게 그리게 하고, 그 그림을 고르면 끝. 프롬프트와 참고용 템플릿을 준비해 두었습니다.',
'settings.pets.createAiDetail': '10분쯤 · 그림을 그릴 수 있는 AI가 필요합니다',
'settings.pets.createBack': '다른 방법 고르기',
'settings.pets.createId': '펫 ID',
'settings.pets.createIdHint': '짧은 영문 이름입니다. 소문자, 숫자, 가운데 하이픈만 사용하세요(예: moon-cat).',
'settings.pets.createName': '표시 이름',
'settings.pets.createDescription': '설명',
'settings.pets.createCancel': '취소',
'settings.pets.createSubmit': '만들기',
'settings.pets.guide.intro': '세 단계, 10분쯤 걸립니다. 전부 내 컴퓨터 안에서 끝납니다.',
'settings.pets.guide.step1Title': 'AI에게 동작 시트를 그리게 하기',
'settings.pets.guide.step1Body': '그림을 그릴 수 있는 AI를 열고 아래 글을 통째로 보내세요. 맨 앞 "캐릭터" 두 줄을 원하는 모습으로 바꾸면 됩니다(예: "노란 모자를 쓴 시바견").',
'settings.pets.guide.step1Tools': 'Nano Banana, ChatGPT 이미지 생성, Midjourney, Stable Diffusion, Jimeng 모두 됩니다(추천이 아니라 예시입니다). 잘 안 나오면 다시 그려 달라고 하거나 "캐릭터는 그대로 두고 2번째 줄만 다시 그려 줘"라고 하세요.',
'settings.pets.guide.prompt': `게임 캐릭터 동작 시트(스프라이트 시트)를 그려 주세요.
[캐릭터]
동그란 머리의 주황색 새끼 고양이, 파란 목도리를 두른
3등신 SD 비율, 3D 카툰 렌더링, 부드럽고 윤기 있는 표면,
밝고 산뜻한 색감.
(이 두 줄을 원하는 캐릭터로 바꾸세요. 구체적일수록 좋습니다)
[전체 조건]
· 배경은 완전히 투명하게. 배경색, 격자선, 글자, 그림자 없이
· 전체를 가로 8열 × 세로 9행, 총 72개의 같은 크기 칸으로 고르게 나눌 것
· 한 칸에 한 동작. 캐릭터는 칸 가운데에 두고 주변에 여백을 조금 남길 것
· 모든 칸에 같은 캐릭터. 체형, 색 배합, 그림체를 완전히 통일할 것
· 쓰지 않는 칸은 완전히 투명하게 둘 것
[각 줄에 그릴 내용]
1번째 줄 앞 6칸: 가만히 서서 숨 쉬듯 살짝 위아래로 움직임
2번째 줄 8칸 전부: 오른쪽으로 달리는 한 사이클. 항상 오른쪽을 향할 것
3번째 줄 앞 4칸: 손을 들어 인사하기
4번째 줄 앞 5칸: 웅크리기, 뛰어오르기, 착지하기
5번째 줄 8칸 전부: 실망해서 고개를 떨구고 한숨 쉬기
6번째 줄 앞 6칸: 제자리에서 기다리며 두리번거리기
7번째 줄 앞 6칸: 고개를 숙이고 바쁘게 작업하기
8번째 줄 8칸 전부: 머리와 시선이 정면 위에서 시작해 오른쪽으로 천천히 돌아 오른쪽 위, 오른쪽, 오른쪽 아래를 지나 정면 아래 직전까지
9번째 줄 8칸 전부: 앞 줄에 이어 정면 아래에서 왼쪽으로 돌아 왼쪽 아래, 왼쪽, 왼쪽 위를 지나 정면 위 직전까지`,
'settings.pets.guide.promptCopy': '이 프롬프트 복사',
'settings.pets.guide.promptCopied': '복사했습니다',
'settings.pets.guide.copyFailed': '자동으로 복사하지 못했습니다. 위 글을 직접 선택해 복사하세요.',
'settings.pets.guide.step2Title': '템플릿과 비교해 확인하기',
'settings.pets.guide.step2Body': '그림이 나오면 아래 템플릿과 비교해 세 가지를 확인하세요. 다르면 가져오기 전에 다시 그려 달라고 하세요.',
'settings.pets.guide.check1': '배경이 비쳐 보이고 흰색이 아닌지 — 흰 배경은 바탕화면에서 네모난 판이 됩니다',
'settings.pets.guide.check2': '가로 8칸, 세로 9줄, 한 칸에 한 동작인지',
'settings.pets.guide.check3': '아홉 줄 내내 같은 캐릭터이고 중간에 얼굴이나 색이 바뀌지 않았는지',
'settings.pets.guide.templateAlt': '동작 시트 템플릿: 가로 8열 세로 9행, 각 줄에 그릴 내용 표시',
'settings.pets.guide.templateExpand': '이미지를 눌러 전체 템플릿 보기',
'settings.pets.guide.templateCollapse': '이미지를 눌러 접기',
'settings.pets.guide.saveTemplate': '템플릿 저장하기',
'settings.pets.guide.saveFailed': '템플릿 이미지를 저장하지 못했습니다. 잠시 후 다시 시도하세요.',
'settings.pets.guide.step3Title': '고르기만 하면 끝',
'settings.pets.guide.step3Body': '다음 화면에서 이름을 적고, 방금 만든 그림을 고르세요. 크기를 직접 맞출 필요 없고 "왼쪽으로 달리기" 줄도 알아서 좌우 반전으로 채워집니다.',
'settings.pets.guide.continue': '다 그렸어요, 다음',
'settings.pets.guide.backToSteps': '단계로 돌아가기',
'settings.pets.createError': '이 펫을 만들지 못했습니다.',
'settings.pets.createError.invalidId': '펫 ID에는 소문자, 숫자, 가운데 하이픈만 사용할 수 있습니다.',
'settings.pets.createError.duplicateId': '이 ID를 쓰는 펫이 이미 있습니다. 다른 ID로 바꿔 주세요.',
'settings.pets.createError.unsupportedFormat': 'PNG 또는 WebP 형식의 이미지를 선택하세요.',
'settings.pets.createError.imageTooLarge': '이미지가 너무 큽니다. 8MB 이하로 맞춰 주세요.',
'settings.pets.createError.imageDimensions': '이미지는 가로세로 32~4096픽셀이고 전체 픽셀 수가 16,777,216 이하여야 합니다.',
'settings.pets.createError.atlasDimensions': '이 이미지는 가로 8열 세로 9행으로 나눌 수 없습니다. 가로 8칸 세로 9줄인지 확인하거나, 완성된 1536×2288 아틀라스를 사용하세요.',
'settings.pets.createError.opaqueBackground': '이 이미지에는 투명 배경이 없어 바탕화면에서 네모난 판으로 보이게 됩니다. 배경이 투명한 PNG(흰 배경 말고)로 다시 내보내 달라고 하세요.',
'settings.pets.createError.invalidImage': '이 이미지를 읽을 수 없습니다. 움직이지 않는 PNG 또는 WebP를 선택하세요(움직이는 이미지는 안 됩니다).',
'settings.pets.createError.storage': '펫을 로컬 폴더에 저장하지 못했습니다.',
'settings.pets.dialog.imageTitle': '배경이 투명한 펫 이미지 선택',
'settings.pets.dialog.imageFilter': '펫 이미지',
'settings.pets.dialog.atlasTitle': '펫 동작 시트 선택',
'settings.pets.dialog.atlasFilter': '펫 동작 시트',
'settings.pets.builtInTitle': '기본 펫',
'settings.pets.customTitle': '내 펫',
'settings.pets.customEmpty': '아직 사용자 지정 펫이 없습니다.',
'settings.pets.selected': '선택됨',
'settings.pets.select': '선택',
'settings.pets.appearanceTitle': '모양',
'settings.pets.size': '펫 크기',
'settings.pets.sizeDescription': '96~192픽셀 사이에서 조절합니다.',
'settings.pets.motion': '애니메이션 재생',
'settings.pets.motionDescription': '꺼도 펫은 사용할 수 있지만 움직이지 않습니다.',
'settings.pets.showTaskPanel': '진행 중인 작업 패널 표시',
'settings.pets.showTaskPanelDescription': '작업이 실행 중일 때만 사각형 작업 패널을 표시합니다. 진행 중인 작업이 없으면 항상 숨깁니다.',
'settings.pets.collapsed': '접힌 상태로 시작',
'settings.pets.collapsedDescription': '작업 패널을 열기 전에는 펫만 표시합니다.',
'settings.pets.folderTitle': '사용자 지정 펫 폴더',
'settings.pets.folderDescription': '사용자 지정 펫 패키지는 여기에 저장됩니다: ${CLAUDE_CONFIG_DIR:-~/.claude}/cc-haha/pets',
'settings.pets.openFolder': '폴더 열기',
'settings.pets.openFolderError': '사용자 지정 펫 폴더를 열 수 없습니다.',
'settings.pets.invalidCustom': '잘못된 사용자 지정 펫 폴더 {count}개를 건너뛰었습니다.',
'settings.pets.builtin.dada': '아이디어를 하나씩 쌓아 주는 차분한 코딩 로봇입니다.',
'settings.pets.builtin.huhu': '연필과 노트로 복잡한 작업의 길을 그려 주는 계획 로봇입니다.',
'settings.pets.builtin.bubu': '렌치를 들고 문제를 찾아 고치는 데 능한 수리 로봇입니다.',
'settings.pets.builtin.huihui': '기어를 품고 새 답변이 오면 활기를 띠는 빌드 로봇입니다.',
// Desktop pet window
'pet.window.noSessions': '진행 중인 작업이 없습니다',
'pet.window.expand': '펼치기',
'pet.window.collapse': '접기',
'pet.window.interact': '펫과 상호작용',
'pet.window.close': '펫 닫기',
'pet.window.saveError': '펫 설정을 저장하지 못했습니다. 다시 시도해 주세요.',
'pet.window.closeError': '펫을 닫지 못했습니다. 다시 시도해 주세요.',
'pet.window.status.waiting': '입력 대기 중',
'pet.window.status.failed': '확인 필요',
'pet.window.status.review': '검토 준비됨',
'pet.window.status.running': '작업 중',
'pet.window.status.idle': '대기 중',
'pet.window.sessionCount': '작업 {count}개',
'pet.window.expandTasks': '진행 중인 작업 {count}개 표시',
'pet.window.hideTasks': '진행 중인 작업 {count}개 숨기기',
'pet.window.untitledSession': '제목 없는 작업',
// Settings > Usage
'settings.activity.title': '토큰 사용량',
'settings.activity.profileTitle': '프로필',
'settings.activity.profilePrivacy': '로컬 전용',
'settings.activity.defaultHandle': 'github.com/NanmiCoder/cc-haha',
'settings.activity.editProfile': '프로필 편집',
'settings.activity.displayName': '표시 이름',
'settings.activity.subtitle': '둘째 줄',
'settings.activity.displayNameHelper': '표시 이름과 둘째 줄을 편집합니다. 둘째 줄의 URL은 링크로 열립니다.',
'settings.activity.avatar': '아바타',
'settings.activity.avatarHelper': 'PNG, JPEG 또는 WebP, 최대 2MB.',
'settings.activity.changeAvatar': '아바타 변경',
'settings.activity.removeAvatar': '아바타 제거',
'settings.activity.saveProfile': '저장',
'settings.activity.cancelEdit': '취소',
'settings.activity.profileSaved': '로컬에 저장됨',
'settings.activity.profileSaveFailed': '프로필을 저장할 수 없습니다',
'settings.activity.subtitleLoading': '로컬 Claude Code CLI 세션 기록을 기반으로 합니다',
'settings.activity.totalTokens': '총 토큰 수',
'settings.activity.peakTokens': '최대 토큰 수',
'settings.activity.longestTask': '최장 작업',
'settings.activity.currentStreak': '현재 연속 기록',
'settings.activity.longestStreak': '최장 연속 기록',
'settings.activity.noDuration': '0분',
'settings.activity.tokenActivity': '토큰 활동',
'settings.activity.mode.daily': '일별',
'settings.activity.mode.weekly': '주별',
'settings.activity.mode.cumulative': '누적',
'settings.activity.modeHelp.daily': '일별: 각 칸은 그날의 토큰 사용량입니다.',
'settings.activity.modeHelp.weekly': '주별: 각 열은 한 주의 총 토큰 사용량입니다.',
'settings.activity.modeHelp.cumulative': '누적: 각 열은 해당 주까지의 총 토큰 수입니다.',
'settings.activity.emptyTitle': '아직 로컬 사용 기록이 없습니다',
'settings.activity.emptyBody': 'CLI 또는 데스크톱 세션을 시작하면 완료된 모델 응답이 여기에 표시됩니다.',
'settings.activity.metric.yesterday': '어제',
'settings.activity.metric.today': '오늘',
'settings.activity.metric.last4': '지난 4일',
'settings.activity.metric.last30': '30일',
'settings.activity.metric.streak': '연속 기록',
'settings.activity.metric.bestStreak': '최고 {days}일',
'settings.activity.heatmapLabel': '일별 토큰 사용량',
'settings.activity.weekRange': '{start} - {end}',
'settings.activity.cumulativeThrough': '{date}까지',
'settings.activity.tokenValue': '{tokens} 토큰',
'settings.activity.count.sessionOne': '{count} 세션',
'settings.activity.count.sessionOther': '{count} 세션',
'settings.activity.count.dayOne': '{count}일',
'settings.activity.count.dayOther': '{count}일',
'settings.activity.count.runOne': '{count}회 실행',
'settings.activity.count.runOther': '{count}회 실행',
'settings.activity.weekday.mon': '월',
'settings.activity.weekday.wed': '수',
'settings.activity.weekday.fri': '금',
'settings.activity.selectedDay': '선택한 날짜',
'settings.activity.sessions': '세션',
'settings.activity.tokens': '토큰',
'settings.activity.messages': '메시지',
'settings.activity.tools': '도구',
'settings.activity.activityInsights': '활동 인사이트',
'settings.activity.activeRate': '활성 비율',
'settings.activity.mostUsedModel': '가장 많이 쓴 모델',
'settings.activity.exploredSkills': '사용한 스킬',
'settings.activity.totalSkillUses': '스킬 사용 수',
'settings.activity.totalToolCalls': '도구 호출',
'settings.activity.freshTokens': '신규 토큰',
'settings.activity.cachedTokens': '캐시 적중',
'settings.activity.estimatedCost': '예상 비용',
'settings.activity.ofTotal': '전체의 {percent}',
'settings.activity.costExcludesModels': '가격 미책정 모델 {count}개 제외',
'settings.activity.totalSessions': '총 세션',
'settings.activity.mostUsedPluginsAndSkills': '자주 쓰는 플러그인/스킬',
'settings.activity.none': '없음',
'settings.activity.less': '적음',
'settings.activity.more': '많음',
// Settings > Terminal
'settings.terminal.title': '터미널',
'settings.terminal.description': '플러그인, 스킬, MCP 설정을 위해 호스트 컴퓨터의 명령을 실행합니다. 데스크톱 앱에는 claude-haha가 포함되어 있습니다. 문서의 claude <args>를 claude-haha <args>로 바꾸세요. 예: claude-haha plugin install ... 또는 claude-haha mcp add ...',
'settings.terminal.infoLabel': '터미널 설정 도움말',
'settings.terminal.clear': '지우기',
'settings.terminal.restart': '다시 시작',
'settings.terminal.windowTitle': '호스트 셸',
'settings.terminal.unavailableTitle': '데스크톱 런타임이 필요합니다',
'settings.terminal.unavailableBody': '대화형 터미널을 시작하려면 이 페이지를 패키지된 데스크톱 앱에서 여세요.',
'settings.terminal.preferencesTitle': '시작 셸',
'settings.terminal.preferencesBody': '새 터미널 세션과 다시 시작 후에 사용됩니다.',
'settings.terminal.startupShell': '시작 셸',
'settings.terminal.customPath': '사용자 지정 셸 경로',
'settings.terminal.customPathPlaceholder': 'C:\\Program Files\\PowerShell\\7\\pwsh.exe',
'settings.terminal.customPathRequired': '저장하기 전에 셸 경로를 입력하세요.',
'settings.terminal.customPathAbsolute': '사용자 지정 셸 경로는 Windows 절대 경로여야 합니다.',
'settings.terminal.saveShell': '셸 저장',
'settings.terminal.saveShellSuccess': '저장했습니다. 적용하려면 다시 시작하거나 새 터미널을 여세요.',
'settings.terminal.shell.system': '시스템 기본값',
'settings.terminal.shell.systemDesc': '현재 COMSPEC 기반 동작을 유지합니다.',
'settings.terminal.shell.pwsh': 'PowerShell 7 (pwsh)',
'settings.terminal.shell.pwshDesc': '설치되어 있으면 pwsh.exe를 사용합니다.',
'settings.terminal.shell.powershell': 'Windows PowerShell',
'settings.terminal.shell.powershellDesc': '기본 제공 powershell.exe를 사용합니다.',
'settings.terminal.shell.cmd': '명령 프롬프트',
'settings.terminal.shell.cmdDesc': 'cmd.exe를 명시적으로 사용합니다.',
'settings.terminal.shell.custom': '사용자 지정 실행 파일',
'settings.terminal.shell.customDesc': '절대 경로의 셸 실행 파일을 실행합니다.',
'settings.terminal.status.idle': '유휴',
'settings.terminal.status.starting': '시작 중',
'settings.terminal.status.running': '실행 중',
'settings.terminal.status.exited': '종료됨',
'settings.terminal.status.error': '오류',
'settings.terminal.status.unavailable': '사용 불가',
'settings.terminal.bashPathLabel': 'Bash 경로',
'settings.terminal.bashPathDescription': 'Windows에서는 터미널 셸 기본값이 CMD입니다. 도구 호출이 Unix 명령(grep, sed 등)을 사용하는 경우 여기에 Bash 실행 파일(예: Git Bash) 경로를 설정하세요.',
'settings.terminal.bashPathSave': '저장',
'settings.terminal.bashPathReset': '기본값으로 재설정',
'settings.terminal.bashPathSaved': '저장됨',
'settings.terminal.bashPathInvalid': '경로가 존재하지 않습니다. 유효한 Bash 실행 파일을 선택하세요.',
'settings.terminal.bashPathBrowse': 'Bash 실행 파일 찾아보기',
'terminal.newTab': '새 터미널',
'terminal.openInTab': '탭에서 열기',
'terminal.closePanel': '터미널 패널 닫기',
'terminal.resizePanel': '터미널 패널 크기 조정',
// Settings > Diagnostics
'settings.diagnostics.title': '진단',
'settings.diagnostics.description': '시작, 공급자, 세션 실패를 디버깅하기 위한 서버 및 CLI 런타임 로그입니다.',
'settings.diagnostics.refresh': '새로 고침',
'settings.diagnostics.totalSize': '로그 크기',
'settings.diagnostics.events': '이벤트',
'settings.diagnostics.completeEvents': '정상 이벤트',
'settings.diagnostics.completeEventsValue': '정상 이벤트 {count}개',
'settings.diagnostics.visibleEvents': '표시된 이벤트',
'settings.diagnostics.visibleEventsValue': '표시된 이벤트 {count}개',
'settings.diagnostics.corruptLinesWarning': '손상된 진단 레코드 {count}개의 증거가 감지되었거나 보존되어 있습니다. 현재 진단 파일에는 물리적 줄 {physical}개가 있습니다. 이벤트 합계와 최근 기록이 불완전할 수 있습니다.',
'settings.diagnostics.storageLimitExceededWarning': '하나 이상의 진단 영역 또는 활성 작성 프로세스가 각자의 보존 목표를 일시적으로 초과했습니다. 해당 세그먼트가 닫히거나 보존 기간이 지나면 정리됩니다.',
'settings.diagnostics.recentErrors': '24시간 경고',
'settings.diagnostics.retention': '보존 기간',
'settings.diagnostics.retentionValue': '{days}일 / {size}',
'settings.diagnostics.logDirectory': '로그 디렉터리',
'settings.diagnostics.openDirectory': '열기',
'settings.diagnostics.exportBundle': '번들 내보내기',
'settings.diagnostics.copySummary': '오류 요약 복사',
'settings.diagnostics.copyIssueReport': '이슈 보고서 복사',
'settings.diagnostics.issueReportCopied': '이슈 보고서를 복사했습니다.',
'settings.diagnostics.issueReportCopyFailed': '이슈 보고서를 복사하지 못했습니다.',
'settings.diagnostics.clearLogs': '로그 지우기',
'settings.diagnostics.recentEvents': '최근 이벤트',
'settings.diagnostics.privacyNote': '이슈 보고서와 내보낸 번들은 최선의 방식으로 정리되어 채팅 및 파일 내용, 전체 환경 변수와 API 키를 생략합니다. 공유 전에 비공개 메타데이터가 없는지 검토하세요.',
'settings.diagnostics.noEvents': '아직 진단 이벤트가 없습니다.',
'settings.diagnostics.noRecentErrors': '최근 경고나 오류가 없습니다.',
'settings.diagnostics.loadFailed': '진단 정보를 불러오지 못했습니다.',
'settings.diagnostics.openFailed': '진단 디렉터리를 열지 못했습니다.',
'settings.diagnostics.exportFailed': '진단 번들을 내보내지 못했습니다.',
'settings.diagnostics.exported': '{file}을(를) 내보냈습니다',
'settings.diagnostics.summaryCopied': '오류 요약을 복사했습니다.',
'settings.diagnostics.copyFailed': '오류 요약을 복사하지 못했습니다.',
'settings.diagnostics.confirmClear': '모든 로컬 진단 로그와 내보낸 번들을 지우시겠습니까?',
'settings.diagnostics.cleared': '진단 정보를 지웠습니다.',
'settings.diagnostics.clearFailed': '진단 정보를 지우지 못했습니다.',
'settings.diagnostics.eventDetails': '세부 정보',
'settings.diagnostics.localIndex.title': '로컬 인덱스',
'settings.diagnostics.localIndex.description': '세션 및 진단 읽기 속도를 높이는 재구축 가능한 로컬 프로젝션입니다.',
'settings.diagnostics.localIndex.rebuild': '로컬 인덱스 재구축',
'settings.diagnostics.localIndex.confirmRebuild': '파생 로컬 인덱스만 재구축합니다. 대화 기록과 설정은 변경되지 않습니다.',
'settings.diagnostics.localIndex.rebuildSucceeded': '로컬 인덱스를 재구축했습니다. 원본 기록은 삭제되지 않았습니다.',
'settings.diagnostics.localIndex.rebuildFailed': '로컬 인덱스를 재구축하지 못했습니다.',
'settings.diagnostics.localIndex.mode': '모드',
'settings.diagnostics.localIndex.state': '상태',
'settings.diagnostics.localIndex.indexed': '인덱싱된 소스',
'settings.diagnostics.localIndex.degradedSources': '성능 저하 소스',
'settings.diagnostics.localIndex.databaseSize': '데이터베이스',
'settings.diagnostics.localIndex.walSize': 'WAL',
'settings.diagnostics.localIndex.lastUpdated': '마지막 업데이트',
'settings.diagnostics.localIndex.errorCode': '오류 코드',
'settings.diagnostics.localIndex.never': '없음',
'settings.diagnostics.localIndex.none': '없음',
'settings.diagnostics.localIndex.unavailable': '로컬 인덱스 상태를 사용할 수 없습니다. 기존 진단 기능은 계속 사용할 수 있습니다.',
'settings.diagnostics.localIndex.buildingMessage': '백그라운드에서 인덱싱 중입니다. 세션 기록은 계속 사용할 수 있습니다.',
'settings.diagnostics.localIndex.degradedMessage': '로컬 인덱스의 성능이 저하되었습니다. 파일 기반 폴백은 계속 사용할 수 있습니다.',
'settings.diagnostics.localIndex.mode.off': '끔',
'settings.diagnostics.localIndex.mode.shadow': '섀도',
'settings.diagnostics.localIndex.mode.on': '켬',
'settings.diagnostics.localIndex.state.off': '끔',
'settings.diagnostics.localIndex.state.building': '구축 중',
'settings.diagnostics.localIndex.state.ready': '준비됨',
'settings.diagnostics.localIndex.state.degraded': '성능 저하',
'settings.diagnostics.eventId': '이벤트 ID',
'settings.diagnostics.copyEventId': '이벤트 ID 복사',
'settings.diagnostics.eventIdCopied': '이벤트 ID를 복사했습니다.',
'settings.diagnostics.eventIdCopyFailed': '이벤트 ID를 복사하지 못했습니다.',
'settings.diagnostics.doctorTitle': 'Doctor',
'settings.diagnostics.doctorDescription': '보호된 사용자 및 프로젝트 상태를 변경하지 않고 확인합니다.',
'settings.diagnostics.doctorProtectedData': '채팅 기록, 모델 구성, 스킬, MCP, IM, OAuth는 항상 보호됩니다.',
'settings.diagnostics.doctorSafeKeys': '재설정 시 다음 항목만 제거합니다: cc-haha-open-tabs, cc-haha-session-runtime, cc-haha-theme, cc-haha-locale, cc-haha-app-zoom, cc-haha-ui-zoom, cc-haha.persistence.schemaVersion.',
'settings.diagnostics.runDoctor': 'Doctor 실행',
'settings.diagnostics.resetSafeUiState': '안전한 UI 상태 재설정',
'settings.diagnostics.confirmResetSafeUiState': '위에 나열된 재생성 가능한 데스크톱 UI 키만 재설정할까요? 보호된 사용자 및 프로젝트 데이터는 변경되지 않습니다.',
'settings.diagnostics.doctorCheckCompleted': 'Doctor 확인이 완료되었습니다.',
'settings.diagnostics.doctorResetCompleted': '안전한 UI 상태 재설정이 완료되었습니다.',
'settings.diagnostics.doctorPartial': '안전한 UI 상태 재설정이 완료되었지만 {count}개의 키를 처리하지 못했습니다.',
'settings.diagnostics.doctorFailed': 'Doctor가 실패했습니다.',
'settings.diagnostics.doctorScope': '범위',
'settings.diagnostics.doctorScopeProject': '사용자 및 활성 프로젝트',
'settings.diagnostics.doctorScopeUser': '사용자만',
'settings.diagnostics.doctorSummary': '정상: {healthy} · 구성 안 됨: {neutral} · 누락: {missing} · 유효하지 않음: {invalid}',
'settings.diagnostics.doctorFindings': 'Doctor 발견 항목',
'settings.diagnostics.doctorNoFindings': '누락되거나 유효하지 않은 항목이 없습니다.',
'settings.diagnostics.doctorStatusHealthy': '정상',
'settings.diagnostics.doctorStatusNotConfigured': '구성 안 됨',
'settings.diagnostics.doctorStatusMissing': '누락',
'settings.diagnostics.doctorStatusInvalidJson': '유효하지 않은 JSON',
'settings.diagnostics.doctorStatusInvalidJsonl': '유효하지 않은 JSONL',
'settings.diagnostics.doctorStatusInvalidSchema': '유효하지 않은 스키마',
'settings.diagnostics.doctorStatusUnreadable': '읽을 수 없음',
'settings.diagnostics.doctorRemovedKeys': '제거된 키',
'settings.diagnostics.doctorFailedKeys': '실패한 키',
'settings.diagnostics.doctorNoKeys': '없음',
'errorBoundary.title': '문제가 발생했습니다.',
'errorBoundary.description': '오류가 진단에 기록되었습니다.',
// Settings > Claude Official Login
'settings.claudeOfficialLogin.intro': '공식 Claude 모델을 사용하려면 Claude.ai 계정에 로그인해야 합니다. 아래 버튼을 클릭하면 브라우저에서 공식 Claude 로그인 페이지가 열립니다. 승인 후 이곳으로 돌아옵니다.',
'settings.claudeOfficialLogin.loginButton': 'Claude에 로그인',
'settings.claudeOfficialLogin.loginStarting': '여는 중…',
'settings.claudeOfficialLogin.logoutButton': '로그아웃',
'settings.claudeOfficialLogin.logoutProcessing': '처리 중…',
'settings.claudeOfficialLogin.loggedInPrefix': '로그인됨 (Claude',
'settings.claudeOfficialLogin.subTypeUnknown': '알 수 없음',
'settings.claudeOfficialLogin.errorPrefix': '오류: ',
'settings.claudeOfficialLogin.openBrowserFailed': '브라우저를 열지 못했습니다. 승인 URL에 수동으로 접속하세요.',
// Settings > ChatGPT Official Login
'settings.chatgptOfficialLogin.intro': '데스크톱 세션에서 GPT 모델을 사용하려면 ChatGPT로 로그인하세요.',
'settings.chatgptOfficialLogin.loginButton': 'ChatGPT로 로그인',
'settings.chatgptOfficialLogin.loginStarting': '로그인 시작 중...',
'settings.chatgptOfficialLogin.logoutButton': '로그아웃',
'settings.chatgptOfficialLogin.logoutProcessing': '로그아웃 중...',
'settings.chatgptOfficialLogin.loggedInPrefix': '로그인 계정:',
'settings.chatgptOfficialLogin.accountUnknown': 'ChatGPT 계정',
'settings.chatgptOfficialLogin.openBrowserFailed': '브라우저를 열 수 없습니다. 승인 링크를 복사하여 수동으로 여세요.',
'settings.chatgptOfficialLogin.copyAuthorizeUrl': '승인 링크 복사',
'settings.chatgptOfficialLogin.copyLinkFailed': '승인 링크를 복사할 수 없습니다.',
'settings.chatgptOfficialLogin.errorPrefix': 'ChatGPT OAuth 오류: ',
'settings.grokOfficialLogin.intro': '데스크톱 세션에서 공식 Grok 모델을 사용하려면 Grok으로 로그인하세요.',
'settings.grokOfficialLogin.loginButton': 'Grok으로 로그인',
'settings.grokOfficialLogin.loginStarting': '로그인 시작 중...',
'settings.grokOfficialLogin.logoutButton': '로그아웃',
'settings.grokOfficialLogin.logoutProcessing': '로그아웃 중...',
'settings.grokOfficialLogin.loggedInPrefix': '로그인 계정:',
'settings.grokOfficialLogin.accountUnknown': 'Grok 계정',
'settings.grokOfficialLogin.openBrowserFailed': '브라우저를 열 수 없습니다. 승인 링크를 복사하여 수동으로 여세요.',
'settings.grokOfficialLogin.copyAuthorizeUrl': '승인 링크 복사',
'settings.grokOfficialLogin.copyLinkFailed': '승인 링크를 복사할 수 없습니다.',
'settings.grokOfficialLogin.errorPrefix': 'Grok OAuth 오류: ',
// Settings > Providers
'settings.providers.title': '공급자',
'settings.providers.description': '모델 액세스를 위한 API 공급자를 관리합니다.',
'settings.providers.addProvider': '공급자 추가',
'settings.providers.officialName': 'Claude 공식',
'settings.providers.officialDesc': 'Anthropic 네이티브 — API 키 불필요',
'settings.providers.openaiOfficialName': 'ChatGPT 공식',
'settings.providers.openaiOfficialDesc': 'ChatGPT 계정을 통한 OpenAI OAuth — API 키 불필요',
'settings.providers.grokOfficialName': 'Grok 공식',
'settings.providers.grokOfficialDesc': 'xAI 계정을 통한 공식 Grok OAuth — API 키 불필요',
'settings.providers.connected': '연결됨 ({latency}ms)',
'settings.providers.failed': '실패: {error}',
'settings.providers.connectivityOk': '① 연결 ({latency}ms)',
'settings.providers.connectivityFailed': '① 연결 실패: {error}',
'settings.providers.proxyOk': '② 프록시 파이프라인 ({latency}ms)',
'settings.providers.proxyFailed': '② 프록시 실패: {error}',
'settings.providers.confirmDelete': '공급자 "{name}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
'settings.providers.activate': '활성화',
'settings.providers.default': '기본값',
'settings.providers.setDefault': '기본값으로 설정',
'settings.providers.test': '테스트',
'settings.providers.edit': '편집',
'settings.providers.dragToReorder': '드래그하여 순서 변경',
'settings.providers.requestFailed': '요청에 실패했습니다',
'settings.providers.addTitle': '공급자 추가',
'settings.providers.editTitle': '공급자 편집',
'settings.providers.preset': '사전 설정',
'settings.providers.name': '이름',
'settings.providers.namePlaceholder': '공급자 이름',
'settings.providers.notes': '메모',
'settings.providers.notesPlaceholder': '선택 사항 메모...',
'settings.providers.baseUrl': '기본 URL',
'settings.providers.baseUrlPlaceholder': 'https://api.example.com/anthropic',
'settings.providers.baseUrlHelp': '기본 URL 입력 도움말',
'settings.providers.baseUrlTooltip': '/v1 앞까지의 엔드포인트를 입력하세요. 이후 경로는 자동으로 추가됩니다.',
'settings.providers.endpointRegion': '서비스 지역',
'settings.providers.regionChina': '중국 본토',
'settings.providers.regionGlobal': '글로벌',
'settings.providers.regionCustom': '사용자 지정',
'settings.providers.apiKey': 'API 키',
'settings.providers.apiKeyKeep': 'API 키 (비워 두면 현재 값 유지)',
'settings.providers.showApiKey': 'API 키 표시',
'settings.providers.hideApiKey': 'API 키 숨기기',
'settings.providers.getApiKey': 'API 키 가져오기',
'settings.providers.modelMapping': '모델 매핑',
'settings.providers.mainModel': '메인 모델',
'settings.providers.haikuModel': 'Haiku 모델',
'settings.providers.sonnetModel': 'Sonnet 모델',
'settings.providers.opusModel': 'Opus 모델',
'settings.providers.model1mSupportShort': '1M',
'settings.providers.model1mSupportHint': '해당 모델 엔드포인트가 실제로 100만 토큰 컨텍스트를 지원할 때만 「1M」을 선택하세요. 잘못 선택하면 자동 압축이 작동하지 않습니다.',
'settings.providers.model1mSupportTooltip': '이 모델 엔드포인트가 100만 토큰 컨텍스트를 지원한다고 선언합니다. 모델 이름에 [1m]이 추가되고 컨텍스트 창이 1,000,000으로 설정됩니다. 엔드포인트의 실제 창이 1M보다 작으면 자동 압축이 실행되지 않고 요청이 공급자의 컨텍스트 한도에 도달합니다. 선택을 해제하면 사전 설정 창으로 되돌아갑니다.',
'settings.providers.modelIdPlaceholder': '예: deepseek-v4-flash',
'settings.providers.sameAsMain': '메인과 동일',
'settings.providers.contextSettingsTitle': '컨텍스트 및 자동 압축',
'settings.providers.contextSettingsDesc': '사전 설정 한도가 자동으로 적용됩니다. 공급자가 한도를 변경하거나 사용자 지정 모델 ID를 사용할 때만 편집하세요.',
'settings.providers.contextSettingsEdit': '고급',
'settings.providers.contextSettingsHide': '숨기기',
'settings.providers.contextSummaryAuto': '구성된 모델을 자동 감지합니다. 알 수 없는 모델은 기본 제공 폴백을 사용합니다',
'settings.providers.contextFallbackAuto': '알 수 없는 모델: 자동',
'settings.providers.contextFallbackSummary': '알 수 없는 모델: {tokens}',
'settings.providers.modelContextWindows': '모델 컨텍스트 창',
'settings.providers.mainContextWindow': '메인 모델 컨텍스트',
'settings.providers.haikuContextWindow': 'Haiku 모델 컨텍스트',
'settings.providers.sonnetContextWindow': 'Sonnet 모델 컨텍스트',
'settings.providers.opusContextWindow': 'Opus 모델 컨텍스트',
'settings.providers.contextWindowPlaceholder': '예: 200000',
'settings.providers.modelContextWindowsDesc': '각 모델의 실제 컨텍스트 창을 사용합니다. 사전 설정은 자동으로 입력됩니다. 비워 두면 기본 제공 감지 또는 200K로 폴백합니다.',
'settings.providers.modelContextWindowNumberError': '정수를 입력하세요.',
'settings.providers.modelContextWindowRangeError': '16000에서 10000000 사이여야 합니다.',
'settings.providers.autoCompactWindow': '알 수 없는 모델 폴백 창',
'settings.providers.autoCompactWindowPlaceholder': '선택 사항, 예: 200000',
'settings.providers.autoCompactWindowDesc': '컨텍스트 창을 식별할 수 없는 모델은 이 값을 그대로 사용합니다. 식별된 모델은 둘 중 더 작은 값을 사용하므로 이 값으로 창을 줄일 수는 있어도 늘릴 수는 없습니다.',
'settings.providers.autoCompactWindowNumberError': '정수를 입력하세요.',
'settings.providers.autoCompactWindowRangeError': '16000에서 10000000 사이여야 합니다.',
'settings.providers.testConnection': '연결 테스트',
'settings.providers.settingsJson': '설정 JSON',
'settings.providers.settingsJsonDesc': '~/.claude/cc-haha/settings.json — 직접 편집할 수 있습니다. 저장 시 기록됩니다.',
'settings.providers.jsonError': 'JSON 구문 오류: {error}',
'settings.providers.apiFormat': 'API 형식',
'settings.providers.apiFormatAnthropic': 'Anthropic Messages (네이티브)',
'settings.providers.apiFormatOpenaiChat': 'OpenAI Chat Completions (프록시)',
'settings.providers.apiFormatOpenaiResponses': 'OpenAI Responses API (프록시)',
'settings.providers.proxyHint': '요청은 로컬 프록시를 통해 변환됩니다',
'settings.providers.authStrategy': '인증 변수',
'settings.providers.authStrategyApiKey': 'API 키 (ANTHROPIC_API_KEY)',
'settings.providers.authStrategyApiKeyDesc': 'x-api-key를 사용한 Anthropic API 직접 액세스.',
'settings.providers.authStrategyAuthToken': 'Bearer 토큰 (ANTHROPIC_AUTH_TOKEN)',
'settings.providers.authStrategyAuthTokenDesc': 'Authorization Bearer를 사용하는 대부분의 타사 Anthropic 호환 서비스용.',
'settings.providers.authStrategyAuthTokenEmptyApiKey': 'Bearer + 빈 API_KEY',
'settings.providers.authStrategyAuthTokenEmptyApiKeyDesc': 'Anthropic API 키로 폴백하지 않아야 하는 OpenRouter/Ollama 형식 구성용.',
'settings.providers.authStrategyDualSameToken': '두 변수 모두에 토큰 쓰기',
'settings.providers.authStrategyDualSameTokenDesc': '두 변수를 모두 확인하는 Hugging Face Router 같은 서비스용.',
'settings.providers.authStrategyDualDummy': '두 변수 모두에 더미 값 쓰기',
'settings.providers.authStrategyDualDummyDesc': '자리 표시자 인증 값만 필요한 로컬 vLLM 호환 서비스용.',
'settings.providers.toolSearchEnabled': 'Tool Search 사용',
'settings.providers.toolSearchDesc': '기본적으로 꺼져 있습니다. 모델과 최종 업스트림이 tool_reference를 지원할 때만 켜세요. 호환되지 않는 공급자는 HTTP 400을 반환할 수 있습니다.',
'settings.providers.toolSearchUnsupported': '여기서는 Anthropic Messages 형식 공급자만 Tool Search를 지원합니다. OpenAI 프록시 형식은 전체 도구 schema를 유지합니다.',
'settings.providers.toolSearchConfirmTitle': 'Tool Search를 사용하시겠습니까?',
'settings.providers.toolSearchConfirmBody': 'Anthropic에서 Tool Search를 지원하는 모델을 사용하고 최종 LLM 업스트림 또는 게이트웨이도 defer_loading과 tool_reference를 명시적으로 지원할 때만 켜세요.',
'settings.providers.toolSearchConfirmRisk': 'LM Studio, Ollama 및 많은 타사 호환 엔드포인트는 HTTP 400을 반환하여 현재 세션을 계속할 수 없게 만들 수 있습니다.',
'settings.providers.toolSearchConfirmEnable': '계속 사용',
'settings.providers.disableExperimentalBetas': '실험적 Beta 헤더 비활성화',
'settings.providers.disableExperimentalBetasDesc': '이 공급자에 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1을 설정해 타사 게이트웨이가 거부할 수 있는 beta API 형식을 피합니다. GPT 및 o 시리즈 모델에는 Session에서 선택한 추론 강도가 계속 전달됩니다. 다른 Anthropic 호환 모델에 직접 연결할 때는 게이트웨이 기본값으로 돌아갈 수 있습니다.',
'settings.providers.imageGenerationEnabled': '이미지 생성 사용',
'settings.providers.imageGenerationEnabledDesc': 'OpenAI 호환 Images API를 통해 채팅에서 이미지를 생성합니다. 인증 정보는 Skill이 아니라 공급자 설정에 저장됩니다.',
'settings.providers.imageGenerationModel': '이미지 모델',
'settings.providers.imageGenerationModelPlaceholder': 'gpt-image-2',
'settings.providers.imageGenerationModelHint': '필수입니다. 이 업스트림이 제공하는 이미지 모델 ID를 입력하세요.',
'settings.providers.imageGenerationBaseUrl': '이미지 API 기본 URL',
'settings.providers.imageGenerationBaseUrlPlaceholder': 'https://api.example.com/v1',
'settings.providers.imageGenerationBaseUrlHint': '선택 사항입니다. 비워 두면 채팅 공급자의 기본 URL을 재사용합니다.',
'settings.providers.imageGenerationApiKey': '이미지 API 키',
'settings.providers.imageGenerationApiKeyHint': '선택 사항입니다. 비워 두면 채팅 공급자의 API 키를 재사용합니다.',
'settings.providers.fetchModels': '모델 가져오기',
'settings.providers.fetchModelsHint': '기본 URL을 먼저 입력하세요.',
'settings.providers.fetchModelsApiKeyHint': '모델 목록을 가져오려면 API 키를 입력하세요.',
'settings.providers.fetchModelsSupportHint': '상위 공급자가 모델 목록 엔드포인트를 제공하는 경우에만 가져올 수 있습니다.',
'settings.providers.fetchModelsLoaded': '모델 목록을 가져왔습니다({count}개). 선택하거나 직접 입력해도 됩니다.',
'settings.providers.fetchModelsToast': '모델 목록을 가져왔습니다. 이제 드롭다운에서 모델을 선택할 수 있습니다.',
'settings.providers.fetchModelsEmpty': '모델을 찾지 못했습니다. 모델 ID를 직접 입력하세요.',
'settings.providers.fetchModelsPick': '가져온 목록에서 {label} 선택',
'settings.providers.fetchModelsGroupOther': '기타',
'settings.providers.fetchModelsMoreResults': '더 많은 모델이 있습니다. 입력하여 목록을 좁히세요.',
'settings.providers.fetchModelsErrorMissingConfig': '기본 URL과 API 키가 필요합니다.',
'settings.providers.fetchModelsErrorAuthFailed': 'API 키가 거부되었습니다. 키와 인증 변수를 확인하세요.',
'settings.providers.fetchModelsErrorEndpointNotFound': '이 기본 URL에서 모델 목록 엔드포인트를 찾지 못했습니다.',
'settings.providers.fetchModelsErrorTimeout': '공급자가 제때 응답하지 않았습니다.',
'settings.providers.fetchModelsErrorNotSupported': '이 공급자는 모델 목록을 제공하지 않습니다. 모델 ID를 직접 입력하세요.',
'settings.providers.fetchModelsErrorNetwork': '공급자에 연결할 수 없습니다. 기본 URL과 네트워크를 확인하세요.',
'settings.providers.fetchModelsErrorUnknown': '모델 목록을 가져오지 못했습니다.',
'settings.providers.fetchModelsErrorUpstream': '공급자 응답:',
'settings.providers.ccSwitch.importButton': 'cc-switch에서 가져오기',
'settings.providers.ccSwitch.title': 'cc-switch에서 가져오기',
'settings.providers.ccSwitch.description': '가져올 cc-switch 공급자를 선택하세요. 기존 공급자는 변경되지 않습니다.',
'settings.providers.ccSwitch.scanning': 'cc-switch 설정을 읽는 중',
'settings.providers.ccSwitch.unavailableTitle': 'cc-switch 설정을 읽을 수 없음',
'settings.providers.ccSwitch.unavailableNotFound': 'cc-switch 설정을 찾지 못했습니다. cc-switch를 설치하고 공급자를 하나 이상 추가하세요.',
'settings.providers.ccSwitch.unavailableUnreadable': 'cc-switch 설정을 읽지 못했습니다. 파일 권한을 확인한 뒤 다시 시도하세요.',
'settings.providers.ccSwitch.unavailableSchema': '이 cc-switch 버전은 cc-haha가 아직 인식하지 못하는 구조로 설정을 저장합니다. cc-haha를 업데이트하거나 공급자를 직접 추가하세요.',
'settings.providers.ccSwitch.unavailableTooOld': '현재 cc-switch는 cc-switch 자체에서도 더 이상 지원하지 않는 형식으로 설정을 저장합니다. 가져오려면 cc-switch v3.1.0 이상이 필요합니다.',
'settings.providers.ccSwitch.unavailableSqlite': '이 빌드에서는 cc-switch 데이터베이스를 열 수 없습니다. 공급자를 직접 추가하세요.',
'settings.providers.ccSwitch.configDir': '설정 디렉터리: {path}',
'settings.providers.ccSwitch.emptyTitle': '가져올 항목 없음',
'settings.providers.ccSwitch.emptyDesc': 'cc-switch는 찾았지만 설정된 공급자가 없습니다.',
'settings.providers.ccSwitch.selectAll': '전체 선택',
'settings.providers.ccSwitch.selectNone': '선택 해제',
'settings.providers.ccSwitch.selectedCount': '{total}개 중 {selected}개 선택',
'settings.providers.ccSwitch.currentBadge': '사용 중',
'settings.providers.ccSwitch.duplicateBadge': '이미 존재',
'settings.providers.ccSwitch.duplicateHint': '기존 공급자 "{name}"과(와) 중복됩니다.',
'settings.providers.ccSwitch.appTypeClaude': 'Claude Code',
'settings.providers.ccSwitch.appTypeClaudeDesktop': 'Claude Desktop',
'settings.providers.ccSwitch.skipNoBaseUrl': '가져올 수 없음: 기본 URL이 없습니다.',
'settings.providers.ccSwitch.skipNoApiKey': '가져올 수 없음: 저장된 API 키가 없습니다.',
'settings.providers.ccSwitch.skipNoModel': '가져올 수 없음: 설정된 모델이 없습니다.',
'settings.providers.ccSwitch.skipUnsupportedFormat': '가져올 수 없음: 지원하지 않는 API 형식입니다.',
'settings.providers.ccSwitch.skipFullUrlEndpoint': '가져올 수 없음: Base URL이 전체 엔드포인트여서 지원되지 않습니다.',
'settings.providers.ccSwitch.skipUnknown': '이 공급자는 가져올 수 없습니다.',
'settings.providers.ccSwitch.importAction': '가져오기 ({count})',
'settings.providers.ccSwitch.scanFailed': 'cc-switch 설정을 읽지 못했습니다.',
'settings.providers.ccSwitch.importFailed': '가져오기에 실패했습니다.',
'settings.providers.ccSwitch.importedSummary': '{imported}개를 가져오고 {skipped}개를 건너뛰었습니다.',
// Settings > Permissions
'settings.permissions.title': '권한 모드',
'settings.permissions.description': '도구 실행 권한을 처리하는 방식을 제어합니다.',
'settings.permissions.default': '권한 확인',
'settings.permissions.defaultDesc': '도구를 실행하기 전에 확인합니다',
'settings.permissions.acceptEdits': '편집 수락',
'settings.permissions.acceptEditsDesc': '파일 편집은 자동 승인하고 나머지는 확인합니다',
'settings.permissions.plan': '계획 모드',
'settings.permissions.planDesc': '실행하지 않고 사고와 계획만 합니다',
'settings.permissions.bypass': '모두 우회',
'settings.permissions.bypassDesc': '모든 권한 확인을 건너뜁니다 (위험)',
// Settings > Adapters
'settings.tab.adapters': 'IM 어댑터',
'settings.adapters.description': 'Telegram, WeChat, DingTalk, WhatsApp, Feishu를 통해 Claude Code와 채팅할 수 있도록 IM 어댑터를 구성합니다. 자세한 설정은',
'settings.adapters.configurationDocs': '문서 링크',
'settings.adapters.descriptionAfterDocs': '를 참고하세요.',
'settings.adapters.imTabs': 'IM 어댑터',
'settings.adapters.telegram': 'Telegram',
'settings.adapters.feishu': 'Feishu',
'settings.adapters.wechat': 'WeChat',
'settings.adapters.dingtalk': 'DingTalk',
'settings.adapters.whatsapp': 'WhatsApp',
'settings.adapters.botToken': '봇 토큰',
'settings.adapters.botTokenPlaceholder': '@BotFather에서 받은 토큰 붙여넣기',
'settings.adapters.appId': 'App ID',
'settings.adapters.appIdPlaceholder': '예: cli_xxx',
'settings.adapters.appSecret': 'App Secret',
'settings.adapters.appSecretPlaceholder': 'Feishu 개방 플랫폼에서 가져오기',
'settings.adapters.feishuCreateBotTitle': 'Feishu 봇이 필요하신가요?',
'settings.adapters.feishuCreateBotDesc': '필요한 권한이 이미 구성된 Feishu 봇을 문서에 안내된 OpenClaw 템플릿으로 만드세요. 그런 다음 아래에 App ID와 App Secret을 붙여넣으세요.',
'settings.adapters.feishuCreateBotAction': 'Feishu 봇 만들기',
'settings.adapters.feishuCreateBotStepCreate': '템플릿에서 봇을 만듭니다.',
'settings.adapters.feishuCreateBotStepFill': 'App ID와 App Secret을 복사하여 여기에 입력합니다.',
'settings.adapters.encryptKey': 'Encrypt Key',
'settings.adapters.encryptKeyPlaceholder': '선택 사항',
'settings.adapters.verificationToken': 'Verification Token',
'settings.adapters.verificationTokenPlaceholder': '선택 사항',
'settings.adapters.allowedUsers': '허용된 사용자',
'settings.adapters.allowedUsersHint': '쉼표로 구분합니다. 비워 두면 페어링된 사용자만 허용합니다.',
'settings.adapters.tgAllowedUsersPlaceholder': '예: 123456789, 987654321',
'settings.adapters.fsAllowedUsersPlaceholder': '예: ou_xxx, ou_yyy',
'settings.adapters.wcAllowedUsersPlaceholder': '예: wx_user_id_1, wx_user_id_2',
'settings.adapters.dtAllowedUsersPlaceholder': '예: manager001, staff_yyy',
'settings.adapters.waAllowedUsersPlaceholder': '예: 15551234567@s.whatsapp.net',
'settings.adapters.defaultProject': '기본 프로젝트',
'settings.adapters.defaultProjectHint': '새 IM 세션의 기본 작업 디렉터리입니다. 비어 있으면 봇은 현재 사용자 작업 디렉터리를 사용합니다.',
'settings.adapters.clearDefaultProject': '기본 프로젝트 지우기',
'settings.adapters.allowedRoots': '접근을 허용할 프로젝트 디렉터리',
'settings.adapters.allowedRootsHint': 'IM 봇의 접근 경계입니다. 이 디렉터리 안의 프로젝트만 목록에 표시하고 열거나 세션을 시작할 수 있습니다. 비워 두면 기본값을 사용합니다.',
'settings.adapters.allowedRootsOverridden': '{platforms} 은(는) adapters.json에서 개별 설정되어 있어 여기서의 변경이 {platforms} 에는 적용되지 않습니다.',
'settings.adapters.allowedRootsDefault': '기본값: 홈 디렉터리(기본 프로젝트가 홈 밖에 있으면 함께 포함).',
'settings.adapters.removeAllowedRoot': '제거',
'settings.adapters.streamingCard': '스트리밍 카드 모드',
'settings.adapters.streamingCardDesc': '더 나은 환경을 위해 카드를 실시간으로 업데이트합니다',
'settings.adapters.serverUrl': '서버 URL',
'settings.adapters.serverUrlPlaceholder': 'ws://127.0.0.1:3456',
'settings.adapters.save': '저장',
'settings.adapters.saved': '저장됨',
'settings.adapters.saving': '저장 중...',
'settings.adapters.startHint': '저장 후 어댑터를 실행하세요: cd adapters && bun run {platform}',
'settings.adapters.pairing': '페어링',
'settings.adapters.pairingDesc': '페어링 코드를 생성하여 IM 개인 채팅으로 봇에 보내 본인 확인을 연결합니다.',
'settings.adapters.generateCode': '코드 생성',
'settings.adapters.regenerateCode': '다시 생성',
'settings.adapters.codeExpired': '만료됨',
'settings.adapters.codeExpiresIn': '만료까지',
'settings.adapters.minutes': '분',
'settings.adapters.pairingCodeHint': '이 코드를 DingTalk, Feishu, WeChat, WhatsApp 또는 Telegram 개인 채팅에서 봇에 보내세요. WeChat과 WhatsApp은 먼저 QR 연결이 필요합니다.',
'settings.adapters.pairedUsers': '페어링된 사용자',
'settings.adapters.noPairedUsers': '아직 페어링된 사용자가 없습니다',
'settings.adapters.unbind': '연결 해제',
'settings.adapters.unbindConfirm': '이 사용자의 연결을 해제하시겠습니까? 봇을 사용하려면 다시 페어링해야 합니다.',
'settings.adapters.platform.telegram': 'Telegram',
'settings.adapters.platform.feishu': 'Feishu',
'settings.adapters.platform.wechat': 'WeChat',
'settings.adapters.platform.dingtalk': 'DingTalk',
'settings.adapters.platform.whatsapp': 'WhatsApp',
'settings.adapters.dingtalkQrTitle': 'QR로 DingTalk 봇 연결',
'settings.adapters.dingtalkQrDesc': 'DingTalk 모바일 앱으로 스캔하여 봇을 만들고 승인합니다. 성공하면 Client ID / Secret이 자동으로 저장됩니다.',
'settings.adapters.dingtalkStartAuth': '스캔하여 연결',
'settings.adapters.dingtalkUnbindBot': '봇 계정 연결 해제',
'settings.adapters.dingtalkQrAlt': 'DingTalk 승인 QR 코드',
'settings.adapters.dingtalkWaiting': 'DingTalk 스캔 확인을 기다리는 중...',
'settings.adapters.dingtalkBound': 'DingTalk 봇이 연결되었습니다.',
'settings.adapters.dingtalkAuthFailed': 'DingTalk QR 코드 승인에 실패했습니다.',
'settings.adapters.dingtalkAuthExpired': 'DingTalk QR 코드 승인이 만료되었습니다. 새 QR 코드를 생성하세요.',
'settings.adapters.dingtalkUnbindFailed': 'DingTalk 연결 해제에 실패했습니다.',
'settings.adapters.dingtalkUnbindBotConfirm': '이 DingTalk 봇 계정의 연결을 해제하시겠습니까? DingTalk가 메시지를 주고받을 수 있으려면 다시 스캔해야 합니다.',
'settings.adapters.dingtalkClientId': 'Client ID',
'settings.adapters.dingtalkClientIdPlaceholder': 'QR 인증으로 자동 입력되거나 수동으로 입력',
'settings.adapters.dingtalkClientSecret': 'Client Secret',
'settings.adapters.dingtalkClientSecretPlaceholder': 'QR 인증으로 자동 입력되거나 수동으로 입력',
'settings.adapters.dingtalkEndpoint': 'Stream 엔드포인트',
'settings.adapters.dingtalkEndpointPlaceholder': '기본값 https://api.dingtalk.com',
'settings.adapters.dingtalkPermissionCardTemplateId': '권한 카드 템플릿 ID',
'settings.adapters.dingtalkPermissionCardTemplateIdPlaceholder': '선택 사항 대화형 카드 템플릿 ID',
'settings.adapters.dingtalkPermissionCardTemplateIdHint': '설정하면 권한 요청에 먼저 DingTalk 대화형 카드를 사용합니다. 비워 두면 /allow, /always, /deny 텍스트 승인을 사용합니다.',
'settings.adapters.wechatBind': '스캔하여 연결',
'settings.adapters.wechatRebind': '다시 스캔',
'settings.adapters.wechatConnected': 'WeChat이 연결되었습니다',
'settings.adapters.wechatNotConnected': 'WeChat이 연결되지 않았습니다',
'settings.adapters.wechatQrHint': 'QR 코드를 생성하고 WeChat에서 스캔한 다음 확인하세요. 연결 후 어댑터가 다시 시작됩니다.',
'settings.adapters.wechatQrAlt': 'WeChat 연결 QR 코드',
'settings.adapters.wechatWaiting': 'WeChat 확인을 기다리는 중...',
'settings.adapters.wechatBindSuccess': 'WeChat 연결에 성공했습니다.',
'settings.adapters.wechatUnbindAccount': 'WeChat 계정 연결 해제',
'settings.adapters.wechatUnbindAccountConfirm': '이 WeChat 계정의 연결을 해제하시겠습니까? WeChat이 메시지를 주고받을 수 있으려면 다시 스캔해야 합니다.',
'settings.adapters.wechatUnbound': 'WeChat 계정 연결을 해제했습니다.',
'settings.adapters.wechatUnbindFailed': 'WeChat 연결 해제에 실패했습니다.',
'settings.adapters.wechatAllowedUsersHint': 'QR 연결은 계정만 활성화합니다. 사용자는 여전히 페어링 코드를 보내야 하거나, 여기에 허용할 WeChat 사용자 ID를 추가할 수 있습니다.',
'settings.adapters.whatsappBind': '스캔하여 연결',
'settings.adapters.whatsappRebind': '다시 스캔',
'settings.adapters.whatsappConnected': 'WhatsApp이 연결되었습니다',
'settings.adapters.whatsappNotConnected': 'WhatsApp이 연결되지 않았습니다',
'settings.adapters.whatsappQrHint': 'QR 코드를 생성한 뒤 WhatsApp의 연결된 기기에서 스캔하세요. 연결 후 어댑터가 다시 시작됩니다.',
'settings.adapters.whatsappQrAlt': 'WhatsApp 연결 QR 코드',
'settings.adapters.whatsappWaiting': 'WhatsApp 스캔 확인을 기다리는 중...',
'settings.adapters.whatsappBindSuccess': 'WhatsApp 연결에 성공했습니다.',
'settings.adapters.whatsappBindFailed': 'WhatsApp 연결에 실패했습니다.',
'settings.adapters.whatsappUnbindAccount': 'WhatsApp 계정 연결 해제',
'settings.adapters.whatsappUnbindAccountConfirm': '이 WhatsApp 계정의 연결을 해제하시겠습니까? WhatsApp이 메시지를 주고받을 수 있으려면 다시 스캔해야 합니다.',
'settings.adapters.whatsappUnbound': 'WhatsApp 계정 연결을 해제했습니다.',
'settings.adapters.whatsappUnbindFailed': 'WhatsApp 연결 해제에 실패했습니다.',
'settings.adapters.whatsappAllowedUsersHint': 'QR 연결은 WhatsApp Web 계정만 활성화합니다. 사용자는 여전히 페어링 코드를 보내야 하거나, 여기에 허용할 WhatsApp JID를 추가할 수 있습니다.',
// Settings > MCP
'settings.mcp.title': 'MCP 서버',
'settings.mcp.description': 'Claude Code용 외부 도구와 데이터 소스를 연결합니다. Local, Project, User 범위는 CLI와 동일하게 동작합니다.',
'settings.mcp.addServer': '서버 추가',
'settings.mcp.openServer': '{name} 열기',
'settings.mcp.empty': '아직 구성된 MCP 서버가 없습니다',
'settings.mcp.emptyHint': '사용자 지정 stdio, HTTP 또는 SSE MCP 서버를 추가하여 도구 액세스 확장을 시작하세요.',
'settings.mcp.stats.total': '총 서버',
'settings.mcp.stats.connected': '현재 채팅에 연결됨',
'settings.mcp.stats.attention': '주의 필요',
'settings.mcp.status.configured': '구성됨',
'settings.mcp.status.configuredElsewhere': '현재 채팅에는 로드되지 않았습니다. 이 프로젝트에서 채팅을 열어 사용하세요.',
'settings.mcp.scope.project': '프로젝트',
'settings.mcp.scope.local': '로컬',
'settings.mcp.scope.user': '사용자',
'settings.mcp.scope.plugin': '플러그인',
'settings.mcp.scopeDesc.local': '한 프로젝트 내에서 본인 전용입니다. 사용자 구성에 저장되며 선택한 프로젝트로 범위가 제한됩니다.',
'settings.mcp.scopeDesc.project': '선택한 프로젝트의 `.mcp.json`을 통해 팀과 공유됩니다.',
'settings.mcp.scopeDesc.user': '사용자 계정의 모든 프로젝트에서 사용할 수 있습니다.',
'settings.mcp.scope.dynamic': '기본 제공',
'settings.mcp.scope.enterprise': '엔터프라이즈',
'settings.mcp.scope.claudeai': 'Claude.ai',
'settings.mcp.scope.managed': '관리됨',
'settings.mcp.transport.http': 'Streamable HTTP',
'settings.mcp.globalOnlyHint': '한 프로젝트용은 Local, `.mcp.json`용은 Project, 모든 프로젝트용은 User를 선택하세요.',
'settings.mcp.currentProjectHint': '선택한 프로젝트: {path}',
'settings.mcp.form.back': '서버 목록으로 돌아가기',
'settings.mcp.form.createTitle': '사용자 지정 MCP에 연결',
'settings.mcp.form.createHint': '현재 Claude Code가 지원하는 필드로 사용자 지정 MCP 서버를 설정합니다.',
'settings.mcp.form.editTitle': '{name} MCP 설정',
'settings.mcp.form.editHint': '연결 세부 정보를 확인하고 변경 사항을 저장하거나 데스크톱 앱에서 이 서버를 다시 연결합니다.',
'settings.mcp.form.transportLocked': 'MCP 서버 유형을 전환하려면 먼저 제거하세요.',
'settings.mcp.form.uninstall': '제거',
'settings.mcp.form.reconnect': '다시 연결',
'settings.mcp.form.save': '저장',
'settings.mcp.form.name': '이름',
'settings.mcp.form.namePlaceholder': 'MCP 서버 이름',
'settings.mcp.form.scope': '구성 범위',
'settings.mcp.form.transport': '전송',
'settings.mcp.form.status': '상태',
'settings.mcp.form.location': '구성 위치',
'settings.mcp.form.rawConfig': '원시 구성',
'settings.mcp.form.command': '실행 명령',
'settings.mcp.form.commandPlaceholder': 'npx',
'settings.mcp.form.commandHostHint': 'STDIO MCP 명령은 호스트 컴퓨터에서 실행됩니다. Node.js, Python, Bun, uv 같은 런타임은 직접 설치하고 명령이 PATH에서 사용 가능한지 확인하세요.',
'settings.mcp.form.arguments': '인수',
'settings.mcp.form.argumentPlaceholder': 'chrome-devtools-mcp@latest',
'settings.mcp.form.addArgument': '인수 추가',
'settings.mcp.form.environmentVariables': '환경 변수',
'settings.mcp.form.addEnv': '환경 변수 추가',
'settings.mcp.form.keyPlaceholder': '키',
'settings.mcp.form.valuePlaceholder': '값',
'settings.mcp.form.url': 'URL',
'settings.mcp.form.sseUrl': 'SSE URL',
'settings.mcp.form.urlPlaceholder': 'https://mcp.example.com/mcp',
'settings.mcp.form.headers': '헤더',
'settings.mcp.form.addHeader': '헤더 추가',
'settings.mcp.form.oauthClientId': 'OAuth 클라이언트 ID',
'settings.mcp.form.oauthClientIdPlaceholder': '선택 사항 클라이언트 ID',
'settings.mcp.form.oauthCallbackPort': 'OAuth 콜백 포트',
'settings.mcp.form.oauthCallbackPortPlaceholder': '선택 사항 고정 콜백 포트',
'settings.mcp.form.headersHelper': '헤더 도우미 스크립트',
'settings.mcp.form.headersHelperPlaceholder': '선택 사항 도우미 명령 경로',
'settings.mcp.form.deleteTitle': 'MCP 서버 삭제',
'settings.mcp.form.cancel': '취소',
'settings.mcp.form.confirmDelete': '삭제',
'settings.mcp.form.deleteConfirm': 'MCP 서버 "{name}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
'settings.mcp.form.deleteConfirmBody': 'MCP 서버 "{name}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
'settings.mcp.targetProject.title': '대상 프로젝트',
'settings.mcp.targetProject.selected': '현재 다음 프로젝트의 로컬 및 공유 MCP 서버를 표시하고 있습니다: {path}',
'settings.mcp.targetProject.empty': '프로젝트 전용 또는 공유 MCP 서버를 확인할 프로젝트를 선택하세요.',
'settings.mcp.targetProject.emptyWithCurrent': '대상 프로젝트를 선택하세요. 현재 활성 세션: {path}',
'settings.mcp.targetProject.localSelected': '이 서버는 다음 안에서 본인 전용이 됩니다: {path}',
'settings.mcp.targetProject.localEmpty': '이 비공개 MCP 서버를 받을 프로젝트를 선택하세요.',
'settings.mcp.targetProject.projectSelected': '이 서버는 다음을 통해 공유됩니다: {path}/.mcp.json',
'settings.mcp.targetProject.projectEmpty': '이 공유 MCP 서버를 `.mcp.json`으로 받을 프로젝트를 선택하세요.',
'settings.mcp.targetProject.globalTitle': '전역 설치 대상',
'settings.mcp.targetProject.globalHint': 'User 범위는 대상 프로젝트가 필요 없습니다. 전역 Claude 구성에 저장되며 어디서나 사용할 수 있습니다.',
'settings.mcp.toast.created': 'MCP 서버 "{name}"을(를) 만들었습니다',
'settings.mcp.toast.saved': 'MCP 서버 "{name}"을(를) 저장했습니다',
'settings.mcp.toast.deleted': 'MCP 서버 "{name}"을(를) 삭제했습니다',
'settings.mcp.toast.enabled': 'MCP 서버 "{name}"을(를) 사용 설정했습니다',
'settings.mcp.toast.disabled': 'MCP 서버 "{name}"을(를) 사용 중지했습니다',
'settings.mcp.toast.reconnected': 'MCP 서버 "{name}"을(를) 다시 연결했습니다',
'settings.mcp.toast.saveFailed': 'MCP 서버를 저장하지 못했습니다',
'settings.mcp.toast.deleteFailed': 'MCP 서버를 삭제하지 못했습니다',
'settings.mcp.toast.toggleFailed': 'MCP 서버 상태를 업데이트하지 못했습니다',
'settings.mcp.toast.reconnectFailed': 'MCP 서버를 다시 연결하지 못했습니다',
// Settings > Agents
'settings.tab.agents': '에이전트',
'settings.agents.title': '설치된 에이전트',
'settings.agents.loadError': '에이전트를 불러오지 못했습니다',
'settings.agents.description': '기본 제공, 프로젝트, 사용자 소스 전반에서 Claude가 사용할 수 있는 에이전트를 살펴봅니다. TUI에서 /agents를 사용하면 활성 소스와 재정의를 확인할 수 있습니다.',
'settings.agents.browserTitle': '설치된 에이전트 살펴보기',
'settings.agents.browserEyebrow': '에이전트 브라우저',
'settings.agents.entryEyebrow': '에이전트 프로필',
'settings.agents.empty': '아직 사용할 수 있는 에이전트가 없습니다.',
'settings.agents.emptyHint': 'Claude 설정이나 프로젝트에 에이전트 정의를 추가하면 여기에 표시됩니다.',
'settings.agents.refreshWarning': '변경 사항은 저장되었지만 최신 에이전트 구성을 완전히 적용하지 못했습니다.',
'settings.agents.model': '모델',
'settings.agents.tools': '도구',
'settings.agents.systemPrompt': '시스템 프롬프트',
'settings.agents.noDescription': '설명 없음',
'settings.agents.noSystemPrompt': '정의된 시스템 프롬프트가 없습니다.',
'settings.agents.backToList': '목록으로 돌아가기',
'settings.agents.agentCount': '{count} 에이전트',
'settings.agents.summary.totalAgents': '총 에이전트',
'settings.agents.summary.activeAgents': '활성 에이전트',
'settings.agents.summary.sources': '소스',
'settings.agents.summary.source': '소스',
'settings.agents.summary.model': '모델',
'settings.agents.summary.tools': '도구',
'settings.agents.summary.status': '상태',
'settings.agents.groupHint': '{source}에서 사용 가능한 에이전트 {count}개',
'settings.agents.status.active': '활성',
'settings.agents.status.available': '사용 가능',
'settings.agents.overriddenBy': '{source}에 의해 재정의됨',
'settings.agents.overriddenByShort': '{source}에 의해 가려짐',
'settings.agents.toolCount': '{count} 도구',
'settings.agents.noTools': '도구 제한 없음',
'settings.agents.disabledTools': '도구 사용 안 함',
'settings.agents.promptHint': '현재 시스템 프롬프트를 읽고 이 에이전트의 범위를 비교합니다.',
'settings.agents.source.userSettings': '사용자',
'settings.agents.source.projectSettings': '프로젝트',
'settings.agents.source.localSettings': '로컬',
'settings.agents.source.policySettings': '관리됨',
'settings.agents.source.plugin': '플러그인',
'settings.agents.source.flagSettings': 'CLI 인수',
'settings.agents.source.built-in': '기본 제공',
'settings.agents.create': '에이전트 만들기',
'settings.agents.createTitle': '에이전트 만들기',
'settings.agents.edit': '편집',
'settings.agents.editTitle': '에이전트 편집',
'settings.agents.delete': '삭제',
'settings.agents.readOnly': '읽기 전용',
'settings.agents.deleteTitle': '에이전트 삭제',
'settings.agents.deleteBody': '에이전트 "{name}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
'settings.agents.deleteTarget': '파일: {target}',
'settings.agents.deleteConfirm': '에이전트 삭제',
'settings.agents.deleteError': '에이전트를 삭제하지 못했습니다',
'settings.agents.detail.configuredModel': '구성된 모델',
'settings.agents.detail.configuredEffort': '설정된 추론 강도',
'settings.agents.detail.effortHint': '선택한 모델이 지원하지 않으면 런타임에서 이 값이 낮아지거나 생략될 수 있습니다.',
'settings.agents.detail.inherit': '상속',
'settings.agents.form.scope': '범위',
'settings.agents.form.scopeUser': '사용자',
'settings.agents.form.scopeProject': '프로젝트',
'settings.agents.form.projectUnavailable': '프로젝트 세션을 연 뒤 프로젝트 범위 에이전트를 만드세요.',
'settings.agents.form.projectTarget': '대상 프로젝트: {path}',
'settings.agents.form.name': '이름',
'settings.agents.form.namePlaceholder': 'code-reviewer',
'settings.agents.form.nameError': '1~64자의 소문자, 숫자, 하이픈 또는 밑줄을 사용하고 영숫자로 시작하고 끝내세요.',
'settings.agents.form.description': '설명',
'settings.agents.form.descriptionPlaceholder': '메인 에이전트가 위임해야 하는 상황을 설명합니다.',
'settings.agents.form.descriptionRequired': '설명을 입력하세요.',
'settings.agents.form.systemPrompt': '시스템 프롬프트',
'settings.agents.form.systemPromptPlaceholder': '역할, 경계 및 예상 출력을 정의합니다.',
'settings.agents.form.systemPromptRequired': '시스템 프롬프트를 입력하세요.',
'settings.agents.form.model': '모델',
'settings.agents.form.modelDefaultDescription': '이 Claude Code 빌드에 포함된 기본 모델을 사용합니다.',
'settings.agents.form.modelInheritDescription': '메인 대화와 같은 모델을 사용합니다.',
'settings.agents.form.modelAliasDescription': '현재 Provider를 통해 매핑되는 CLI 모델 별칭입니다.',
'settings.agents.form.modelUnavailableDescription': '저장된 모델 ID이며 현재 Provider 목록에는 없습니다.',
'settings.agents.form.modelProviderHint': 'Agent 설정에는 Provider가 아닌 모델 ID만 저장되며 실행 시 세션의 현재 Provider를 사용합니다.',
'settings.agents.form.effort': '추론 강도',
'settings.agents.form.inherit': '상위에서 상속',
'settings.agents.form.tools': '도구',
'settings.agents.form.toolsInherit': '모든 도구',
'settings.agents.form.toolsNone': '도구 사용 안 함',
'settings.agents.form.toolsCustom': '사용자 지정 목록',
'settings.agents.form.toolsCustomLabel': '기타 도구 이름 또는 권한 패턴',
'settings.agents.form.toolsPlaceholder': 'mcp__docs__search, Bash(git:*)',
'settings.agents.form.toolsHint': '이 Agent에 필요한 기본 제공 도구를 선택하고 사용자 지정 및 MCP 도구는 아래에 추가하세요.',
'settings.agents.form.builtInTools': '기본 제공 도구',
'settings.agents.form.builtInToolsHint': '현재 실행 환경에서 사용할 수 있습니다. Agent에 필요한 기능만 허용하세요.',
'settings.agents.form.toolsSelectedCount': '{count}개 선택',
'settings.agents.form.toolsSearch': '도구 검색',
'settings.agents.form.toolsSearchPlaceholder': '이름 또는 용도로 검색',
'settings.agents.form.toolsNoResults': '일치하는 도구가 없습니다',
'settings.agents.form.toolsUnavailable': '기본 제공 도구 목록을 가져올 수 없습니다. 아래에 정확한 도구 이름을 입력할 수 있습니다.',
'settings.agents.form.toolsCustomHint': '선택 사항입니다. MCP, 사용자 지정 도구 또는 Bash(git:*) 같은 권한 패턴에 사용합니다.',
'settings.agents.form.toolCategory.readSearch': '읽기 및 검색',
'settings.agents.form.toolCategory.modify': '파일 수정',
'settings.agents.form.toolCategory.execute': '명령 실행',
'settings.agents.form.toolCategory.workflow': '워크플로',
'settings.agents.form.toolCategory.other': '기타',
'settings.agents.form.toolDescription.Read': '파일과 디렉터리 읽기',
'settings.agents.form.toolDescription.Glob': '이름 또는 경로 패턴으로 파일 찾기',
'settings.agents.form.toolDescription.Grep': '텍스트 또는 패턴으로 파일 검색',
'settings.agents.form.toolDescription.WebFetch': '웹 페이지 내용 읽기',
'settings.agents.form.toolDescription.WebSearch': '웹 검색',
'settings.agents.form.toolDescription.Edit': '기존 파일의 일부를 정확히 수정',
'settings.agents.form.toolDescription.Write': '파일 생성 또는 덮어쓰기',
'settings.agents.form.toolDescription.NotebookEdit': 'Jupyter Notebook 셀 편집',
'settings.agents.form.toolDescription.Bash': 'Unix Shell에서 터미널 명령 실행',
'settings.agents.form.toolDescription.PowerShell': 'Windows PowerShell 명령 실행',
'settings.agents.form.toolDescription.TodoWrite': '작업 체크리스트 관리',
'settings.agents.form.toolDescription.Skill': '설치된 Skill 워크플로 불러오기',
'settings.agents.form.toolDescription.ToolSearch': '기능으로 지연 로드 도구 찾기',
'settings.agents.form.toolDescription.EnterWorktree': '격리된 Git Worktree 생성 및 진입',
'settings.agents.form.toolDescription.ExitWorktree': 'Agent Worktree 종료 및 정리',
'settings.agents.form.toolDescription.StructuredOutput': 'Schema 검증된 구조화 데이터 반환',
'settings.agents.form.toolDescription.generic': '이 기본 제공 실행 기능 사용',
'settings.agents.form.toolsInheritHint': 'tools 필드를 생략하여 이 에이전트가 모든 도구를 사용할 수 있게 합니다.',
'settings.agents.form.toolsNoneHint': '빈 tools 목록을 저장하여 이 에이전트가 도구를 사용하지 못하게 합니다.',
'settings.agents.form.toolsCustomRequired': '허용할 도구를 하나 이상 선택하거나 입력하세요.',
'settings.agents.form.color': '색상',
'settings.agents.form.noColor': '기본값',
'settings.agents.form.saveError': '에이전트를 저장하지 못했습니다',
'settings.agents.rowEdit': '{name} 편집',
'settings.agents.rowDelete': '{name} 삭제',
'settings.agents.rowOverride': '{name}의 모델과 추론 강도 조정',
'settings.agents.override': '모델 조정',
'settings.agents.overrideTitle': '내장 에이전트 조정',
'settings.agents.overrideHint': '모델과 추론 강도만 변경할 수 있습니다. 시스템 프롬프트, 도구, 색상은 Claude Code가 고정합니다.',
'settings.agents.overrideScopeHint': '사용자 설정(~/.claude/settings.json)에 저장되며 모든 프로젝트에 적용됩니다.',
'settings.agents.overrideDefault': '내장 기본값({value})',
'settings.agents.overrideDefaultNone': '내장 기본값',
'settings.agents.overrideReset': '내장 기본값으로 되돌리기',
'settings.agents.overrideBadge': '재정의됨',
'settings.agents.overrideManaged': '{source} 설정에서 지정되어 여기서는 변경할 수 없습니다.',
'settings.agents.overrideShadowed': '현재 {source}의 같은 이름 에이전트가 적용 중이라 여기서 변경해도 아직 반영되지 않습니다.',
'settings.agents.overrideSaveError': '재정의를 저장하지 못했습니다',
'settings.agents.overrideResetError': '기본값으로 되돌리지 못했습니다',
// Settings > Skills
'settings.skills.title': '설치된 스킬',
'settings.skills.description': '스킬은 Claude에 전문 기능을 추가합니다. 스킬은 ~/.claude/skills/ 또는 ~/.agents/skills/에서 관리합니다',
'settings.skills.redirectDescription': '스킬은 이제 통합 스킬 센터에서 관리합니다. 마켓과 설치된 스킬을 한 곳에서 볼 수 있습니다.',
'settings.skills.browserTitle': '설치된 스킬 살펴보기',
'settings.skills.browserEyebrow': '스킬 브라우저',
'settings.skills.browserDescription': '번들, 프로젝트, 사용자 스킬을 확인하고 범위를 비교하며, 각 스킬 폴더를 열어 문서와 소스 파일을 읽습니다.',
'settings.skills.searchLabel': '스킬 검색',
'settings.skills.searchPlaceholder': '이름, 설명 또는 소스로 스킬 검색...',
'settings.skills.searchResultCount': '{total}개 중 {count}개의 스킬이 일치',
'settings.skills.clearSearch': '스킬 검색 지우기',
'settings.skills.noSearchResults': '일치하는 스킬이 없습니다',
'settings.skills.noSearchResultsHint': '다른 키워드를 시도하거나 검색을 지워 모든 스킬을 표시하세요.',
'settings.skills.entryEyebrow': '스킬 항목',
'settings.skills.slashCommand': '/slash',
'settings.skills.agentsDirBadge': '.agents',
'settings.skills.agentsDirHint':
'Codex, Cursor, Gemini CLI와 공유되는 ~/.agents/skills/ 개방 표준 디렉터리에서 가져옴',
'settings.skills.agentsDirProjectHint':
'현재 프로젝트의 .agents/skills/ 디렉터리에서 가져옴 —— 직접 설치한 것이 아니라 저장소에 포함되어 배포됩니다',
'settings.skills.tokenEstimate': '약 {count} 토큰',
'settings.skills.tokenEstimateShort': '약 {count}',
'settings.skills.summary.totalSkills': '총 스킬',
'settings.skills.summary.totalFiles': '파일',
'settings.skills.summary.sources': '소스',
'settings.skills.summary.tokens': '예상 토큰 수',
'settings.skills.summary.source': '소스',
'settings.skills.summary.entry': '항목',
'settings.skills.groupHint': '{source}에서 사용 가능한 스킬 {count}개',
'settings.skills.ready': '준비됨',
'settings.skills.unavailable': '사용 불가',
'settings.skills.empty': '설치된 스킬이 없습니다',
'settings.skills.emptyHint': '~/.claude/skills/ 또는 ~/.agents/skills/에 스킬을 추가하여 시작하세요',
'settings.skills.back': '목록으로 돌아가기',
'settings.skills.files': '파일',
'settings.skills.entryFile': '항목 파일',
'settings.skills.metaTitle': '스킬 메타데이터',
'settings.skills.filesPanel': '파일',
'settings.skills.filesPanelHint': '항목 파일과 보조 구현 파일을 살펴봅니다.',
'settings.skills.readingMode': '{mode}(으)로 보는 중',
'settings.skills.docMode': '문서 모드',
'settings.skills.codeMode': '코드 모드',
'settings.skills.source.user': '사용자',
'settings.skills.source.project': '프로젝트',
'settings.skills.source.plugin': '플러그인',
'settings.skills.source.mcp': 'MCP',
'settings.skills.source.bundled': '기본 제공',
// Settings > Memory
'settings.tab.memory': '메모리',
'settings.memory.title': '프로젝트 메모리',
'settings.memory.description': 'Claude가 각 프로젝트용으로 작성하는 Markdown 메모리 파일을 확인하고 편집합니다. 이 파일들은 ~/.claude/projects/<project>/memory/ 아래에 저장되며 CLI 런타임에 의해 로드됩니다.',
'settings.memory.refresh': '새로 고침',
'settings.memory.projects': '프로젝트',
'settings.memory.files': '메모리 파일',
'settings.memory.filePath': '메모리 파일 경로',
'settings.memory.resourceManager': '리소스 관리자',
'settings.memory.editor': '편집기',
'settings.memory.edit': '편집',
'settings.memory.preview': '미리 보기',
'settings.memory.rendered': '렌더링됨',
'settings.memory.emptyProjects': '메모리가 있는 프로젝트를 찾을 수 없습니다.',
'settings.memory.emptyFiles': '아직 메모리 파일을 찾을 수 없습니다.',
'settings.memory.selectFile': '메모리 파일을 선택하세요.',
'settings.memory.selectProject': '프로젝트를 선택하세요.',
'settings.memory.noFileSelected': '선택된 파일이 없습니다',
'settings.memory.current': '현재',
'settings.memory.indexFile': '인덱스',
'settings.memory.missing': '없음',
'settings.memory.fileCount': '{count} 파일',
'settings.memory.unsaved': '저장 안 됨',
'settings.memory.saved': '저장됨',
'settings.memory.revert': '되돌리기',
'settings.memory.discardUnsavedConfirm': '저장하지 않은 메모리 변경을 버릴까요?',
'settings.memory.projectSearchPlaceholder': '경로로 프로젝트 검색...',
'settings.memory.fileSearchPlaceholder': '메모리 파일 검색...',
'settings.memory.resourceSearchPlaceholder': '프로젝트 또는 메모리 파일 검색...',
'settings.memory.noProjectMatches': '이 검색과 일치하는 프로젝트가 없습니다.',
'settings.memory.noFileMatches': '이 검색과 일치하는 메모리 파일이 없습니다.',
'settings.memory.clearSearch': '검색 지우기',
'settings.memory.toggleFolder': '{name} 전환',
// Settings > Plugins
'settings.plugins.title': '설치된 플러그인',
'settings.plugins.description': '설치된 플러그인을 확인하고 상태를 파악하며 데스크톱 런타임에 변경 사항을 적용합니다.',
'settings.plugins.browserTitle': '설치된 플러그인 살펴보기',
'settings.plugins.browserEyebrow': '플러그인 관리자',
'settings.plugins.browserDescription': '플러그인은 스킬, 에이전트, 후크, MCP 서버, 언어 도구를 묶은 것입니다. 이 화면은 설치된 플러그인, 상태, 런타임 적용 피드백에 데스크톱 화면을 집중시킵니다.',
'settings.plugins.entryEyebrow': '플러그인 세부 정보',
'settings.plugins.summary.total': '총 플러그인',
'settings.plugins.summary.enabled': '사용',
'settings.plugins.summary.attention': '주의 필요',
'settings.plugins.summary.marketplaces': '마켓플레이스',
'settings.plugins.summary.skills': '스킬',
'settings.plugins.summary.agents': '에이전트',
'settings.plugins.summary.mcp': 'MCP',
'settings.plugins.summary.hooks': '후크',
'settings.plugins.group.attention': '주의 필요',
'settings.plugins.group.enabled': '사용',
'settings.plugins.group.disabled': '사용 안 함',
'settings.plugins.groupHint': '이 섹션에는 {count}개의 플러그인이 있습니다',
'settings.plugins.refresh': '새로 고침',
'settings.plugins.apply': '변경 사항 적용',
'settings.plugins.applyHint': '사용, 사용 안 함, 업데이트 변경 사항은 현재 데스크톱 런타임에 적용한 후 적용됩니다.',
'settings.plugins.lastReload': '마지막 적용: 활성 플러그인 {enabled}개, 플러그인 스킬 {skills}개, 오류 {errors}건.',
'settings.plugins.reloadToast': '플러그인 변경 사항을 적용했습니다: 활성 플러그인 {enabled}개, 스킬 {skills}개, 오류 {errors}건.',
'settings.plugins.reloadWarning': '플러그인 변경 사항은 적용되었지만 런타임 다시 불러오기에 실패했습니다: {message}',
'settings.plugins.marketplacesTitle': '알려진 마켓플레이스',
'settings.plugins.marketplacesHint': '이 컴퓨터에 이미 구성된 마켓플레이스 소스의 읽기 전용 요약입니다.',
'settings.plugins.marketplaceAutoUpdateOn': '자동 업데이트 켜짐',
'settings.plugins.marketplaceAutoUpdateOff': '자동 업데이트 꺼짐',
'settings.plugins.marketplaceInstalledCount': '{count}개 설치됨',
'settings.plugins.marketplaceUpdatedAt': '{value} 업데이트됨',
'settings.plugins.status.enabled': '사용',
'settings.plugins.status.disabled': '사용 안 함',
'settings.plugins.status.attention': '주의',
'settings.plugins.scope.user': '사용자',
'settings.plugins.scope.project': '프로젝트',
'settings.plugins.scope.local': '로컬',
'settings.plugins.scope.managed': '관리됨',
'settings.plugins.scope.builtin': '기본 제공',
'settings.plugins.empty': '설치된 플러그인이 없습니다',
'settings.plugins.emptyHint': 'Claude Code에서 플러그인을 설치하면 여기서 관리할 수 있습니다.',
'settings.plugins.back': '목록으로 돌아가기',
'settings.plugins.noDescription': '이 플러그인에 대한 설명이 없습니다.',
'settings.plugins.errorCount': '{count}건의 오류',
'settings.plugins.enable': '사용',
'settings.plugins.disable': '사용 안 함',
'settings.plugins.update': '업데이트',
'settings.plugins.uninstall': '제거',
'settings.plugins.confirmUninstall': '플러그인 "{name}"을(를) 제거하시겠습니까? 선택한 범위의 설치된 복사본이 삭제됩니다.',
'settings.plugins.selectionCount': '{count}개 선택됨',
'settings.plugins.clearSelection': '지우기',
'settings.plugins.enableSelected': '선택 항목 사용',
'settings.plugins.disableSelected': '선택 항목 사용 안 함',
'settings.plugins.selectPlugin': '{name} 선택',
'settings.plugins.bulkEnableTitle': '선택한 플러그인 {count}개를 사용하시겠습니까?',
'settings.plugins.bulkDisableTitle': '선택한 플러그인 {count}개를 사용 안 함으로 변경하시겠습니까?',
'settings.plugins.bulkEnableBody': '{names}을(를) 사용하고 플러그인 변경 사항을 현재 데스크톱 런타임에 적용합니다.',
'settings.plugins.bulkDisableBody': '{names}을(를) 사용 안 함으로 변경하고 플러그인 변경 사항을 현재 데스크톱 런타임에 적용합니다.',
'settings.plugins.bulkEnableToast': '플러그인 {count}개를 사용하고 변경 사항을 적용했습니다.',
'settings.plugins.bulkDisableToast': '플러그인 {count}개를 사용 안 함으로 변경하고 변경 사항을 적용했습니다.',
'settings.plugins.author': '작성자: {value}',
'settings.plugins.projectPath': '프로젝트: {value}',
'settings.plugins.installPath': '설치 위치: {value}',
'settings.plugins.managedHint': '이 플러그인은 정책에 의해 관리되며 데스크톱 앱에서 변경할 수 없습니다.',
'settings.plugins.builtinHint': '기본 제공 플러그인은 여기서 다시 로드할 수 있지만 설치 및 제거 작업은 표시되지 않습니다.',
'settings.plugins.errorsTitle': '플러그인 오류',
'settings.plugins.capabilitiesTitle': '번들된 기능',
'settings.plugins.capabilitiesHint': '이 플러그인이 매니페스트와 런타임 통합을 로드한 후 노출하는 기능입니다.',
'settings.plugins.sharedNavigationDisabled': '공유 관리 페이지에서 이 플러그인의 스킬, 에이전트, MCP 항목을 열기 전에 플러그인을 사용 설정하고 변경 사항을 적용하세요.',
'settings.plugins.capabilityEmpty': '노출 없음',
'settings.plugins.capability.skills': '{count} 스킬',
'settings.plugins.capability.agents': '{count} 에이전트',
'settings.plugins.capability.mcpServers': '{count} MCP 서버',
'settings.plugins.capabilityLabel.skills': '스킬',
'settings.plugins.capabilityLabel.commands': '명령',
'settings.plugins.capabilityLabel.agents': '에이전트',
'settings.plugins.capabilityLabel.hooks': '후크',
'settings.plugins.capabilityLabel.mcpServers': 'MCP 서버',
'settings.plugins.capabilityLabel.lspServers': 'LSP 서버',
// Settings > About
'settings.tab.about': '정보',
'settings.about.version': '버전',
'settings.about.changelog': '릴리스 노트',
'settings.about.repo': 'GitHub 저장소',
'settings.about.starHint': '이 프로젝트가 도움이 되었다면 Star를 눌러 주세요',
'settings.about.feedback': '문제 신고',
'settings.about.feedbackDesc': '버그나 사용 관련 질문은 GitHub Issue를 작성하세요',
'settings.about.author': '작성자',
'settings.about.socialMedia': '소셜 미디어',
'settings.about.updates': '앱 업데이트',
'settings.about.updatesDesc': 'GitHub Releases를 확인하고 설치 관리자를 다운로드한 후 설치 후 다시 시작합니다.',
// Settings > Computer Use
'settings.tab.computerUse': '컴퓨터 사용',
'settings.computerUse.title': '컴퓨터 사용',
'settings.computerUse.description': 'Claude가 스크린샷을 찍고 클릭, 입력하며 컴퓨터를 제어할 수 있도록 허용합니다. Python 3가 필요합니다. macOS에서는 접근성 권한도 필요합니다.',
'settings.computerUse.enabledToggle': '사용',
'settings.computerUse.disabledHint': '컴퓨터 사용이 꺼져 있습니다. 새 세션은 computer-use MCP 서버를 주입하거나 데스크톱 제어 도구를 코딩 에이전트에 노출하지 않습니다.',
'settings.computerUse.notSupported': '컴퓨터 사용은 macOS와 Windows에서만 지원됩니다.',
'settings.computerUse.python': 'Python 3',
'settings.computerUse.pythonNotFound': '설치되어 있지 않습니다. 먼저 Python 3를 설치하세요.',
'settings.computerUse.pythonFound': '설치됨',
'settings.computerUse.pythonCustomInvalid': '사용자 지정 인터프리터를 사용할 수 없습니다',
'settings.computerUse.pythonPathLabel': 'Python 인터프리터 경로',
'settings.computerUse.pythonPathPlaceholder': '자동 감지 또는 python.exe / python3 선택',
'settings.computerUse.pythonPathHint': '비워 두면 자동 감지합니다. 런타임 설정에서 우선하려면 conda, pyenv 또는 기타 사용자 지정 환경의 Python 실행 파일을 선택하세요.',
'settings.computerUse.pythonPathBrowse': '찾아보기',
'settings.computerUse.pythonPathSave': '적용',
'settings.computerUse.pythonPathAuto': '자동',
'settings.computerUse.pythonPathSaved': '저장했습니다. 다시 확인할 때 이 인터프리터를 우선합니다.',
'settings.computerUse.pythonPathSaveFailed': '저장에 실패했습니다. 다시 시도하세요.',
'settings.computerUse.pythonPathDialogTitle': 'Python 인터프리터 선택',
'settings.computerUse.pythonPathDialogFailed': '파일 선택기를 열 수 없습니다. 경로를 수동으로 붙여넣으세요.',
'settings.computerUse.venv': '가상 환경',
'settings.computerUse.venvReady': '준비됨',
'settings.computerUse.venvNotReady': '만들어지지 않음',
'settings.computerUse.deps': '종속성',
'settings.computerUse.depsReady': '설치됨',
'settings.computerUse.depsNotReady': '설치되지 않음',
'settings.computerUse.accessibility': '접근성 권한',
'settings.computerUse.screenRecording': '화면 기록 권한',
'settings.computerUse.permGranted': '허용됨',
'settings.computerUse.permDenied': '거부됨 — 시스템 설정 > 개인정보 보호 및 보안 을 열어 허용하세요',
'settings.computerUse.permUnknown': '확인하려면 먼저 환경을 설정하세요',
'settings.computerUse.permScreenRecordingUnknownSoft': '여기서는 자동 감지가 불안정할 수 있습니다. 시스템 설정에서 이미 사용으로 표시되어 있으면 일반적으로 컴퓨터 사용을 계속할 수 있습니다',
'settings.computerUse.permScreenRecordingManual': '자동 감지할 수 없습니다 — 시스템 설정에서 확인하세요',
'settings.computerUse.setupBtn': '환경 설치',
'settings.computerUse.setupRunning': '설치 중...',
'settings.computerUse.setupSuccess': '환경 설정이 완료되었습니다!',
'settings.computerUse.setupFail': '설정에 실패했습니다',
'settings.computerUse.allReady': '모든 검사를 통과했습니다. 컴퓨터 사용 준비가 완료되었습니다.',
'settings.computerUse.downloadPython': 'Python 3 다운로드',
'settings.computerUse.recheckBtn': '상태 다시 확인',
'settings.computerUse.requirementsLabel': '필요한 패키지',
'settings.computerUse.appsTitle': '승인된 앱',
'settings.computerUse.appsDescription': '컴퓨터 사용을 위해 앱을 사전 승인합니다. 승인된 앱은 실행 중 확인 없이 Claude가 제어할 수 있습니다.',
'settings.computerUse.appsLoading': '설치된 앱을 불러오는 중...',
'settings.computerUse.appsEmpty': '설치된 앱을 찾을 수 없습니다. 먼저 환경을 설정하세요.',
'settings.computerUse.appsSearch': '앱 검색...',
'settings.computerUse.appsSaved': '저장됨',
'settings.computerUse.openAccessibility': '접근성 설정 열기',
'settings.computerUse.openScreenRecording': '화면 기록 설정 열기',
'settings.computerUse.permRestartHint': '허용한 후 적용하려면 앱을 다시 시작하세요.',
'settings.computerUse.flagClipboard': '클립보드 액세스',
'settings.computerUse.flagSystemKeys': '시스템 키 조합',
// Computer Use — 네이티브 (cu-helper) Codex 스타일 페이지
'settings.computerUse.controlTitle': '컴퓨터 제어',
'settings.computerUse.controlSubtitle': 'Claude가 컴퓨터의 다른 애플리케이션을 어떻게 사용하는지 관리합니다',
'settings.computerUse.sectionControl': '제어',
'settings.computerUse.anyApp': '모든 앱',
'settings.computerUse.anyAppDesc': 'Claude가 컴퓨터의 앱을 제어하도록 허용합니다',
'settings.computerUse.osPermTitle': '시스템 권한',
'settings.computerUse.osPermHint': '활성화하면 Claude가 컴퓨터에서 클릭, 입력, 스크린샷을 할 수 있습니다. 실제 마우스는 점유되지 않습니다.',
'settings.computerUse.openCard': '인증 카드 다시 열기',
'settings.computerUse.openingCard': '인증 카드를 여는 중…',
'settings.computerUse.openCardFailed': '인증 카드를 열 수 없습니다. 나중에 다시 시도하세요.',
'settings.computerUse.permNeeded': '인증 필요',
'settings.computerUse.permChecking': '확인 중…',
'settings.computerUse.allowedAppsTitle': '항상 허용된 앱',
'settings.computerUse.allowedAppsDesc': '이 앱들은 인증되어 Claude가 매번 확인 없이 직접 제어할 수 있습니다.',
'settings.computerUse.allowedAppsEmpty': '항상 허용된 앱이 아직 없습니다. “앱 추가”를 클릭하여 첫 번째 앱을 인증하세요.',
'settings.computerUse.addApp': '앱 추가',
'settings.computerUse.addAppTitle': '인증할 앱 선택',
'settings.computerUse.removeApp': '제거',
'settings.computerUse.appsPickerEmpty': '추가할 수 있는 앱이 없습니다.',
'settings.computerUse.appsPickerLoading': '설치된 앱을 불러오는 중…',
// Settings > General - Storage
'settings.general.modeSwitchTitle': '데이터 저장 위치를 전환하시겠습니까?',
'settings.general.modeSwitchConfirm': '저장하고 다시 시작',
'settings.general.storageTitle': '데이터 저장 위치',
'settings.general.storageDescription': '고급, 사용 빈도가 낮은 설정입니다. 전환 후에는 세션, 스킬, MCP, 플러그인, 공급자 설정, 작업, 캐시를 새 디렉터리에서 읽습니다.',
'settings.general.storageSystemTitle': '시스템 디렉터리 사용',
'settings.general.storageSystemDescription': 'Claude Code의 표준 사용자 디렉터리인 ~/.claude(Windows에서는 %USERPROFILE%\\.claude)를 사용합니다.',
'settings.general.storagePortableTitle': '사용자 지정 디렉터리 사용',
'settings.general.storagePortableDescription': '명시적으로 선택한 폴더에 데스크톱 데이터를 저장합니다. 절대 경로여야 하며 앱 설치 디렉터리 밖에 있어야 합니다.',
'settings.general.storagePortableDirLabel': '사용자 지정 데이터 디렉터리',
'settings.general.storagePortableDirPlaceholder': 'cc-haha 데이터용 폴더 선택',
'settings.general.storageChooseDir': '폴더 선택',
'settings.general.storageChooseDirTitle': '사용자 지정 데이터 디렉터리 선택',
'settings.general.storageApplyPortable': '이 폴더를 사용하고 다시 시작',
'settings.general.storageActiveDir': '현재 활성 데이터 디렉터리',
'settings.general.storageEnvironmentHint': '현재 디렉터리는 CLAUDE_CONFIG_DIR 환경 변수로 제어됩니다. 앱 내 전환으로는 이를 재정의할 수 없습니다. 시스템 디렉터리로 돌아가려면 시작 환경에서 CLAUDE_CONFIG_DIR을 제거하세요.',
'settings.general.storageEnvironmentSwitchBlocked': '현재 CLAUDE_CONFIG_DIR이 데이터 디렉터리를 제어합니다. 시스템 디렉터리로 돌아가기 전에 시작 환경에서 이를 제거하세요.',
'settings.general.storageRestartHint': '저장 위치 변경이 저장되었습니다. 새 데이터 디렉터리를 적용하려면 앱을 다시 시작하세요.',
'settings.general.storageMoveHint': '모드를 전환해도 두 디렉터리는 병합되지 않습니다. Windows 업그레이드는 기존 데이터를 검증해 복구한 뒤 제거하며, 완전성을 확인할 수 없으면 업그레이드를 중단합니다.',
'settings.general.storageNoDirError': '먼저 사용자 지정 데이터 디렉터리를 선택하거나 입력하세요.',
'settings.general.storagePickerError': '폴더 선택기를 열 수 없습니다. 폴더 경로를 수동으로 붙여넣으세요.',
'settings.general.storageRestartError': '변경 사항은 저장되었지만 자동 다시 시작에 실패했습니다. 앱을 수동으로 다시 시작하세요.',
'settings.general.storageSwitchPortableBody': '전환 후 데스크톱 앱은 이 디렉터리에서 세션, 설정, 스킬, MCP, 플러그인, 작업, 캐시를 읽고 씁니다.',
'settings.general.storageSwitchDefaultBody': '다시 전환하면 데스크톱 앱은 ~/.claude를 사용합니다. 사용자 지정 디렉터리의 데이터는 삭제되거나 자동으로 이동되지 않습니다.',
'settings.general.storageSwitchRestartBody': '앱이 로컬 서버와 어댑터 프로세스를 중지한 후 다시 시작합니다. 새 디렉터리는 다시 시작 후에 적용됩니다.',
// Settings > General
'settings.general.appearanceTitle': '모양',
'settings.general.proxyManagedSettingsWarning': '사용자 설정에 PROXY_MANAGED 프록시 자리표시자만 남아 있어 다른 설정이 프록시 도구에 의해 덮어쓰였을 수 있습니다. 의도한 설정이 아니라면 CC Switch 라우팅 인계를 끄고 백업에서 settings.json을 복원하세요. 직접 설정한 경우에는 이 알림을 무시해도 됩니다.',
'settings.general.appearanceDescription': '종이와 먹의 여섯 가지 배색을 전환합니다.',
'settings.general.appearance.paper': '지묵',
'settings.general.appearance.warmClassic': '따뜻한 클래식',
'settings.general.appearance.celadon': '청자',
'settings.general.appearance.inkBlue': '먹빛 블루',
'settings.general.appearance.dark': '먹빛 밤',
'settings.general.appearance.white': '순백',
'settings.general.appearance.followSystem': '시스템 설정 따르기',
'settings.general.appearance.followSystemHint': '시스템이 다크 모드로 바뀌면 먹빛 배색으로, 라이트 모드로 돌아오면 종이 배색으로 자동 전환합니다.',
'settings.general.appearance.lightThemeLabel': '라이트 모드에서 사용',
'settings.general.appearance.darkThemeLabel': '다크 모드에서 사용',
'settings.general.languageTitle': '언어',
'settings.general.languageDescription': '애플리케이션의 표시 언어를 선택합니다.',
'settings.general.responseLangTitle': '응답 언어',
'settings.general.responseLangDescription': 'Claude가 항상 특정 언어로 응답하도록 지시합니다.',
'settings.general.responseLangDefault': '기본값(영어)',
'settings.general.outputStyleTitle': '출력 스타일',
'settings.general.outputStyleDescription': '새 세션 또는 다시 시작한 세션에서 Claude가 응답하는 방식을 선택합니다.',
'settings.general.outputStyleBuiltin.default.label': '기본값',
'settings.general.outputStyleBuiltin.default.description': 'Claude가 코딩 작업을 효율적으로 완료하고 간결하게 응답합니다',
'settings.general.outputStyleBuiltin.explanatory.label': '설명형',
'settings.general.outputStyleBuiltin.explanatory.description': 'Claude가 구현 선택과 코드베이스 패턴을 설명합니다',
'settings.general.outputStyleBuiltin.learning.label': '학습형',
'settings.general.outputStyleBuiltin.learning.description': 'Claude가 잠시 멈추고 실습을 위해 짧은 코드를 작성하도록 요청합니다',
'settings.general.outputStyleSelectLabel': '출력 스타일 선택',
'settings.general.outputStyleLoading': '출력 스타일 불러오는 중...',
'settings.general.outputStyleSaved': '출력 스타일이 저장되었습니다.',
'settings.general.outputStyleRestartHint': '실행 중인 세션은 현재 프롬프트를 계속 사용합니다. 새 세션을 시작하거나 새 프로세스에서 계속하거나 세션을 다시 시작하면 적용됩니다.',
'settings.general.outputStyleScopeLocal': '현재 프로젝트',
'settings.general.outputStyleScopeUser': '사용자 설정',
'settings.general.outputStyleScopeLocalHint': '활성 프로젝트의 .claude/settings.local.json에 저장됩니다.',
'settings.general.outputStyleScopeUserHint': '활성 프로젝트가 선택되지 않아 사용자 설정에 저장됩니다.',
'settings.general.outputStyleSourceBuiltIn': '기본 제공',
'settings.general.outputStyleSourceUser': '사용자 스타일',
'settings.general.outputStyleSourceProject': '프로젝트 스타일',
'settings.general.outputStyleSourceLocal': '로컬 프로젝트 스타일',
'settings.general.outputStyleSourcePolicy': '관리형 스타일',
'settings.general.outputStyleSourcePlugin': '플러그인 스타일',
'settings.general.defaultPermissionTitle': '기본 세션 권한',
'settings.general.defaultPermissionDescription': '새 데스크톱 채팅 세션을 시작할 때 적용할 권한 모드를 선택합니다.',
'settings.general.defaultPermissionLabel': '새 세션 권한 모드',
'settings.general.defaultPermissionHint': '각 세션 안에서는 채팅 권한 선택기에서 개별적으로 변경할 수 있습니다.',
'settings.general.defaultPermissionScope': '각 새 세션의 작업 공간',
'settings.general.effortTitle': '노력 수준',
'settings.general.effortDescription': '새 세션의 기본 추론 강도를 선택합니다. 선택 가능한 단계는 현재 모델의 지원 범위를 따릅니다.',
'settings.general.effortDefaultLabel': '기본 추론 강도',
'settings.general.effortSelectLabel': '기본 추론 강도: {level}',
'settings.general.effortModelHint': '{model}에서 지원하는 단계만 표시합니다. 다른 모델에서는 해당 모델의 기본값으로 자동 조정됩니다.',
'settings.general.effortNoModelHint': '지원되는 추론 강도를 보려면 모델을 연결하거나 선택하세요.',
'settings.general.effortUnavailable': '조정할 수 없음',
'settings.general.effort.low': '낮음',
'settings.general.effort.medium': '보통',
'settings.general.effort.high': '높음',
'settings.general.effort.xhigh': '매우 높음',
'settings.general.effort.max': '최대',
'settings.general.thinkingTitle': '사고 모드',
'settings.general.thinkingDescription': '새 세션을 모델 사고를 사용으로 시작할지 제어합니다. 꺼져 있으면 DeepSeek 같은 호환 공급자에 명시적인 비사고 매개변수가 전달됩니다.',
'settings.general.thinkingEnabled': '사고 모드 사용',
'settings.general.thinkingHint': '새 세션을 --thinking 비활성화로 시작하려면 이를 끄세요. DeepSeek V4 Flash/Pro 및 기타 비사고 워크플로에 유용합니다.',
'settings.general.defaultEditorTitle': '기본 편집기',
'settings.general.defaultEditorDescription': '파일의 연결 프로그램 메뉴에 표시할 편집기입니다. 이 컴퓨터에서 감지된 편집기만 나열됩니다.',
'settings.general.defaultEditorAuto': '자동',
'settings.general.workflowKeywordTitle': 'Ultracode',
'settings.general.workflowKeywordDescription': '독립된 Ultracode 키워드가 프롬프트를 동적 Workflow 오케스트레이션으로 전환할지 제어합니다.',
'settings.general.workflowKeywordEnabled': 'Ultracode 키워드 트리거 사용',
'settings.general.workflowKeywordHint': '실행 가능한 키워드는 전송 전에 강조되며 코드 블록, 인용문, 경로, flag 및 하이픈 리터럴은 그대로 유지됩니다.',
'settings.general.autoDreamTitle': 'Auto-dream',
'settings.general.autoDreamDescription': '충분한 세션이 변경된 후 백그라운드에서 auto-memory를 주기적으로 통합합니다.',
'settings.general.autoDreamEnabled': 'Auto-dream 사용',
'settings.general.autoDreamHintOn': '대상 세션이 끝나면 데스크톱 앱이 백그라운드에서 메모리를 정리할 수 있습니다.',
'settings.general.autoDreamHintOff': '백그라운드 모델 호출을 실행할 수 있으므로 기본값은 꺼짐입니다.',
'settings.general.autoDreamConfirmTitle': 'Auto-dream을 사용하시겠습니까?',
'settings.general.autoDreamConfirmKeepRunning': '대상 세션이 끝난 후 백그라운드 메모리 정리를 시작할 수 있도록 데스크톱 앱을 계속 실행해 두세요.',
'settings.general.autoDreamConfirmTokenCost': 'Auto-dream은 메모리 파일을 검토하고 다시 쓸 때 추가 모델 Token을 사용합니다.',
'settings.general.autoDreamConfirmEnable': 'Auto-dream 사용',
'settings.general.notificationsTitle': '시스템 알림',
'settings.general.notificationsDescription': '권한 확인, 에이전트 응답, 예약 작업 결과에 OS 기본 알림을 사용합니다.',
'settings.general.notificationsEnabled': '시스템 알림 사용',
'settings.general.notificationsHintOn': '사용하면 앱이 알림 권한을 요청하고 OS 알림 센터를 사용합니다.',
'settings.general.notificationsHintOff': '사용 안 하면 권한 확인, 에이전트 응답, 예약 작업이 데스크톱 알림을 보내지 않습니다.',
'settings.general.notificationsStatus': '권한',
'settings.general.notificationsStatusGranted': '허용됨',
'settings.general.notificationsStatusDenied': '시스템 설정에 의해 차단됨',
'settings.general.notificationsStatusDefault': '요청되지 않음',
'settings.general.notificationsStatusUnsupported': '이 환경에서는 사용할 수 없습니다',
'settings.general.notificationsAuthorize': '허용',
'settings.general.notificationsOpenSettings': '설정 열기',
'settings.general.notificationsTestTitle': 'Claude Code Haha 알림이 사용 설정되었습니다',
'settings.general.notificationsTestBody': '이제 권한 확인과 완료된 에이전트 응답에 시스템 알림이 사용됩니다.',
'settings.general.traceTitle': 'Agent Trace',
'settings.general.traceDescription': '멈춤, 실패, 예상치 못한 대기를 조사하기 위해 로컬 세션의 모델 요청 트레이스를 수집합니다.',
'settings.general.traceEnabled': 'Agent Trace 수집',
'settings.general.traceHintOn': '새 세션은 간결한 요청, 응답, 상태 이벤트를 로컬 cc-haha traces 디렉터리에 기록합니다.',
'settings.general.traceHintOff': '새 Trace는 기록되지 않습니다. 기존 기록은 Trace 목록에서 계속 볼 수 있습니다.',
'settings.general.chatSendBehaviorTitle': '메시지 전송',
'settings.general.chatSendBehaviorDescription': '데스크톱 채팅 입력창에서 메시지를 전송하는 방식을 선택합니다.',
'settings.general.chatSendBehaviorEnter': 'Enter로 전송',
'settings.general.chatSendBehaviorEnterDescription': 'Shift+Enter로 줄을 바꿉니다.',
'settings.general.chatSendBehaviorModifier': 'Ctrl/Cmd+Enter로 전송',
'settings.general.chatSendBehaviorModifierDescription': 'Enter와 Shift+Enter로 줄을 바꿉니다.',
'settings.general.h5AccessTitle': 'H5 액세스',
'settings.general.h5AccessDescription': '데스크톱 H5 앱을 로컬 네트워크에 공개합니다. 휴대폰은 수명이 짧은 H5 토큰이 포함된 QR 링크로 연결합니다.',
'settings.general.h5AccessEnabled': 'H5 액세스 사용',
'settings.general.h5AccessEnabledHint': '데스크톱 서버가 LAN 주소에서 수신 대기하고 데스크톱 세션에 대한 액세스를 허용합니다.',
'settings.general.h5AccessStatusEnabled': '사용',
'settings.general.h5AccessTokenPreview': '토큰 미리 보기',
'settings.general.h5AccessDisabledValue': '사용 안 함',
'settings.general.h5AccessDisable': '사용 안 함',
'settings.general.h5AccessGenerateToken': '토큰 생성',
'settings.general.h5AccessRegenerate': '토큰 다시 생성',
'settings.general.h5AccessGeneratedToken': '생성된 토큰',
'settings.general.h5AccessGeneratedTokenHint': '한 번만 표시됩니다. 지금 복사하여 비밀번호처럼 보관하세요.',
'settings.general.h5AccessShowToken': '토큰 표시',
'settings.general.h5AccessCopy': '복사',
'settings.general.h5AccessCopyUrl': 'H5 URL 복사',
'settings.general.h5AccessCopyLaunchUrl': 'QR 링크 복사',
'settings.general.h5AccessUrlCopied': 'H5 URL을 복사했습니다.',
'settings.general.h5AccessLaunchUrlCopied': 'QR 링크를 복사했습니다.',
'settings.general.h5AccessHideToken': '토큰 숨기기',
'settings.general.h5AccessTokenNotAvailable': '이전 버전의 토큰은 복구할 수 없습니다. 한 번 재생성하면 토큰이 영구 보존되어 언제든지 확인할 수 있습니다.',
'settings.general.h5AccessPublicHost': '액세스 호스트 / IP',
'settings.general.h5AccessPublicHostPlaceholder': '192.168.1.100',
'settings.general.h5AccessCurrentPort': '현재 포트',
'settings.general.h5AccessCurrentPortUnknown': '자동',
'settings.general.h5AccessFixedPort': '고정 포트',
'settings.general.h5AccessFixedPortPlaceholder': '자동',
'settings.general.h5AccessFixedPortInvalid': '포트는 1024~65535 사이의 브라우저에서 허용되는 정수여야 합니다.',
'settings.general.h5AccessFixedPortHint': '고정 포트를 설정하지 않으면 이전 포트를 자동으로 재사용합니다. 리버스 프록시 등 안정적인 포트가 필요한 경우 고정을 권장합니다. 변경 사항은 앱 재시작 후 적용됩니다.',
'settings.general.h5AccessFixedPortRestartNote': '고정 포트 {fixedPort}은(는) 앱 재시작 후 적용됩니다. 현재는 {activePort}에서 실행 중입니다.',
'settings.general.h5AccessDisconnectGrace': '연결 끊김 유지(초)',
'settings.general.h5AccessDisconnectGracePlaceholder': '30',
'settings.general.h5AccessDisconnectGraceInvalid': '5~86400 사이의 정수(초)여야 합니다.',
'settings.general.h5AccessDisconnectGraceHint': '휴대폰 화면 잠금이나 백그라운드 전환으로 연결이 끊겨도 실행 중인 작업은 중단되지 않고 백그라운드에서 완료되며, 재연결 시 결과를 볼 수 있습니다. 작업이 끝나고 연결된 클라이언트가 없을 때만 이 시간이 지난 후 CLI를 중지합니다(기본 30초). 외출 중 원격 조작 시 600처럼 크게 설정할 수 있습니다.',
'settings.general.h5AccessPublicUrl': '공개 URL',
'settings.general.h5AccessPublicUrlPlaceholder': 'https://chat.example.com',
'settings.general.h5AccessAllowedOrigins': '허용된 출처',
'settings.general.h5AccessAllowedOriginsPlaceholder': 'https://chat.example.com, https://phone.example',
'settings.general.h5AccessOriginsHint': '한 줄에 하나의 출처를 입력하거나 여러 출처를 쉼표로 구분하세요.',
'settings.general.h5AccessOpenHint': 'LAN 액세스의 경우 호스트 / IP만 변경하세요. 현재 서비스 포트가 재사용됩니다. 리버스 프록시의 경우 전체 URL을 입력하세요.',
'settings.general.h5AccessSave': 'H5 설정 저장',
'settings.general.h5AccessUrl': 'H5 URL',
'settings.general.h5AccessQrTitle': '휴대폰 연결',
'settings.general.h5AccessQrHint': '스캔하면 토큰이 입력된 상태로 H5가 열립니다.',
'settings.general.h5AccessQrRefreshHint': "'토큰 생성'을 클릭하면 스캔할 수 있는 QR 링크가 만들어집니다.",
'settings.general.h5AccessQrEmptyHint': 'QR 코드를 만들려면 토큰을 생성하세요.',
'settings.general.h5AccessQrAlt': 'H5 액세스 QR 코드',
'settings.general.h5AccessSafetyNote': '신뢰할 수 있는 네트워크에서만 사용하세요. QR 링크가 있는 누구나 H5가 노출하는 데스크톱 기능에 접근할 수 있습니다.',
'settings.general.h5AccessConfirmTitle': 'LAN H5 액세스를 사용하시겠습니까?',
'settings.general.h5AccessConfirmBody': '이렇게 하면 데스크톱 H5 앱이 LAN 주소와 포트에 공개됩니다. QR 토큰이 있는 기기는 데스크톱 세션과 관련 제어에 접근할 수 있습니다. 신뢰할 수 있는 네트워크에서만 계속하세요.',
'settings.general.h5AccessConfirmEnable': 'H5 액세스 사용',
'settings.general.h5AccessError': 'H5 액세스 설정을 업데이트하지 못했습니다.',
'settings.general.h5AccessStaleHostTitle': '저장된 H5 호스트에 더 이상 연결할 수 없습니다',
'settings.general.h5AccessStaleHostBody': '저장된 호스트 {storedHost}이(가) 이 컴퓨터의 활성 인터페이스에 바인딩되어 있지 않습니다. QR 코드를 스캔하는 휴대폰은 연결에 실패합니다. 현재 LAN IP로 전환하는 것을 권장합니다.',
'settings.general.h5AccessStaleHostNoSuggestion': '저장된 호스트 {storedHost}이(가) 이 컴퓨터의 활성 인터페이스에 바인딩되어 있지 않습니다. QR 코드를 스캔하는 휴대폰은 연결에 실패합니다. 이 컴퓨터의 네트워크 연결을 확인하거나 리버스 프록시 URL로 전환하세요.',
'settings.general.h5AccessStaleHostApply': '{suggestedHost}(으)로 전환',
'settings.general.h5AccessProxyNote': '현재 리버스 프록시 URL을 사용하고 있습니다. 휴대폰은 구성한 공개 도메인 / 터널을 통해 데스크톱에 연결됩니다. 프록시가 계속 작동 중인지 확인하세요.',
'settings.general.networkTitle': '네트워크',
'settings.general.networkDescription': '공급자, 로그인, MCP 및 에이전트 도구를 포함한 데스크톱 AI 세션의 외부 네트워크를 제어합니다.',
'settings.general.networkProxyModeDirect': '직접 연결',
'settings.general.networkProxyModeDirectDescription': '시스템 및 프로세스에서 상속된 프록시를 명시적으로 우회합니다.',
'settings.general.networkProxyModeSystem': '시스템 프록시',
'settings.general.networkProxyModeSystemDescription': '대상별로 OS 프록시 또는 PAC 규칙을 따르며 변경 사항을 자동 반영합니다. 인증 정보가 필요하면 수동 프록시를 사용하세요.',
'settings.general.networkProxyModeManual': '수동 프록시',
'settings.general.networkProxyModeManualDescription': '세션 트래픽을 아래에 입력한 HTTP 또는 HTTPS 프록시 URL로 라우팅합니다.',
'settings.general.networkProxyUrl': '프록시 URL',
'settings.general.networkProxyUrlHint': 'HTTP 및 HTTPS 프록시 URL을 지원합니다. 예: http://127.0.0.1:7890.',
'settings.general.networkProxyUrlInvalid': 'HTTP 또는 HTTPS 프록시 URL을 입력하세요.',
'settings.general.networkProxyUrlRequired': '프록시 URL을 입력하세요.',
'settings.general.networkTimeout': 'AI 요청 시간 초과',
'settings.general.networkTimeoutValue': '{seconds}초',
'settings.general.networkTimeoutHint': '공급자 요청, 스트리밍 첫 응답, 공급자 연결 테스트에 적용됩니다. 30~1800초를 지원합니다. 큰 컨텍스트에서는 첫 스트리밍 바이트까지 몇 분이 걸릴 수 있습니다.',
'settings.general.networkTimeoutUnit': '초',
'settings.general.networkTimeoutDecrease': '30초 줄이기',
'settings.general.networkTimeoutIncrease': '30초 늘리기',
'settings.general.networkTimeoutRequired': '시간 초과를 입력하세요.',
'settings.general.networkTimeoutRange': '{min}에서 {max}초까지의 정수를 입력하세요.',
'settings.general.networkSaved': '네트워크 설정을 저장했습니다.',
'settings.general.networkScopeHint': '새 요청에 적용되며 진행 중인 요청은 현재 경로를 유지합니다. 앱 업데이트는 별도 프록시 설정을 사용합니다.',
'settings.general.networkSave': '저장',
'settings.general.webFetchPreflightTitle': 'WebFetch 사전 확인',
'settings.general.webFetchPreflightDescription': '데스크톱 세션은 타사 공급자와 제한된 네트워크에서의 잘못된 실패를 피하기 위해 기본적으로 Claude의 도메인 사전 확인을 건너뜁니다.',
'settings.general.webFetchPreflightEnabled': 'WebFetch 도메인 사전 확인 건너뛰기',
'settings.general.webFetchPreflightHint': '각 WebFetch 요청 전에 업스트림 안전 사전 확인을 명시적으로 복원하려는 경우에만 이를 끄세요.',
'settings.general.webSearchTitle': 'WebSearch',
'settings.general.webSearchDescription': '에이전트 웹 검색을 공식 Claude, 타사 공급자, 로컬 폴백 키 중 어디에서 해결할지 선택합니다.',
'settings.general.webSearch.mode.auto': '자동',
'settings.general.webSearch.mode.tavily': 'Tavily',
'settings.general.webSearch.mode.brave': 'Brave',
'settings.general.webSearch.mode.anthropic': 'Claude',
'settings.general.webSearch.mode.disabled': '끄기',
'settings.general.webSearchTavilyKey': 'Tavily API 키',
'settings.general.webSearchBraveKey': 'Brave Search API 키',
'settings.general.webSearchBravePlaceholder': 'Brave Search 토큰',
'settings.general.webSearchGetApiKey': 'API 키 가져오기',
'settings.general.webSearchTavilyApiKeyLink': 'Tavily API 키 가져오기',
'settings.general.webSearchBraveApiKeyLink': 'Brave Search API 키 가져오기',
'settings.general.webSearchTavilyFreeHint': '계정을 만들고 키를 복사하세요. 무료 플랜에는 1000 크레딧이 포함됩니다.',
'settings.general.webSearchBraveFreeHint': '계정을 만들면 테스트용 무료 사용량으로 Search API 키를 생성할 수 있습니다.',
'settings.general.webSearchHint': '자동은 Claude 모델 이름에는 네이티브 Claude 웹 검색을 사용하고, 그다음 Tavily와 Brave 키로 폴백합니다.',
'settings.general.webSearchSave': '저장',
'settings.general.uiZoom': 'UI 확대/축소',
'settings.general.uiZoomDescription': '인터페이스 전체의 크기를 조정합니다.',
'settings.general.uiZoomShortcutHint': '단축키가 더 빠릅니다:',
'settings.general.uiZoomShortcutMac': 'macOS',
'settings.general.uiZoomShortcutWindows': 'Windows / Linux',
'settings.general.uiZoomShortcutResetHint': '0으로 확대/축소를 100%로 재설정합니다.',
'settings.general.uiZoomReset': 'UI 확대/축소를 100%로 재설정',
// ─── Empty Session ──────────────────────────────────────
'empty.title': '새 세션',
'empty.subtitle': '새 코딩 세션을 시작합니다. Claude가 프로젝트를 구축하고 디버깅하며 설계하도록 도울 준비가 되어 있습니다.',
'empty.placeholder': '무엇이든 물어보세요...',
'empty.addFiles': '파일 또는 사진 추가',
'empty.slashCommands': '슬래시 명령',
'empty.failedToCreate': '세션을 만들지 못했습니다',
'empty.createError.workdirMissing': '프로젝트 폴더가 없거나 디렉터리가 아닙니다. 기존 프로젝트를 선택하고 다시 시도하세요.',
'empty.createError.notGit': '이 프로젝트는 Git 저장소가 아니므로 브랜치 시작을 사용할 수 없습니다. 현재 폴더에서 시작하거나 Git 프로젝트를 선택하세요.',
'empty.createError.branchNotFound': '선택한 브랜치가 더 이상 존재하지 않습니다. 프로젝트 컨텍스트를 새로 고치고 다른 브랜치를 선택하세요.',
'empty.createError.dirtyWorktree': '현재 프로젝트에 커밋되지 않은 변경 사항이 있습니다. 브랜치 직접 전환이 차단되었습니다. "독립 worktree"를 사용하거나 먼저 변경 사항을 커밋/스태시하세요.',
'empty.createError.branchCheckedOut': '해당 브랜치는 다른 worktree에서 이미 체크아웃되어 있습니다. "독립 worktree"를 사용하거나 다른 브랜치를 선택하세요.',
'empty.createError.worktreeCreateFailed': '독립 worktree를 만들 수 없습니다. Git이 이 저장소에 쓸 수 있는지 확인한 후 다시 시도하세요. 세부 정보: {detail}',
'empty.createError.switchFailed': '현재 프로젝트 브랜치를 전환할 수 없습니다. Git 오류를 확인하고 변경 사항을 안전하게 보관한 후 다시 시도하세요. 세부 정보: {detail}',
'empty.createError.contextFailed': '이 Git 프로젝트를 검사할 수 없습니다. 저장소 상태를 확인하고 다시 시도하세요.',
// ─── Repository Launch Controls ──────────────────────────────────────
'repoLaunch.selectBranch': '브랜치 선택',
'repoLaunch.searchBranch': '브랜치 검색',
'repoLaunch.noBranch': '브랜치 없음',
'repoLaunch.noBranchMatch': '일치하는 브랜치 없음',
'repoLaunch.currentBranch': '현재 브랜치',
'repoLaunch.localBranch': '로컬 브랜치',
'repoLaunch.remoteBranch': '원격 브랜치',
'repoLaunch.checkedOut': '다른 worktree에서 체크아웃됨',
'repoLaunch.worktreeCurrent': '현재 worktree',
'repoLaunch.worktreeIsolated': '독립 worktree',
'repoLaunch.selectWorktree': 'worktree 모드 선택',
'repoLaunch.launchLocation': '실행 위치',
'repoLaunch.branch': '브랜치',
'repoLaunch.worktreeBadge': '독립',
'repoLaunch.missingWorkdir': '작업 디렉터리가 없습니다.',
'repoLaunch.dirtyWarning': '커밋되지 않은 변경 사항이 감지되었습니다. 직접 전환이 차단될 수 있습니다. 이 폴더를 건드리지 않고 계속하려면 독립 worktree를 사용하세요.',
'repoLaunch.dirtyWarningCompact': '커밋되지 않은 변경',
'repoLaunch.checkedOutWarning': '선택한 브랜치는 다른 worktree에서 이미 체크아웃되어 있습니다. Git에 의해 직접 시작이 차단될 수 있습니다. 디렉터리 변경을 피하려면 "독립 worktree"를 사용하세요.',
'repoLaunch.checkedOutWarningCompact': '브랜치 사용 중',
'repoLaunch.newBranch': '브랜치 만들기…',
'repoLaunch.newBranchTitle': '새 브랜치',
'repoLaunch.newBranchNameLabel': '브랜치 이름',
'repoLaunch.newBranchPlaceholder': 'feature/my-change',
'repoLaunch.newBranchFrom': '{branch} 기준으로 생성',
'repoLaunch.newBranchSubmit': '생성',
'repoLaunch.newBranchSuccessCurrent': '“{branch}” 브랜치를 만들고 선택했습니다. 세션을 시작할 때 이 브랜치로 전환합니다.',
'repoLaunch.newBranchSuccessIsolated': '“{branch}” 브랜치를 만들고 선택했습니다. 세션을 시작할 때 이 브랜치를 기준으로 독립 worktree를 만듭니다.',
'repoLaunch.newBranchErrorInvalid': 'Git이 이 브랜치 이름을 허용하지 않습니다.',
'repoLaunch.newBranchErrorExists': '같은 이름의 브랜치가 이미 있습니다.',
'repoLaunch.newBranchErrorFailed': '브랜치를 만들지 못했습니다.',
'repoLaunch.newBranchErrorNoCommits': '이 저장소에는 아직 커밋이 없어 기준으로 삼을 것이 없습니다.',
// ─── Chat Input ──────────────────────────────────────
'chat.placeholder': '편집, 디버그 또는 설명을 Claude에 요청...',
'chat.placeholderMissing': '이 세션은 없는 작업 공간을 가리킵니다. 새 세션을 만들거나 다른 프로젝트를 선택하세요.',
'chat.placeholderWorktreeRemoved': '이 세션의 임시 작업 공간이 정리되었습니다. 원래 프로젝트에서 새 세션을 시작해 계속하세요.',
'chat.addFiles': '파일 또는 사진 추가',
'chat.composerTools': '입력 도구 열기',
'chat.dropFilesTitle': '여기에 파일을 드롭하세요',
'chat.dropFilesHint': '파일 경로로 첨부됩니다.',
'chat.workspaceReferencesOnly': '작업 공간 참조 {count}개를 추가했습니다',
'chat.contextReferencesOnly': '참조 {count}개를 추가했습니다',
'chat.addSelectionToChat': '채팅에 추가',
'chat.branchFromHere': '새 대화 분기',
'chat.branchSuccess': '분기된 대화 "{title}"을(를) 만들었습니다.',
'chat.branchError': '이 메시지에서 분기할 수 없습니다. 세부 정보: {detail}',
'chat.userMessageReference': '사용자 메시지',
'chat.assistantMessageReference': '어시스턴트 메시지',
'chat.conversationNavigator.label': '대화 탐색',
'chat.conversationNavigator.turn': '{total}개 중 {current}번째',
'chat.conversationNavigator.attachments': '첨부 파일 {count}개',
'chat.slashCommands': '슬래시 명령',
'chat.slashSkillPersonal': '개인',
'chat.slashSkillProject': '프로젝트',
'chat.slashSkillPlugin': '플러그인',
'chat.pendingMessageGuide': '가이드',
'chat.pendingMessageGuideNow': '지금 가이드',
'chat.pendingMessageEdit': '대기 메시지 편집',
'chat.pendingMessageDelete': '대기 메시지 삭제',
'chat.pendingMessageEditInput': '대기 메시지 텍스트',
'chat.goalEvent.created': '목표 설정됨',
'chat.goalEvent.replaced': '목표 설정됨',
'chat.goalEvent.statusTitle': '목표 상태',
'chat.goalEvent.paused': '목표 일시 중지됨',
'chat.goalEvent.resumed': '목표 재개됨',
'chat.goalEvent.completed': '목표 완료됨',
'chat.goalEvent.cleared': '목표 지워짐',
'chat.goalEvent.continuing': '목표 계속 진행 중',
'chat.goalEvent.message': '목표 업데이트',
'chat.goalEvent.objective': '목표: {value}',
'chat.goalEvent.statusValue': '상태: {value}',
'chat.goalEvent.budget': '예산: {value}',
'chat.goalEvent.continuations': '연속 실행: {value}',
'chat.compactSummary.compacting': '컨텍스트 압축 중',
'chat.compactSummary.title': '컨텍스트가 압축됨',
'chat.compactSummary.autoTitle': '컨텍스트가 자동으로 압축됨',
'chat.compactSummary.manualTitle': '컨텍스트가 수동으로 압축됨',
'chat.compactSummary.trigger.manual': '수동',
'chat.compactSummary.trigger.auto': '자동',
'chat.compactSummary.tokens': '압축 전 {count} 토큰',
'chat.compactSummary.messages': '{count}개의 메시지를 요약했습니다',
'chat.activeGoal.title': '활성 목표',
'chat.activeGoal.running': '루프 실행 중',
'chat.activeGoal.active': '활성',
'chat.activeGoal.paused': '일시 중지됨',
'chat.activeGoal.completed': '완료됨',
'chat.activeGoal.budget': '예산 {value}',
'chat.activeGoal.continuations': '연속 실행 {value}',
'chat.activeGoal.elapsed': '경과 {value}',
'chat.backgroundAgents.title': '백그라운드 에이전트',
'chat.backgroundAgents.count': '{count}개 활성 또는 최근',
'chat.backgroundAgents.agent': '에이전트',
'chat.backgroundTasks.command': '백그라운드 명령',
'chat.backgroundTasks.workflow': '백그라운드 워크플로',
'chat.backgroundTasks.task': '백그라운드 작업',
'chat.backgroundTasks.type.agent': '에이전트',
'chat.backgroundTasks.type.bash': 'Bash',
'chat.backgroundTasks.type.workflow': '워크플로',
'chat.backgroundTasks.type.task': '작업',
'chat.backgroundAgents.tokens': '{count} 토큰',
'chat.backgroundAgents.status.running': '실행 중',
'chat.backgroundAgents.status.completed': '완료',
'chat.backgroundAgents.status.failed': '실패',
'chat.backgroundAgents.status.stopped': '중지됨',
'chat.duration.seconds': '{seconds}초',
'chat.duration.minutesSeconds': '{minutes}분 {seconds}초',
'chat.duration.hoursMinutes': '{hours}시간 {minutes}분',
'chat.turnCompletedAt': '{time} 완료',
'chat.turnDuration': '소요 {duration}',
'slash.mcp.title': '사용 가능한 MCP 도구',
'slash.mcp.subtitle': '이 채팅 컨텍스트에서 사용 가능한 전역 및 현재 프로젝트 MCP 서버입니다.',
'slash.mcp.subtitleWithProject': '다음의 전역 및 프로젝트 MCP를 표시 중: {path}',
'slash.mcp.emptyTitle': '사용 가능한 MCP 서버가 없습니다',
'slash.mcp.emptyBody': '이 채팅 컨텍스트에서 사용 가능한 전역 또는 프로젝트 MCP 서버가 없습니다.',
'slash.mcp.projectBadge': '프로젝트: {name}',
'slash.skills.title': '사용 가능한 스킬',
'slash.skills.subtitle': '현재 컨텍스트에서 사용 가능한, 사용자가 호출할 수 있는 스킬입니다.',
'slash.skills.subtitleWithProject': '다음의 스킬을 표시 중: {path}',
'slash.skills.emptyTitle': '사용 가능한 스킬이 없습니다',
'slash.skills.emptyBody': '이 컨텍스트에서 사용자가 호출할 수 있는 스킬을 찾을 수 없습니다.',
'slash.saveWorkflow.title': '워크플로 저장',
'slash.saveWorkflow.subtitle': '완료된 워크플로를 다시 사용할 수 있는 슬래시 명령으로 저장합니다.',
'slash.saveWorkflow.noCompletedRun': '이 세션에서 워크플로를 완료한 후 /save-workflow로 저장하세요.',
'slash.saveWorkflow.runLabel': '완료된 실행',
'slash.saveWorkflow.nameLabel': '명령 이름',
'slash.saveWorkflow.namePlaceholder': '예: release-audit',
'slash.saveWorkflow.scopeLabel': '저장 범위',
'slash.saveWorkflow.scopeProject': '프로젝트',
'slash.saveWorkflow.scopeUser': '사용자',
'slash.saveWorkflow.save': '워크플로 저장',
'slash.saveWorkflow.loading': '워크플로 불러오는 중…',
'slash.saveWorkflow.retry': '다시 시도',
'slash.saveWorkflow.success': '/{name} 이름으로 저장했습니다. 새 세션에서 /{name}을 실행하세요.',
'slash.saveWorkflow.error': '워크플로를 저장할 수 없습니다: {detail}',
'slash.saveWorkflow.invalidName': '이름에는 영문자, 숫자, 하이픈, 밑줄만 사용할 수 있으며 영문자나 숫자로 시작해야 합니다.',
'slash.saveWorkflow.reservedName': '/{name}은(는) 데스크톱 예약 명령입니다. 다른 이름을 사용하세요.',
'slash.saveWorkflow.existingName': '/{name}은(는) 이미 사용 가능한 명령입니다. 다른 이름을 사용하세요.',
'slash.plugins.title': '플러그인',
'slash.plugins.subtitle': '플러그인 관리가 이 슬래시 명령 화면으로 이동합니다.',
'slash.plugins.emptyTitle': '플러그인 패널 곧 제공',
'slash.plugins.emptyBody': '이 공유 슬래시 명령 패널은 현재 연결되어 있습니다. 플러그인 데이터는 다음에 연결됩니다.',
'slash.help.title': '슬래시 명령',
'slash.help.subtitle': '에이전트 워크플로를 실행하거나, 세션 상태를 확인하거나, 데스크톱 패널을 엽니다.',
'slash.help.group.context': '컨텍스트',
'slash.help.group.project': '프로젝트',
'slash.help.group.desktop': '데스크톱',
'slash.help.group.more': '더 보기',
'slash.help.moreAvailable': '{count}개의 명령을 더 사용할 수 있습니다. /를 입력하여 전체 명령 목록을 검색하세요.',
'slash.inspector.title': '세션 검사기',
'slash.inspector.close': '세션 검사기 닫기',
'slash.inspector.loading': '세션 데이터 불러오는 중',
'slash.inspector.error.noActiveSession': '선택된 활성 세션이 없습니다.',
'slash.inspector.error.unavailable': '세션 검사기 데이터를 사용할 수 없습니다. /api/sessions/:id/inspection이 로드되도록 데스크톱 서버를 다시 시작하세요.',
'slash.inspector.tab.status': '상태',
'slash.inspector.tab.usage': '사용량',
'slash.inspector.tab.context': '컨텍스트',
'slash.inspector.status.cliStatus': 'CLI 상태',
'slash.inspector.status.running': '실행 중',
'slash.inspector.status.notRunning': '실행되지 않음',
'slash.inspector.status.activeModel': '활성 모델',
'slash.inspector.status.unknown': '알 수 없음',
'slash.inspector.status.mcpConnections': 'MCP 연결',
'slash.inspector.status.connected': '연결됨',
'slash.inspector.status.failed': '실패',
'slash.inspector.status.registeredTools': '등록된 도구',
'slash.inspector.status.commands': '명령',
'slash.inspector.status.sessionMetadata': '세션 메타데이터',
'slash.inspector.status.version': '버전',
'slash.inspector.status.sessionId': '세션 ID',
'slash.inspector.status.workingDirectory': '작업 디렉터리',
'slash.inspector.status.permissionMode': '권한 모드',
'slash.inspector.status.authToken': '인증 토큰',
'slash.inspector.status.outputStyle': '출력 스타일',
'slash.inspector.status.default': '기본값',
'slash.inspector.status.mcpServers': 'MCP 서버',
'slash.inspector.status.refresh': '새로 고침',
'slash.inspector.status.contextWindow': '컨텍스트 창',
'slash.inspector.usage.emptyTitle': '아직 사용량 데이터가 없습니다',
'slash.inspector.usage.emptyBody': 'CLI 세션이 시작되고 최소 한 턴이 완료되면 사용량이 표시됩니다.',
'slash.inspector.usage.contextSnapshotNotice': '현재 컨텍스트 스냅샷의 토큰 사용량을 표시합니다. 사용량은 컨텍스트를 가져오는 대로 동적으로 업데이트됩니다.',
'slash.inspector.usage.transcriptNotice': '세션 기록에서 재구성한 사용량을 표시합니다. API 소요 시간은 현재 실행 중인 CLI 프로세스에서만 사용할 수 있습니다.',
'slash.inspector.usage.unknownCost': '하나 이상의 모델 요금이 알려져 있지 않아 비용이 부정확할 수 있습니다.',
'slash.inspector.usage.totalCost': '총 비용',
'slash.inspector.usage.source': '소스',
'slash.inspector.usage.source.contextSnapshot': '컨텍스트 스냅샷',
'slash.inspector.usage.source.transcript': '기록',
'slash.inspector.usage.source.currentProcess': '현재 프로세스',
'slash.inspector.usage.apiDuration': 'API 소요 시간',
'slash.inspector.usage.wallDuration': '실제 시간',
'slash.inspector.usage.usageSpan': '사용 기간',
'slash.inspector.usage.codeChanges': '코드 변경',
'slash.inspector.usage.input': '입력',
'slash.inspector.usage.output': '출력',
'slash.inspector.usage.cacheReadWrite': '캐시 읽기 / 쓰기',
'slash.inspector.usage.webSearch': '웹 검색',
'slash.inspector.usage.byModel': '모델별 사용량',
'slash.inspector.usage.tokens': '토큰',
'slash.inspector.usage.noModelTitle': '모델 사용량 없음',
'slash.inspector.usage.noModelBody': '모델 응답이 기록되면 여기에 토큰 사용량이 표시됩니다.',
'slash.inspector.context.loading': '컨텍스트 데이터 불러오는 중',
'slash.inspector.context.emptyTitle': '아직 컨텍스트 데이터가 없습니다',
'slash.inspector.context.emptyBody': '컨텍스트 사용량에는 활성 CLI 세션이 필요합니다.',
'slash.inspector.context.windowUsage': '컨텍스트 창 사용량',
'slash.inspector.context.used': '사용됨',
'slash.inspector.context.free': '여유',
'slash.inspector.context.messages': '메시지',
'slash.inspector.context.assistant': '어시스턴트',
'slash.inspector.context.toolResults': '도구 결과',
'slash.inspector.context.context': '컨텍스트',
'slash.inspector.context.categoryTitle': '카테고리별 예상 사용량',
'slash.inspector.context.noCategoriesTitle': '컨텍스트 카테고리 없음',
'slash.inspector.context.noCategoriesBody': 'CLI가 컨텍스트 분석을 보고하면 컨텍스트 카테고리가 표시됩니다.',
'slash.inspector.context.memoryFiles': '메모리 파일',
'slash.inspector.context.noMemoryFiles': '이 세션에는 메모리 파일이 로드되어 있지 않습니다.',
'slash.inspector.context.openMemory': '메모리 열기',
'contextIndicator.ariaLabel': '컨텍스트 사용량 {percent}',
'contextIndicator.pendingAria': '컨텍스트 사용량이 계산되지 않음',
'contextIndicator.loadingAria': '컨텍스트 사용량 불러오는 중',
'contextIndicator.unavailableAria': '컨텍스트 사용량을 사용할 수 없음',
'contextIndicator.title': '컨텍스트',
'contextIndicator.modelUnknown': '알 수 없는 모델',
'contextIndicator.used': '사용됨',
'contextIndicator.free': '여유',
'contextIndicator.window': '창',
'contextIndicator.loading': '컨텍스트 사용량 불러오는 중...',
'contextIndicator.pendingDetail': '컨텍스트 사용량은 세션 시작 후에 계산됩니다.',
'contextIndicator.unavailable': '없음',
'contextIndicator.unavailableDetail': '이 세션에서는 컨텍스트 사용량을 사용할 수 없습니다.',
'contextIndicator.updatedUnknown': '아직 새로 고치지 않음',
'contextIndicator.updatedNow': '방금 업데이트됨',
'contextIndicator.updatedMinutes': '{count}분 전 업데이트됨',
'contextIndicator.estimate': '추정',
'chat.navigate': '이동',
'chat.select': '선택',
'chat.dismiss': '닫기',
'chat.stopTitle': '생성 중지 (Cmd+.)',
'chat.jumpToLatest': '최신',
'chat.memorySavedTitle': '{count}개의 메모리 파일을 저장했습니다',
'chat.memorySavedFromToolsTitle': '{count}개의 메모리 항목을 저장했습니다',
'chat.memoryReferencedTitle': '{count}개의 메모리 참조',
'chat.memoryOpenSettings': '메모리 열기',
'chat.memoryMoreFiles': '+{count}개',
'chat.memoryTechnicalDetails': '도구 세부 정보',
'chat.rewindSuccessWithCode': '{count}개의 메시지를 되감고 추적된 파일을 복원했습니다.',
'chat.rewindSuccessConversationOnly': '{count}개의 메시지를 되감았습니다. 이 턴에는 사용할 수 있는 파일 체크포인트가 없었습니다.',
'chat.rewindSuccessPartialCoverage': '메시지 {count}개를 되돌리고 기록된 파일을 복원했습니다. {sources}(으)로 인한 변경은 기록되지 않아 디스크에 그대로 남아 있습니다.',
'chat.turnChangesTitle': '{count}개의 파일이 변경됨',
'chat.turnChangesLatestCardLabel': '턴에서 변경된 파일',
'chat.turnChangesHistoricalCardLabel': '턴에서 변경된 파일',
'chat.turnChangesLatestSubtitle': '현재 턴 체크포인트',
'chat.turnChangesHistoricalSubtitle': '저장된 턴 체크포인트',
'chat.turnChangesCurrentWorkspaceDiff': '현재 워크스페이스 변경 사항',
'chat.turnChangesConversationOnlySubtitle': '파일 체크포인트가 불완전하여 대화만 되돌릴 수 있고 파일은 복원되지 않습니다',
'chat.turnChangesUndoConversationOnly': '대화만 되돌리기',
'chat.turnChangesConversationOnlyConfirmBody': '이 턴은 파일 체크포인트가 불완전하여 파일을 안전하게 복원할 수 없습니다. 대화만 되돌리면 세션은 이 턴 이전으로 돌아가지만 디스크의 파일은 그대로 유지됩니다.',
'chat.turnChangesPartialCoverageSubtitle': '실행 취소하면 위 파일은 복원됩니다. {sources}(으)로 인한 변경은 체크포인트에 기록되지 않아 그대로 남습니다',
'chat.turnChangesPartialCoverageConfirmBody': '참고: {sources}(으)로 인한 파일 변경은 체크포인트에 기록되지 않아 실행 취소해도 되돌아가지 않습니다.',
'chat.turnChangesLatestUndo': '현재 턴 실행 취소',
'chat.turnChangesHistoricalUndo': '이 턴 이전으로 되감기',
'chat.turnChangesUndoing': '실행 취소 중...',
'chat.turnChangesLatestUndoAria': '현재 턴 변경 사항 실행 취소',
'chat.turnChangesHistoricalUndoAria': '이 턴 이전으로 되감기',
'chat.turnChangesLatestConfirmTitle': '현재 턴을 실행 취소하시겠습니까?',
'chat.turnChangesHistoricalConfirmTitle': '이 턴 이전으로 되감으시겠습니까?',
'chat.turnChangesLatestConfirmBody': '최신 어시스턴트 응답을 되감고 이 턴의 추적된 파일을 복원합니다.',
'chat.turnChangesHistoricalConfirmBody': '대화를 이 턴 이전으로 되감고 해당 체크포인트의 추적된 파일을 복원합니다.',
'chat.turnChangesLatestConfirmUndo': '현재 턴 실행 취소',
'chat.turnChangesHistoricalConfirmUndo': '이 턴 이전으로 되감기',
'chat.turnChangesOpenInWorkspaceAria': '{path}을(를) 작업 공간에서 열기',
'chat.turnChangesOpenFileAria': '{path} 열기',
'chat.turnChangesShowMore': '{count}개의 파일 더 보기',
'chat.turnChangesShowLess': '적게 보기',
// ─── Streaming Indicator ──────────────────────────────────────
'streaming.thinking': '사고 중',
'streaming.running': '실행 중',
'streaming.working': '작업 중',
// ─── Permission Dialog ──────────────────────────────────────
'permission.allowEditFile': 'Claude가 {fileName}을(를) {toolName}하도록 허용하시겠습니까?',
'permission.allowEditFileGeneric': 'Claude가 이 파일을 {toolName}하도록 허용하시겠습니까?',
'permission.allowBash': 'Claude가 이 명령을 실행하도록 허용하시겠습니까?',
'permission.allowTool': 'Claude가 {toolName}을(를) 사용하도록 허용하시겠습니까?',
'permission.awaitingApproval': '승인 대기 중',
'permission.responded': '응답함',
'permission.allow': '허용',
'permission.allowForSession': '이 세션에서 허용',
'permission.deny': '거부',
'permission.hideDetails': '세부 정보 숨기기',
'permission.showFullInput': '전체 입력 표시',
'permission.replacingContent': '파일 내용 교체 중',
'permission.planReadyTitle': '코딩을 시작할까요?',
'permission.planPreviewTitle': 'Claude의 계획',
'permission.planRequestedPermissions': '요청된 권한',
'permission.planApprove': '계획 승인',
'permission.planKeepPlanning': '계속 계획하기',
'permission.planFeedbackPlaceholder': 'Claude에게 변경할 내용을 알려주세요',
'permission.planEmpty': '계획 내용이 없습니다.',
'permission.planApproved': '계획 승인됨',
'permission.planRejected': '계획 거부됨',
// ─── Computer Use Approval ──────────────────────────────────────
'computerUseApproval.titleApps': '컴퓨터 사용이 이 앱들을 제어하려고 합니다',
'computerUseApproval.titleTcc': '컴퓨터 사용에 macOS 권한이 필요합니다',
'computerUseApproval.reason': 'Claude가 요청하는 이유',
'computerUseApproval.allow': '이 세션에서 허용',
'computerUseApproval.deny': '거부',
'computerUseApproval.alreadyGranted': '이 세션에서는 이미 허용됨',
'computerUseApproval.notInstalled': '앱이 설치되지 않음',
'computerUseApproval.unfilteredScreenshots': 'Windows에서는 아래에 나열되지 않은 앱을 포함해 이 디스플레이에 보이는 모든 창이 스크린샷에 포함될 수 있습니다. 입력 동작은 허용한 앱으로만 제한됩니다.',
'computerUseApproval.sensitiveApp': '이 앱은 민감한 것으로 처리되며 추가 검토가 필요합니다.',
'computerUseApproval.alsoRequested': '함께 요청됨',
'computerUseApproval.hideWhileWorking': 'Claude가 작업하는 동안 다른 {count}개의 앱이 숨겨집니다.',
'computerUseApproval.hideWhileWorkingRestore': 'Claude가 작업하는 동안 다른 {count}개의 앱이 숨겨졌다가 Claude가 완료되면 복원됩니다.',
'computerUseApproval.accessibility': '접근성',
'computerUseApproval.screenRecording': '화면 기록',
'computerUseApproval.granted': '허용됨',
'computerUseApproval.notGranted': '허용되지 않음',
'computerUseApproval.openAccessibility': '접근성 열기',
'computerUseApproval.openScreenRecording': '화면 기록 열기',
'computerUseApproval.tryAgain': '다시 시도',
'computerUseApproval.tccHint': '시스템 설정에서 부족한 권한을 허용한 후 돌아와 "다시 시도"를 선택하세요.',
'computerUseApproval.tryAgainHint': '다시 시도하면 Claude에 제어가 돌아가 macOS 권한 변경이 적용된 후 request_access를 한 번 더 호출할 수 있습니다.',
// ─── Ask User Question ──────────────────────────────────────
'question.needsInput': 'Claude가 입력을 필요로 합니다',
'question.answered': '응답함',
'question.completed': '완료',
'question.customResponse': '또는 직접 응답을 입력하세요:',
'question.typePlaceholder': '답변 입력...',
'question.submit': '제출',
'question.answeredPrefix': '응답: ',
'question.resultPrefix': '결과: ',
'question.chatAboutThis': 'Claude와 상의하기',
'question.chatAboutThisHint': '적합한 선택지가 없나요? Claude가 다시 물어보도록 넘깁니다. 이미 입력한 답변도 함께 전달됩니다',
'question.chatRequested': '대화로 전환했습니다. Claude가 이어서 물어봅니다',
'question.chatBadge': '상의 중',
// ─── Thinking Block ──────────────────────────────────────
'thinking.label': '사고 중',
'thinking.labelDone': '사고 완료',
// ─── Tool Calls ──────────────────────────────────────
'tool.errorOutput': '오류 출력',
'tool.toolOutput': '도구 출력',
'tool.toolInput': '도구 입력',
'tool.partialInput': '부분 입력',
'tool.writerPreview': 'Writer',
'tool.writerPreviewLatest': '{total}줄 중 최신 {visible}줄 표시 중',
'tool.contentStats': '{lines} · {chars}',
'tool.contentStatsLatest': '최신 {visible} / {total}줄 · {chars}',
'tool.lineCountSingular': '{count}줄',
'tool.lineCountPlural': '{count}줄',
'tool.charCountSingular': '{count}자',
'tool.charCountPlural': '{count}자',
'tool.generatingContent': '콘텐츠 생성 중',
'tool.preparingEdit': '편집 준비 중',
'tool.preparingTool': '도구 준비 중',
'tool.imageGenerationGeneratingOne': '이미지 생성 중',
'tool.imageGenerationGenerating': '이미지 {count}개 생성 중',
'tool.imageGenerationEditingOne': '이미지 편집 중',
'tool.imageGenerationEditing': '이미지 변형 {count}개 편집 중',
'tool.imageGenerationCompleteOne': '이미지 1개 생성 완료',
'tool.imageGenerationComplete': '이미지 {count}개 생성 완료',
'tool.imageGenerationEditCompleteOne': '이미지 1개 편집 완료',
'tool.imageGenerationEditComplete': '이미지 변형 {count}개 편집 완료',
'tool.imageGenerationFailed': '이미지 생성 실패',
'tool.imageGenerationEditFailed': '이미지 편집 실패',
'tool.imageGenerationMissing': '공급자가 이 이미지를 반환하지 않았습니다',
'tool.generatedImageAlt': '생성된 이미지 {index}',
'tool.stopped': '중지됨',
'tool.readFileContents': '파일 내용 읽기',
'tool.createFile': '파일 만들기',
'tool.updateFileContents': '파일 내용 업데이트',
'tool.linesChanged': '{count}줄 변경됨',
'tool.linesCreated': '{count}줄 생성됨',
'tool.linesOutput': '{count}줄 출력됨',
'tool.result': '{toolName} 결과',
'tool.resultGeneric': '도구 결과',
'tool.error': '오류',
'tool.success': '성공',
'tool.showLess': '적게 보기',
'tool.showMore': '{count}자 더 보기',
'tool.showMoreLines': '{count}줄 더 보기',
'tool.noOutput': '출력 없음',
// ─── Tool Group Verbs ──────────────────────────────────────
'toolGroup.readOne': '파일 1개 읽음',
'toolGroup.readMany': '파일 {count}개 읽음',
'toolGroup.createdOne': '파일을 만들었습니다',
'toolGroup.createdMany': '파일 {count}개를 만들었습니다',
'toolGroup.editedOne': '파일을 편집했습니다',
'toolGroup.editedMany': '파일 {count}개를 편집했습니다',
'toolGroup.ranOne': '명령을 실행했습니다',
'toolGroup.ranMany': '명령 {count}개를 실행했습니다',
'toolGroup.foundFiles': '파일을 찾았습니다',
'toolGroup.searchedOne': '코드를 검색했습니다',
'toolGroup.searchedMany': '패턴 {count}개를 검색했습니다',
'toolGroup.agentOne': '에이전트 1개를 디스패치했습니다',
'toolGroup.agentMany': '에이전트 {count}개를 디스패치했습니다',
'toolGroup.thought': '사고',
'toolGroup.thoughtMany': '{count}번 사고',
'toolGroup.failedCount': '{count}건 실패',
'toolGroup.collapseAgent': '에이전트 접기',
'toolGroup.expandAgent': '에이전트 펼치기',
'toolGroup.openRun': '실행 열기',
'toolGroup.openRunNamed': '실행 {title} 열기',
'agentStatus.starting': '시작 중',
'agentStatus.running': '실행 중',
'agentStatus.done': '완료',
'agentStatus.failed': '실패',
'agentStatus.stopped': '중지됨',
'agentStatus.noActivity': '아직 도구 활동이 없습니다',
'agentStatus.viewResult': '결과 보기',
'agentStatus.resultTitle': '에이전트 결과',
'toolGroup.searchedWeb': '웹을 검색했습니다',
'toolGroup.fetchedOne': '페이지 1개를 가져왔습니다',
'toolGroup.fetchedMany': '페이지 {count}개를 가져왔습니다',
// ─── Tasks ──────────────────────────────────────
'tasks.completed': '완료된 작업',
'tasks.newTask': '+ 새 작업',
'tasks.emptyTitle': '아직 예약된 작업이 없습니다',
'tasks.emptyDesc': '반복 작업을 만들어 엔지니어링 워크플로를 자동화하세요.',
'tasks.createNew': '새 작업 만들기',
'tasks.totalTasks': '총 작업',
'tasks.active': '활성',
'tasks.disabled': '사용 안 함',
// ─── New Task Modal ──────────────────────────────────────
'newTask.title': '새 예약 작업',
'newTask.localWarning': '로컬 작업은 컴퓨터가 켜져 있는 동안에만 실행됩니다.',
'newTask.fullPermissions': '모든 권한(고정)',
'newTask.time': '실행 시간',
'newTask.name': '이름',
'newTask.namePlaceholder': 'daily-code-review',
'newTask.description': '설명',
'newTask.descPlaceholder': '어제 커밋을 검토하고 우려되는 점을 표시',
'newTask.frequency': '빈도',
'newTask.everyNMinutes': 'N분마다',
'newTask.everyNHours': 'N시간마다',
'newTask.daily': '매일',
'newTask.weekdays': '평일(월~금)',
'newTask.specificDays': '특정 요일',
'newTask.monthly': '매월',
'newTask.customCron': '사용자 지정 cron 식',
'newTask.intervalMinutes': '{n}분마다',
'newTask.intervalHours': '{n}시간마다',
'newTask.atMinute': ':{m}분에',
'newTask.onMonthDay': '매월 {d}일에',
'newTask.cronFormatHint': '형식: 분 시 일 월 요일',
'newTask.invalidCron': '잘못된 cron 식',
'newTask.daySun': '일',
'newTask.dayMon': '월',
'newTask.dayTue': '화',
'newTask.dayWed': '수',
'newTask.dayThu': '목',
'newTask.dayFri': '금',
'newTask.daySat': '토',
'newTask.delayNote': '예약 작업은 서버 성능을 위해 몇 분의 무작위 지연을 사용합니다.',
'newTask.create': '작업 만들기',
'newTask.promptPlaceholder': '지난 24시간의 커밋을 확인하세요. 무엇이 바뀌었는지 요약하고, 위험한 패턴이나 누락된 테스트를 지적하며, 후속 조치가 필요한 점을 기록하세요.',
'newTask.notification': '알림',
'newTask.notifyOnComplete': '완료 시 푸시 알림',
'newTask.notifyChannels': '알림 채널',
'newTask.notifyHint': '작업이 완료되면 OS 기본 데스크톱 알림 또는 IM 메시지를 보냅니다.',
'newTask.notifyDesktop': '데스크톱',
'newTask.notConfigured': '구성되지 않음',
'newTask.noChannelConfigured': '아직 구성된 IM 채널이 없습니다. 설정 → IM 어댑터 에서 설정하세요.',
'newTask.noChannelSelected': '하나 이상의 알림 채널을 선택하세요.',
// ─── Cron Descriptions ──────────────────────────────────────
'cron.everyMinute': '매분 실행',
'cron.everyNMinutes': '{n}분마다 실행',
'cron.everyHour': '매시간 실행',
'cron.everyNHours': '{n}시간마다 실행',
'cron.everyNHoursAtMinute': '{n}시간마다 :{m}분에 실행',
'cron.dailyAt': '매일 {time}에 실행',
'cron.weekdaysAt': '평일 {time}에 실행',
'cron.specificDaysAt': '매주 {days} {time}에 실행',
'cron.monthlyAt': '매월 {day}일 {time}에 실행',
'cron.customSchedule': '사용자 지정: {cron}',
'cron.dow.0': '일',
'cron.dow.1': '월',
'cron.dow.2': '화',
'cron.dow.3': '수',
'cron.dow.4': '목',
'cron.dow.5': '금',
'cron.dow.6': '토',
// ─── Task Actions & Logs ──────────────────────────────────────
'tasks.runNow': '지금 실행',
'tasks.confirmRun': '이 작업을 즉시 실행하시겠습니까?',
'tasks.confirmDisable': '이 예약 작업을 사용 안 함으로 설정하시겠습니까?',
'tasks.confirmEnable': '이 예약 작업을 사용하시겠습니까?',
'tasks.confirmDelete': '이 작업과 모든 로그를 영구적으로 삭제하시겠습니까?',
'tasks.running': '실행 중...',
'tasks.viewLogs': '로그',
'tasks.moreActions': '추가 작업',
'tasks.logsTitle': '실행 로그',
'tasks.noLogs': '아직 실행 로그가 없습니다',
'tasks.runStatus.running': '실행 중',
'tasks.runStatus.completed': '완료',
'tasks.runStatus.failed': '실패',
'tasks.runStatus.timeout': '시간 초과',
'tasks.duration': '{s}초',
'tasks.viewOutput': '요약',
'tasks.hideOutput': '숨기기',
'tasks.close': '닫기',
'tasks.edit': '편집',
'tasks.editTitle': '예약 작업 편집',
'tasks.saveChanges': '변경 사항 저장',
'tasks.openSession': '대화 보기',
'tasks.createdAt': '생성: ',
'tasks.lastRunAt': '마지막 실행: ',
'tasks.outputHintSession': '"대화 보기"를 클릭하면 세션 보기에서 전체 출력을 볼 수 있습니다.',
'tasks.noOutputText': '사용할 수 있는 출력이 없습니다.',
// ─── Prompt Editor ──────────────────────────────────────
'promptEditor.worktree': 'worktree',
'promptEditor.bypassWarning': '우회 모드는 시스템에 대한 전체 액세스를 허용합니다',
'promptEditor.within': '범위:',
'promptEditor.selectFolder': '— 범위를 제한할 폴더 선택',
// ─── Permission Mode Selector ──────────────────────────────────────
'permMode.executionPermissions': '실행 권한',
'permMode.askPermissions': '권한 확인',
'permMode.askPermDesc': 'CLI가 요청할 때 파일 편집과 위험도가 높은 명령을 확인합니다',
'permMode.autoAccept': '편집 자동 수락',
'permMode.autoAcceptDesc': 'Claude가 확인 없이 디스크에 씁니다',
'permMode.autoMode': '자동 모드',
'permMode.autoModeDesc': 'Claude가 도구 호출을 검토하고 안전하다고 판단한 작업을 실행합니다',
'permMode.planMode': '계획 모드',
'permMode.planModeDesc': '설계 및 추론만, 파일은 다루지 않음',
'permMode.bypass': '권한 우회',
'permMode.bypassDesc': '셸과 파일 시스템에 대한 전체 도구 액세스',
'permMode.dontAsk': '확인 안 함',
'permMode.enableBypassTitle': '권한 우회를 사용하시겠습니까?',
'permMode.enableBypassSubtitle': '이렇게 하면 시스템에 대한 전체 액세스가 허용됩니다',
'permMode.enableBypassBody': 'Claude는 다음 범위 내에서 셸 명령 실행과 파일 수정에 <strong>무제한</strong> 액세스를 갖게 됩니다:',
'permMode.permReadWrite': '모든 파일 읽기, 쓰기, 삭제',
'permMode.permShell': '임의의 셸 명령 실행',
'permMode.permPackages': '패키지 설치 또는 제거',
'permMode.enableBypassBtn': '우회 사용',
'permMode.disabledDuringTurn': '세션이 진행 중일 때는 권한을 변경할 수 없습니다',
'permMode.enableAutoTitle': '자동 모드를 활성화할까요?',
'permMode.enableAutoBody': '자동 모드는 권한 확인을 줄이지만 안전을 보장하지는 않습니다.',
'permMode.enableAutoDetail': 'Claude는 도구 호출에서 위험한 작업과 프롬프트 인젝션을 확인하고, 안전하다고 판단한 작업을 실행하며 위험하다고 판단한 작업을 차단합니다. 격리된 환경에서만 사용하세요.',
'permMode.enableAutoBtn': '자동 모드 활성화',
// Mode labels (compact, for chips)
'permMode.label.default': '권한 확인',
'permMode.label.acceptEdits': '자동 수락',
'permMode.label.auto': '자동 모드',
'permMode.label.plan': '계획 모드',
'permMode.label.bypassPermissions': '우회',
'permMode.label.dontAsk': '확인 안 함',
// ─── Model Selector ──────────────────────────────────────
'model.selectModel': '모델 선택',
'model.configureProvider': '모델 공급자 설정',
'model.configuration': '모델 구성',
'model.searchPlaceholder': '모델 검색',
'model.clearSearch': '모델 검색 지우기',
'model.noMatches': '일치하는 모델이 없습니다',
'model.effort': '노력',
// ─── Directory Picker ──────────────────────────────────────
'dirPicker.selectProject': '프로젝트 선택...',
'dirPicker.directory': '디렉터리',
'dirPicker.recent': '최근',
'dirPicker.noRecent': '최근 프로젝트가 없습니다',
'dirPicker.chooseFolder': '다른 폴더 선택',
'dirPicker.chooseProjectFolder': '프로젝트 폴더 선택',
'dirPicker.useThisFolder': '이 폴더 사용',
'dirPicker.noSubdirs': '하위 디렉터리가 없습니다',
// ─── File Search ──────────────────────────────────────
'fileSearch.searching': '검색 중...',
'fileSearch.noMatch': '일치하는 파일이 없습니다',
'fileSearch.noFiles': '이 디렉터리에 파일이 없습니다',
'fileSearch.accessDenied': '이 디렉터리에 접근할 수 없습니다',
'fileSearch.loadFailed': '디렉터리를 불러오지 못했습니다',
'fileSearch.navigate': '이동',
'fileSearch.attach': '첨부',
'fileSearch.select': '선택',
'fileSearch.open': '폴더 열기',
'fileSearch.close': '닫기',
'fileSearch.directory': '폴더',
'fileSearch.currentDirectory': '현재 폴더',
'fileSearch.folderTag': '폴더',
'fileSearch.fileTag': '파일',
'fileSearch.openFolder': '폴더 열기',
// ─── Teams ──────────────────────────────────────
'teams.backToLeader': '\u2190 \ub9ac\ub354\ub85c \ub3cc\uc544\uac00\uae30',
'teams.viewing': '\ubcf4\ub294 \uc911:',
'teams.transcript': '기록',
'teams.noMessages': '아직 메시지가 없습니다',
'teams.members': '멤버',
'teams.working': '작업 중...',
'teams.thinking': '사고 중...',
'teams.leader': 'team-lead',
'teams.memberPlaceholder': '이 팀원에게 직접 메시지 보내기...',
'teams.memberSessionHint': '여기서 보내는 메시지는 이 팀원에게 바로 전달되며, 기록이 업데이트되는 것을 보면서 주고받을 수 있습니다.',
'teams.archivedMemberSessionHint': '보존된 실행에는 당시의 전체 대화와 도구 호출이 남아 있습니다.',
'teams.archivedMemberReadOnly': '이 실행 기록은 읽기 전용입니다. 작업을 계속하려면 리더 세션으로 돌아가세요.',
'agentTeams.title': 'Agent Teams 워크벤치',
'agentTeams.sharedTaskList': '공유 작업 목록',
'agentTeams.experimental': '실험 기능',
'agentTeams.stats.phase': '단계',
'agentTeams.stats.completed': '완료',
'agentTeams.stats.running': '진행 중',
'agentTeams.stats.available': '대기',
'agentTeams.stats.blocked': '차단',
'agentTeams.live.following': '실시간 · 팀 따라가기',
'agentTeams.live.runningHint': '{count}명의 진행 상황을 따라가고 있습니다. 팀이 끝나면 재생 제어가 열립니다.',
'agentTeams.live.formingHint': '리드가 팀을 구성하고 있습니다. 팀이 끝나면 재생 제어가 열립니다.',
'agentTeams.live.waitingHint': '다음 작업 수령을 기다리고 있습니다. 팀이 끝나면 재생 제어가 열립니다.',
'agentTeams.live.elapsed': '실행 시간',
'agentTeams.live.sessionClock': '세션 시계',
'agentTeams.replay.play': '재생',
'agentTeams.replay.pause': '일시 정지',
'agentTeams.replay.replay': '다시 재생',
'agentTeams.replay.speed': '재생 속도',
'agentTeams.replay.timeline': '재생 타임라인 · 클릭하여 이동',
'agentTeams.canvas.formation': '1 · 편성 — 리드는 중앙, 멤버는 아래',
'agentTeams.canvas.tasks': '2 · 공유 작업 목록 — 의존성 계층, 왼쪽 → 오른쪽',
'agentTeams.canvas.laneRoot': '의존성 없음 · 즉시 수령',
'agentTeams.canvas.laneDepth': '{layer}단계',
'agentTeams.canvas.laneWrapUp': '마무리',
'agentTeams.legend.unmet': '의존성 미충족',
'agentTeams.legend.satisfied': '의존성 충족(하류로 이동)',
'agentTeams.legend.tether': '멤버가 이 작업을 실행 중',
'agentTeams.legend.unlocked': '방금 해제됨',
'agentTeams.legend.flight': '이동 중인 메시지 / 수령',
'agentTeams.member.inbox': '받은 편지함 {count}',
'agentTeams.member.executingTask': '#{task} 실행 중',
'agentTeams.member.waitingForTask': '대기 · 작업 기다리는 중',
'agentTeams.member.waitingForDependency': '대기 · #{task} 해제 기다리는 중',
'agentTeams.member.waitingForClose': '대기 · 종료 기다리는 중',
'agentTeams.lead.forming': '팀 구성 중',
'agentTeams.lead.coordinating': '조율 중 · 보고 대기',
'agentTeams.lead.finishing': '결과 마무리 중',
'agentTeams.lead.archived': '실행 보관됨',
'agentTeams.task.start': '시작',
'agentTeams.task.unlocked': '방금 잠금 해제',
'agentTeams.task.reconstructedOwner': '추정 담당자',
'agentTeams.communication.open': '통신 패널 열기',
'agentTeams.communication.close': '통신 패널 닫기',
'agentTeams.communication.backToFeed': '통신 목록으로',
'agentTeams.inspector.independentContext': '{role} · 독립 컨텍스트',
'agentTeams.inspector.current': '현재',
'agentTeams.inspector.completedTasks': '완료',
'agentTeams.inspector.messages': '송수신',
'agentTeams.inspector.taskHistory': '작업 이력',
'agentTeams.inspector.taskHistoryHint': '한 멤버가 여러 작업을 순차 실행',
'agentTeams.inspector.sent': '보냄',
'agentTeams.inspector.received': '받음',
'agentTeams.hideReport': 'Agent Teams 실행 보고서 숨기기',
'agentTeams.closeReport': 'Agent Teams 실행 보고서 닫기',
'agentTeams.loading': 'Agent Teams 활동을 기다리는 중…',
'agentTeams.phase.forming': '팀 구성 중',
'agentTeams.phase.running': '병렬 실행',
'agentTeams.phase.finishing': '마무리 중',
'agentTeams.phase.completed': '완료됨',
'agentTeams.progressLabel': '팀 작업 진행률',
'agentTeams.followingLive': '실시간 팔로우 중',
'agentTeams.reviewHistory': '기록 돌아보기',
'agentTeams.older': '이전 워크벤치 상태',
'agentTeams.newer': '다음 워크벤치 상태',
'agentTeams.backToLive': '실시간으로 돌아가기',
'agentTeams.live': 'LIVE',
'agentTeams.leader': '리드',
'agentTeams.restArea': '휴식 구역',
'agentTeams.emptyTasks': '팀을 구성하고 있습니다. 작업이 만들어지면 의존성 그래프가 표시됩니다.',
'agentTeams.resizePanel': 'Agent Teams 워크벤치 크기 조절',
'agentTeams.task.blocked': '차단됨',
'agentTeams.task.open': '할당 가능',
'agentTeams.task.running': '진행 중',
'agentTeams.task.completed': '완료됨',
'agentTeams.task.closeDetail': '작업 상세 닫기',
'agentTeams.task.ownerLabel': '담당자',
'agentTeams.task.dependsOn': '선행 작업',
'agentTeams.task.unblocks': '후속 작업',
'agentTeams.openTask': '작업 보기: {subject}',
'agentTeams.task.inferredOwner': '{name}(추정)',
'agentTeams.task.layer': '{layer}단계',
'agentTeams.task.dependencies': '{dependencies}에 의존',
'agentTeams.task.unclaimed': '팀원 할당 대기 중',
'agentTeams.task.completedNoOwner': '완료 · 담당자 기록 없음',
'agentTeams.member.working': '작업 중',
'agentTeams.member.idle': '대기 중',
'agentTeams.member.stopped': '중지됨',
'agentTeams.member.exited': '종료됨',
'agentTeams.member.error': '차단됨',
'agentTeams.openMember': '{name} 세부 정보 열기',
'agentTeams.resizeCommunication': '통신 패널 너비 조정',
'agentTeams.memberTranscriptLoading': '멤버 transcript 불러오는 중...',
'agentTeams.communication.title': '커뮤니케이션',
'agentTeams.communication.count': '{count}개 메시지',
'agentTeams.communication.all': '전체',
'agentTeams.communication.timeline': '작업 타임라인',
'agentTeams.communication.timeAll': '전체 과정',
'agentTeams.communication.timeEarly': '시작',
'agentTeams.communication.timeMiddle': '진행',
'agentTeams.communication.timeLate': '마무리',
'agentTeams.communication.empty': '팀 메시지가 여기에 표시됩니다.',
'agentTeams.communication.direct': 'DIRECT',
'agentTeams.communication.broadcast': 'BROADCAST',
'agentTeams.communication.system': 'SYSTEM',
'agentTeams.communication.everyone': '모두',
'agentTeams.communication.taskAssignment': '{name}에게 {task} {subject} 할당',
'agentTeams.communication.taskClaimed': '{name}이(가) {task} {subject} 수령',
'agentTeams.communication.assignment': '할당',
'agentTeams.communication.peer': 'DM',
'agentTeams.communication.report': '보고',
'agentTeams.communication.shutdownRequest': '종료 요청: {reason}',
'agentTeams.communication.shutdownResponse': '종료 응답을 받았습니다',
'agentTeams.communication.idle': '팀원이 대기 상태가 되었습니다',
'agentTeams.disbanded': '팀 해산 완료; 결과를 메인 대화에 병합했습니다',
'agentTeams.memberDetails': '{name} 세부 정보',
'agentTeams.memberTasks': '담당 작업',
'agentTeams.noMemberTasks': '아직 할당된 작업이 없습니다.',
'agentTeams.memberMessages': '관련 메시지',
'agentTeams.noMemberMessages': '아직 관련 메시지가 없습니다.',
'agentTeams.fullConversationHint': '전체 대화, 도구 호출, 스트리밍 출력은 기존 세션 화면을 재사용합니다.',
'agentTeams.archivedConversationHint': '보존된 실행 세션을 열어 전체 대화와 도구 호출을 검토할 수 있습니다.',
'agentTeams.openConversation': '{name}에게 직접 말하기',
'agentTeams.openExecution': '{name} 실행 보기',
'agentTeams.dependencyLegend': '실선: 주 의존성 · 점선: 보조 의존성 · 호버로 집중',
'agentTeams.backToSession': '세션으로 돌아가기',
'agentTeams.backToOverview': '팀 개요로 돌아가기',
'agentTeams.openInTab': '탭에서 열기',
'agentTeams.communication.lifecycle.idle_notification': '대기 상태로 전환, 다음 작업 대기 중',
'agentTeams.communication.lifecycle.shutdown_request': '종료를 요청했습니다',
'agentTeams.communication.lifecycle.shutdown_approved': '종료가 승인되었습니다',
'agentTeams.communication.lifecycle.shutdown_rejected': '종료가 거절되었습니다',
'agentTeams.communication.lifecycle.teammate_terminated': '팀원이 중지되었습니다',
'agentTeams.communication.lifecycle.shutdown_response': '종료를 확인했습니다',
'agentTeams.communication.showLifecycle': '상태 신호 {count}건 표시',
'agentTeams.communication.hideLifecycle': '상태 신호 숨기기',
'agentTeams.communication.expand': '더 보기',
'agentTeams.communication.collapse': '접기',
'agentTeams.inline.created': '에이전트 팀 · 팀원 {count}명',
'agentTeams.inline.coordination': '팀 조정 기록 · {count}단계',
'agentTeams.inline.open': '실행 보고서 열기',
'agentTeams.report.title': 'Agent Teams 실행 보고서',
'agentTeams.report.openWorkbench': '워크벤치',
'agentTeams.report.tasksDone': '작업 완료',
'agentTeams.report.members': '멤버 {count}',
'agentTeams.report.tasks': '작업 {count}',
'agentTeams.report.ownedTasks': '{count}건 담당',
'agentTeams.report.messages': '통신 기록 {count}건',
'agentTeams.report.disbanded': '팀이 해산되었으며 결과는 메인 세션에 통합되었습니다',
'agentTeams.report.memberStatus.running': '작업 중',
'agentTeams.report.memberStatus.idle': '대기 중',
'agentTeams.report.memberStatus.completed': '완료',
'agentTeams.report.memberStatus.error': '오류',
'agentTeams.inline.tasks': '작업 {completed}/{total}',
'agentTeams.strip.label': '팀',
// ─── Session Activity ──────────────────────────────────────
'session.activity.title': '활동',
'session.activity.close': '활동 닫기',
'session.activity.clearFinished': '완료 항목 지우기',
'session.activity.openTeamMember': '팀 멤버 {name} 열기',
'session.activity.openRun': '실행 {name} 열기',
'session.activity.openBackgroundTask': '백그라운드 작업 {name} 열기',
'session.activity.stopBackgroundTask': '백그라운드 작업 {name} 중지',
'session.activity.stoppingBackgroundTask': '백그라운드 작업 {name} 중지 중',
'session.activity.details.title': '세부 정보',
'session.activity.details.type': '유형',
'session.activity.details.description': '설명',
'session.activity.details.summary': '요약',
'session.activity.details.outputFile': '출력 파일',
'session.activity.details.usage': '사용량',
'session.activity.section.tasks': '작업',
'session.activity.tasksProgress': '작업 진행률 {completed}/{total}',
'session.activity.section.team': '팀',
'session.activity.section.workflow': '워크플로',
'session.activity.section.backgroundTasks': '백그라운드 작업',
'session.activity.section.subagents': 'SubAgent',
'session.activity.section.sources': '소스',
'session.activity.empty.tasks': '작업이 없습니다',
'session.activity.empty.team': '팀 멤버가 없습니다',
'session.activity.empty.backgroundTasks': '백그라운드 작업이 없습니다',
'session.activity.empty.subagents': 'SubAgent가 없습니다',
'session.activity.empty.sources': '소스가 없습니다',
'session.activity.task.completed': '작업 완료됨',
'session.activity.task.inProgress': '작업 진행 중',
'session.activity.task.pending': '작업 대기 중',
'session.activity.tasks.earlier': '이전 작업',
'session.activity.tasks.earlierSummary': '이전 턴: {completed}/{total} 완료',
'session.activity.status.pending': '대기 중',
'session.activity.status.inProgress': '진행 중',
'session.activity.status.completed': '완료됨',
'session.activity.status.running': '실행 중',
'session.activity.status.stopping': '중지 중',
'session.activity.status.failed': '실패',
'session.activity.status.stopped': '중지됨',
'session.activity.status.idle': '유휴',
'session.activity.status.error': '오류',
'session.activity.status.unknown': '알 수 없음',
// ─── SubAgent Run ──────────────────────────────────────
'subagentRun.refresh': 'SubAgent 실행 새로고침',
'subagentRun.backToParent': '상위 세션으로 돌아가기',
'subagentRun.loading': 'SubAgent 실행을 불러오는 중...',
'subagentRun.source': '소스',
'subagentRun.agent': 'Agent',
'subagentRun.unknown': '알 수 없음',
'subagentRun.task': '작업',
'subagentRun.updated': '업데이트됨',
'subagentRun.output': '출력',
'subagentRun.agentInvocation': 'Agent 호출',
'subagentRun.parentToolInput': '상위 Agent 도구 입력',
'subagentRun.parentToolCall': '상위 Agent 도구 호출',
'subagentRun.transcript': '실행 기록',
'subagentRun.noTranscript': '이 SubAgent의 로컬 실행 기록이 캡처되지 않았습니다.',
'subagentRun.truncated': '처음 50개와 최신 950개 항목 표시 중',
'subagentRun.source.transcript': '실행 기록',
'subagentRun.source.sessionHistory': '세션 기록',
'subagentRun.source.liveTask': '실시간 작업',
'subagentRun.source.none': '없음',
'subagentRun.status.completed': '완료됨',
'subagentRun.status.failed': '실패',
'subagentRun.status.stopped': '중지됨',
'subagentRun.status.running': '실행 중',
'subagentRun.status.unknown': '알 수 없음',
'subagentRun.result.completedFallback': 'SubAgent가 완료되었지만 결과 페이로드가 없습니다.',
'subagentRun.result.failedFallback': 'SubAgent가 실패했지만 오류 페이로드가 없습니다.',
'subagentRun.result.stoppedFallback': 'SubAgent가 중지되었지만 결과 페이로드가 없습니다.',
'subagentRun.result.noneFallback': '사용 가능한 결과가 없습니다.',
'subagentRun.readOnly': '일회성 SubAgent의 실행 기록입니다. 대화를 이어갈 수 없습니다.',
// ─── Scheduled Tasks Pages ──────────────────────────────────────
'scheduledPage.title': '예약 작업',
'scheduledPage.subtitle': '작업을 예약 실행하거나 필요할 때 실행하세요. 기존 세션에서 {code}을(를) 입력하면 만들 수 있습니다.',
'scheduledPage.desktopNotice': '예약 작업은 데스크톱 앱이 열려 있는 동안에만 실행됩니다. 작업이 제시간에 실행되도록 앱을 계속 실행해 두세요.',
'scheduledPage.oldSubtitle': '자동화된 운영 루틴과 백그라운드 유지 관리를 관리합니다.',
'scheduledPage.executionMode': '실행 모드',
'scheduledPage.localMode': '로컬 모드',
'scheduledPage.remoteMode': '원격 모드',
'scheduledPage.nextRun': '다음 실행',
'scheduledPage.systemHealth': '시스템 상태',
'scheduledPage.activeSession': '활성 세션',
'scheduledPage.endOfList': '예약 목록의 끝',
'scheduledPage.pausedTasks': '다른 9개의 작업이 현재 유지 관리를 위해 일시 중지되었거나 사용 안 함으로 설정되어 있습니다.',
'scheduledPage.recentLogs': '최근 출력 로그',
'scheduledPage.viewArtifacts': '전체 결과물 보기',
'scheduledPage.resourceAllocation': '리소스 할당',
'scheduledPage.cpuCapacity': 'CPU 용량',
'scheduledPage.memoryLoad': '메모리 부하',
'scheduledPage.connectedLocal': '로컬 노드에 연결됨',
'scheduledPage.thisMonth': '이번 달 {count}개',
// ─── Update Checker ──────────────────────────────────────
'update.available': 'v{version} 사용 가능',
'update.availableLabel': '사용 가능',
'update.checking': '업데이트 확인 중...',
'update.checkNow': '지금 확인',
'update.checkedAt': '마지막 확인 {time}',
'update.currentVersionUnknown': '알 수 없음',
'update.newVersion': '새 버전 v{version} 사용 가능',
'update.downloading': '다운로드 중...',
'update.downloaded': '업데이트를 다운로드했습니다. 사용할 준비가 되면 다시 시작하세요.',
'update.idle': '업데이트를 확인하여 설치된 버전을 최신 GitHub Release와 비교합니다.',
'update.installAndRestart': '설치하고 다시 시작',
'update.installing': '업데이트 설치 중...',
'update.now': '지금 업데이트',
'update.later': '나중에',
'update.progress': '업데이트 다운로드 중... {progress}%',
'update.progressBytes': '업데이트 다운로드 중... {downloaded} 다운로드됨',
'update.proxyAdvanced': '고급 업데이트 프록시',
'update.proxyModeManual': '수동 프록시',
'update.proxyModeManualDescription': '제공한 로컬 HTTP 프록시 주소를 사용합니다.',
'update.proxyModeSystem': '시스템 프록시',
'update.proxyModeSystemDescription': 'OS의 HTTP/HTTPS 프록시를 자동으로 사용합니다.',
'update.proxySave': '저장',
'update.proxyScopeHint': '이것은 앱 업데이트 확인과 다운로드에만 영향을 줍니다.',
'update.proxyUrl': '프록시 URL',
'update.proxyUrlHint': 'HTTP 및 HTTPS 프록시 URL을 지원합니다. 예: http://127.0.0.1:7890.',
'update.proxyUrlInvalid': 'HTTP 또는 HTTPS 프록시 URL을 입력하세요.',
'update.proxyUrlRequired': '프록시 URL을 입력하세요.',
'update.releaseNotes': '릴리스 노트',
'update.readyBody': 'v{version}을(를) 다운로드했습니다. 사용할 준비가 되면 다시 시작하세요.',
'update.readyTitle': '업데이트 준비 완료',
'update.restarting': '업데이트를 완료하기 위해 다시 시작 중...',
'update.upToDate': 'v{version}은(는) 최신입니다.',
'update.failed': '업데이트에 실패했습니다: {error}',
// ─── Active Session ──────────────────────────────────────
'session.untitled': '제목 없는 세션',
'session.active': '세션 활성',
'session.lastUpdated': '마지막 업데이트 {time}',
'session.messages': '{count}개의 메시지',
'session.apiTokens': '{count} API tokens',
'session.apiTokenBreakdown': 'API 사용량: {total} tokens · 입력 {input} · 출력 {output} · 캐시 {cache}',
'session.historyLoadFailed': '세션 기록을 불러오지 못했습니다.',
'session.workspaceUnavailable': '작업 공간을 사용할 수 없습니다: {dir}',
'session.worktreeRemoved': '임시 작업 공간이 정리되었습니다. 기록은 계속 볼 수 있습니다. {dir}에서 새 세션을 시작해 계속하세요.',
'session.timeJustNow': '방금',
'session.timeMinutes': '{n}분 전',
'session.timeHours': '{n}시간 전',
'session.timeDays': '{n}일 전',
'trace.open': 'Trace',
'trace.title': '모델 Trace',
'trace.loadFailed': 'Trace를 불러오지 못했습니다',
'trace.apiCalls': 'API 호출',
'trace.failedCalls': '실패',
'trace.duration': '소요 시간',
'trace.elapsed': '경과 시간',
'trace.completed': '완료',
'trace.wallTime': '실제 시간',
'trace.modelTime': '모델 시간',
'trace.toolTime': '도구 시간',
'trace.models': '모델',
'trace.request': '요청',
'trace.response': '응답',
'trace.status': '상태',
'trace.live': '실시간',
'trace.updatedAt': '업데이트',
'trace.copySessionId': 'Session ID 복사',
'trace.refresh': 'Trace 새로고침',
'trace.openWindow': '별도 창에서 열기',
'trace.backToList': '목록으로',
'trace.delete': 'Trace 삭제',
'trace.noResponse': '응답 본문이 캡처되지 않았습니다',
'trace.emptyTitle': '아직 Trace 호출이 없습니다',
'trace.emptyBody': '이 세션에는 캡처된 모델 호출이 없습니다. 새 데스크톱 세션은 간단한 요청 및 응답 미리보기를 자동으로 기록합니다.',
'trace.tokens': 'Tokens',
'trace.snapshotEmpty': 'Trace 스냅샷이 비어 있습니다.',
'trace.errors': '오류',
'trace.focus': '집중 지점',
'trace.searchSpans': 'Span 검색',
'trace.noMatchingSpans': '일치하는 Span이 없습니다',
'trace.filter.aria': 'Span 필터',
'trace.filter.all': '전체',
'trace.filter.llm': 'LLM',
'trace.filter.tools': '도구',
'trace.filter.errors': '오류',
'trace.sidechain': '하위',
'trace.turnLabel': '{index}번째 턴',
'trace.waitingForResult': '결과 대기 중',
'trace.started': '시작',
'trace.provider': 'Provider',
'trace.model': '모델',
'trace.childSpans': '하위 Span',
'trace.requestBody': '요청 본문',
'trace.requestHeaders': '요청 헤더',
'trace.responseBody': '응답 본문',
'trace.responseHeaders': '응답 헤더',
'trace.toolResult': '도구 결과',
'trace.truncatedShort': '잘림',
'trace.noData': '데이터 없음',
'trace.llmCalls': 'LLM 호출',
'trace.toolCalls': '도구 호출',
'trace.status.ok': '정상',
'trace.status.error': '오류',
'trace.status.pending': '대기 중',
'trace.message.user': '사용자 메시지',
'trace.message.assistant': '어시스턴트 메시지',
'trace.message.system': '시스템 메시지',
'trace.message.toolRequest': '어시스턴트 도구 요청',
'trace.message.toolResult': '도구 결과',
'trace.toolError': '도구 오류',
'trace.modelCall': '모델 호출',
'trace.sessionActivity': '세션 활동',
'trace.diagnosis.modelError': '모델 호출 실패',
'trace.diagnosis.toolError': '도구 실행 실패',
'trace.diagnosis.eventError': '트레이스 이벤트 실패',
'trace.diagnosis.pendingModel': '모델 응답 대기 중',
'trace.diagnosis.pendingTool': '도구 결과 대기 중',
'trace.diagnosis.waitingForAgent': '사용자 메시지가 아직 agent 단계에 들어가지 않았습니다',
'trace.diagnosis.empty': '진단 이벤트가 없습니다',
'trace.diagnosis.healthy': '차단 지점이 감지되지 않았습니다',
'trace.event.apiCallStarted': 'API 호출 시작',
'trace.event.apiCallCompleted': 'API 호출 완료',
'trace.event.apiCallFailed': 'API 호출 실패',
'trace.event.apiCallAborted': 'API 호출 중단',
'trace.event.responseCaptureFailed': '응답 캡처 실패',
'trace.event.upstreamFetchStarted': '업스트림 요청 시작',
'trace.event.upstreamFetchCompleted': '업스트림 요청 완료',
'trace.event.upstreamFetchFailed': '업스트림 요청 실패',
'trace.section.response': '응답',
'trace.section.messages': '메시지',
'trace.section.systemPrompt': '시스템 프롬프트',
'trace.section.tools': '도구',
'trace.section.parameters': '파라미터',
'trace.section.raw': '원본 데이터',
'trace.section.input': '입력',
'trace.section.result': '결과',
'trace.section.meta': '메타 정보',
'trace.section.content': '내용',
'trace.section.event': '이벤트',
'trace.section.metadata': '메타데이터',
'trace.detail.stopReason': '중지 사유',
'trace.detail.streaming': '모델 응답을 기다리는 중...',
'trace.detail.aborted': '응답이 완료되기 전에 요청이 중단되었습니다(시간 초과 또는 취소).',
'trace.status.aborted': '중단됨',
'trace.detail.legacyTruncated': '이 레코드는 구형식의 잘린 데이터여서 시맨틱 보기를 사용할 수 없습니다. 아래 원본 데이터를 확인하세요.',
'trace.detail.fetchFailed': '전체 레코드를 불러오지 못해 잘린 미리보기를 표시합니다.',
'trace.detail.earlierMessages': '이전 메시지 {count}개 보기',
'trace.detail.chars': '{count}자',
'trace.detail.thinking': '생각',
'trace.detail.toolUseId': 'Tool use ID',
'trace.detail.phase': '단계',
'trace.detail.severity': '심각도',
'trace.detail.message': '메시지',
'trace.tree.aria': '트레이스 타임라인',
'trace.tree.toggleTurn': '턴 접기/펼치기',
'trace.list.eyebrow': 'Agent Trace',
'trace.list.title': 'Trace 목록',
'trace.list.collecting': '수집 중',
'trace.list.paused': '일시 중지됨',
'trace.list.settings': 'Trace 설정',
'trace.list.sessions': '세션',
'trace.list.searchPlaceholder': '제목, Session ID 또는 프로젝트 경로 검색',
'trace.list.emptyTitle': '아직 Trace 기록이 없습니다',
'trace.list.emptyBody': '수집을 켜면 새 데스크톱 세션이 모델 호출 트레이스를 로컬 traces 디렉터리에 기록합니다.',
'trace.list.loadFailed': 'Trace 목록을 불러오지 못했습니다',
'trace.list.loadedCount': '{shown} / {total} 표시 중',
'trace.list.loadMore': '더 불러오기',
'trace.list.deleteConfirmTitle': 'Trace 세션 삭제',
'trace.list.deleteConfirmBody': '"{title}"의 Trace 데이터를 삭제하시겠습니까? 채팅 기록은 삭제되지 않습니다.',
'trace.list.deleteFailed': 'Trace 세션을 삭제하지 못했습니다',
// ─── App Shell ──────────────────────────────────────
'app.serverFailed': '로컬 서버를 시작하지 못했습니다',
'app.serverFailedHint': '문제를 신고할 때 이 진단 패널의 스크린샷을 첨부해 주세요.',
'app.startupError': '시작 오류',
'app.serverLogs': '서버 로그',
'app.copyDiagnostics': '진단 정보 복사',
'app.copiedDiagnostics': '복사됨',
'app.launching': '로컬 작업 공간을 시작하는 중...',
// ─── Error Codes ──────────────────────────────────────
'error.CLI_NOT_RUNNING': 'CLI 프로세스가 실행되고 있지 않습니다. 세션이 종료되었거나 프로세스가 충돌했을 수 있습니다.',
'error.CLI_START_FAILED': 'CLI 프로세스를 시작하지 못했습니다.',
'error.CLI_AUTH_REQUIRED': '인증이 필요합니다. 로그인하세요.',
'error.CLI_SESSION_CONFLICT': '세션이 이미 다른 프로세스에서 사용 중입니다.',
'error.CLI_SPAWN_FAILED': 'CLI 하위 프로세스를 생성하지 못했습니다.',
'error.CLI_ERROR': '처리 중 오류가 발생했습니다.',
'error.WORKDIR_INVALID': '작업 디렉터리가 잘못되었거나 존재하지 않습니다.',
'error.PARSE_ERROR': '메시지 형식이 잘못되었습니다.',
'error.UNKNOWN_TYPE': '알 수 없는 메시지 유형입니다.',
'error.BAD_REQUEST': '잘못된 요청입니다.',
'error.NOT_FOUND': '리소스를 찾을 수 없습니다.',
'error.INTERNAL_ERROR': '서버 내부 오류입니다.',
// ─── Business Errors ──────────────────────────────────────
'businessError.pdf_too_large': 'PDF가 선택한 모델에 비해 너무 큽니다. 텍스트로 변환하거나 더 작은 PDF를 사용하세요.',
'businessError.pdf_password_protected': 'PDF가 비밀번호로 보호되어 있습니다. 다시 보내기 전에 잠금을 해제하거나 변환하세요.',
'businessError.pdf_invalid': 'PDF 파일이 유효하지 않습니다. 텍스트로 변환하거나 다른 파일을 보내세요.',
'businessError.image_too_large': '이미지가 선택한 모델에 비해 너무 큽니다. 크기를 조정하거나 더 작은 이미지를 보내세요.',
'businessError.image_unsupported': '이 모델은 이미지를 지원하지 않습니다. 텍스트로 계속하거나, 비전 지원 모델로 전환하여 이미지를 다시 보내세요.',
'businessError.request_too_large': '요청이 선택한 모델에 비해 너무 큽니다. 큰 파일을 제거하거나 더 짧은 메시지로 다시 시도하세요.',
'businessError.prompt_too_long': '프롬프트가 선택한 모델에 비해 너무 깁니다. 대화를 압축하거나 컨텍스트를 줄여 다시 시도하세요.',
'businessError.auto_mode_unavailable': '자동 모드는 현재 요금제에서 사용할 수 없습니다.',
// ─── Server Status Verbs ──────────────────────────────────────
'serverVerb.Thinking': '사고 중',
'serverVerb.Compacting conversation': '컨텍스트 압축 중',
'serverVerb.Running': '실행 중',
'serverVerb.Working': '작업 중',
'serverVerb.Creating worktree': 'worktree 만드는 중',
'serverVerb.Task started': '작업 시작됨',
'serverVerb.Task in progress': '작업 진행 중',
'chat.retry.title': '요청 실패, 다시 시도 중',
'chat.retry.attempt': '다시 시도 {attempt}/{max}',
'chat.retry.httpStatus': 'HTTP {status}',
'chat.retry.networkError': '네트워크 오류',
'chat.retry.waiting': '{seconds}초 대기 중',
'chat.retry.retrying': '지금 다시 시도 중…',
'chat.fallback.title': '네트워크 불안정으로 비스트리밍 모드로 전환됨',
'chat.fallback.detail': '응답이 한 번에 도착하므로 시간이 걸릴 수 있습니다',
// ─── Tabs ──────────────────────────────────────
'tabs.close': '닫기',
'tabs.closeOthers': '다른 탭 닫기',
'tabs.closeLeft': '왼쪽 탭 닫기',
'tabs.closeRight': '오른쪽 탭 닫기',
'tabs.closeAll': '모두 닫기',
'tabs.closeConfirmTitle': '세션 실행 중',
'tabs.closeConfirmMessage': '이 세션은 아직 실행 중입니다. 어떻게 하시겠습니까?',
'tabs.closeConfirmKeep': '계속 실행',
// ─── Slash Command Descriptions ──────────────────────────────────────
'slashCmd.agent.description': '선택한 Agent로 프롬프트 실행',
'slashCmd.mcp.description': '현재 채팅 컨텍스트에서 사용 가능한 MCP 도구 열기',
'slashCmd.skills.description': '현재 채팅 컨텍스트에서 사용자가 호출할 수 있는 스킬 살펴보기',
'slashCmd.saveWorkflow.description': '완료된 Workflow를 재사용할 수 있도록 저장',
'slashCmd.help.description': '사용 가능한 데스크톱 및 에이전트 명령 표시',
'slashCmd.status.description': '세션 상태, 사용량, 컨텍스트 표시',
'slashCmd.cost.description': '세션 사용량과 비용 표시',
'slashCmd.context.description': '현재 컨텍스트 사용량 표시',
'slashCmd.plugin.description': '설정에서 데스크톱 플러그인 제어 열기',
'slashCmd.memory.description': '설정에서 프로젝트 메모리 파일 열기',
'slashCmd.doctor.description': '진단에서 Doctor 열기',
'slashCmd.compact.description': '대화 컨텍스트 압축',
'slashCmd.clear.description': '대화 기록 지우기',
'slashCmd.goal.description': '완료 목표 설정',
'slashCmd.review.description': '코드 변경 검토',
'slashCmd.commit.description': 'git 커밋 만들기',
'slashCmd.pr.description': '풀 리퀘스트 만들기',
'slashCmd.init.description': '프로젝트 CLAUDE.md 초기화',
'slashCmd.bug.description': '버그 신고',
'slashCmd.config.description': '구성 열기',
'slashCmd.login.description': 'Anthropic 계정 전환',
'slashCmd.logout.description': '현재 계정에서 로그아웃',
'slashCmd.model.description': 'AI 모델 전환',
'slashCmd.permissions.description': '도구 권한 보기 또는 관리',
'slashCmd.terminal-setup.description': '터미널 통합 설정',
'slashCmd.vim.description': 'Vim 편집 모드 전환',
'tabs.closeConfirmStop': '중지하고 닫기',
'tabs.closeAllConfirmTitle': '세션 실행 중',
'tabs.closeAllConfirmMessage': '{count}개의 세션이 아직 실행 중입니다. 이 탭들을 닫기 전에 중지하시겠습니까?',
'tabs.closeAllConfirmStop': '모두 중지하고 닫기',
'tabs.sessionRunning': '세션 실행 중',
'tabs.openTerminal': '터미널 열기',
'tabs.showWorkspace': '작업 공간 표시',
'tabs.hideWorkspace': '작업 공간 숨기기',
'tabs.showBrowser': '브라우저 표시',
'tabs.hideBrowser': '브라우저 숨기기',
'tabs.scrollLeft': '탭 왼쪽으로 스크롤',
'tabs.scrollRight': '탭 오른쪽으로 스크롤',
'tabs.closeTab': '{title} 닫기',
'tabs.untitled': '제목 없음',
// 스킬 마켓
'sidebar.market': '스킬 마켓',
'market.title': '스킬 마켓',
'market.subtitle': 'ClawHub와 SkillHub의 스킬을 탐색·미리보기·설치할 수 있습니다.',
'market.searchPlaceholder': '스킬 이름, 키워드로 검색…',
'market.clearSearch': '검색 지우기',
'market.resultCount': '{count}개의 스킬',
'market.loadMore': '더 불러오기',
'market.loadingMore': '불러오는 중…',
'market.loadMoreError': '스킬을 더 불러오지 못했습니다',
'market.installedSkills': '설치된 스킬',
'market.installedSkillsHint': '이 기기에 설치된 스킬 보기',
'market.loading': '스킬을 불러오는 중…',
'market.empty': '사용 가능한 스킬이 없습니다',
'market.emptyHint': '두 소스 모두 결과를 반환하지 않았습니다. 위의 소스 상태를 확인하세요.',
'market.emptySearch': '검색과 일치하는 스킬이 없습니다',
'market.emptySearchHint': '다른 키워드를 시도하거나 필터를 지워보세요.',
'market.error.list': '스킬 마켓을 불러오지 못했습니다',
'market.retry': '다시 시도',
'market.filter.source': '소스',
'market.filter.security': '보안',
'market.filter.installed': '설치 상태',
'market.source.all': '모든 소스',
'market.source.clawhub': 'ClawHub',
'market.source.skillhub': 'SkillHub',
'market.security.all': '모든 보안 상태',
'market.security.verified': '인증됨',
'market.security.benign': '스캔 완료·안전',
'market.security.unknown': '미감사',
'market.security.flagged': '위험 표시됨',
'market.securityHint.verified': '인증된 작성자가 게시했으며 소스의 보안 검사를 통과했습니다.',
'market.securityHint.benign': '소스의 보안 검사에서 위험이 발견되지 않았습니다.',
'market.securityHint.unknown': '소스에서 보안 감사 데이터를 제공하지 않습니다. 설치 전에 파일을 직접 확인하세요.',
'market.securityHint.flagged': '소스의 보안 검사에서 잠재적 위험이 표시되었습니다.',
'market.disclaimer.title': '서드파티 스킬은 신중히 사용하세요.',
'market.disclaimer.body': '스킬은 커뮤니티 서드파티 소스에서 제공되며 이 앱은 내용에 대한 보안 감사를 수행하지 않습니다. 설치 전에 파일을 확인하고, 먼저 AI로 스캔하여 안전을 확인한 뒤 사용하는 것을 권장합니다.',
'market.disclaimer.dismiss': '면책 조항 닫기',
'market.installedFilter.all': '모든 스킬',
'market.installedFilter.installed': '설치됨',
'market.installedFilter.installable': '미설치',
'market.sourceStatus.ok': '정상',
'market.sourceStatus.degraded': '저하됨',
'market.sourceStatus.failed': '사용 불가',
'market.sourceStatus.cached': '캐시',
'market.sourceStatus.cachedAt': '{time} 기준 캐시',
'market.card.by': '작성자 {author}',
'market.card.moreTags': '+{count}',
'market.install.state.installed': '설치됨',
'market.install.state.installable': '설치 가능',
'market.install.state.notInstallable': '설치 불가',
'market.install.action': '설치',
'market.install.installing': '설치 중…',
'market.uninstall.action': '제거',
'market.uninstall.uninstalling': '제거 중…',
'market.uninstall.confirmTitle': '스킬 제거',
'market.uninstall.confirmMessage': '"{name}"을(를) 로컬에서 제거하시겠습니까? {path} 아래의 파일이 삭제됩니다.',
'market.uninstall.success': '"{name}"이(가) 제거되었습니다.',
'market.reason.empty-file-list': '이 스킬에는 설치 가능한 파일이 없습니다(SKILL.md 없음).',
'market.reason.file-too-large': '이 스킬에는 크기 제한을 초과하는 파일이 있습니다.',
'market.reason.too-many-files': '이 스킬은 파일 수가 너무 많아 안전하게 설치할 수 없습니다.',
'market.reason.invalid-name': '스킬 이름을 로컬 디렉터리 이름으로 사용할 수 없습니다.',
'market.reason.name-conflict': '같은 이름의 로컬 스킬이 이미 있습니다. 먼저 이름을 바꾸거나 삭제하세요.',
'market.reason.source-unavailable': '이 스킬의 소스를 현재 사용할 수 없습니다.',
'market.detail.back': '마켓으로 돌아가기',
'market.detail.overview': '개요',
'market.detail.files': '파일',
'market.detail.author': '작성자',
'market.detail.version': '버전',
'market.detail.updated': '업데이트',
'market.detail.category': '카테고리',
'market.detail.license': '라이선스',
'market.detail.downloads': '다운로드',
'market.detail.installs': '설치 수',
'market.detail.stars': '스타',
'market.detail.securityReport': '보안 보고서',
'market.detail.viewReport': '보고서 보기',
'market.detail.mirror': '{source}에도 등록됨',
'market.detail.requiresApiKey': 'API 키 필요',
'market.detail.loadError': '스킬 상세 정보를 불러오지 못했습니다',
'market.detail.noDescription': '이 스킬에는 설명이 없습니다.',
'market.detail.metadata': '메타 정보',
'market.detail.metadataCollapse': '접기',
'market.detail.metadataExpand': '펼치기',
'market.file.empty': '왼쪽에서 파일을 선택하면 미리 볼 수 있습니다.',
'market.file.truncated': '미리보기가 잘렸습니다. 파일이 미리보기 제한을 초과합니다.',
'market.file.loadError': '파일을 불러오지 못했습니다',
'market.file.noFiles': '이 스킬에는 미리 볼 파일이 없습니다.',
'market.installConfirm.title': '스킬 설치',
'market.installConfirm.message': '{source}에서 "{name}"을(를) 설치하시겠습니까?',
'market.installConfirm.location': '설치 위치',
'market.installConfirm.effectNote': '설치 후 새 세션에서 스킬을 사용할 수 있습니다.',
'market.installConfirm.riskBenign': '보안 스캔에서 이 스킬의 위험이 발견되지 않았습니다.',
'market.installConfirm.riskVerified': '이 스킬은 인증된 게시자가 제공했으며 보안 스캔을 통과했습니다.',
'market.installConfirm.riskUnknown': '이 스킬은 보안 감사를 받지 않았습니다. 설치 전에 파일을 확인하세요.',
'market.installConfirm.riskFlagged': '보안 스캔에서 이 스킬에 잠재적 위험이 표시되었습니다. 신뢰할 수 있는 경우에만 설치하세요.',
'market.installConfirm.confirm': '설치',
'market.installConfirm.cancel': '취소',
'market.installSuccess': '"{name}" 설치 완료. 새 세션에서 사용할 수 있습니다.',
'market.installError.network': '설치 실패: 스킬 소스에 연결할 수 없습니다. 네트워크를 확인하고 다시 시도하세요.',
'market.installError.checksum': '설치 중단: 다운로드한 파일이 무결성 검증에 실패했습니다. 소스를 신뢰할 수 있을 때까지 다시 시도하지 마세요.',
'market.installError.exists': '설치 실패: 이 스킬은 이미 설치되었거나 설치 중입니다.',
'market.installError.disk': '설치 실패: 디스크에 쓸 수 없습니다. 권한과 여유 공간을 확인하세요.',
'market.installError.notInstallable': '설치 실패: 이 스킬은 설치할 수 없습니다.',
'market.installError.generic': '설치 실패: {message}',
// ─── Window controls / diagram + code viewers ──────────────────────────────────────
'windowControls.minimize': '창 최소화',
'windowControls.maximize': '창 최대화',
'windowControls.restore': '창 이전 크기로 복원',
'windowControls.close': '창 닫기',
'mermaid.preview': '미리 보기',
'mermaid.zoomOut': '축소',
'mermaid.zoomIn': '확대',
'mermaid.fit': '맞춤',
'mermaid.fitDiagram': '다이어그램을 화면에 맞추기',
'codeViewer.collapse': '접기',
'codeViewer.showMoreLines': '{count}줄 더 보기',
// ─── Browser Panel ──────────────────────────────────────
'browser.back': '뒤로',
'browser.forward': '앞으로',
'browser.reload': '새로고침',
'browser.addressPlaceholder': '주소 입력...',
'browser.loading': '불러오는 중',
'browser.zoomControls': '미리 보기 확대/축소 제어',
'browser.zoomOut': '미리 보기 축소',
'browser.zoomIn': '미리 보기 확대',
'browser.zoomReset': '미리 보기 확대/축소 초기화',
'browser.capture': '스크린샷',
'browser.pickElement': '요소 선택',
'browser.selection.cancel': '취소',
'browser.selection.sendOne': '보내기',
'browser.selection.queueAndContinue': '추가하고 계속',
'browser.selection.add': '추가',
'browser.selection.descriptionPlaceholder': '변경 내용을 설명하세요…',
'browser.selection.draftCount': '{count}개 선택됨',
'browser.selection.undo': '마지막 선택 실행 취소',
'browser.selection.clear': '선택 지우기',
'browser.selection.sendBatch': '{count}개 보내기',
'browser.selection.batchMessage': '페이지 수정 {count}개',
'browser.selection.limitReached': '선택 한도({count}개)에 도달했습니다. 보내거나 지운 후 계속하세요.',
'browser.selection.navigationTitle': '이 일괄 선택을 종료할까요?',
'browser.selection.navigationBody': '이동하면 선택한 요소 {count}개가 삭제되고 페이지의 미리보기 수정도 되돌아갑니다.',
'browser.selection.navigationContinue': '삭제하고 계속',
'browser.selection.navigationDiscarded': '페이지가 변경되어 선택 {count}개를 지웠습니다.',
'workflows.status.running': '실행 중',
'workflows.status.completed': '완료',
'workflows.status.failed': '실패',
'workflows.status.stopped': '중지됨',
'workflows.report.title': '동적 워크플로 실행',
'workflows.report.progressLabel': '워크플로 {name} 진행률',
'workflows.report.waiting': '첫 에이전트를 기다리는 중…',
'workflows.report.result': '결과',
'workflows.ungroupedPhase': '미분류',
'workflows.meta.agents': '에이전트 {count}개',
'workflows.meta.tokens': '{tokens} 토큰',
'workflows.meta.tools': '도구 호출 {count}회',
'workflows.phase.counts': '{done}/{total} 완료',
'workflows.phase.failed': '{count}개 실패',
'workflows.agent.cached': '캐시됨',
'workflows.dock.running': '{count}개 실행 중',
'workflows.dock.expand': '워크플로 세부 정보 펼치기',
'workflows.dock.collapse': '워크플로 세부 정보 접기',
'workflows.launcher.title': '워크플로 실행',
'workflows.launcher.hint': '워크플로는 저장된 스크립트로 여러 서브에이전트를 편성해 백그라운드에서 실행하고 끝나면 한 번에 보고합니다.',
'workflows.launcher.empty': '저장된 워크플로가 없습니다. 실행에서 저장하거나 .claude/workflows/ 에 스크립트를 넣으세요.',
'workflows.launcher.run': '실행',
'workflows.launcher.argsLabel': 'args 로 스크립트에 전달할 입력',
'workflows.workbench.title': '동적 워크플로 워크벤치',
'workflows.workbench.close': '워크플로 워크벤치 닫기',
'workflows.workbench.open': '워크플로 워크벤치 열기',
'workflows.workbench.closeDetail': '에이전트 세부 정보 닫기',
'workflows.workbench.counts': '에이전트 {done}/{total}개 종료',
'workflows.workbench.runningCount': '{count}개 실행 중',
'workflows.workbench.queued': '{count}개 대기 중',
'workflows.workbench.prompt': '프롬프트',
'workflows.workbench.detailTitle': '에이전트',
'workflows.history.title': '워크플로 기록',
'workflows.history.empty': '이 컴퓨터에는 아직 실행 기록이 없습니다.',
'workflows.history.pick': '실행을 선택하면 스크립트와 에이전트별 결과를 볼 수 있습니다.',
'workflows.history.agents': '{count}개 에이전트 기록됨',
'workflows.history.script': '스크립트',
'workflows.launcher.argsPlaceholder': '예: 질문 또는 경로 목록',
}