mirror of
https://github.com/NanmiCoder/claude-code-haha.git
synced 2026-10-10 03:43:11 +08:00
3024 lines
217 KiB
TypeScript
3024 lines
217 KiB
TypeScript
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': '예: 질문 또는 경로 목록',
|
||
}
|