Files
claude-code-haha/desktop/src/i18n/locales/kr.ts
T
程序员阿江-Relakkes 72d6db6db9 fix(desktop): explain why a prompt cannot be edited instead of hiding it (#1456)
The edit-and-resend action disappeared whenever an edit could not start:
while a turn ran, while any background task (a dev server, a background
agent) was still running, while turn checkpoints loaded, or when they
failed. With nothing on screen it read as the feature being gone.

Completed prompts now keep the action, disabled, with the reason on hover
and as its accessible description. An open editor and its draft survive a
background task starting. Sessions past the checkpoint preview budget can
edit again by resolving each prompt through its transcript id; since that
mode already tells the user file undo is unavailable, those edits roll
back the conversation only.
2026-10-05 20:35:10 +08:00

4268 lines
320 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { TranslationKey } from './en'
export const kr: Record<TranslationKey, string> = {
"teamPlan.state.interrupted": "팀 중단됨 · 시작한 작업은 다시 실행되지 않습니다",
"teamPlan.savePreset": "프리셋 변경을 먼저 저장하고 적용된 모델을 확인한 후 승인하세요。",
"teamPlan.unspecified": "미제공",
"teamPlan.stop": "팀과 기본 작업 중지",
"teamPlan.stopping": "팀과 기본 작업 중지 중…",
"teamPlan.configureMember": "{name} 설정",
"teamPlan.roster": "팀 구성원",
"teamPlan.assignment": "담당 작업",
"teamPlan.memberBrief": "역할 설명",
"teamPlan.noTasks": "배정된 작업 없음",
"teamPlan.selectedCount": "{count}명 선택됨",
"teamPlan.allTasks": "작업 배정",
"teamPlan.saved": "저장됨",
"teamPlan.unsaved": "저장하지 않은 변경 사항",
"teamPlan.reviewHint": "역할을 확인하고 팀을 시작하세요.",
"teamPlan.title": "팀 실행 전 검토",
"teamPlan.memberCount": "멤버 {count}명",
"teamPlan.open": "설정 검토",
"teamPlan.close": "닫기",
"teamPlan.save": "초안 저장",
"teamPlan.return": "수정 요청",
"teamPlan.cancel": "팀 취소",
"teamPlan.approve": "승인 및 시작",
"teamPlan.retry": "다시 검토",
"teamPlan.description": "시작 전에 각 멤버의 프리셋, 작업, 모델을 확인하세요. 변경 사항은 이 팀에만 적용됩니다. 작업 복잡도와 구성 제안은 리드 Agent가 판단합니다.",
"teamPlan.leader": "리더 에이전트 (읽기 전용)",
"teamPlan.official": "Claude 공식",
"teamPlan.provider": "공급자",
"teamPlan.conflict": "다른 창이나 리더가 계획을 변경했습니다. 편집 내용은 보존됩니다. 최신 버전을 확인하세요.",
"teamPlan.reload": "최신 계획 사용",
"teamPlan.reapply": "내 편집을 최신 계획에 적용",
"teamPlan.agentsError": "에이전트 프리셋을 불러올 수 없습니다. 모델 및 작업 편집은 보존됩니다.",
"teamPlan.selectAll": "모든 멤버 선택",
"teamPlan.batch": "선택한 멤버의 모델 설정",
"teamPlan.followLeader": "선택한 멤버에 리더 모델 적용",
"teamPlan.restore": "추천 모델 복원",
"teamPlan.costHint": "간단한 작업에는 경제적인 모델을, 복잡한 작업에는 더 강력한 모델을 선택하세요. 요금은 공급자에 따라 다르며 여기서는 추정하지 않습니다.",
"teamPlan.difficulty": "작업 복잡도",
"teamPlan.high": "높음",
"teamPlan.medium": "중간",
"teamPlan.low": "낮음",
"teamPlan.agent": "에이전트 프리셋",
"teamPlan.model": "공급자 및 모델",
"teamPlan.prompt": "멤버 지침",
"teamPlan.tasks": "작업 배정",
"teamPlan.dependencies": "선행 작업",
"teamPlan.unassigned": "미배정",
"teamPlan.assignRequired": "승인하기 전에 이 작업을 멤버에게 배정하세요.",
"teamPlan.invalidMemberNames": "{names} 멤버를 시작할 수 없습니다. 이름에는 문자, 숫자, 밑줄, 하이픈만 사용할 수 있으며 team-lead는 예약되어 있습니다. 리더 에이전트에게 수정을 요청하세요.",
"teamPlan.owner": "담당 멤버",
"teamPlan.feedback": "수정 의견 (반려 시 필수)",
"teamPlan.state.draft": "리더가 계획 수정 중",
"teamPlan.state.review_pending": "검토 대기 · 멤버 시작 전",
"teamPlan.state.launching": "팀 시작 중",
"teamPlan.state.running": "팀 시작됨",
"teamPlan.state.launch_failed": "시작 실패 · 세부 정보를 검토하세요",
"teamPlan.state.cancelled": "팀 취소됨",
'sideChat.closeTitle': '사이드 채팅을 닫을까요?',
'sideChat.closeBody': '이 임시 대화가 삭제되고 진행 중인 응답이 중지됩니다。',
'sideChat.emptyDescription': '이 임시 대화는 탭을 닫거나 앱을 종료하면 지워집니다.',
'chat.selectedText': '선택한 텍스트',
'sideChat.title': '사이드 채팅',
'chat.askSelectionInSideChat': '사이드 채팅에서 질문',
'chat.selectionActions': '선택한 텍스트 작업',
"sideQuestion.title": "별도 질문",
"sideQuestion.clear": "질문 기록 지우기",
"sideQuestion.close": "별도 질문 닫기",
"sideQuestion.hint": "기본 작업을 중단하지 않고 현재 대화에 대해 질문하세요. 답변은 앱을 종료할 때까지 보관됩니다.",
"sideQuestion.empty": "현재 대화에 대해 궁금한 점을 물어보세요.",
"sideQuestion.thinking": "생각 중…",
"sideQuestion.cancelled": "취소됨",
"sideQuestion.failed": "이 질문에 답변하지 못했습니다.",
"sideQuestion.copy": "답변 복사",
"sideQuestion.copied": "복사됨",
"sideQuestion.input": "질문",
"sideQuestion.placeholder": "질문 또는 추가 질문 입력…",
"sideQuestion.cancel": "질문 취소",
"sideQuestion.send": "질문하기",
"sideQuestion.commandDescription": "작업을 중단하지 않고 별도로 질문하기",
"settings.chatAppearance.title": "채팅 모양",
"settings.chatAppearance.description": "UI 확대와 별도로 채팅 글자를 조정합니다. 변경 사항은 즉시 적용되며 이 기기에 저장됩니다.",
"settings.chatAppearance.reset": "채팅 모양 초기화",
"settings.chatAppearance.font": "채팅 글꼴",
"settings.chatAppearance.fontSystem": "시스템 기본값",
"settings.chatAppearance.fontSans": "고딕체",
"settings.chatAppearance.fontSerif": "명조체",
"settings.chatAppearance.fontMono": "고정폭",
"settings.chatAppearance.fontSize": "채팅 글자 크기",
"settings.chatAppearance.width": "대화 너비",
"settings.chatAppearance.widthStandard": "기본",
"settings.chatAppearance.widthWide": "넓게",
"settings.chatAppearance.widthFull": "사용 가능한 너비 채우기",
"settings.chatAppearance.hint": "시스템에 있는 글꼴을 사용합니다. 코드는 고정폭을 유지합니다. 너비는 메시지와 입력창에 적용되며 작은 창에서는 자동 조정됩니다.",
"settings.chatAppearance.preview": "글꼴 미리보기",
"settings.chatAppearance.previewMarkdown": "### 편안하게 읽는 대화\n\n글자를 조정하여 편안하게 읽으세요. 中文・日本語・한국어 · Hello 123.\n\n- 목록에도 선택한 글꼴과 크기가 적용됩니다.\n- 인라인 코드는 고정폭을 유지합니다: `const answer = 42`.\n\n| 내용 | 예시 |\n| --- | --- |\n| 본문 | 자신의 속도로 읽기 |",
"chat.sessionNoProject": "프로젝트 없음",
"chat.referenceSessions": "세션",
"chat.sessionReferencesLoadFailed": "세션을 불러올 수 없습니다.",
"chat.openReferencedSession": "세션 {id} 열기",
"chat.collaborationMessageFrom": "{id}이(가) 다른 세션에서 보냄",
"chat.collaborationQueued": "대기 중",
"chat.collaborationRunning": "실행 중",
"chat.collaborationIdle": "유휴",
"chat.collaborationBlocked": "조치 필요",
"chat.collaborationCompleted": "완료",
"chat.collaborationFailed": "실패",
"chat.collaborationStopped": "중지됨",
"chat.history.loading": "메시지 불러오는 중…",
"chat.history.loadFailed": "메시지를 불러오지 못했습니다.",
"chat.history.retry": "다시 시도",
"chat.history.loadMore": "이전 메시지 불러오기",
"trace.windowNotice": "대화와 추적은 제한된 페이지로 불러옵니다.",
"trace.windowLimited": "일부 기록이 표시 한도를 초과했습니다. 원본 파일은 유지됩니다.",
"trace.windowFirst": "처음 / 실시간",
"trace.windowPrevious": "이전 페이지",
"trace.windowNext": "다음 페이지",
"trace.windowScanNext": "다음 구간 읽기",
"extensions.myPlugins": "내 플러그인",
"extensions.mySkills": "내 스킬",
"extensions.browse": "둘러보기로 돌아가기",
"extensions.managedSkillHint": "연결된 스킬은 해당 플러그인과 함께 관리합니다. 로컬 및 프로젝트 스킬은 원본 디렉터리에서 관리하세요.",
"extensions.searchPlugins": "플러그인 검색",
"extensions.searchSkills": "추천 스킬 검색",
"extensions.pluginsSubtitle": "자주 사용하는 서비스를 연결하거나 어시스턴트에 창작 및 개발 도구를 추가하세요.",
"extensions.filter": "확장 기능 필터",
"extensions.categories": "확장 기능 분류",
"extensions.empty": "일치하는 확장 기능이 없습니다",
"chat.references": "참조",
"chat.referencePlugins": "플러그인",
"chat.referenceSkills": "스킬",
"chat.referenceFiles": "파일",
"chat.referencesLoadFailed": "스킬과 플러그인을 불러올 수 없습니다",
"chat.referencesEmpty": "일치하는 참조가 없습니다",
"chat.referenceDescription": "설명",
"chat.referenceSource": "출처",
"chat.referenceDetails": "참조 세부 정보",
"sidebar.extensions": "스킬 · 커넥터",
"extensions.sections": "마켓 분류",
"extensions.plugins": "플러그인",
"extensions.skills": "스킬",
"extensions.featuredSkills": "추천 스킬",
"connectors.airtable.description": "테이블, 레코드와 팀 자료를 조회합니다.",
"connectors.airtable.example": "Airtable에서 다음 작업을 도와주세요: 테이블, 레코드와 팀 자료를 조회합니다.",
"connectors.airtable.name": "Airtable",
"connectors.airtable.requirements": "브라우저에서 워크스페이스 또는 베이스 접근을 승인합니다. 기업 관리자가 클라이언트 사용을 제한할 수 있습니다.",
"connectors.algorithmic-art.name": "알고리즘 아트",
"connectors.algorithmic-art.description": "p5.js로 매개변수를 조절하는 알고리즘 아트와 인터랙티브 화면을 만듭니다.",
"connectors.algorithmic-art.example": "색상과 밀도를 조절할 수 있는 흐름장 아트 페이지를 만들어 주세요.",
"connectors.algorithmic-art.requirements": "템플릿과 참고 코드를 포함합니다. 미리 보기에는 브라우저와 p5.js가 필요합니다. 설치 중 스크립트 실행이나 생성 모델 호출은 하지 않습니다.",
"connectors.atlassian.description": "Jira, Confluence와 프로젝트 협업 자료를 검색합니다.",
"connectors.atlassian.example": "Atlassian에서 다음 작업을 도와주세요: Jira, Confluence와 프로젝트 협업 자료를 검색합니다.",
"connectors.atlassian.name": "Atlassian",
"connectors.atlassian.requirements": "Atlassian Cloud 계정과 제품 권한을 브라우저에서 승인해야 합니다. 일부 제품과 작업은 관리자 활성화가 필요합니다.",
"connectors.bazhuayu.description": "수집 템플릿, 클라우드 작업과 수집 데이터를 확인합니다.",
"connectors.bazhuayu.example": "Octoparse China에서 다음 작업을 도와주세요: 수집 템플릿, 클라우드 작업과 수집 데이터를 확인합니다.",
"connectors.bazhuayu.name": "Octoparse China",
"connectors.bazhuayu.requirements": "중국 서비스 계정의 API Key가 필요합니다. 클라우드 수집만 지원하며 실행 시 잔액이 차감될 수 있습니다. 일부 템플릿에는 특정 요금제가 필요합니다.",
"connectors.canvas-design.name": "캔버스 디자인",
"connectors.canvas-design.description": "포함된 글꼴로 포스터, 정적 시각 작품, PDF를 제작합니다.",
"connectors.canvas-design.example": "기술 행사 포스터를 디자인하고 PDF로 내보내 주세요.",
"connectors.canvas-design.requirements": "전체 디자인 스킬, 글꼴, 라이선스를 포함합니다. 이미지나 PDF 생성에는 Python과 그림 라이브러리가 필요하며 자동 설치하지 않습니다.",
"connectors.clickup.description": "프로젝트, 작업과 팀 자료를 검색합니다.",
"connectors.clickup.example": "ClickUp에서 다음 작업을 도와주세요: 프로젝트, 작업과 팀 자료를 검색합니다.",
"connectors.clickup.name": "ClickUp",
"connectors.clickup.requirements": "ClickUp 계정과 워크스페이스 권한을 브라우저에서 승인해야 합니다. 공개 베타 서비스입니다.",
"connectors.cloudflare.description": "웹사이트, 네트워크와 클라우드 리소스를 살펴보고 관리합니다.",
"connectors.cloudflare.example": "Cloudflare에서 다음 작업을 도와주세요: 웹사이트, 네트워크와 클라우드 리소스를 살펴보고 관리합니다.",
"connectors.cloudflare.name": "Cloudflare",
"connectors.cloudflare.requirements": "필요한 리소스 권한을 가진 사용자 또는 계정 API Token이 필요합니다. 배포와 설정 변경에는 명시적인 작업 요청이 필요합니다.",
"connectors.drawio.name": "draw.io 다이어그램",
"connectors.drawio.description": "편집 가능한 구성도, 흐름도, 관계도를 만듭니다.",
"connectors.drawio.example": "이 시스템 설명을 편집 가능한 draw.io 구성도로 만들어 주세요.",
"connectors.drawio.requirements": ".drawio XML은 직접 작성할 수 있습니다. Mermaid 변환, 자동 배치, 이미지 내보내기는 draw.io 데스크톱 CLI가 필요합니다. 스킬 설치로 앱이 설치되지는 않습니다.",
"connectors.firecrawl.description": "웹을 검색하고 페이지를 추출해 조사 자료를 정리합니다.",
"connectors.firecrawl.example": "Firecrawl에서 다음 작업을 도와주세요: 웹을 검색하고 페이지를 추출해 조사 자료를 정리합니다.",
"connectors.firecrawl.name": "Firecrawl",
"connectors.firecrawl.requirements": "Firecrawl API Key가 필요합니다. 사용량은 계정 한도에 반영되며 키는 안전한 요청 헤더로 전송됩니다.",
"connectors.frontend-design.name": "프런트엔드 디자인",
"connectors.frontend-design.description": "시각적 위계가 명확한 웹과 앱 화면을 구현합니다.",
"connectors.frontend-design.example": "지식 관리 앱의 홈 화면을 설계하고 구현해 주세요.",
"connectors.frontend-design.requirements": "Anthropic 프런트엔드 디자인 스킬을 설치합니다. 미리 보기와 빌드에는 대상 프로젝트의 의존성과 실행 환경이 필요합니다. 호스팅이나 이미지 생성 서비스는 포함되지 않습니다.",
"connectors.hyperframes.name": "HyperFrames",
"connectors.hyperframes.description": "HTML과 애니메이션 코드로 영상, 자막, 제품 데모를 제작합니다.",
"connectors.hyperframes.example": "HyperFrames로 20초 제품 소개 영상을 만들어 주세요.",
"connectors.hyperframes.requirements": "고정 버전의 스킬 5종과 참고 자료만 설치합니다. 렌더링에는 Node.js 22+, HyperFrames CLI, FFmpeg가 필요합니다. 로컬 음성에는 Python 3.10+가 필요할 수 있으며 온라인 미디어 서비스는 별도 설정과 비용이 필요할 수 있습니다.",
"connectors.intercom.description": "고객 대화, 연락처와 도움말 자료를 검색합니다.",
"connectors.intercom.example": "Intercom에서 다음 작업을 도와주세요: 고객 대화, 연락처와 도움말 자료를 검색합니다.",
"connectors.intercom.name": "Intercom",
"connectors.intercom.requirements": "미국 호스팅 워크스페이스만 지원합니다. 연락처, 대화, 문서 권한이 있는 액세스 토큰이 필요합니다.",
"connectors.jufa.description": "판례를 검색하고 법원의 판단을 정리합니다.",
"connectors.jufa.example": "Jufa Cases에서 다음 작업을 도와주세요: 판례를 검색하고 법원의 판단을 정리합니다.",
"connectors.jufa.name": "Jufa Cases",
"connectors.jufa.requirements": "Jufa Agent API Key가 필요합니다. 판례 조사만 제공하며 다른 주제는 별도 연동이 필요합니다. 요금제와 호출 한도가 적용됩니다.",
"connectors.kuaicha.description": "기업 등록, 운영과 위험 정보를 검색합니다.",
"connectors.kuaicha.example": "THS Kuaicha에서 다음 작업을 도와주세요: 기업 등록, 운영과 위험 정보를 검색합니다.",
"connectors.kuaicha.name": "THS Kuaicha",
"connectors.kuaicha.requirements": "Kuaicha API Key가 필요합니다. 중국 본토 IP만 지원하며 계정 권한과 한도가 적용됩니다.",
"connectors.listinggood.description": "아마존 상품 설명의 규정 준수와 가독성을 검토합니다.",
"connectors.listinggood.example": "ListingGood에서 다음 작업을 도와주세요: 아마존 상품 설명의 규정 준수와 가독성을 검토합니다.",
"connectors.listinggood.name": "ListingGood",
"connectors.listinggood.requirements": "ListingGood 중국 서비스 API Key가 필요합니다. 글로벌 서비스 키와 호환되지 않으며 유료 도구는 계정 한도를 사용합니다.",
"connectors.mcp-builder.name": "MCP 개발 도구 모음",
"connectors.mcp-builder.description": "TypeScript와 Python 참고 자료로 MCP 서버를 개발하고 평가합니다.",
"connectors.mcp-builder.example": "내부 지식 베이스용 MCP 서버를 설계해 주세요.",
"connectors.mcp-builder.requirements": "설계 참고 자료와 평가 스크립트를 포함합니다. 개발에는 Node.js 또는 Python과 MCP SDK가 필요합니다. 모델 평가와 외부 API는 사용자 인증 정보가 필요하며 비용이 발생할 수 있습니다.",
"connectors.miro.description": "공동 작업 보드를 읽고 디자인 논의를 정리합니다.",
"connectors.miro.example": "Miro에서 다음 작업을 도와주세요: 공동 작업 보드를 읽고 디자인 논의를 정리합니다.",
"connectors.miro.name": "Miro",
"connectors.miro.requirements": "Miro 계정과 보드 권한이 필요합니다. 조직 관리자가 MCP를 활성화해야 할 수 있습니다.",
"connectors.neon.description": "데이터베이스 프로젝트, 브랜치와 개발 스키마를 살펴봅니다.",
"connectors.neon.example": "Neon에서 다음 작업을 도와주세요: 데이터베이스 프로젝트, 브랜치와 개발 스키마를 살펴봅니다.",
"connectors.neon.name": "Neon",
"connectors.neon.requirements": "Neon API Key와 프로젝트 권한이 필요합니다. 제공사는 개발 및 테스트 데이터베이스 사용을 권장합니다.",
"connectors.obsidian.name": "Obsidian 도구 모음",
"connectors.obsidian.description": "Markdown 노트, Canvas 보드, Bases 보기를 편집합니다.",
"connectors.obsidian.example": "이 프로젝트 노트를 Obsidian Canvas 관계도로 정리해 주세요.",
"connectors.obsidian.requirements": "로컬 파일 편집에는 클라우드 계정이 필요 없습니다. CLI 작업에는 실행 중인 Obsidian이 필요합니다. 추출 등 선택 기능은 별도 CLI가 필요합니다. 스킬 파일만 설치합니다.",
"connectors.postman.description": "API 워크스페이스, 컬렉션과 개발 자료를 검색합니다.",
"connectors.postman.example": "Postman에서 다음 작업을 도와주세요: API 워크스페이스, 컬렉션과 개발 자료를 검색합니다.",
"connectors.postman.name": "Postman",
"connectors.postman.requirements": "미국 지역 Postman 계정을 브라우저에서 승인합니다. 최소 도구 모음을 사용하며 EU 계정은 별도 API Key 설정이 필요합니다.",
"connectors.qcc.description": "기업 등록 정보와 관련 자료를 확인합니다.",
"connectors.qcc.example": "Qichacha에서 다음 작업을 도와주세요: 기업 등록 정보와 관련 자료를 확인합니다.",
"connectors.qcc.name": "Qichacha",
"connectors.qcc.requirements": "Qichacha Agent API Key가 필요합니다. 기본 기업 정보만 제공하며 다른 주제는 별도 연동이 필요합니다. 계정 권한과 포인트 제한이 적용됩니다.",
"connectors.qingflow.description": "워크스페이스 앱과 업무 데이터를 조회합니다.",
"connectors.qingflow.example": "Qingflow에서 다음 작업을 도와주세요: 워크스페이스 앱과 업무 데이터를 조회합니다.",
"connectors.qingflow.name": "Qingflow",
"connectors.qingflow.requirements": "Qingflow 계정으로 브라우저 승인이 필요합니다. 워크스페이스와 앱 권한이 적용되며 기능은 요금제에 따라 달라집니다.",
"connectors.qveris.description": "정보 조사에 사용할 데이터 도구를 검색합니다.",
"connectors.qveris.example": "QVeris에서 다음 작업을 도와주세요: 정보 조사에 사용할 데이터 도구를 검색합니다.",
"connectors.qveris.name": "QVeris",
"connectors.qveris.requirements": "QVeris API Key가 필요합니다. 도구 범위와 비용은 제공사가 정합니다. 키를 변경하면 다시 연결해야 합니다.",
"connectors.remotion.name": "Remotion",
"connectors.remotion.description": "React로 애니메이션, 오디오, 자막이 포함된 프로그래밍 방식의 영상을 만듭니다.",
"connectors.remotion.example": "Remotion으로 자막과 음악이 있는 20초 제품 소개 영상을 만들어 주세요.",
"connectors.remotion.requirements": "Remotion 공식 스킬 12개와 참고 자료만 설치합니다. 영상 제작과 렌더링에는 프로젝트 의존성, Node.js 및 브라우저가 필요합니다. Remotion 런타임에는 별도의 라이선스 조건이 적용됩니다.",
"connectors.render.description": "배포된 서비스, 데이터베이스, 로그와 지표를 살펴봅니다.",
"connectors.render.example": "Render에서 다음 작업을 도와주세요: 배포된 서비스, 데이터베이스, 로그와 지표를 살펴봅니다.",
"connectors.render.name": "Render",
"connectors.render.requirements": "Render API Key가 필요합니다. 먼저 워크스페이스를 지정하세요. 키는 소속 워크스페이스에 접근할 수 있으며 배포에는 명시적인 작업 요청이 필요합니다.",
"connectors.sorftime.description": "해외 전자상거래 시장, 상품과 키워드를 조사합니다.",
"connectors.sorftime.example": "Sorftime에서 다음 작업을 도와주세요: 해외 전자상거래 시장, 상품과 키워드를 조사합니다.",
"connectors.sorftime.name": "Sorftime",
"connectors.sorftime.requirements": "Sorftime MCP 활성화와 Account-SK가 필요합니다. 구매한 서비스에 따라 플랫폼, 시장과 조회 한도가 결정됩니다.",
"connectors.todoist.description": "할 일, 프로젝트와 개인 일정을 살펴봅니다.",
"connectors.todoist.example": "Todoist에서 다음 작업을 도와주세요: 할 일, 프로젝트와 개인 일정을 살펴봅니다.",
"connectors.todoist.name": "Todoist",
"connectors.todoist.requirements": "Todoist 계정으로 브라우저에서 작업과 프로젝트 접근을 승인해야 합니다.",
"connectors.variflight.description": "항공편 상태, 공항과 여행 정보를 조회합니다.",
"connectors.variflight.example": "VariFlight에서 다음 작업을 도와주세요: 항공편 상태, 공항과 여행 정보를 조회합니다.",
"connectors.variflight.name": "VariFlight",
"connectors.variflight.requirements": "VariFlight MCP 플랫폼에서 로그인해 MCP Key를 발급받아야 합니다. 개인 여정에는 계정 권한이 필요하며 데이터와 호출 한도는 제공사 조건을 따릅니다.",
"connectors.webapp-testing.name": "웹 앱 테스트",
"connectors.webapp-testing.description": "Playwright로 로컬 페이지, 상호작용, 스크린샷을 검사합니다.",
"connectors.webapp-testing.example": "로컬 앱의 폼 검증과 페이지 배치를 확인해 주세요.",
"connectors.webapp-testing.requirements": "테스트 스킬, Python 보조 스크립트, 예제를 포함합니다. 실행에는 Python, Playwright, 브라우저, 대상 앱이 필요합니다. 브라우저를 자동으로 다운로드하지 않습니다.",
"connectors.webflow.description": "사이트 구조, CMS 콘텐츠와 디자인 정보를 읽습니다.",
"connectors.webflow.example": "Webflow에서 다음 작업을 도와주세요: 사이트 구조, CMS 콘텐츠와 디자인 정보를 읽습니다.",
"connectors.webflow.name": "Webflow",
"connectors.webflow.requirements": "사이트 권한이 있는 Webflow 계정이 필요합니다. OAuth 승인 시 MCP Bridge App이 설치되며 Designer 작업에는 브리지 연결이 필요합니다.",
"connectors.xmind.description": "온라인 마인드맵을 읽고 계획과 지식을 정리합니다.",
"connectors.xmind.example": "Xmind에서 다음 작업을 도와주세요: 온라인 마인드맵을 읽고 계획과 지식을 정리합니다.",
"connectors.xmind.name": "Xmind",
"connectors.xmind.requirements": "중국 본토 Xmind 계정을 브라우저에서 승인해야 합니다. 승인한 팀의 온라인 맵만 접근 가능하며 편집 기능은 요금제에 따라 달라집니다.",
"connectors.toolsRemoveInfo": "이 도구 플러그인과 스킬 파일을 제거합니다. 기존 작업과 결과 파일은 유지됩니다。",
"connectors.collection": "카탈로그 유형",
"connectors.services": "서비스 커넥터",
"connectors.tools": "도구 플러그인",
"connectors.region": "서비스 지역",
"connectors.region.all": "모든 지역",
"connectors.region.china": "중국 서비스",
"connectors.region.global": "글로벌 서비스",
"connectors.toolKind": "도구 플러그인",
"connectors.toolsSubtitle": "작업에 전문 스킬과 작업 방법을 추가합니다.",
"connectors.skillsLoaded": "스킬 로드됨",
"connectors.skillsPending": "스킬 로드 대기",
"connectors.verifySkills": "스킬 확인",
"connectors.skillsRuntimeInfo": "설치되는 것은 스킬 패키지입니다. 작업에 필요한 Node.js, 명령줄 도구 등의 실행 환경은 별도로 준비해야 합니다. 스킬이 로드되어도 해당 의존성이 설치된 것은 아닙니다.",
"connectors.saveAndVerify": "저장 및 확인",
"connectors.needsService": "서비스 연결 필요",
"connectors.jinshuju.name": "진슈쥐",
"connectors.jinshuju.description": "양식과 수집된 응답을 조회하여 분석과 정리를 돕습니다.",
"connectors.jinshuju.example": "진슈쥐에서 최근 수집한 설문 응답을 요약해 주세요.",
"connectors.jinshuju.requirements": "진슈쥐 계정이 필요합니다. 브라우저에서 양식 및 데이터 접근을 인증합니다.",
"connectors.tencent-docs.name": "텐센트 문서",
"connectors.tencent-docs.description": "온라인 문서, 스프레드시트 및 협업 자료를 읽고 정리합니다.",
"connectors.tencent-docs.example": "텐센트 문서에서 프로젝트 계획 관련 자료를 찾아 주세요.",
"connectors.tencent-docs.requirements": "Tencent Docs MCP 접근 토큰이 필요합니다. 계정이 이미 접근 가능한 문서만 사용할 수 있습니다.",
"connectors.pkulaw.name": "북대법보",
"connectors.pkulaw.description": "법률과 규정을 검색하고 조문 및 원문 출처를 확인합니다.",
"connectors.pkulaw.example": "근로 계약의 수습 기간 관련 법률 조항을 찾아 출처를 표시해 주세요.",
"connectors.pkulaw.requirements": "PKULaw MCP 접근 토큰과 해당 자료 권한이 필요합니다. 검색한 조항이 현재 유효한지 확인해야 합니다.",
"connectors.datayes.name": "Datayes",
"connectors.datayes.description": "주가 및 금융 시장 데이터를 조회하여 조사를 돕습니다.",
"connectors.datayes.example": "지정한 주식의 과거 시세를 조회하고 데이터 출처를 정리해 주세요.",
"connectors.datayes.requirements": "Datayes MCP Token이 필요합니다. 데이터 범위는 계정 권한과 할당량에 따라 제한됩니다. 기업 계정은 제공자의 확인 요건을 충족해야 합니다.",
"connectors.tencent-search.name": "Tencent Cloud 검색",
"connectors.tencent-search.description": "출처를 추적할 수 있는 웹 자료를 검색합니다.",
"connectors.tencent-search.example": "중국 저고도 경제 산업 발전 자료를 검색하고 공식 출처를 정리해 주세요.",
"connectors.tencent-search.requirements": "Tencent Cloud WSA 서비스 활성화와 API Key가 필요합니다. 계정 할당량 및 요금 규칙이 적용됩니다.",
"connectors.connectService": "서비스 연결",
"connectors.officialMcp": "공식 MCP 서비스",
"connectors.amap.name": "가오더 지도",
"connectors.amap.description": "장소를 검색하고 경로와 날씨, 이동 정보를 확인합니다.",
"connectors.amap.example": "항저우 동역에서 서호까지 대중교통 경로를 계획해 주세요.",
"connectors.amap.requirements": "Amap Web Service API Key가 필요합니다. 서비스는 계정 권한과 할당량에 따라 제공됩니다.",
"connectors.baidu-maps.name": "바이두 지도",
"connectors.baidu-maps.description": "주소를 분석하고 주변 장소와 경로를 검색합니다.",
"connectors.baidu-maps.example": "상하이 훙차오역 근처 호텔과 교통편을 찾아 주세요.",
"connectors.baidu-maps.requirements": "Baidu Maps 서버용 AK와 해당 서비스 권한이 필요합니다.",
"connectors.tencent-maps.name": "텐센트 지도",
"connectors.tencent-maps.description": "위치, 거리, 경로를 확인하여 이동을 계획합니다.",
"connectors.tencent-maps.example": "광저우 남역에서 광저우 타워까지 대중교통과 자동차 경로를 비교해 주세요.",
"connectors.tencent-maps.requirements": "Tencent Location Service Key와 WebServiceAPI 권한 및 할당량이 필요합니다.",
"connectors.zhipu-search.name": "즈푸 웹 검색",
"connectors.zhipu-search.description": "중국어 웹페이지, 뉴스, 최신 정보를 출처와 함께 검색합니다.",
"connectors.zhipu-search.example": "최근 중국 신에너지 자동차 정책을 검색하고 원문 출처를 보여 주세요.",
"connectors.zhipu-search.requirements": "GLM Coding Plan API Key가 필요합니다. 팀 요금제 키와 일반 플랫폼 키는 호환되지 않습니다.",
"connectors.notion.name": "Notion",
"connectors.notion.description": "워크스페이스 자료를 검색하고 페이지와 프로젝트 지식을 정리합니다.",
"connectors.notion.example": "Notion에서 최근 프로젝트 주간 보고서를 찾아 진행 상황을 요약해 주세요.",
"connectors.notion.requirements": "Notion 계정이 필요합니다. 브라우저 인증 후 해당 계정이 접근 가능한 내용만 사용할 수 있습니다.",
"connectors.linear.name": "Linear",
"connectors.linear.description": "이슈, 프로젝트, 주기를 조회하여 팀 작업을 추적합니다.",
"connectors.linear.example": "Linear에서 나에게 배정된 미완료 이슈를 보여 주세요.",
"connectors.linear.requirements": "Linear 워크스페이스 계정과 프로젝트 접근 권한이 필요하며 브라우저에서 인증합니다.",
"connectors.github.name": "GitHub",
"connectors.github.description": "저장소 코드, Issue, Pull Request를 검색합니다.",
"connectors.github.example": "내 GitHub 저장소에서 검토를 기다리는 Pull Request를 확인해 주세요.",
"connectors.github.requirements": "필요한 저장소와 작업 권한이 있는 GitHub Personal Access Token이 필요합니다. 조직 정책도 적용됩니다.",
"connectors.context7.name": "Context7",
"connectors.context7.description": "라이브러리의 최신 문서와 사용 예시를 확인합니다.",
"connectors.context7.example": "React useEffect 공식 문서와 정리 함수 예시를 찾아 주세요.",
"connectors.context7.requirements": "공식 익명 사용량을 이용합니다. 무제한이 아니며 한도를 넘으면 서비스가 제한을 반환합니다.",
"connectors.sentry.name": "Sentry",
"connectors.sentry.description": "예외, 이슈, 앱 실행 정보를 확인합니다.",
"connectors.sentry.example": "지난 하루 동안 Sentry에서 처음 발생한 오류를 요약해 주세요.",
"connectors.sentry.requirements": "조직 및 프로젝트 권한이 있는 Sentry 계정이 필요하며 브라우저에서 인증합니다.",
"connectors.tavily.name": "Tavily",
"connectors.tavily.description": "웹페이지를 검색하고 내용을 추출하여 조사를 돕습니다.",
"connectors.tavily.example": "오픈소스 벡터 데이터베이스를 비교하고 출처를 제시해 주세요.",
"connectors.tavily.requirements": "Tavily API Key가 필요합니다. 호출에는 계정 구독 및 할당량이 적용됩니다.",
"connectors.exa.name": "Exa",
"connectors.exa.description": "관련 웹페이지, 코드 및 기술 정보를 검색합니다.",
"connectors.exa.example": "분산 시스템의 관측 가능성에 관한 기술 문서를 찾아 주세요.",
"connectors.exa.requirements": "공식 기본 익명 사용량을 이용합니다. 사용 가능한 도구와 횟수는 제공자가 결정합니다.",
"connectors.supabase.name": "Supabase",
"connectors.supabase.description": "프로젝트, 데이터베이스 구조 및 개발 자료를 확인합니다.",
"connectors.supabase.example": "데이터를 변경하지 말고 Supabase 프로젝트의 테이블 구조를 확인해 주세요.",
"connectors.supabase.requirements": "대상 조직 및 프로젝트 권한이 있는 Supabase 계정이 필요합니다. 데이터베이스 쓰기는 명시적인 작업 지시가 필요합니다.",
"connectors.huggingface.name": "Hugging Face",
"connectors.huggingface.description": "모델, 데이터셋 및 머신러닝 연구 자료를 찾습니다.",
"connectors.huggingface.example": "중국어 텍스트 분류에 적합한 공개 모델과 데이터셋을 찾아 주세요.",
"connectors.huggingface.requirements": "Hugging Face 접근 토큰이 필요합니다. 검색에는 read 권한을 권장하며 계산 작업에는 별도 요금이 발생할 수 있습니다.",
"connectors.canva.name": "Canva",
"connectors.canva.description": "디자인 자료를 검색, 정리하고 디자인 작업에 협업합니다.",
"connectors.canva.example": "Canva에서 최근 브랜드 디자인 자료를 찾아 주세요.",
"connectors.canva.requirements": "각 사용자가 자신의 Canva 계정으로 인증합니다. 일부 기능은 구독 및 팀 권한에 따라 제한됩니다.",
"connectors.figma.name": "Figma",
"connectors.figma.description": "디자인 맥락과 컴포넌트, 화면 구조를 읽습니다.",
"connectors.figma.example": "제공한 Figma 디자인 링크의 컴포넌트 구조를 분석해 주세요.",
"connectors.figma.requirements": "Figma 계정 인증이 필요합니다. 접근 권한, 좌석 및 요금제에 따라 사용 가능한 도구와 횟수가 달라집니다.",
"connectors.stripe.name": "Stripe",
"connectors.stripe.description": "고객, 청구서 및 결제 업무 정보를 조회합니다.",
"connectors.stripe.example": "결제나 환불을 만들지 말고 최근 Stripe 청구서 개요를 확인해 주세요.",
"connectors.stripe.requirements": "Stripe 계정 인증이 필요합니다. 공식 서비스는 미리보기 버전이며 결제, 환불 등 쓰기 작업에는 명시적인 지시가 필요합니다.",
"connectors.category.legal": "법률",
"connectors.categories": "서비스 카테고리",
"connectors.allCategories": "추천",
"connectors.category.office": "업무 협업",
"connectors.category.development": "개발",
"connectors.category.search": "검색",
"connectors.category.maps": "지도",
"connectors.category.data": "데이터",
"connectors.category.design": "디자인",
"connectors.category.productivity": "생산성",
"connectors.category.finance": "금융",
"connectors.kind": "커넥터",
"connectors.loadFailed": "작업을 완료하지 못했습니다",
"connectors.emptyAdded": "서비스를 추가하면 여기에서 계정과 연결 상태를 관리할 수 있습니다.",
"connectors.emptySearch": "다른 검색어나 카테고리를 선택해 보세요.",
"connectors.resetFilters": "전체 보기",
"connectors.configuration": "연결 설정",
"connectors.configurationHint": "비워 두면 저장된 설정을 유지합니다. 새 설정을 입력한 후 저장 및 확인을 선택하여 연결을 확인하세요.",
"connectors.fieldRequired": "이 항목을 입력하세요",
"connectors.capabilities": "지원 기능",
"connectors.remoteExample": "{name}을 사용해 접근 가능한 정보를 검색해 주세요.",
"connectors.remoteRequirements": "서비스 계정과 필요한 접근 권한을 준비하세요. 사용 가능한 작업은 서비스 제공자가 부여한 권한에 따라 달라집니다.",
"connectors.phase.installing-plugin": "관련 스킬 설치 중",
"connectors.phase.checking": "계정 연결 확인 중",
"connectors.phase.enabling-plugin": "관련 스킬 활성화 중",
"connectors.phase.refreshing-sessions": "작업 기능 새로 고침 중",
"connectors.phase.verifying-runtime": "로컬 실행 환경 확인 중",
"connectors.phase.persistence": "연결 상태 저장 중",
"connectors.phase.cancelling": "작업 취소 중",
"connectors.feishu.requirements": "Feishu 사용자 계정과 일정 접근 권한이 필요합니다. 사용 가능한 기능은 계정과 앱에 부여된 권한에 따라 달라집니다.",
"connectors.dingtalk.requirements": "DingTalk OAuth 로그인과 기업 관리자가 부여한 일정 권한이 필요합니다. 로그인만으로 모든 서비스 권한을 얻는 것은 아닙니다.",
"connectors.wecom.requirements": "WeCom 봇 또는 사용자 ID 설정과 일정 권한이 필요합니다. 사용 가능한 작업은 선택한 ID에 부여된 권한에 따라 달라집니다.",
"connectors.update": "업데이트",
"connectors.updateAvailable": "업데이트 가능 버전",
"connectors.currentAccount": "현재 서비스 계정",
"connectors.phase.downloading": "실행 파일 다운로드 중",
"connectors.phase.extracting": "실행 파일 압축 해제 중",
"connectors.phase.verifying": "실행 파일 검증 중",
"connectors.phase.awaiting-authorization": "계정 인증 대기 중",
"connectors.phase.configuring-account": "계정 설정 중",
"connectors.phase.authorizing": "인증 중",
"connectors.phase.failed": "실패 단계",
"connectors.phase.skillsInfo": "설치 후 이 서비스를 조작하는 스킬을 사용할 수 있습니다.",
'connectors.status.configured': '로컬 설정됨',
'connectors.localVerification': '첫 작업 호출 시 서비스 권한을 확인합니다.',
"sidebar.connectors": "커넥터",
"connectors.subtitle": "업무 서비스를 연결하여 스킬의 기능을 확장하세요.",
"connectors.filter": "커넥터 필터",
"connectors.all": "전체",
"connectors.added": "추가됨",
"connectors.search": "커넥터 검색",
"connectors.clear": "검색 지우기",
"connectors.retry": "다시 시도",
"connectors.loading": "불러오는 중…",
"connectors.empty": "일치하는 커넥터가 없습니다",
"connectors.details": "상세 정보",
"connectors.start": "사용 시작",
"connectors.account": "계정",
"connectors.noAccount": "계정 미확인",
"connectors.platforms": "지원 환경",
"connectors.source": "출처",
"connectors.version": "버전",
"connectors.skills": "관련 스킬 플러그인",
"connectors.homepage": "프로젝트 홈페이지",
"connectors.example": "예시",
"connectors.waiting": "처리 중입니다. 인증을 완료하고 상태 업데이트를 기다리세요.",
"connectors.authorize": "인증 페이지 열기",
"connectors.confirm": "작업 확인",
"connectors.continue": "계속",
"connectors.shared": "이 커넥터는 로컬 CLI 계정 인증 정보를 공유합니다. 연결하거나 계정을 변경하면 같은 CLI를 사용하는 다른 앱에도 영향을 줍니다. 확인 후 계속하세요.",
"connectors.isolated": "인증 정보는 이 앱에 독립적으로 저장됩니다.",
"connectors.removeInfo": "앱이 관리하는 커넥터를 제거하고 공유 계정 인증 정보는 유지합니다.",
"connectors.invalidUrl": "잘못된 인증 URL입니다",
"connectors.openFailed": "링크를 열 수 없습니다. 다시 시도하세요.",
"connectors.startFailed": "작업을 만들 수 없습니다. 다시 시도하세요.",
"connectors.unsupported": "지원하지 않는 환경",
"connectors.action.prepare": "추가",
"connectors.action.authenticate": "계정 연결",
"connectors.action.check": "연결 확인",
"connectors.action.deactivate": "비활성화",
"connectors.action.remove": "제거",
"connectors.status.not-installed": "추가되지 않음",
"connectors.status.preparing": "준비 중",
"connectors.status.needs-auth": "계정 연결 필요",
"connectors.status.authorizing": "인증 중",
"connectors.status.ready": "사용 가능",
"connectors.status.disabled": "비활성화됨",
"connectors.status.error": "확인 필요",
"connectors.feishu.name": "Feishu",
"connectors.dingtalk.name": "DingTalk",
"connectors.wecom.name": "WeCom",
"connectors.feishu.description": "Feishu 문서, 일정 및 업무 협업을 관리합니다.",
"connectors.dingtalk.description": "DingTalk 일정 및 팀 업무 서비스를 연결합니다.",
"connectors.wecom.description": "WeCom으로 팀과 협업합니다.",
"connectors.feishu.example": "Feishu의 오늘 일정을 보여 주세요.",
"connectors.dingtalk.example": "DingTalk의 오늘 일정을 보여 주세요.",
"connectors.wecom.example": "WeCom 계정에서 사용 가능한 기능을 확인해 주세요.",
"h5Settings.credentialRequired": "요청 주소를 변경할 때는 모델 또는 이미지 모델의 API 키를 다시 입력하세요. 컴퓨터에 저장된 키를 새 주소로 자동 전송할 수 없습니다.",
"h5Settings.scope": "모델 및 에이전트 설정은 연결된 컴퓨터에 적용됩니다. 데스크톱 관리 및 원격 접속 제어는 데스크톱에서 진행하세요.",
"h5Settings.providerPrivacy": "저장된 API 키는 표시되지 않습니다. 편집할 때 비워 두면 기존 키를 유지하고 새 키를 입력하면 교체됩니다. 공식 계정 로그인과 연결 테스트는 데스크톱에서 진행하세요.",
"h5Settings.browserOnly": "화면 모양과 인터페이스 언어는 이 브라우저에만 적용됩니다.",
"h5Settings.agentPreferences": "에이전트 기본 설정",
"h5Settings.agentPreferencesHint": "이 기본 설정은 데스크톱과 공유됩니다. 기존 세션에 적용하려면 다시 시작해야 할 수 있습니다.",
"h5Settings.effort": "추론 강도",
"h5Settings.sendBehavior": "키보드 전송 방식",
"h5Settings.enter": "Enter로 전송 · Shift+Enter로 줄 바꿈",
"h5Settings.modifierEnter": "Ctrl/Cmd+Enter로 전송 · Enter로 줄 바꿈",
"publicAccess.title": "공개 접속 · ngrok",
"publicAccess.intro": "본인의 ngrok 계정을 한 번 연결하면 휴대폰에서 QR 코드를 스캔해 이 컴퓨터를 원격으로 사용할 수 있습니다.",
"publicAccess.account": "ngrok Authtoken 받기",
"publicAccess.token": "ngrok Authtoken",
"publicAccess.tokenSaved": "인증 정보 저장됨 · 입력하면 교체",
"publicAccess.unconfigured": "설정 안 됨",
"publicAccess.disabled": "꺼짐",
"publicAccess.connecting": "연결 중…",
"publicAccess.online": "온라인",
"publicAccess.reconnecting": "다시 연결 중…",
"publicAccess.failed": "연결 실패",
"publicAccess.authError": "인증에 실패했습니다. ngrok Authtoken을 확인하세요.",
"publicAccess.quotaError": "ngrok 계정 한도에 도달했습니다. 대시보드를 확인하세요.",
"publicAccess.networkError": "네트워크에 연결할 수 없습니다. 컴퓨터 연결을 확인하세요.",
"publicAccess.configurationError": "터널을 구성하지 못했습니다. ngrok 계정을 확인하세요.",
"publicAccess.enable": "공개 접속 켜기",
"publicAccess.disable": "공개 접속 끄기",
"publicAccess.deleteCredential": "인증 정보 삭제",
"publicAccess.autoStart": "데스크톱 시작 시 공개 접속 복원",
"publicAccess.freeNotice": "무료 요금제에는 트래픽 및 요청 제한이 있습니다. 휴대폰에 ngrok 안내 페이지가 표시되면 계속을 누르세요.",
"publicAccess.genericError": "작업에 실패했습니다. 다시 시도하세요.",
"publicAccess.copy": "주소 복사",
"publicAccess.pairPhone": "휴대폰 연결",
"publicAccess.qrAlt": "스캔하여 휴대폰 페어링",
"publicAccess.qrHint": "5분간 유효하며 한 번만 사용할 수 있습니다. 데스크톱에서 휴대폰을 승인하세요.",
"publicAccess.pending": "페어링 요청",
"publicAccess.approve": "승인",
"publicAccess.reject": "거절",
"publicAccess.devices": "페어링된 기기",
"publicAccess.revoke": "해제",
"publicAccess.privacyTitle": "보안 및 개인정보",
"publicAccess.consent": "동의하고 공개 접속 켜기",
"publicAccess.phoneIntro": "이 브라우저의 이름을 입력하고 데스크톱에서 승인하세요.",
"publicAccess.phonePending": "데스크톱 승인을 기다리는 중…",
"publicAccess.phoneError": "연결 또는 페어링에 실패했습니다. 다시 시도하거나 새 QR 코드를 스캔하세요.",
"publicAccess.phoneUnpaired": "데스크톱에서 새 페어링 QR 코드를 생성한 후 스캔하세요.",
"publicAccess.deviceName": "기기 이름",
"publicAccess.requestPair": "페어링 요청",
"publicAccess.privacy": "활성화하면 페어링된 휴대폰에서 인터넷을 통해 대화를 보고 지시를 보내고 승인 요청에 응답할 수 있습니다. 모델 공급자 설정과 API 키를 추가, 수정, 삭제하거나 전환하고 일부 일반 설정을 변경할 수도 있습니다. 작업은 이 컴퓨터에서 실행됩니다.\n연결은 본인의 ngrok 계정으로 제공됩니다. 표준 HTTPS 터널은 ngrok 서버에서 복호화되므로 ngrok은 기술적으로 전송되는 대화, 지시, 파일 내용, 모델 설정 및 새로 제출한 API 키에 접근할 수 있습니다. 중계 서버가 내용을 읽을 수 없는 종단간 암호화가 아닙니다.\nAuthtoken은 로컬 앱 데이터 폴더에 저장됩니다. 로컬 계정이나 관리자 권한이 있는 사람이 읽을 수 있습니다. 계정과 페어링 정보를 안전하게 보관하세요.\n컴퓨터는 실행 중이고 인터넷에 연결되어 있으며 절전 상태가 아니어야 합니다. 무료 요금제의 트래픽, 요청 한도와 브라우저 안내 페이지가 접속에 영향을 줄 수 있습니다. 언제든 공개 접속을 끄거나 휴대폰을 해제할 수 있습니다.",
'settings.providers.compatibilityJsonHint': 'requestCompatibility는 이 공급자에만 저장되며 전역 설정에는 기록되지 않습니다.',
'settings.providers.compatibilityBudget': '응답 출력 예산',
'settings.providers.compatibilityBudgetHint': '일반 응답에 요청할 최대 출력 토큰 수입니다. 비워 두면 자동으로 선택하며 짧은 백그라운드 요청은 작은 예산을 유지합니다.',
'settings.providers.compatibilityAdvanced': '고급 호환성 설정',
'settings.providers.compatibilityReset': '호환성 설정 초기화',
'settings.providers.compatibilityLimit': '알려진 엔드포인트 출력 한도',
'settings.providers.compatibilityLimitHint': '공급자가 명시한 최대 한도가 있을 때만 입력하세요. 요청 예산은 이 값을 초과하지 않습니다.',
'settings.providers.compatibilityTokenField': '출력 토큰 매개변수',
'settings.providers.compatibilityAuto': '자동',
'settings.providers.compatibilityUnknown': '알 수 없음',
'settings.providers.compatibilitySupported': '지원',
'settings.providers.compatibilityUnsupported': '지원 안 함',
'settings.providers.compatibilityOmit': '한도 전송 안 함',
'settings.providers.compatibilitySampling': '샘플링 매개변수',
'settings.providers.compatibilityReasoning': '추론 매개변수',
'settings.providers.compatibilityParallelTools': '병렬 도구 호출',
'settings.providers.compatibilityStructuredOutput': '구조화된 출력',
'settings.providers.compatibilityNumberError': '양의 정수를 입력하거나 자동 선택하려면 비워 두세요.',
'settings.providers.compatibilityJsonError': '요청 호환성 설정은 유효한 옵션을 포함하는 객체여야 합니다.',
'sidebar.projectHistoryFailed': '이전 세션을 불러오지 못했습니다.',
// ─── 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.capabilities.managePlugins': '플러그인 관리',
'chat.capabilities.moreTools': '더 많은 도구',
'chat.referenceSearchHint': "입력하여 세션, 스킬, 플러그인 및 프로젝트 파일 검색",
'chat.slashFrequent': '자주 쓰는 명령',
'chat.slashSearchHint': '이름을 입력하여 명령, 스킬 및 플러그인 검색',
'chat.slashSearchResults': '검색 결과',
'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': '경로 복사',
'chat.toolResultImage.open': '이미지 {index}/{count} 열기',
'chat.toolResultImage.alt': '이미지 {index}/{count}',
'chat.toolResultImage.omitted': '표시되지 않은 이미지: {count}개',
'common.dismissNotification': '알림 닫기',
// ─── Sidebar ──────────────────────────────────────
'sidebar.newSession': '새 세션',
'sidebar.scheduled': '예약 작업',
'sidebar.skills': '스킬',
'sidebar.terminal': '터미널',
'sidebar.settings': '설정',
'sidebar.searchPlaceholder': '세션 검색...',
'sidebar.noSessions': '아직 세션이 없습니다',
'sidebar.noMatching': '일치하는 세션이 없습니다',
'sidebar.sessionListFailed': '세션 목록을 불러오지 못했습니다',
'sidebar.refreshSessions': '세션 새로 고침',
'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.sessionNeedsAttention': '승인 대기 중',
'sidebar.sessionStatus.attention': '확인 필요',
'sidebar.taskView': '작업 보기',
'sidebar.tasks': '작업',
'sidebar.taskGroup.running': '진행 중',
'sidebar.taskGroup.today': '오늘',
'sidebar.taskGroup.yesterday': '어제',
'sidebar.taskGroup.last7Days': '지난 7일',
'sidebar.taskGroup.last30Days': '지난 30일',
'sidebar.taskGroup.earlier': '이전',
'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.regionLabel': '사이드바',
'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': '열기',
'assistantOutputs.openAria': '{title} 열기',
// ─── Workspace Panel ───────────────────────────────
'workspace.changedFiles': '변경된 파일',
'workspace.allFiles': '모든 파일',
'workspace.viewTabs': '작업 공간 보기',
'workspace.filterPlaceholder': '파일 필터링...',
'workspace.clearFilter': '파일 필터 지우기',
'workspace.searching': '작업 공간 검색 중...',
'workspace.searchResults': '파일 검색 결과',
'workspace.searchResultsTruncated': '처음 {count}개 결과를 표시합니다. 검색어를 구체화하세요.',
'workspace.reviewWorkspace': '작업 공간 검토',
'workspace.itemsCount': '항목 {count}개',
'workspace.diffGridLabel': '{path} 변경 내용',
'workspace.filteredItemsCount': '항목 {total}개 중 {visible}개',
'workspace.refresh': '작업 공간 새로 고침',
'workspace.resizePanel': '작업 공간 패널 크기 조정',
'workbench.close': '닫기',
'workspace.panelLabel': '작업 공간',
'workspace.tabStrip': '작업 공간 탭',
'workspace.tabClose': '{title} 닫기',
'workspace.tabCloseCurrent': '닫기',
'workspace.tabCloseOthers': '다른 탭 닫기',
'workspace.tabCloseRight': '오른쪽 탭 닫기',
'workspace.tabCloseAll': '모두 닫기',
'workspace.tabReopenClosed': '닫은 탭 다시 열기',
'workspace.tabMoveToBottom': '하단 패널로 이동',
'workspace.tabMoveToSide': '작업 공간 패널로 이동',
'workspace.pickerCancel': '취소',
'workspace.tabAdd': '작업 공간에서 열기',
'workspace.tabMenu': '탭 작업',
'workspace.newTabTitle': '새 탭',
'workspace.reviewTabTitle': '검토',
'workspace.terminalTabTitle': '터미널 {n}',
'workspace.bottomPanelLabel': '터미널 패널',
'workspace.resizeBottomPanel': '터미널 패널 높이 조정',
'workspace.controls.toggleBottom': '하단 패널 전환',
'workspace.controls.toggleSide': '사이드 패널 표시/숨기기',
'workspace.browser.suggestions': '주소 추천',
'workspace.browser.searchWeb': '웹 검색',
'workspace.browser.visitAddress': '주소 열기',
'workspace.controls.expand': '작업 공간 최대화',
'workspace.controls.restore': '분할 보기로 복원',
'workspace.controls.bottomPanel': '하단 터미널 표시 전환',
'workspace.controls.sidePanel': '작업 공간 표시 전환',
'workspace.launcher.label': '작업 공간에서 열기',
'workspace.launcher.review': '검토',
'workspace.launcher.terminal': '터미널',
'workspace.launcher.browser': '브라우저',
'workspace.launcher.files': '파일',
'workspace.launcher.reviewNeedsGit': 'Git 저장소가 아닙니다',
'workspace.files.filter': '파일 필터…',
'workspace.files.tree': '파일 트리',
'workspace.files.empty': '파일 없음',
'workspace.files.projectRoot': '프로젝트 루트',
'workspace.files.directoryMissing': '디렉터리를 찾을 수 없습니다: {path}',
'workspace.files.directoryError': '디렉터리를 읽을 수 없습니다: {path}',
'workspace.files.hidePreview': '미리보기 숨기기',
'workspace.files.showPreview': '미리보기 표시',
'workspace.files.toggleTree': '파일 트리 표시 전환',
'workspace.files.breadcrumb': '파일 경로',
'workspace.files.noSelection': '선택된 파일 없음',
'workspace.files.openContainingFolder': '포함된 폴더 열기',
'workspace.files.openTitle': '파일 열기',
'workspace.files.pickAFile': '오른쪽 트리에서 파일을 선택하세요',
'workspace.files.openWith': '열기',
'workspace.files.watchFailed': '파일 업데이트가 일시 중지되었습니다: {reason}. 새로 고침하여 재시도하세요.',
'workspace.files.watchLimit': '자동 업데이트는 처음 {count}개 디렉터리까지 적용됩니다. 나머지는 수동으로 새로 고침하세요.',
'workspace.files.refreshFailed': '마지막으로 불러온 내용을 표시 중입니다. 새로고침 실패: {reason}',
'workspace.browser.address': '주소',
'workspace.browser.addressPlaceholder': '검색어 또는 주소 입력',
'workspace.browser.back': '뒤로',
'workspace.browser.forward': '앞으로',
'workspace.browser.reload': '새로고침',
'workspace.browser.stop': '로드 중지',
'workspace.browser.menu': '브라우저 메뉴',
'workspace.browser.findInPage': '페이지에서 찾기',
'workspace.browser.findPlaceholder': '찾기…',
'workspace.browser.findMatches': '{index}/{total}',
'workspace.browser.findClose': '찾기 막대 닫기',
'workspace.browser.print': 'PDF로 인쇄',
'workspace.browser.zoom': '확대/축소',
'workspace.browser.zoomIn': '확대',
'workspace.browser.zoomOut': '축소',
'workspace.browser.zoomReset': '확대/축소 초기화',
'workspace.browser.capture': '스크린샷 캡처',
'workspace.browser.pickElement': '요소 선택',
'workspace.browser.annotationActive': '주석 작성 중 (Esc로 종료)',
'workspace.browser.downloads': '다운로드',
'workspace.browser.downloadsEmpty': '다운로드 없음',
'workspace.browser.revealDownload': '다운로드한 파일 열기',
'workspace.browser.history': '방문 기록',
'workspace.browser.historyEmpty': '방문 기록 없음',
'workspace.browser.closeOverlay': '닫기',
'workspace.browser.openExternal': '시스템 브라우저에서 열기',
'workspace.browser.emptyTitle': '브라우징 시작',
'workspace.browser.emptyBody': 'URL을 입력해 페이지를 엽니다',
'workspace.browser.loadFailed': '{url}을(를) 불러오지 못했습니다',
'workspace.browser.pageCrashed': '페이지가 응답하지 않아 다시 불러왔습니다.',
'workspace.browser.pageClosed': '이 페이지는 브라우저에 의해 닫혔습니다.',
'workspace.browser.retry': '다시 시도',
'workspace.browser.unavailableTitle': '내장 브라우저는 데스크톱 앱이 필요합니다',
'workspace.browser.unavailableBody': '이 환경에는 네이티브 브라우저 뷰가 없어 링크가 시스템 브라우저에서 열립니다.',
'workspace.terminal.restart': '터미널 다시 시작',
'workspace.terminal.exited': '이 터미널은 종료되었습니다.',
'workspace.review.sourceLabel': '비교 범위',
'workspace.review.fileCount': '{count}개 파일',
'workspace.review.diffLayout': 'Diff 레이아웃',
'workspace.review.newFile': '새 파일',
'workspace.review.sourceUnstaged': '스테이지 안 됨',
'workspace.review.sourceStaged': '스테이지됨',
'workspace.review.sourceUncommitted': '커밋되지 않은 전체',
'workspace.review.sourceBranch': '브랜치: {ref}',
'workspace.review.unstageAll': '모두 스테이징 취소',
'workspace.review.stageHunk': '이 헝크 스테이징',
'workspace.review.unstageHunk': '이 헝크 스테이징 취소',
'workspace.review.historyUnavailable': '이 턴에 기록된 파일 스냅샷이 없습니다.',
'workspace.review.unified': '통합 Diff',
'workspace.review.split': '분할 Diff',
'workspace.review.enableWrap': '자동 줄 바꿈 켜기',
'workspace.review.disableWrap': '자동 줄 바꿈 끄기',
'workspace.review.collapseFile': '파일 Diff 접기',
'workspace.review.expandFile': '파일 Diff 펼치기',
'workspace.review.openFile': '탭에서 파일 열기',
'workspace.review.sourceTurn': '턴 변경 사항',
'workspace.review.sourceCommit': '커밋 {sha}',
'workspace.review.compareBranch': '브랜치 비교…',
'workspace.review.viewCommit': '커밋 보기…',
'workspace.review.branchReference': '브랜치 참조',
'workspace.review.commitReference': '커밋 참조',
'workspace.review.refRequired': '참조를 입력하세요.',
'workspace.review.refUnavailable': '이 비교를 불러올 수 없습니다.',
'workspace.review.compare': '비교',
'workspace.review.resolvedBase': '기준: {ref}',
'workspace.review.filterFiles': '파일 필터…',
'workspace.review.changeTree': '변경된 파일',
'workspace.review.empty': '이 범위에는 변경이 없습니다',
'workspace.review.stage': '이 파일 스테이지',
'workspace.review.unstage': '스테이지 해제',
'workspace.review.revert': '변경 되돌리기',
'workspace.review.stageAll': '모두 스테이지',
'workspace.review.revertAll': '모두 되돌리기',
'workspace.review.refresh': '새로고침',
'workspace.review.markViewed': '확인함으로 표시',
'workspace.review.viewed': '확인함',
'workspace.review.stale': '불러온 뒤 작업 트리가 변경되었습니다. 새로고침 후 다시 시도하세요.',
'workspace.review.failed': 'Git 작업 실패: {reason}',
'workspace.review.revertTitle': '변경을 되돌릴까요?',
'workspace.review.revertBody': '{count}개 파일의 작업 트리 변경을 되돌립니다. 실행 전에 복구용 사본을 저장합니다.',
'workspace.review.revertUntrackedWarning': '추적되지 않은 파일은 따로 표시되며 일괄 되돌리기로 삭제되지 않습니다.',
'workspace.review.untracked': '추적 안 됨',
'workspace.review.binary': '바이너리 파일',
'workspace.review.conflicted': '충돌 있음 — 파일 단위 작업만 가능',
'workspace.review.notGitRepo': '이 폴더는 Git 저장소가 아닙니다.',
'workspace.review.noHead': '이 저장소에는 아직 커밋이 없습니다.',
'workspace.review.backupSaved': '복구용 사본을 {path}에 저장했습니다',
'workspace.review.sourceTurnHint': '선택한 턴에 기록된 파일 변경입니다. 읽기 전용이며 이후 작업 공간 편집은 포함되지 않습니다.',
'workspace.review.readOnlySource': '이 비교는 읽기 전용입니다.',
'workspace.review.revertDeleteTitle': '변경을 되돌리고 새 파일을 삭제할까요?',
'workspace.review.revertTrackedBody': '추적 중인 파일 {count}개의 작업 트리 변경을 되돌립니다. 실행 전에 복구용 사본을 저장합니다.',
'workspace.review.revertDeleteBody': '추적되지 않은 파일 {count}개를 디스크에서 영구 삭제합니다. Git에 저장된 적이 없으므로 실행 전에 저장한 사본으로만 복구할 수 있습니다.',
'workspace.review.revertDeleteList': '삭제 대상: {paths}',
'workspace.review.revertDeleted': '추적되지 않은 파일 {count}개를 삭제했습니다. 남은 사본은 {path}에만 있습니다',
'workspace.review.missingWorkdir': '세션 작업 디렉터리가 더 이상 없습니다.',
'workspace.review.refusedNoSnapshot': '파일을 변경하기 전에 이 비교를 먼저 불러오세요.',
'workspace.review.diffTruncated': '파일이 너무 커서 diff를 표시할 수 없습니다({size})',
'workspace.review.statsTruncated': '너무 커서 집계하지 않음',
'workspace.preview': '미리 보기',
'workspace.loadError': '작업 공간 데이터를 불러오지 못했습니다.',
'workspace.previewState.loading': '미리 보기 불러오는 중...',
'workspace.previewState.binary': '바이너리 파일은 미리 볼 수 없습니다.',
'workspace.previewState.tooLarge': '파일이 너무 커서 미리 볼 수 없습니다.',
'workspace.previewState.missing': '파일을 찾을 수 없습니다.',
'workspace.imagePreviewUnavailable': '이미지를 미리 볼 수 없습니다.',
'workspace.zoom.group': '확대/축소 컨트롤',
'workspace.zoom.in': '확대',
'workspace.zoom.out': '축소',
'workspace.zoom.fitWindow': '창에 맞춤',
'workspace.zoom.fitWidth': '너비에 맞춤',
'workspace.openInSystemApp': '시스템 앱으로 열기',
'workspace.document.loading': '문서 불러오는 중...',
'workspace.document.updating': '미리 보기 업데이트 중...',
'workspace.document.parseFailed': '이 문서를 표시할 수 없습니다.',
'workspace.document.retry': '다시 시도',
'workspace.document.unsupported': '이 파일 형식은 여기서 미리 볼 수 없습니다.',
'workspace.document.outsideWorkspace': '이 파일은 작업 공간 밖에 있어 여기서 미리 볼 수 없습니다.',
'workspace.document.passwordProtected': '이 PDF는 암호로 보호되어 있어 여기서 미리 볼 수 없습니다.',
'workspace.document.engineUnavailable': '이 환경에서는 문서 뷰어를 시작할 수 없습니다.',
'workspace.document.openInBrowser': '브라우저에서 열기',
'workspace.document.tooComplex': '파일이 너무 크거나 복잡해서 안전하게 미리 볼 수 없습니다.',
'workspace.document.approximate.docx': '간이 미리 보기: 수식과 일부 도형은 표시되지 않을 수 있습니다. 정확한 레이아웃은 원본 파일을 열어 확인하세요.',
'workspace.document.approximate.xlsx': '셀을 서식이 적용된 텍스트로 표시합니다. 차트, 이미지, 수식은 표시되지 않습니다.',
'workspace.pdf.pages': '페이지',
'workspace.pdf.pageNumber': '페이지 번호',
'workspace.pdf.pageOfTotal': '{total}페이지 중 {page}페이지',
'workspace.pdf.pageFailed': '이 페이지를 그릴 수 없습니다.',
'workspace.sheet.tabs': '워크시트',
'workspace.sheet.truncated': '처음 {rows}행, {columns}열만 표시합니다.',
'workspace.sheet.showMoreRows': '행 더 보기',
'workspace.sheet.empty': '이 워크시트는 비어 있습니다.',
'workspace.previewLineLimit': '불러온 {total}줄 중 처음 {count}줄을 표시합니다.',
'workspace.previewAllLines': '불러온 {total}줄을 모두 표시합니다.',
'workspace.showAllLoadedLines': '불러온 줄 모두 표시',
'workspace.collapsePreview': '미리 보기 접기',
'workspace.addSelectionToChat': '채팅에 추가',
'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.general': '일반',
'settings.general.pageDescription': '모양, 언어, 그리고 Agent의 기본 동작.',
'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.avatarAlt': '{name} 아바타',
'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': '오류가 진단에 기록되었습니다.',
'errorBoundary.item': '이 항목을 표시할 수 없습니다. 오류가 진단에 기록되었습니다.',
// 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.officialModelsTitle': 'OAuth 모델 매핑',
'settings.providers.officialModelsDesc': '각 Claude 모델 별칭에 사용할 OAuth 모델을 선택합니다. 목록은 로그인한 공급자 계정에서 가져옵니다.',
'settings.providers.officialModelsAvailableGroup': '사용 가능한 OAuth 모델',
'settings.providers.officialModelsPick': 'OAuth 모델 목록에서 {label} 선택',
'settings.providers.officialModelsNoMatches': '일치하는 OAuth 모델이 없습니다. 모델 ID를 직접 입력할 수 있습니다.',
'settings.providers.officialModelsSave': '모델 매핑 저장',
'settings.providers.officialModelsSaved': '모델 매핑이 저장되었습니다',
'settings.providers.officialModelsLoadError': 'OAuth 모델 매핑을 불러올 수 없습니다.',
'settings.providers.officialModelsSaveError': 'OAuth 모델 매핑을 저장할 수 없습니다.',
'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.new': '신규',
'settings.providers.sponsor': '스폰서',
'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.fableModel': 'Fable 모델',
'settings.providers.haikuModel': 'Haiku 모델',
'settings.providers.sonnetModel': 'Sonnet 모델',
'settings.providers.opusModel': 'Opus 모델',
'settings.providers.model1mSupportShort': '1M',
'settings.providers.model1mSupportAria': '1M 컨텍스트 지원: {slot}',
'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.fableModelPlaceholder': '비워 두면 Claude Code가 결정',
'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.multiProtocolBadge': '멀티 프로토콜',
'settings.providers.apiFormatPerModelHint': '이 프리셋은 모델별로 프로토콜을 선택하므로 이 항목은 고정됩니다',
'settings.providers.proxyHint': '요청은 로컬 프록시를 통해 변환됩니다',
'settings.providers.apiFormatOverrideHint': '프로토콜을 변경했습니다. 프리셋 기본 URL이 해당 프로토콜을 지원하지 않을 수 있으니 호환되는 엔드포인트를 지정하세요',
'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.supportsNestedToolResultMedia': '도구 결과의 미디어 보존',
'settings.providers.nestedToolResultMediaDesc': 'Anthropic 호환 엔드포인트가 중첩 미디어를 지원하면 이미지와 파일을 tool result 안에 유지합니다. 중첩 미디어를 표시할 수 없는 타사 엔드포인트에서는 이 옵션을 끄면 이미지와 파일이 독립 콘텐츠 블록으로 올라갑니다.',
'settings.providers.nestedToolResultMediaUnsupported': 'Anthropic Messages 공급자만 도구 결과의 중첩 미디어를 설정할 수 있습니다.',
'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, Feishu, WeChat, DingTalk, WhatsApp, WeCom, QQ, Slack을 통해 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': '연결된 플랫폼의 개인 채팅에서 이 코드를 봇에 보내세요. Feishu, WeChat, DingTalk, WhatsApp, WeCom, QQ는 먼저 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 > IM 연동 —— Feishu QR 봇 생성, WeCom, QQ, Slack
'settings.adapters.wecom': 'WeCom',
'settings.adapters.qq': 'QQ',
'settings.adapters.slack': 'Slack',
'settings.adapters.platform.wecom': 'WeCom',
'settings.adapters.platform.qq': 'QQ',
'settings.adapters.platform.slack': 'Slack',
'settings.adapters.feishuQrTitle': 'QR 코드로 Feishu 봇 만들기',
'settings.adapters.feishuQrDesc': 'Feishu 모바일 앱으로 스캔하세요. 확인하면 봇이 생성되고 App ID와 App Secret이 여기에 저장됩니다. 오픈 플랫폼에서 직접 설정할 필요가 없습니다.',
'settings.adapters.feishuStartAuth': 'QR로 생성',
'settings.adapters.feishuRebind': '다시 스캔',
'settings.adapters.feishuUnbindApp': 'Feishu 봇 연결 해제',
'settings.adapters.feishuUnbindAppConfirm': '이 Feishu 봇의 연결을 해제할까요? 해제하면 다시 스캔하거나 자격 증명을 입력해야 Feishu에서 메시지를 주고받을 수 있습니다.',
'settings.adapters.feishuQrAlt': 'Feishu 인증 QR 코드',
'settings.adapters.feishuWaiting': 'Feishu 스캔을 기다리는 중...',
'settings.adapters.feishuBindSuccess': 'Feishu 봇을 생성하고 연결했습니다.',
'settings.adapters.feishuAuthFailed': 'Feishu QR 인증에 실패했습니다.',
'settings.adapters.feishuUnbound': 'Feishu 연결을 해제했습니다.',
'settings.adapters.feishuUnbindFailed': 'Feishu 연결 해제에 실패했습니다.',
'settings.adapters.wecomQrTitle': 'QR 코드로 WeCom 봇 만들기',
'settings.adapters.wecomQrDesc': 'WeCom으로 스캔해 AI 봇을 만듭니다. Bot ID와 Secret이 자동 저장되고 어댑터가 재시작됩니다.',
'settings.adapters.wecomBind': 'QR로 연결',
'settings.adapters.wecomRebind': '다시 스캔',
'settings.adapters.wecomUnbindBot': '봇 계정 연결 해제',
'settings.adapters.wecomUnbindBotConfirm': '이 WeCom 봇의 연결을 해제할까요? 해제하면 다시 스캔해야 WeCom에서 메시지를 주고받을 수 있습니다.',
'settings.adapters.wecomQrAlt': 'WeCom 인증 QR 코드',
'settings.adapters.wecomWaiting': 'WeCom 스캔을 기다리는 중...',
'settings.adapters.wecomBindSuccess': 'WeCom 봇을 연결했습니다.',
'settings.adapters.wecomBindFailed': 'WeCom 연결에 실패했습니다.',
'settings.adapters.wecomUnbound': 'WeCom 연결을 해제했습니다.',
'settings.adapters.wecomUnbindFailed': 'WeCom 연결 해제에 실패했습니다.',
'settings.adapters.wecomAllowedUsersPlaceholder': '예: zhangsan, lisi',
'settings.adapters.wecomAllowedUsersHint': 'WeCom userid를 쉼표로 구분해 입력합니다. 비워 두면 페어링된 사용자만 허용됩니다.',
'settings.adapters.qqQrTitle': 'QR 코드로 QQ 봇 만들기',
'settings.adapters.qqQrDesc': 'QQ 모바일 앱으로 스캔해 인증합니다. AppID와 AppSecret이 자동 저장되고 어댑터가 재시작됩니다.',
'settings.adapters.qqBind': 'QR로 연결',
'settings.adapters.qqRebind': '다시 스캔',
'settings.adapters.qqUnbindBot': '봇 계정 연결 해제',
'settings.adapters.qqUnbindBotConfirm': '이 QQ 봇의 연결을 해제할까요? 해제하면 다시 스캔해야 QQ에서 메시지를 주고받을 수 있습니다.',
'settings.adapters.qqQrAlt': 'QQ 인증 QR 코드',
'settings.adapters.qqWaiting': 'QQ 스캔을 기다리는 중...',
'settings.adapters.qqBindSuccess': 'QQ 봇을 연결했습니다.',
'settings.adapters.qqBindFailed': 'QQ 연결에 실패했습니다.',
'settings.adapters.qqUnbound': 'QQ 연결을 해제했습니다.',
'settings.adapters.qqUnbindFailed': 'QQ 연결 해제에 실패했습니다.',
'settings.adapters.qqAllowedUsersPlaceholder': '예: A1B2C3D4E5F6',
'settings.adapters.qqAllowedUsersHint': 'QQ 사용자 openid를 쉼표로 구분해 입력합니다. 비워 두면 페어링된 사용자만 허용됩니다.',
'settings.adapters.slackCreateAppTitle': 'Slack 앱 만들기',
'settings.adapters.slackCreateAppDesc': 'Slack에는 QR 흐름이 없어 앱 매니페스트를 사용합니다. 아래 버튼을 누르면 스코프와 Socket Mode가 미리 채워진 생성 페이지가 열립니다.',
'settings.adapters.slackCreateAppAction': '매니페스트로 앱 만들기',
'settings.adapters.slackStepCreate': '생성 페이지를 열고 매니페스트를 확인한 뒤 앱을 만듭니다.',
'settings.adapters.slackStepInstall': '앱을 워크스페이스에 설치하고 Bot Token(xoxb-로 시작)을 복사합니다.',
'settings.adapters.slackStepTokens': 'Basic Information에서 App-Level Token(xapp-로 시작, connections:write 필요)을 생성해 둘 다 아래에 붙여 넣습니다.',
'settings.adapters.slackManifestToggle': '앱 매니페스트 JSON 보기',
'settings.adapters.slackManifestFailed': 'Slack 앱 매니페스트를 불러오지 못했습니다.',
'settings.adapters.slackBotToken': 'Bot Token',
'settings.adapters.slackBotTokenPlaceholder': 'xoxb-로 시작',
'settings.adapters.slackAppToken': 'App-Level Token',
'settings.adapters.slackAppTokenPlaceholder': 'xapp-로 시작, connections:write 필요',
'settings.adapters.slackAllowedUsersPlaceholder': '예: U01ABCDEF, U02GHIJKL',
'settings.adapters.slackUnbindApp': 'Slack 연결 해제',
'settings.adapters.slackUnbound': 'Slack 연결을 해제했습니다.',
'settings.adapters.slackUnbindFailed': 'Slack 연결 해제에 실패했습니다.',
'settings.adapters.slackUnbindAppConfirm': '이 Slack 앱의 연결을 해제할까요? 해제하면 토큰을 다시 입력해야 Slack에서 메시지를 주고받을 수 있습니다.',
// 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.mcp.toast.syncFailed': '채팅 동기화 실패: {error}',
'settings.mcp.toast.syncNotRunning': '현재 채팅이 실행 중이 아닙니다. 시작 시 설정이 적용됩니다.',
'settings.mcp.toast.syncDifferentProject': '현재 채팅은 다른 프로젝트를 사용하므로 도구가 업데이트되지 않았습니다.',
'settings.mcp.toast.syncNoSession': '선택한 채팅이 없습니다. 설정을 저장했습니다.',
'settings.mcp.toast.syncUnconfirmed': '현재 채팅 업데이트가 확인되지 않았습니다.',
// 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.community': 'cc-haha 그룹 참여',
'settings.about.communityDesc': 'WeCom 그룹입니다. QR 코드를 스캔해 참여하세요. 대화는 주로 중국어로 진행됩니다',
'settings.about.communityHint': 'WeChat 또는 WeCom으로 스캔해 참여',
'settings.about.communityQrAlt': 'cc-haha WeCom 사용자 그룹 QR 코드',
'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.statusCheckFailed': '상태를 확인하지 못했습니다.',
'settings.computerUse.description': 'Claude가 스크린샷을 찍고 클릭, 입력하며 컴퓨터를 제어할 수 있도록 허용합니다. Python 3가 필요합니다. macOS에서는 접근성 권한도 필요합니다.',
'settings.computerUse.enabledToggle': '사용',
'settings.computerUse.enableRiskTitle': 'Computer Use를 활성화할까요?',
'settings.computerUse.enableRiskSummary': 'Computer Use는 Claude에게 이 컴퓨터를 폭넓게 제어할 권한을 부여합니다. 다음 위험을 이해하고 동의하는 경우에만 활성화하세요.',
'settings.computerUse.enableRiskScreen': 'Claude는 스크린샷을 찍고 화면의 민감한 정보나 개인정보를 볼 수 있습니다.',
'settings.computerUse.enableRiskActions': 'Claude는 클릭, 입력, 클립보드와 시스템 단축키를 사용하고 콘텐츠를 전송, 변경 또는 삭제할 수 있습니다.',
'settings.computerUse.enableRiskAllApps': '활성화하면 Claude는 앱별 권한을 다시 묻지 않고 지원되는 모든 앱을 제어할 수 있습니다. 제품 안전 제한은 계속 적용됩니다.',
'settings.computerUse.enableRiskStop': '중지 버튼이나 Esc로 언제든 제어를 중단하고 여기에서 Computer Use를 비활성화할 수 있습니다.',
'settings.computerUse.enableRiskMacos': 'macOS에서는 시스템 수준의 손쉬운 사용 및 화면 기록 권한이 계속 필요합니다. 이 운영 체제 권한은 앱 승인과 별개입니다.',
'settings.computerUse.enableRiskConfirm': 'Computer Use 활성화',
'settings.computerUse.disabledHint': '컴퓨터 사용이 꺼져 있습니다. 새 세션은 computer-use MCP 서버를 주입하거나 데스크톱 제어 도구를 코딩 에이전트에 노출하지 않습니다.',
'settings.computerUse.notSupported': '컴퓨터 사용은 macOS와 Windows에서만 지원됩니다.',
'settings.computerUse.macosUnsupportedTitle': 'Computer Use에는 macOS {version} 이상이 필요합니다',
'settings.computerUse.macosUnsupportedDetail': '이 Mac은 macOS {current}을 실행 중입니다. 다른 기능은 계속 사용할 수 있습니다.',
'settings.computerUse.unknownVersion': '알 수 없는 버전',
'settings.computerUse.macosDetectionFailedTitle': 'macOS 버전을 확인할 수 없습니다',
'settings.computerUse.macosDetectionFailedDetail': '이 Mac이 macOS 14.4 요구 사항을 충족하는지 확인하지 못했습니다. 상태를 다시 확인하세요.',
'settings.computerUse.nativeUnavailableTitle': 'Computer Use 런타임을 사용할 수 없습니다',
'settings.computerUse.nativeUnavailableDetail': '네이티브 런타임이 없거나 준비하지 못했습니다. 앱을 다시 설치하거나 업데이트한 뒤 다시 확인하세요.',
'settings.computerUse.configLoadFailed': '저장된 Computer Use 설정을 불러올 수 없습니다.',
'settings.computerUse.configSaveFailed': 'Computer Use 설정을 저장하지 못해 이전 값으로 복원했습니다.',
'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.permCheckFailed': '확인 실패',
'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.sessionRetentionTitle': '세션 기록',
'settings.general.sessionRetentionDescription': '세션 기록을 이 기기에 보관하는 기간입니다. 값을 줄이면 오래된 기록이 즉시 삭제되므로 확인을 요청합니다.',
'settings.general.sessionRetentionLabel': '세션 기록 보관 기간',
'settings.general.sessionRetentionCurrent': '현재: {days}일',
'settings.general.sessionRetentionCurrentOff': '현재: 기록 저장 안 함',
'settings.general.sessionRetentionUnit': '일',
'settings.general.sessionRetentionHint': '기본값은 365일입니다. 0으로 설정하면 세션 내용을 기록하지 않고 기존 기록도 모두 삭제합니다.',
'settings.general.sessionRetentionRequired': '일수를 입력하세요.',
'settings.general.sessionRetentionRange': '0에서 {max} 사이의 정수를 입력하세요.',
'settings.general.sessionRetentionSave': '저장',
'settings.general.sessionRetentionSaved': '보관 기간을 업데이트하고 만료된 세션 파일 {count}개를 삭제했습니다.',
'settings.general.sessionRetentionSavedPartial': '보관 기간을 업데이트했습니다. 만료된 세션 파일 {count}개를 삭제했고 {errors}개는 삭제하지 못했습니다.',
'settings.general.sessionRetentionConfirmTitle': '세션 기록 보관 기간을 변경할까요?',
'settings.general.sessionRetentionConfirmDelete': '{days}일보다 오래된 세션 기록을 영구적으로 삭제합니다. 되돌릴 수 없습니다.',
'settings.general.sessionRetentionConfirmDisable': '0으로 설정하면 새 세션 내용을 기록하지 않고 기존 기록도 모두 영구적으로 삭제합니다. 되돌릴 수 없습니다.',
'settings.general.sessionRetentionPreview': '이 설정에서는 현재 파일 {count}개가 삭제됩니다.',
'settings.general.sessionRetentionPreviewUnavailable': '집계에 실패했습니다. 계속 진행할 수 있습니다.',
'settings.general.sessionRetentionConfirmAction': '삭제하고 저장',
'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.migration.title': '기존 데이터 이전',
'settings.general.migration.description': '현재 세션, 설정, Skills, 플러그인과 작업을 복사하고 검증한 후 디렉터리를 전환하고 다시 시작합니다. 기존 데이터는 유지됩니다.',
'settings.general.migration.choose': '기존 데이터 이전…',
'settings.general.migration.chooseTitle': '데이터 이전 대상 선택',
'settings.general.migration.confirmTitle': '데이터를 이전하고 다시 시작할까요?',
'settings.general.migration.confirm': '이전 후 다시 시작',
'settings.general.migration.source': '기존 디렉터리',
'settings.general.migration.target': '새 디렉터리',
'settings.general.migration.preview': '파일 {files}개 · {size}',
'settings.general.migration.activeTasks': '실행 중인 작업 {count}개가 중지됩니다.',
'settings.general.migration.stopWarning': '복사 전에 실행 중인 대화와 백그라운드 작업을 중단하고 현재 상태를 저장합니다. 자동으로 재개하지 않습니다. 검증이 완료되면 앱이 다시 시작됩니다.',
'settings.general.migration.externalWarning': '계속하기 전에 기존 디렉터리를 사용하는 다른 Claude Code 또는 cc-haha 프로세스를 종료하세요. 앱 설치 디렉터리 밖의 빈 폴더를 선택하세요.',
'settings.general.migration.running': '데이터 이전 중',
'settings.general.migration.stagePreparing': '이전 준비 중…',
'settings.general.migration.stageQuiescing': '작업 중지 및 데이터 저장 중…',
'settings.general.migration.stageCopying': '데이터 복사 중…',
'settings.general.migration.stageVerifying': '복사된 데이터 검증 중…',
'settings.general.migration.stageCommitting': '데이터 디렉터리 전환 중…',
'settings.general.migration.stageRestarting': '앱 다시 시작 중…',
'settings.general.migration.progress': '파일 {files}/{totalFiles}개 · {bytes}/{totalBytes}',
'settings.general.migration.cancel': '이전 취소',
'settings.general.migration.cancelling': '이전 취소 중…',
'settings.general.migration.completed': '데이터 이전 완료',
'settings.general.migration.cancelled': '이전이 취소되었습니다. 기존 데이터 디렉터리는 변경되지 않았습니다.',
'settings.general.migration.failed': '이전에 실패했습니다. 기존 데이터 디렉터리는 유지됩니다.',
'settings.general.migration.retained': '기존 디렉터리는 유지됩니다. 새 디렉터리의 세션과 설정을 확인한 후 기존 데이터를 수동으로 정리하세요.',
'settings.general.migration.cli': '이 변경은 데스크톱 앱에만 적용됩니다. 별도로 실행하는 CLI는 CLAUDE_CONFIG_DIR을 새 위치로 설정하지 않으면 기존 디렉터리를 계속 사용합니다.',
'settings.general.migration.openSource': '기존 디렉터리 열기',
'settings.general.migration.openTarget': '새 디렉터리 열기',
'settings.general.migration.environment': '앱 내 이전을 사용하려면 시작 환경에서 CLAUDE_CONFIG_DIR을 제거하세요.',
'settings.general.migration.statusError': '이전 진행 상황을 읽을 수 없습니다. 자동으로 다시 연결하는 중…',
'settings.general.migration.error': '데이터 이전을 계속할 수 없습니다.',
// 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.agentTeamsTitle': 'Agent Teams',
'settings.general.agentTeamsDescription': '여러 에이전트가 작업을 나누고 팀으로 협력할 수 있습니다.',
'settings.general.agentTeamsEnabled': 'Agent Teams 사용',
'settings.general.agentTeamsHint': '새 세션에 적용됩니다. 기존 세션에 적용하려면 앱을 다시 시작하세요.',
'settings.general.autoQuestionTitle': '질문 자동 응답',
'settings.general.autoQuestionDescription': 'AskUserQuestion에 응답이 없어도 세션을 계속 진행합니다.',
'settings.general.autoQuestionEnabled': '대기 시간이 지나면 자동으로 답변',
'settings.general.autoQuestionHint': '명시된 추천 옵션을 우선 선택합니다. 없으면 소형 모델이 제시된 옵션 중에서 판단합니다. 판단할 수 없으면 계속 기다립니다.',
'settings.general.autoQuestionTimeout': '응답 전 대기 시간',
'settings.general.autoQuestionMinutes': '{count}분',
'settings.general.autoQuestionSaveFailed': '질문 자동 응답 설정을 저장하지 못했습니다.',
'settings.general.agentTeamsSaveFailed': 'Agent Teams 설정을 저장하지 못했습니다. 다시 시도하세요.',
'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': '새 요청은 기록되지 않습니다. 기존 기록은 각 세션의 \'궤적\' 보기에서 \'원본 요청\'으로 계속 볼 수 있습니다.',
'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초입니다. 로컬 모델의 생각 시간이 길면 14400초(4시간) 이상으로 설정할 수 있습니다. 값을 늘리면 단일 스트리밍 응답의 총 시간 상한도 함께 늘어납니다(최소 600초).',
'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.heroTitle': '오늘 {project}에서 무엇을 할까요?',
'empty.heroTitleNoProject': '오늘은 무엇을 할까요?',
'empty.heroSubtitle': 'Claude는 프로젝트를 읽고 코드를 수정하며 명령을 실행할 수 있습니다.',
'empty.suggestions': '추천',
'empty.suggestion.explainRepo': '이 저장소의 구조를 설명해 줘',
'empty.suggestion.fixTests': '실패하는 테스트를 고쳐 줘',
'empty.suggestion.reviewChanges': '커밋하지 않은 변경 사항을 검토해 줘',
'empty.suggestion.newFeature': '새 기능을 만들어 줘',
'empty.recentTitle': '최근 세션',
'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.placeholderQuestionPending': '위 질문에 먼저 답해 주세요. Claude가 기다리고 있습니다.',
'chat.addFiles': '파일 또는 사진 추가',
'chat.composerTools': '입력 도구 열기',
'chat.capabilities.sectionAdd': '추가',
'chat.capabilities.sectionCapabilities': '기능',
'chat.capabilities.sectionCommands': '명령',
'chat.capabilities.searchPlaceholder': '스킬, 플러그인, 파일 검색…',
'chat.capabilities.empty': '일치하는 항목 없음',
'chat.capabilities.back': '뒤로',
'chat.capabilities.skills': '스킬',
'chat.capabilities.skillsDescription': '이 채팅에 스킬 추가',
'chat.capabilities.manageSkills': '스킬 관리',
'chat.capabilities.connectors': '커넥터',
'chat.capabilities.connectorsDescription': '연결된 서비스 사용',
'chat.capabilities.manageConnectors': '커넥터 관리',
'chat.capabilities.agents': 'Agent',
'chat.capabilities.agentsDescription': '지정한 Agent로 작업 실행',
'chat.capabilities.manageAgents': 'Agent 관리',
'chat.capabilities.teams': 'Agent Teams',
'chat.capabilities.teamsDescription': '여러 Agent가 하나의 목표에 협업',
'chat.capabilities.teamCreate': '채팅으로 팀 만들기',
'chat.capabilities.teamCreateDescription': '목표를 말하면 Agent가 분업',
'chat.capabilities.teamCreatePrompt': '다음 목표를 수행할 Agent 팀을 만들고, 역할을 나누어 협업해 주세요: ',
'chat.capabilities.teamMembers': '멤버 {count}명',
'chat.capabilities.computerUse': '컴퓨터 조작',
'chat.capabilities.computerUseDescription': '이 컴퓨터의 앱을 Claude가 조작',
'chat.capabilities.computerUseUnsupported': '이 플랫폼에서는 사용 불가 — 설정 열기',
'chat.capabilities.computerUseToggle': '컴퓨터 조작 전환',
'chat.capabilities.workflows': '워크플로',
'chat.capabilities.workflowsDescription': '저장된 워크플로 실행',
'chat.capabilities.saveWorkflow': '이 세션을 워크플로로 저장',
'chat.dropFilesTitle': '여기에 파일을 드롭하세요',
'chat.dropFilesHint': '파일 경로로 첨부됩니다.',
'chat.workspaceReferencesOnly': '작업 공간 참조 {count}개를 추가했습니다',
'chat.contextReferencesOnly': '참조 {count}개를 추가했습니다',
'chat.addSelectionToChat': '채팅에 추가',
'chat.imageLoadFailed': '이미지를 불러올 수 없습니다',
'chat.imageLoadFailedHint': '파일이 손상되었거나 로컬 서버가 응답하지 않았습니다.',
'chat.imageCountOne': '이미지 {count}개',
'chat.imageCountOther': '이미지 {count}개',
'chat.retryImage': '이미지 다시 시도: {name}',
'chat.imageRetrying': '다시 시도 중…',
'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.remaining': '남음',
'contextIndicator.window': '창',
'contextIndicator.loading': '컨텍스트 사용량 불러오는 중...',
'contextIndicator.pendingDetail': '컨텍스트 사용량은 세션 시작 후에 계산됩니다.',
'contextIndicator.unavailable': '없음',
'contextIndicator.unavailableDetail': '이 세션에서는 컨텍스트 사용량을 사용할 수 없습니다.',
'contextIndicator.updatedUnknown': '아직 새로 고치지 않음',
'contextIndicator.updatedNow': '방금 업데이트됨',
'contextIndicator.updatedMinutes': '{count}분 전 업데이트됨',
'contextIndicator.estimate': '추정',
'contextIndicator.breakdown': '구성 상세',
'contextIndicator.sessionCacheHit': '캐시 적중',
'contextIndicator.sessionSpeed': '생성 속도',
'contextIndicator.sessionCost': '세션 비용',
'contextIndicator.sessionSpeedUnit': 'tok/s',
'chat.navigate': '이동',
'chat.select': '선택',
'chat.dismiss': '닫기',
'chat.stopTitle': '생성 중지 (Cmd+.)',
'chat.generationStopped': '중지됨',
'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.conversationRewindAction': '대화 되돌리기',
'chat.conversationRewindConfirmBody': '대화를 이 턴 이전으로 되감습니다. 디스크의 파일은 변경되지 않습니다.',
'chat.editMessage': '편집 후 다시 보내기',
'chat.editMessageInputLabel': '편집한 메시지',
'chat.editMessageSend': '보내기',
'chat.editMessageWaitForTurn': '이 턴이 끝나면 편집할 수 있습니다.',
'chat.editMessageWaitForBackgroundTasks': '실행 중인 백그라운드 작업이 끝나거나 중지되면 편집할 수 있습니다.',
'chat.editMessageCheckingCheckpoints': '이 메시지로 되감을 수 있는지 확인하는 중…',
'chat.editMessageCheckpointsUnavailable': '이 세션의 체크포인트를 불러올 수 없어 지금은 편집할 수 없습니다.',
'chat.editAttachmentUnavailable': '첨부 파일 {count}개를 더 이상 읽을 수 없어 다시 보낼 때 제외됩니다.',
'chat.editResendConfirmTitle': '편집 후 다시 보낼까요?',
'chat.editResendDropsTurns': '이 메시지 이후의 대화 {count}턴이 삭제된 뒤 편집한 메시지가 전송됩니다.',
'chat.editResendLatestBody': '이 턴의 답변이 삭제된 뒤 편집한 메시지가 전송됩니다.',
'chat.editResendRestoreChoice': '이 턴부터 파일 {count}개가 변경되었습니다. 대화만 되돌리고 디스크의 파일은 유지하거나, 해당 파일도 함께 복원할 수 있습니다.',
'chat.editResendFilesUntouched': '디스크의 파일은 변경되지 않습니다.',
'chat.editResendConversationOnly': '대화만 되돌리고 보내기',
'chat.editResendWithCode': '코드와 대화를 되돌리고 보내기',
'chat.editResendConversation': '대화를 되돌리고 보내기',
'chat.editResendFailed': '편집한 메시지를 다시 보내지 못했습니다. 대화는 변경되지 않았습니다. 세부 정보: {detail}',
'chat.editResendPrefilled': '대화는 되돌렸지만 편집한 메시지를 자동으로 보내지 못해 입력창에 다시 넣었습니다.',
'chat.workspaceChangesFallbackLabel': '워크스페이스 변경 파일',
'chat.workspaceChangesFallbackTitle': '현재 워크스페이스 변경 ({count})',
'chat.workspaceChangesFallbackExplanation': '대화가 너무 길어 턴별 미리보기나 파일 실행 취소를 사용할 수 없습니다. 이 목록은 현재 워크스페이스의 누적 변경을 표시하며 다른 턴이나 이 대화 밖의 변경도 포함할 수 있습니다.',
'chat.workspaceChangesFallbackUnavailable': '대화가 너무 길어 턴별 미리보기나 파일 실행 취소를 사용할 수 없습니다. 현재 워크스페이스 변경을 확인할 수 없어 파일 목록을 표시할 수 없습니다.',
'chat.workspaceChangesFallbackEmpty': '현재 워크스페이스 변경을 찾지 못했습니다.',
'chat.workspaceChangesFallbackOpenFile': '{path}의 현재 내용 열기',
'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.turnChangesExpand': '변경된 파일 {count}개 펼치기',
'chat.turnChangesCollapse': '변경된 파일 접기',
'chat.turnChangesShowLess': '적게 보기',
// ─── Streaming Indicator ──────────────────────────────────────
'streaming.thinking': '사고 중',
'streaming.running': '실행 중',
'streaming.working': '작업 중',
// ─── Permission Dialog ──────────────────────────────────────
'permission.allowEditFile': '{actor}가 {fileName}을(를) {toolName}하도록 허용하시겠습니까?',
'permission.allowEditFileGeneric': '{actor}가 이 파일을 {toolName}하도록 허용하시겠습니까?',
'permission.allowBash': '{actor}가 이 명령을 실행하도록 허용하시겠습니까?',
'permission.allowTool': '{actor}가 {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.planApproveAcceptEdits': '승인 후 편집 자동 수락',
'permission.planApproveBypass': '승인 후 권한 건너뛰기',
'permission.planKeepPlanning': '계속 계획하기',
'permission.planFeedbackPlaceholder': 'Claude에게 변경할 내용을 알려주세요',
'permission.planExecutionModel': '실행 모델',
'permission.planExecutionModelPending': '승인 후 적용',
'permission.planEmpty': '계획 내용이 없습니다.',
'permission.planApproved': '계획 승인됨',
'permission.planRejected': '계획 거부됨',
// ─── Computer Use Approval ──────────────────────────────────────
// ─── Ask User Question ──────────────────────────────────────
'question.needsInput': 'Claude가 입력을 필요로 합니다',
'question.answered': '응답함',
'question.autoAnswered': '자동 응답함',
'question.completed': '완료',
'question.customResponse': '또는 직접 응답을 입력하세요:',
'question.typePlaceholder': '답변 입력...',
'question.submit': '제출',
'question.next': '다음',
'question.answeredPrefix': '응답: ',
'question.resultPrefix': '결과: ',
'question.chatAboutThis': 'Claude와 상의하기',
'question.chatAboutThisHint': '적합한 선택지가 없나요? Claude가 다시 물어보도록 넘깁니다. 이미 입력한 답변도 함께 전달됩니다',
'question.chatRequested': '대화로 전환했습니다. Claude가 이어서 물어봅니다',
'question.chatBadge': '상의 중',
'question.expiredBadge': '만료됨',
'question.expiredNotice': '이 질문은 더 이상 답변을 기다리지 않습니다. 보내면 Claude에게 새 메시지로 전달됩니다.',
'question.sendAsMessage': '새 메시지로 보내기',
'question.sentAsMessagePrefix': '새 메시지로 전송됨: ',
// ─── 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': '에이전트 결과',
'agentActivity.loading': '도구 활동을 불러오는 중…',
'agentActivity.failed': '이 실행의 도구 활동을 불러오지 못했습니다.',
'agentActivity.retry': '다시 시도',
'agentActivity.truncated': '이 실행의 처음과 끝만 표시합니다. 전체 기록은 실행 화면에서 확인할 수 있습니다.',
'toolGroup.searchedWeb': '웹을 검색했습니다',
'toolGroup.fetchedOne': '페이지 1개를 가져왔습니다',
'toolGroup.fetchedMany': '페이지 {count}개를 가져왔습니다',
'toolGroup.separator': ', ',
'toolGroup.updatedTodos': '할 일 목록 업데이트',
'toolGroup.managedTasks': '작업 관리',
'toolVerb.search': '검색',
'toolVerb.read': '읽기',
'toolVerb.edit': '편집',
'toolVerb.create': '생성',
'toolVerb.run': '실행',
'toolVerb.updateTodos': '할 일 목록 업데이트',
'toolVerb.createTask': '작업 생성',
'toolVerb.updateTask': '작업 업데이트',
'toolVerb.viewTasks': '작업 보기',
'toolVerb.searchWeb': '웹 검색',
'toolVerb.fetchWeb': '웹 페이지 읽기',
'toolVerb.agent': '하위 에이전트 실행',
'toolVerb.skill': '스킬 사용',
'tool.exitCode': '종료 코드 {code}',
'tool.fileCountSingular': '파일 {count}개',
'tool.fileCountPlural': '파일 {count}개',
'tool.matchCountSingular': '{count}곳',
'tool.matchCountPlural': '{count}곳',
'tool.itemCountSingular': '{count}개 항목',
'tool.itemCountPlural': '{count}개 항목',
'agentStatus.toolUses': '호출 {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': '하위 디렉터리가 없습니다',
'dirPicker.searchProjects': '프로젝트 검색…',
'dirPicker.noMatches': '일치하는 프로젝트가 없습니다',
// ─── 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.inspector.failureReason': '원인',
'agentTeams.model.label': '모델',
'agentTeams.model.inheritFromLead': '리드로부터 상속 · {model}',
'agentTeams.model.unknown': '알 수 없음',
'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.member.retrying': '자동 재시도 {attempt}/{max}',
'agentTeams.member.retryInSeconds': '{n}초 후 자동 재시도',
'agentTeams.member.retryInMinutes': '약 {n}분 후 자동 재시도',
'agentTeams.member.retryNow': '곧 자동 재시도',
'agentTeams.member.stoppedHint': '메시지를 보내면 저장된 대화에서 다시 시작합니다',
'agentTeams.member.errorHint': '문제를 해결한 뒤 메시지를 보내면 작업을 이어갑니다',
'agentTeams.member.stalledOnTask': '{state} · #{task}에서 멈춤',
'agentTeams.inspector.groupRunning': '진행 중',
'agentTeams.inspector.groupUpcoming': '다음 작업',
'agentTeams.inspector.groupCompleted': '완료',
'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.incompleteHistory': '일부 기록을 읽을 수 없어 확인 가능한 내용을 표시합니다. 새로고침하여 다시 시도하세요.',
'subagentRun.refresh': 'SubAgent 실행 새로고침',
'subagentRun.backToParent': '상위 세션으로 돌아가기',
'subagentRun.loading': 'SubAgent 실행을 불러오는 중...',
'subagentRun.source': '소스',
'subagentRun.agent': 'Agent',
'subagentRun.model': '모델',
'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.apiTokensWithCache': '{count} tokens(캐시 포함)',
'session.apiTokenBreakdown': 'API 사용량: {total} tokens · 입력 {input} · 출력 {output} · 캐시 읽기 {cacheRead} · 캐시 쓰기 {cacheWrite}',
'session.historyLoadFailed': '세션 기록을 불러오지 못했습니다.',
'session.historyTooLarge': '이 세션 기록이 너무 커서 여기에서 불러올 수 없습니다.',
'session.workspaceUnavailable': '작업 공간을 사용할 수 없습니다: {dir}',
'session.worktreeRemoved': '임시 작업 공간이 정리되었습니다. 기록은 계속 볼 수 있습니다. {dir}에서 새 세션을 시작해 계속하세요.',
'session.timeJustNow': '방금',
'session.timeMinutes': '{n}분 전',
'session.timeHours': '{n}시간 전',
'session.timeDays': '{n}일 전',
'trace.noResponse': '응답 본문이 캡처되지 않았습니다',
'trace.requestBody': '요청 본문',
'trace.requestHeaders': '요청 헤더',
'trace.responseBody': '응답 본문',
'trace.responseHeaders': '응답 헤더',
'trace.toolResult': '도구 결과',
'trace.truncatedShort': '잘림',
'trace.noData': '데이터 없음',
'trace.toolError': '도구 오류',
'trace.section.response': '응답',
'trace.section.messages': '메시지',
'trace.section.systemPrompt': '시스템 프롬프트',
'trace.section.context': '주입된 컨텍스트',
'trace.context.systemReminder': '시스템 알림',
'trace.context.deferredTools': '지연 도구',
'trace.context.other': '주입',
'trace.section.tools': '도구',
'trace.section.parameters': '파라미터',
'trace.section.raw': '원본 데이터',
'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.imageBlock': '[이미지]',
'trace.detail.stack': '스택',
// ─── 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': '자동 모드는 현재 요금제에서 사용할 수 없습니다.',
'businessError.upstream_stream_interrupted': '상위 모델 제공업체가 응답이 끝나기 전에 연결을 끊었고, 자동 재시도로도 복구되지 않았습니다. 대개 제공업체나 네트워크 경로의 시간 초과 또는 불안정 때문이며, 컨텍스트 한도 오류가 아닙니다. "계속"을 보내 이어서 진행하게 하거나, 잠시 후 다시 시도하거나 제공업체를 바꿔 보세요.',
// ─── 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.rateLimit': '사용량 또는 요청 한도에 도달',
'chat.retry.networkError': '네트워크 오류',
'chat.retry.waiting': '{seconds}초 대기 중',
'chat.retry.waitingLong': '약 {duration} 후 다시 시도',
'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.jumpToAttention': '다음 대기 중인 세션으로 이동 ({count}개)',
'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}',
'market.catalog.summary': '엄선된 스킬 {count}개',
'market.catalog.updated': '목록 업데이트 {date}',
'market.catalog.liveResults': '실시간 결과 {count}개',
'market.scope.catalogHint': '엄선된 스킬에서만 검색하고 있습니다.',
'market.scope.marketHint': 'ClawHub와 SkillHub 전체를 실시간으로 검색하고 있습니다. 결과는 엄선되지 않았습니다.',
'market.scope.searchMarket': '모든 마켓에서 “{q}” 검색',
'market.scope.backToCatalog': '엄선 목록으로',
'market.scope.notCurated': '엄선되지 않음',
'market.scope.livePlaceholder': '모든 마켓 검색 — Enter로 검색',
'market.category.label': '카테고리',
'market.category.all': '전체',
'market.featured': '추천',
'market.securityShort.verified': '인증됨',
'market.securityShort.benign': '스캔 통과',
'market.securityShort.unknown': '미스캔',
'market.securityShort.flagged': '주의',
'market.detail.security': '보안 보고서',
'market.detail.changelog': '변경 기록',
'market.detail.whenToUse': '실행되는 경우',
'market.detail.info': '정보',
'market.detail.sourcePage': '소스 페이지',
'market.detail.updatedOn': '{date} 업데이트',
'market.detail.by': '작성자 {author}',
'market.detail.readingTime': '약 {minutes}분 분량',
'market.detail.scanReports': '스캔 결과',
'market.detail.noReports': '이 스킬에 대한 보안 스캔 결과가 상위 소스에 없습니다.',
'market.detail.scanDisclaimer': '스캔 결과는 상위 레지스트리에서 제공하며, 이 앱은 표시만 할 뿐 보증하지 않습니다. 설치는 작성자를 신뢰한다는 뜻입니다.',
'market.detail.securityNote': '큐레이터 메모',
'market.detail.noChangelog': '이 버전에 대한 릴리스 노트가 상위 소스에 없습니다.',
'market.detail.flaggedDot': '보안 스캔에서 주의로 표시됨',
'market.cap.title': '설치 전 확인: 이 스킬이 하는 일',
'market.cap.viewReport': '전체 보고서 →',
'market.cap.note': 'SKILL.md와 파일 목록에서 규칙으로 감지한 참고 정보입니다. 설치 시 스크립트는 실행되지 않습니다.',
'market.cap.shell': '명령 또는 스크립트 실행',
'market.cap.shell.detail': '{evidence}',
'market.cap.hooks': '훅 등록',
'market.cap.hooks.detail': '대상: {evidence}',
'market.cap.secrets': '비밀 값 필요',
'market.cap.secrets.detail': '읽기: {evidence}',
'market.cap.network': '네트워크 서비스 호출',
'market.cap.network.detail': '요청: {evidence}',
'market.cap.writes': '파일 쓰기',
'market.cap.writes.detail': '생성 또는 변경: {evidence}',
'market.cap.binaries': '로컬 명령 필요',
'market.cap.binaries.detail': '필요: {evidence}',
'market.cap.level.high': '높음',
'market.cap.level.medium': '중간',
'market.cap.level.low': '낮음',
'market.installConfirm.willGet': '이 스킬이 할 수 있는 일',
'market.installConfirm.ack': 'SKILL.md와 보안 보고서를 확인했으며 위 권한을 이해했습니다',
// ─── Window controls / diagram + code viewers ──────────────────────────────────────
'windowControls.minimize': '창 최소화',
'windowControls.maximize': '창 최대화',
'windowControls.restore': '창 이전 크기로 복원',
'windowControls.close': '창 닫기',
'mermaid.preview': '미리 보기',
'mermaid.zoomOut': '축소',
'mermaid.zoomIn': '확대',
'mermaid.fit': '맞춤',
'mermaid.fitDiagram': '다이어그램을 화면에 맞추기',
'mermaid.renderError': 'Mermaid 렌더링 오류',
'mermaid.rendering': '다이어그램을 렌더링하는 중…',
'mermaid.previewTitle': 'Mermaid 다이어그램',
'mermaid.previewHint': '확대/축소 버튼으로 다이어그램을 키울 수 있습니다. 미리 보기 안에서 드래그해 이동하거나 트랙패드, 마우스 휠, 스크롤바를 사용하세요. Ctrl/Command를 누른 채 스크롤하면 확대/축소됩니다.',
'mermaid.inlineCanvas': 'Mermaid 인라인 캔버스',
'mermaid.previewCanvas': 'Mermaid 미리 보기 캔버스',
'codeViewer.collapse': '접기',
'codeViewer.showMoreLines': '{count}줄 더 보기',
'common.copy': '복사',
// ─── Browser Panel ──────────────────────────────────────
'browser.back': '뒤로',
'browser.forward': '앞으로',
'browser.reload': '새로고침',
'browser.addressPlaceholder': '주소 입력...',
'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.cleanupFailed': '선택을 중지하거나 초과 항목을 되돌릴 수 없습니다: {reason}',
'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': '예: 질문 또는 경로 목록',
'settings.tab.voice': '음성 입력',
'voice.settings.title': '음성 입력',
'voice.settings.description': 'cc-haha 서버를 실행 중인 이 컴퓨터의 로컬 음성 모델로 말한 내용을 입력창에 받아 적습니다. 오디오는 클라우드 서비스로 전송되지 않습니다.',
'voice.settings.loadFailed': '음성 입력 설정을 불러오지 못했습니다.',
'voice.settings.saveFailed': '설정을 저장하지 못했습니다. 다시 시도해 주세요.',
'voice.settings.actionFailed': '작업을 완료하지 못했습니다.',
'voice.settings.unsupported.title': '이 플랫폼에서는 아직 로컬 음성 인식을 지원하지 않습니다',
'voice.settings.unsupported.detail': '음성 입력에는 로컬 음성 런타임이 지원하는 플랫폼이 필요합니다.',
'voice.settings.enable.label': '음성 입력 사용',
'voice.settings.enable.description': '채팅 입력창 옆에 받아쓰기 버튼을 표시합니다. 녹음한 오디오는 cc-haha 서버를 실행 중인 컴퓨터에서 인식됩니다.',
'voice.settings.enable.needModel': '음성 입력이 켜져 있지만 음성 모델이 아직 다운로드되지 않았습니다. 아래에서 다운로드하세요. 자동으로 다운로드되지 않습니다.',
'voice.settings.engine.title': '인식 엔진',
'voice.settings.engine.description': '음성 모델을 선택하고 파일을 관리합니다.',
'voice.settings.engine.provider': '엔진',
'voice.settings.phase.unprepared': '다운로드 안 됨',
'voice.settings.phase.downloading': '다운로드 중',
'voice.settings.phase.verifying': '검증 중',
'voice.settings.phase.ready': '준비됨',
'voice.settings.phase.failed': '실패',
'voice.settings.phase.cancelled': '일시 중지됨',
'voice.settings.step.runtime': '음성 런타임 다운로드 중',
'voice.settings.step.model': '음성 모델 다운로드 중',
'voice.settings.step.vad': '음성 활동 감지 모델 다운로드 중',
'voice.settings.step.verify': '파일 검증 중',
'voice.settings.model.unprepared': '음성 모델이 아직 다운로드되지 않았습니다.',
'voice.settings.model.download': '다운로드',
'voice.settings.model.meta': '로컬 인식 · 약 {size}',
'voice.settings.model.downloading': '다운로드 중',
'voice.settings.model.progress': '{completed} / {total}',
'voice.settings.model.resumed': '이미 받은 {size}부터 이어받았습니다',
'voice.settings.model.source': '다운로드 출처: {source}',
'voice.settings.model.verifying': '다운로드한 파일을 검증하는 중…',
'voice.settings.model.ready': '로컬 모델이 준비되었습니다. 녹음할 때 자동으로 시작됩니다.',
'voice.settings.model.remove': '모델 삭제',
'voice.settings.model.removeTitle': '로컬 음성 모델을 삭제할까요?',
'voice.settings.model.removeBody': '다운로드한 런타임과 모델 파일을 삭제합니다. 음성 입력을 사용하려면 다시 다운로드해야 합니다.',
'voice.settings.model.cancelled': '일시 중지되었습니다. 이미 받은 부분은 보존되므로 언제든 이어서 받을 수 있습니다.',
'voice.settings.model.resume': '다운로드 이어받기',
'voice.settings.model.resumeHint': '이미 받은 부분은 보존됩니다. 네트워크가 복구되면 다시 시도하여 중단된 지점부터 이어받으세요.',
'voice.settings.failure.network': '다운로드 실패: 네트워크 연결 문제',
'voice.settings.failure.dns': '다운로드 실패: 다운로드 주소를 확인할 수 없습니다',
'voice.settings.failure.timeout': '다운로드 실패: 연결 시간이 초과되었습니다',
'voice.settings.failure.certificate': '다운로드 실패: 보안 연결을 확인할 수 없습니다',
'voice.settings.failure.http': '다운로드 실패: 서버가 오류를 반환했습니다',
'voice.settings.failure.integrity': '다운로드 실패: 파일 검증이 일치하지 않아 파일을 다시 받습니다',
'voice.settings.failure.storage': '다운로드 실패: 디스크에 쓸 수 없습니다(여유 공간과 권한을 확인하세요)',
'voice.settings.failure.unsupportedPlatform': '로컬 음성 런타임이 이 플랫폼을 지원하지 않습니다',
'voice.settings.failure.unknown': '알 수 없는 이유로 다운로드에 실패했습니다',
'voice.settings.language.label': '언어',
'voice.settings.downloadSource.label': '다운로드 출처',
'voice.settings.downloadSource.auto': '자동 (가장 먼저 응답한 출처)',
'voice.settings.downloadSource.official': '공식 (Hugging Face, npm)',
'voice.settings.downloadSource.mirror': '중국 미러 (hf-mirror, npmmirror)',
'voice.settings.downloadSource.proxyHint': '다운로드는 \'일반\'의 네트워크 프록시를 사용합니다 (현재: {mode}). 다운로드 출처 변경은 다음 다운로드부터 적용됩니다.',
'voice.settings.downloadSource.changeProxy': '프록시 변경',
'voice.settings.language.auto': '자동 감지',
'voice.settings.language.zh': '중국어(표준어)',
'voice.settings.language.en': '영어',
'voice.settings.language.ja': '일본어',
'voice.settings.language.ko': '한국어',
'voice.settings.language.yue': '광둥어',
'voice.settings.mic.title': '마이크',
'voice.settings.mic.description': '받아쓰기에 사용할 입력 장치를 선택합니다. 이 선택은 이 기기에만 저장됩니다.',
'voice.settings.mic.label': '입력 장치',
'voice.settings.mic.systemDefault': '시스템 기본값',
'voice.settings.mic.savedDevice': '저장된 마이크',
'voice.settings.mic.unnamed': '마이크 {index}',
'voice.settings.mic.missing': '이전에 선택한 마이크를 지금은 사용할 수 없어 시스템 기본값을 사용합니다.',
'voice.settings.mic.noDevices': '마이크가 감지되지 않았습니다.',
'voice.settings.mic.allowAccess': '마이크 접근을 허용하여 장치 이름 표시',
'voice.settings.mic.allowHint': '장치 이름을 표시하기 위해 마이크를 잠깐 열 뿐이며 녹음하지 않습니다.',
'voice.settings.capture.unsupported': '이 환경에서는 마이크를 사용할 수 없습니다. 이 컴퓨터에서 cc-haha를 열거나 HTTPS로 접속해 녹음하세요.',
'voice.settings.test.title': '받아쓰기 테스트',
'voice.settings.test.description': '짧게 녹음하고 받아쓰기와 같은 경로로 모델이 인식한 결과를 확인합니다.',
'voice.settings.test.start': '테스트 시작',
'voice.settings.test.stop': '중지',
'voice.settings.test.starting': '시작하는 중…',
'voice.settings.test.transcribing': '인식 중…',
'voice.settings.test.level': '마이크 레벨',
'voice.settings.test.needModel': '테스트 전에 위에서 음성 모델을 먼저 다운로드하세요.',
'voice.settings.test.result': '인식 결과',
'voice.settings.test.stats': '오디오 {audio}초 · 추론 {inference}초',
'voice.settings.test.playback': '녹음 재생',
'voice.composer.start': '음성 입력',
'voice.composer.starting': '마이크를 여는 중… (클릭하면 취소)',
'voice.composer.stop': '녹음을 멈추고 인식',
'voice.composer.transcribing': '인식 중…',
'voice.composer.recordingHint': '녹음 중 · Esc로 취소',
'voice.composer.insertText': '텍스트 삽입',
'voice.composer.discard': '버리기',
'voice.composer.dismiss': '닫기',
'voice.composer.pendingTitle': '음성 인식 결과',
'voice.composer.pendingHint': '인식 중에 입력란 내용이 바뀌어 자동으로 넣지 않았습니다.',
'voice.composer.error.permission': '마이크 접근이 거부되었습니다. 시스템 설정에서 허용한 뒤 다시 시도하세요.',
'voice.composer.error.noDevice': '마이크를 찾을 수 없습니다. 연결한 뒤 다시 시도하세요.',
'voice.composer.error.deviceBusy': '다른 앱이 마이크를 사용 중입니다.',
'voice.composer.error.unavailable': '이 환경에서는 음성 입력을 사용할 수 없습니다.',
'voice.composer.error.interrupted': '마이크가 예기치 않게 중단되어 녹음이 폐기되었습니다.',
'voice.composer.error.notReady': '음성 모델이 준비되지 않았습니다. 설정 → 음성 입력을 확인하세요.',
'voice.composer.error.invalidAudio': '녹음을 읽을 수 없습니다. 다시 시도하세요.',
'voice.composer.error.unknownProvider': '선택한 음성 엔진을 사용할 수 없습니다.',
'voice.composer.error.failed': '인식에 실패했습니다. 다시 시도해 주세요.',
'voice.composer.error.noSpeech': '음성이 인식되지 않았습니다.',
'voice.composer.error.tooShort': '녹음이 너무 짧습니다.',
'trajectory.switch.label': "세션 보기",
'trajectory.switch.chat': "대화",
'trajectory.switch.trajectory': "궤적",
'trajectory.viewInTrajectory': "궤적에서 보기",
'trajectory.loading': "궤적 불러오는 중…",
'trajectory.loadFailed': "궤적을 불러오지 못했습니다",
'trajectory.empty.title': "아직 궤적이 없습니다",
'trajectory.empty.description': "메시지를 보내면 모든 모델 호출, 도구 호출, 주입된 컨텍스트가 여기에 표시됩니다.",
'trajectory.kind.system': "시스템",
'trajectory.kind.user': "사용자",
'trajectory.kind.context': "컨텍스트",
'trajectory.kind.assistant': "어시스턴트",
'trajectory.kind.tool': "도구",
'trajectory.kind.compact': "압축",
'trajectory.turn.n': "{n}턴",
'trajectory.turn.before': "시작 전",
'trajectory.system.initial': "초기 시스템 프롬프트",
'trajectory.system.updated': "시스템 프롬프트 업데이트",
'trajectory.system.toolsUpdated': "도구 업데이트",
'trajectory.system.bothUpdated': "시스템 프롬프트와 도구 업데이트",
'trajectory.system.userContext': "사용자 컨텍스트 (CLAUDE.md, 날짜)",
'trajectory.system.chars': "{count}자",
'trajectory.context.skill': "스킬",
'trajectory.context.skillListing': "스킬 목록",
'trajectory.context.invokedSkills': "호출된 스킬",
'trajectory.context.dynamicSkill': "동적 스킬",
'trajectory.context.skillDiscovery': "스킬 탐색",
'trajectory.context.meta': "주입된 내용",
'trajectory.context.summary': "압축 요약",
'trajectory.context.userContext': "사용자 컨텍스트",
'trajectory.context.todoReminder': "할 일 알림",
'trajectory.context.taskReminder': "작업 리마인더",
'trajectory.context.memory': "메모리",
'trajectory.context.planMode': "계획 모드",
'trajectory.context.autoMode': "자동 모드",
'trajectory.context.dateChange': "날짜 변경",
'trajectory.context.toolsDelta': "도구 변경",
'trajectory.context.agentsDelta': "에이전트 목록",
'trajectory.context.mcpInstructions': "MCP 지침",
'trajectory.context.mcpResource': "MCP 리소스",
'trajectory.context.reminder': "시스템 알림",
'trajectory.context.diagnostics': "진단",
'trajectory.context.file': "파일",
'trajectory.context.fileChange': "파일 변경",
'trajectory.context.ide': "IDE",
'trajectory.context.queued': "추가 입력",
'trajectory.context.taskStatus': "작업 상태",
'trajectory.context.budget': "예산",
'trajectory.context.team': "팀",
'trajectory.context.apiError': "API 오류",
'trajectory.context.hook': "훅",
'trajectory.context.taskNotification': "작업 알림",
'trajectory.context.commandOutput': "명령 출력",
'trajectory.context.interrupted': "중단됨",
'trajectory.user.queued': "추가 입력",
'trajectory.assistant.toolOnly': "(도구 호출만)",
'trajectory.assistant.thinkingOnly': "(사고만)",
'trajectory.tool.unknown': "도구",
'trajectory.tool.running': "실행 중…",
'trajectory.tool.emptyResult': "(비어 있음)",
'trajectory.compact.title': "컨텍스트 압축됨",
'trajectory.status.done': "완료",
'trajectory.status.error': "실패",
'trajectory.table.label': "궤적",
'trajectory.table.folded': "{count}행 접힘",
'trajectory.table.toolCount': "도구 {count}개",
'trajectory.table.collapseTurn': "{turn} 접기",
'trajectory.table.expandTurn': "{turn} 펼치기",
'trajectory.table.loadOlder': "이전 기록 불러오기",
'trajectory.table.searchLoaded': "불러온 기록만 검색 · 이전 불러오기",
'trajectory.minimap.input': "입력",
'trajectory.minimap.model': "모델",
'trajectory.minimap.tools': "도구",
'trajectory.toolbar.duration': "소요 시간",
'trajectory.toolbar.collapseTurns': "턴 접기",
'trajectory.toolbar.hideTools': "도구 숨기기",
'trajectory.toolbar.search': "궤적 검색",
'trajectory.toolbar.clearSearch': "검색 지우기",
'trajectory.toolbar.totals': "{turns}턴 · {steps}단계 · 호출 {tools}회 · {tokens} tok",
'trajectory.toolbar.cacheHit': "캐시 적중 {percent}%",
'trajectory.subagent.breadcrumb': "서브에이전트 궤적",
'trajectory.subagent.main': "메인 세션",
'trajectory.subagent.view': "서브에이전트 궤적 보기",
'trajectory.tab.overview': "개요",
'trajectory.tab.preview': "미리보기",
'trajectory.tab.input': "입력",
'trajectory.tab.output': "결과",
'trajectory.tab.raw': "원본",
'trajectory.tab.request': "원본 요청",
'trajectory.tab.prompt': "시스템 프롬프트",
'trajectory.tab.tools': "도구",
'trajectory.tab.context': "내용",
'trajectory.tab.diff': "차이",
'trajectory.detail.label': "궤적 상세",
'trajectory.detail.tabs': "상세 섹션",
'trajectory.detail.resize': "상세 패널 너비 조절",
'trajectory.detail.copy': "복사",
'trajectory.detail.loadFailed': "불러오기 실패: {error}",
'trajectory.detail.notLoaded': "이 기록에 없습니다",
'trajectory.detail.truncated': "내용이 너무 커서 앞부분만 표시합니다.",
'trajectory.detail.empty': "표시할 내용이 없습니다",
'trajectory.detail.time': "시간",
'trajectory.detail.source': "출처",
'trajectory.detail.status': "상태",
'trajectory.detail.model': "모델",
'trajectory.detail.stopReason': "중지 사유",
'trajectory.detail.tokens': "토큰",
'trajectory.detail.tokenBreakdown': "입력 {input} · 캐시 읽기 {cacheRead} · 캐시 쓰기 {cacheWrite} · 출력 {output}",
'trajectory.detail.duration': "소요 시간",
'trajectory.detail.approx': "약 {value}",
'trajectory.detail.issuedBy': "호출 주체",
'trajectory.detail.locateInChat': "대화에서 찾기",
'trajectory.detail.thinking': "사고 과정",
'trajectory.detail.resultText': "모델에 전달된 결과",
'trajectory.detail.resultStructured': "구조화된 결과",
'trajectory.detail.systemPrompt': "시스템 프롬프트 · {count}자",
'trajectory.detail.systemPromptDiff': "시스템 프롬프트 변경",
'trajectory.detail.toolsDiff': "도구 변경",
'trajectory.detail.toolsAdded': "추가",
'trajectory.detail.toolsRemoved': "제거",
'trajectory.detail.toolsChanged': "변경",
'trajectory.detail.noChanges': "변경 없음",
'trajectory.detail.unchangedLines': "변경 없는 {count}줄",
'trajectory.request.closest': "시간 기준으로 가장 가까운 캡처 호출입니다. 요청과 대화 기록은 따로 저장되므로 대응은 근사치입니다.",
'trajectory.toolbar.durationHint': "미니맵을 실제 소요 시간으로 펼쳐 느린 호출을 넓게 표시",
'trajectory.toolbar.loadedFrom': "{turn}턴부터 (불러온 범위)",
'trajectory.toolbar.matches': "{count}개 일치",
'trajectory.toolbar.totalsHint': "집계는 불러온 기록 기준이며 서브에이전트 자체 토큰은 포함하지 않습니다",
'trajectory.table.errorCount': "{count}건 실패",
'trajectory.table.usageTitle': "입력 토큰(캐시 포함) ↑ / 출력 토큰 ↓",
'trajectory.table.usageShort': "{input}↑ {output}↓",
'trajectory.tool.callEarlier': "(호출 기록은 이전 기록에 있음)",
'trajectory.tool.resultTooLarge': "결과가 너무 커서 불러오지 않음 ({size})",
'trajectory.tool.noResult': "결과 없음",
'trajectory.minimap.label': "궤적 미니맵: 입력, 모델, 도구 레인",
'trajectory.search.noResults': "일치하는 기록이 없습니다",
'trajectory.search.noResultsHint': "다른 키워드로 시도해 보세요.",
'trajectory.search.noResultsPartial': "불러온 기록만 검색했습니다. 이전 기록을 불러온 뒤 다시 검색하세요.",
'trajectory.detail.back': "목록으로",
'trajectory.detail.images': "이미지 {count}장 포함",
'trajectory.request.captureToggle': "원본 요청 기록 (Agent Trace)",
'trajectory.request.captureHint': "켜면 새 모델 호출에서 실제로 보낸 요청과 받은 응답을 저장합니다.",
'trajectory.request.uncaptured': "이 응답이 실행될 때 원본 요청 기록이 꺼져 있었습니다.",
'trajectory.request.unmatched': "이 응답에 해당하는 호출을 찾지 못했습니다.",
'trajectory.user.command': "명령",
'trajectory.user.sessionMessage': "세션 메시지",
'trajectory.context.apiRetry': "API 재시도",
'trajectory.context.localCommand': "로컬 명령",
'trajectory.context.streamRetry': "스트림 재시도",
'trajectory.context.informational': "알림",
'trajectory.context.awaySummary': "부재 요약",
'trajectory.context.scheduledTask': "예약 작업",
'trajectory.context.environment': "환경 정보",
'trajectory.context.instructions': "지침",
'trajectory.context.sessionContext': "세션 컨텍스트",
'trajectory.context.permissionRetry': "권한 허용",
'trajectory.context.memorySaved': "메모리 저장됨",
'trajectory.context.agentsKilled': "에이전트 중지됨",
'trajectory.context.modelFallback': "모델 대체",
'trajectory.request.endpoint': "요청 주소",
'trajectory.request.provider': "제공자",
'trajectory.request.route': "경로",
'trajectory.request.routeDirect': "SDK가 직접 전송",
'trajectory.request.routeProxy': "로컬 프록시에서 프로토콜 변환 후 업스트림으로 전송",
'trajectory.request.model': "요청 모델",
'trajectory.request.upstreamModel': "업스트림 전송 모델",
'trajectory.request.respondedModel': "응답에 표시된 모델",
'trajectory.request.status': "결과",
'trajectory.request.requestId': "요청 ID",
'trajectory.request.purpose': "호출 출처",
}