{
  "Language": {
    "followSystem": "시스템 설정 따름",
    "english": "영어",
    "simplifiedChinese": "简体中文",
    "traditionalChinese": "繁體中文",
    "japanese": "일본어",
    "korean": "한국어",
    "spanish": "스페인어",
    "german": "독일어",
    "french": "프랑스어",
    "portuguese": "포르투갈어",
    "arabic": "아랍어"
  },
  "GitCredentialDialog": {
    "title": "인증 필요",
    "description": "원격 서버에서 자격 증명을 요구합니다. 사용자 이름과 비밀번호(또는 개인 액세스 토큰)를 입력하세요.",
    "username": "사용자 이름",
    "usernamePlaceholder": "사용자 이름 또는 이메일",
    "password": "비밀번호 / 토큰",
    "passwordPlaceholder": "비밀번호 또는 개인 액세스 토큰",
    "passwordHint": "서버의 사용자 이름과 비밀번호를 입력하세요.",
    "cancel": "취소",
    "authenticate": "인증",
    "authenticating": "인증 중...",
    "invalidCredentials": "자격 증명이 유효하지 않습니다. 다시 시도하세요.",
    "saveCredentials": "향후 작업을 위해 자격 증명 저장",
    "githubTitle": "GitHub 인증",
    "githubDescription": "개인 액세스 토큰을 입력하여 GitHub에 연결합니다. 토큰 확인 후 계정에 자동으로 저장됩니다.",
    "githubToken": "개인 액세스 토큰",
    "githubTokenPlaceholder": "ghp_xxxxxxxxxxxx",
    "githubTokenHint": "GitHub → Settings → Developer settings → Personal access tokens에서 토큰을 생성하세요.",
    "githubAuthenticate": "확인 및 연결",
    "generateToken": "토큰 생성"
  },
  "SettingsShell": {
    "title": "설정",
    "preferences": "환경설정",
    "nav": {
      "general": "일반",
      "appearance": "외관",
      "agents": "에이전트",
      "mcp": "MCP",
      "skills": "Skills",
      "shortcuts": "단축키",
      "version_control": "버전 관리",
      "system": "시스템",
      "chat_channels": "채팅 채널",
      "web_service": "웹 서비스",
      "model_providers": "모델 제공업체",
      "experts": "전문가",
      "quick_messages": "빠른 메시지"
    }
  },
  "AppearanceSettings": {
    "sectionTitle": "테마 모양",
    "sectionDescription": "라이트, 다크 또는 시스템 설정을 선택할 수 있습니다. 설정은 자동으로 저장됩니다.",
    "themeMode": "테마 모드",
    "placeholder": "테마 모드 선택",
    "system": "시스템 설정 따름",
    "light": "라이트",
    "dark": "다크",
    "currentTheme": "현재 적용된 테마: {theme}",
    "resolvedTheme": {
      "light": "라이트",
      "dark": "다크",
      "unknown": "--"
    },
    "themeColor": {
      "sectionTitle": "테마 색상",
      "sectionDescription": "버튼, 강조 색상, 하이라이트에 사용할 색상 팔레트를 선택하세요.",
      "current": "현재 색상: {color}",
      "options": {
        "neutral": "Neutral",
        "zinc": "Zinc",
        "slate": "Slate",
        "stone": "Stone",
        "gray": "Gray",
        "red": "Red",
        "rose": "Rose",
        "orange": "Orange",
        "green": "Green",
        "blue": "Blue",
        "yellow": "Yellow",
        "violet": "Violet"
      }
    },
    "zoomLevel": {
      "sectionTitle": "창 확대/축소",
      "sectionDescription": "전체 인터페이스를 확대하거나 축소합니다. 즉시 적용되며 장치별로 저장됩니다.",
      "placeholder": "확대/축소 단계 선택",
      "default": "기본값",
      "current": "현재 확대/축소: {zoom}%"
    },
    "fonts": {
      "sectionTitle": "글꼴",
      "sectionDescription": "인터페이스, 코드 편집기, 터미널의 글꼴을 각각 선택합니다. 내장 글꼴은 필요할 때 불러옵니다. “사용자 지정…”을 선택하면 시스템에 설치된 모든 글꼴을 사용할 수 있습니다.",
      "interface": "인터페이스",
      "editor": "편집기",
      "terminal": "터미널",
      "groupSans": "산세리프",
      "groupMono": "고정폭",
      "custom": "사용자 지정…",
      "customPlaceholder": "글꼴 이름 (예: Fira Code)",
      "fontSize": "글꼴 크기",
      "ligatures": "합자 사용",
      "ligaturesUnavailable": "이 글꼴에는 합자가 없습니다",
      "terminalLigaturesHint": "터미널 합자는 내장 코딩 글꼴에만 적용됩니다.",
      "preview": "미리 보기"
    }
  },
  "SystemSettings": {
    "loading": "로딩 중...",
    "sectionTitle": "시스템 관리",
    "sectionDescription": "네트워크 프록시, 앱 업데이트, 언어 설정을 관리합니다.",
    "proxyTitle": "네트워크 프록시",
    "proxyDescription": "활성화하면 이후 네트워크 요청에서 이 프록시를 우선 사용합니다(ACP 채팅, 에이전트 설치, Git 원격 작업 포함).",
    "loadFailed": "불러오기 실패: {message}",
    "enableProxy": "시스템 프록시 활성화",
    "proxyAddress": "프록시 주소",
    "proxyHint": "http(s)/socks5 지원, 예: {example}. 시스템 프록시를 활성화한 경우에만 적용됩니다.",
    "save": "저장",
    "saving": "저장 중...",
    "proxyRequired": "프록시를 활성화하면 프록시 URL이 필요합니다",
    "saveSuccess": "시스템 프록시 설정이 저장되었습니다",
    "saveFailed": "저장 실패: {message}",
    "languageTitle": "언어",
    "languageDescription": "앱 언어를 설정합니다. 시스템 언어를 따를 때 지원되지 않는 언어는 영어로 대체됩니다.",
    "appLanguage": "앱 언어",
    "languageSaveSuccess": "언어 설정이 저장되었습니다",
    "languageSaveFailed": "언어 설정 저장 실패: {message}",
    "updateTitle": "앱 업데이트",
    "versionTitle": "소프트웨어 업데이트",
    "updateDescription": "설정된 릴리스 소스에서 새 버전을 확인하고 가능하면 바로 설치합니다.",
    "currentVersion": "현재 버전",
    "upgradableVersion": "최신 버전",
    "none": "없음",
    "lastChecked": "마지막 확인: {time}",
    "updateError": "업데이트 오류: {message}",
    "checking": "확인 중...",
    "checkUpdate": "업데이트 확인",
    "updating": "설치 중...",
    "downloading": "다운로드 중...",
    "upgradeTo": "v{version}로 업그레이드",
    "viewRelease": "v{version} 릴리스 보기",
    "foundUpdate": "새 버전 v{version}을 찾았습니다",
    "alreadyLatest": "이미 최신 버전입니다",
    "checkUpdateFailed": "업데이트 확인 실패: {message}",
    "installSuccess": "업데이트가 설치되었습니다. 앱을 다시 시작합니다.",
    "installFailed": "업데이트 실패: {message}",
    "upgradeSuccess": "업그레이드가 완료되었습니다. 다시 불러오는 중...",
    "restartTimeout": "서버가 제때 복구되지 않았습니다. 컨테이너 또는 서비스 로그를 확인하세요.",
    "restartingIn": "{seconds}초 후에 다시 시작합니다...",
    "waitingForServer": "서버가 복구되기를 기다리는 중...",
    "restartToUpdate": "다시 시작하여 업데이트",
    "updateReadyHint": "업데이트를 다운로드했습니다. 다시 시작하여 적용하세요.",
    "restarting": "다시 시작하는 중…",
    "dockerUpgradeHint": "지금 실행 중인 컨테이너를 업그레이드합니다. 컨테이너를 다시 만들면 사라집니다. 유지하려면 새 버전 이미지를 가져오거나 빌드한 뒤 컨테이너를 다시 만드세요.",
    "upgradeRolledBack": "업그레이드에 실패하여 서버가 이전 버전으로 롤백되었습니다.",
    "serverUnreachable": "업그레이드를 시작하기 위해 서버에 연결할 수 없습니다. 서버가 실행 중인지 확인한 후 다시 시도하세요.",
    "rollbackButton": "롤백",
    "rollingBack": "롤백 중...",
    "rollbackDescription": "마지막 업그레이드 이전에 설치된 버전으로 복원합니다.",
    "rollbackConfirmTitle": "이전 버전으로 롤백하시겠습니까?",
    "rollbackConfirmDescription": "서버가 마지막 업그레이드 이전에 설치된 버전으로 다시 시작됩니다. 최신 릴리스는 다시 설치할 수 있습니다.",
    "rollbackConfirm": "롤백",
    "rollbackCancel": "취소",
    "rollbackSuccess": "이전 버전으로 롤백했습니다. 다시 불러오는 중...",
    "rollbackFailed": "롤백에 실패했습니다. 서버 로그를 확인하세요.",
    "updateErrors": {
      "sourceUnavailable": "업데이트 소스에 연결할 수 없습니다. 네트워크 또는 프록시를 확인한 뒤 다시 시도하세요.",
      "network": "네트워크 연결에 실패했습니다. 네트워크 또는 프록시를 확인한 뒤 다시 시도하세요.",
      "downloadFailed": "업데이트 패키지 다운로드에 실패했습니다. 잠시 후 다시 시도하세요.",
      "installFailed": "업데이트 설치에 실패했습니다. 앱을 종료한 뒤 다시 시도하세요.",
      "unknown": "업데이트에 실패했습니다. 잠시 후 다시 시도하세요."
    }
  },
  "VersionControlSettings": {
    "loading": "로딩 중...",
    "sectionTitle": "버전 관리",
    "sectionDescription": "Git 실행 파일을 설정하고 GitHub 계정을 관리합니다.",
    "gitTitle": "Git 설정",
    "gitDescription": "애플리케이션에서 사용할 Git 실행 파일을 설정합니다.",
    "gitDetected": "Git이 감지되었습니다",
    "gitNotFound": "시스템에서 Git을 찾을 수 없습니다",
    "gitVersion": "버전",
    "gitPath": "경로",
    "customGitPath": "사용자 지정 Git 경로",
    "customGitPathPlaceholder": "/usr/bin/git",
    "customGitPathHint": "비워두면 자동 감지된 경로를 사용합니다.",
    "test": "테스트",
    "testing": "테스트 중...",
    "testSuccess": "Git 실행 파일이 유효합니다.",
    "testFailed": "Git 테스트 실패: {message}",
    "save": "저장",
    "saving": "저장 중...",
    "saveSuccess": "Git 설정이 저장되었습니다.",
    "saveFailed": "저장 실패: {message}",
    "githubTitle": "GitHub 계정",
    "githubDescription": "인증용 GitHub 계정을 관리합니다. 토큰은 로컬에 저장됩니다.",
    "noAccounts": "설정된 GitHub 계정이 없습니다.",
    "addAccount": "계정 추가",
    "serverUrl": "서버 URL",
    "serverUrlPlaceholder": "https://github.com",
    "token": "개인 액세스 토큰",
    "tokenPlaceholder": "ghp_xxxxxxxxxxxx",
    "generateToken": "토큰 생성",
    "tokenHint": "GitHub → Settings → Developer settings → Personal access tokens에서 토큰을 생성하세요.",
    "validateAndAdd": "검증 및 추가",
    "validating": "검증 중...",
    "addSuccess": "계정 {username}이(가) 추가되었습니다.",
    "addFailed": "계정 추가 실패: {message}",
    "testConnection": "테스트",
    "connectionSuccess": "연결 성공.",
    "connectionFailed": "연결 실패: {message}",
    "setDefault": "기본값으로 설정",
    "defaultLabel": "기본",
    "defaultSet": "기본 계정이 업데이트되었습니다.",
    "removeAccount": "삭제",
    "removeConfirmTitle": "계정 삭제",
    "removeConfirmMessage": "계정 \"{username}\"을(를) 삭제하시겠습니까?",
    "removeConfirm": "삭제",
    "removeCancel": "취소",
    "removeSuccess": "계정이 삭제되었습니다.",
    "scopes": "범위",
    "loadFailed": "설정 로드 실패: {message}",
    "gitAccount": {
      "sectionTitle": "Git 서버 계정",
      "sectionDescription": "GitHub 이외의 Git 서버 자격 증명을 관리합니다 (GitLab, Bitbucket, 자체 호스팅 등).",
      "noAccounts": "설정된 Git 서버 계정이 없습니다.",
      "addAccount": "계정 추가",
      "addTitle": "Git 계정 추가",
      "addDescription": "서버 주소, 사용자 이름, 비밀번호 또는 액세스 토큰을 입력하세요.",
      "serverUrl": "서버 URL",
      "serverUrlPlaceholder": "https://gitlab.example.com",
      "username": "사용자 이름",
      "usernamePlaceholder": "사용자 이름 또는 이메일",
      "password": "비밀번호 / 토큰",
      "passwordPlaceholder": "비밀번호 또는 액세스 토큰",
      "passwordHint": "서버의 비밀번호 또는 액세스 토큰을 입력하세요.",
      "add": "추가",
      "serverRequired": "서버 URL을 입력하세요.",
      "usernameRequired": "사용자 이름을 입력하세요.",
      "passwordRequired": "비밀번호를 입력하세요."
    }
  },
  "ShortcutSettings": {
    "sectionTitle": "단축키",
    "resetDefault": "기본값으로 재설정",
    "recordInstruction": "오른쪽 버튼을 클릭한 다음 키 조합을 누르세요. Ctrl/Cmd, Alt, Shift를 사용할 수 있습니다. Esc를 누르면 기록을 취소합니다.",
    "recording": "단축키 입력...",
    "toasts": {
      "conflict": "단축키가 이미 \"{title}\"에서 사용 중입니다",
      "updated": "단축키가 업데이트되었습니다",
      "invalid": "유효하지 않은 단축키입니다. 다시 시도하세요",
      "reset": "기본 단축키를 복원했습니다"
    },
    "actions": {
      "toggle_search": {
        "title": "검색 열기",
        "description": "대화 검색 패널을 표시하거나 숨깁니다"
      },
      "toggle_sidebar": {
        "title": "왼쪽 사이드바 전환",
        "description": "대화 목록 사이드바를 표시하거나 숨깁니다"
      },
      "toggle_terminal": {
        "title": "터미널 전환",
        "description": "하단 터미널 패널을 표시하거나 숨깁니다"
      },
      "new_terminal_tab": {
        "title": "새 터미널",
        "description": "터미널에 포커스가 있을 때 새 터미널 탭을 만듭니다"
      },
      "close_current_terminal_tab": {
        "title": "현재 터미널 닫기",
        "description": "터미널에 포커스가 있을 때 현재 터미널 탭을 닫습니다"
      },
      "toggle_aux_panel": {
        "title": "오른쪽 패널 전환",
        "description": "보조 정보 패널을 표시하거나 숨깁니다"
      },
      "new_conversation": {
        "title": "새 대화",
        "description": "현재 폴더에 새 대화 탭을 만듭니다"
      },
      "open_folder": {
        "title": "폴더 열기",
        "description": "폴더 선택기를 열고 새 창에서 엽니다"
      },
      "open_settings": {
        "title": "설정 열기",
        "description": "설정 창을 엽니다"
      },
      "close_current_tab": {
        "title": "현재 탭 닫기",
        "description": "현재 대화 또는 파일 탭을 닫습니다"
      },
      "close_all_file_tabs": {
        "title": "모든 파일 탭 닫기",
        "description": "파일 패널이 활성 상태일 때 열린 모든 파일 탭을 닫습니다"
      },
      "next_tab": {
        "title": "다음 탭",
        "description": "다음 대화 또는 파일 탭으로 전환"
      },
      "prev_tab": {
        "title": "이전 탭",
        "description": "이전 대화 또는 파일 탭으로 전환"
      },
      "send_message": {
        "title": "메시지 보내기",
        "description": "입력창에서 현재 메시지를 전송"
      },
      "newline_in_message": {
        "title": "메시지 줄바꿈",
        "description": "입력창에 줄바꿈을 삽입"
      }
    }
  },
  "SkillsSettings": {
    "title": "Skills",
    "description": "왼쪽에서 Skill을 선택하세요. 오른쪽은 기본적으로 Markdown 미리보기이며, 편집으로 전환해 수정 후 저장할 수 있습니다.",
    "loadingAgents": "Skill을 지원하는 에이전트를 불러오는 중...",
    "emptyNoManageableAgents": "Skill을 관리할 수 있는 에이전트가 없습니다.",
    "managedTarget": "관리 대상",
    "selectAgentPlaceholder": "에이전트 선택",
    "searchPlaceholder": "이름 / ID / 경로로 검색...",
    "skillsList": "Skill 목록",
    "loadingSkills": "Skill 불러오는 중...",
    "agentNotSupported": "현재 에이전트는 Skill 관리를 지원하지 않습니다.",
    "emptySkills": "아직 Skill이 없습니다. \"새 Skill\"을 클릭해 생성하세요.",
    "newSkillTitle": "새 Skill",
    "skillInfo": "Skill 정보",
    "skillIdPlaceholder": "skill-id(영문/숫자/-/_/.)",
    "skillsDirectoryWithPath": "Skill 디렉터리: {path}",
    "skillsDirectoryNeedId": "Skill 디렉터리: Skill ID를 입력하면 전체 경로를 생성합니다",
    "markdownContent": "Markdown 내용",
    "editingStatus": "편집 중",
    "previewStatus": "미리보기 중",
    "contentPlaceholder": "Skill Markdown 내용을 입력하세요...",
    "metadataTitle": "Skill 메타데이터",
    "onlyYamlMetadata": "이 Skill에는 YAML 메타데이터만 포함되어 있습니다.",
    "emptyContentHint": "아직 내용이 없습니다. \"편집\"을 눌러 시작하세요.",
    "loadingSkill": "Skill 불러오는 중...",
    "emptyNoAgents": "사용 가능한 에이전트가 없습니다.",
    "noSelectionHint": "왼쪽에서 Skill을 선택하거나 \"새 Skill\"을 클릭하여 만드세요.",
    "systemBadge": "시스템",
    "systemHint": "CLI 내장 Skill · 읽기 전용",
    "scope": {
      "global": "전역",
      "folder": "폴더",
      "selectFolderPlaceholder": "폴더 선택",
      "noFolders": "폴더를 찾을 수 없습니다",
      "pickFolderHint": "Skills을 보려면 폴더를 선택하세요."
    },
    "actions": {
      "preview": "미리보기",
      "edit": "편집",
      "openInWindow": "새 창에서 열기",
      "delete": "삭제",
      "deleting": "삭제 중...",
      "refresh": "새로고침",
      "newSkill": "새 Skill",
      "reset": "초기화",
      "save": "저장",
      "saving": "저장 중...",
      "cancel": "취소"
    },
    "deleteDialog": {
      "title": "Skill 삭제",
      "confirm": "현재 Skill을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
      "confirmWithNamePrefix": "Skill",
      "confirmWithNameSuffix": "을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다."
    },
    "toasts": {
      "loadFailed": "Skill을 불러오지 못했습니다",
      "openFolderFailed": "폴더를 열지 못했습니다",
      "noSkillDirectory": "현재 에이전트에서 사용할 수 있는 Skill 디렉터리를 찾지 못했습니다",
      "nameRequired": "Skill 이름은 비워둘 수 없습니다",
      "updated": "Skill이 업데이트되었습니다",
      "created": "Skill이 생성되었습니다",
      "saveFailed": "Skill 저장에 실패했습니다",
      "deleted": "Skill이 삭제되었습니다",
      "deleteFailed": "Skill 삭제에 실패했습니다"
    },
    "templates": {
      "gemini": "---\nname: example-skill\ndescription: Describe when this skill should be used.\n---\n\n# Skill Name\n\nInstructions for the agent when this skill is active.\n\n## Workflow\n\n1. Add actionable step one.\n2. Add actionable step two.\n",
      "openCode": "---\nname: example-skill\ndescription: Describe when this skill should be used.\n---\n\n# Purpose\n\nDescribe what this skill helps with.\n\n# Steps\n\n1. Add actionable step one.\n2. Add actionable step two.\n",
      "openClaw": "---\nname: example-skill\ndescription: Describe when this skill should be used.\nuser-invocable: true\ndisable-model-invocation: false\n---\n\n# Purpose\n\nDescribe what this skill helps with.\n\n# Instructions\n\n1. Add actionable instruction one.\n2. Add actionable instruction two.\n",
      "default": "---\nname: example-skill\ndescription: Describe when this skill should be used.\n---\n\n# Skill: example-skill\n\n## When to use\n\n- Describe trigger conditions.\n\n## Instructions\n\n1. Add actionable instruction one.\n2. Add actionable instruction two.\n"
    }
  },
  "McpSettings": {
    "loading": "로딩 중...",
    "summary": {
      "missingCommand": "(명령 없음)",
      "missingUrl": "(URL 없음)"
    },
    "protocol": {
      "stdio": "Stdio"
    },
    "errors": {
      "selectInstallProtocol": "설치 프로토콜을 선택하세요",
      "fieldRequired": "{field}은(는) 필수입니다",
      "fieldNeedsBoolean": "{field}은(는) true 또는 false여야 합니다",
      "fieldNeedsNumber": "{field}은(는) 숫자여야 합니다",
      "fieldNeedsInteger": "{field}은(는) 정수여야 합니다",
      "fieldInvalidJson": "{field}의 JSON이 잘못되었습니다: {message}",
      "fieldOutOfRange": "{field} 값이 허용 범위를 벗어났습니다",
      "jsonEmpty": "{name}은(는) 비워둘 수 없습니다",
      "jsonInvalid": "{name}은(는) 유효한 JSON이 아닙니다: {message}",
      "jsonMustBeObject": "{name}은(는) JSON 객체여야 합니다",
      "specMustBeObject": "MCP 구성은 JSON 객체여야 합니다.",
      "missingType": "MCP 구성에 type 필드가 없습니다. stdio, http (별칭: streamable-http, streamableHttp), sse 중 하나를 지정하세요.",
      "unsupportedType": "지원하지 않는 MCP type {type}. 지원: stdio, http (별칭: streamable-http, streamableHttp), sse.",
      "codexEntryUnsupportedType": "Codex MCP 항목 {id}의 type {type}은(는) 지원되지 않습니다. 지원: stdio, http (별칭: streamable-http, streamableHttp), sse.",
      "unsupportedTransportType": "지원하지 않는 transport type {type}. 지원: http (별칭: streamable-http, streamableHttp), sse.",
      "stdioCommandRequired": "stdio 타입의 MCP에는 비어 있지 않은 command 필드가 필요합니다.",
      "remoteUrlRequired": "원격 MCP에는 비어 있지 않은 url 필드가 필요합니다.",
      "appsRequired": "대상 앱을 하나 이상 선택하세요."
    },
    "jsonNames": {
      "localConfig": "MCP 구성",
      "installConfig": "설치 구성"
    },
    "toasts": {
      "uninstalled": "MCP가 제거되었습니다",
      "uninstallFailed": "제거 실패: {message}",
      "selectAtLeastOneApp": "대상 앱을 최소 하나 선택하세요",
      "saveSuccess": "저장됨",
      "saveFailed": "저장 실패: {message}",
      "installed": "{name} 설치됨",
      "installFailed": "설치 실패: {message}",
      "serverIdRequired": "Server ID는 필수입니다",
      "serverIdExists": "Server ID \"{id}\"이(가) 이미 존재합니다. 기존 항목을 편집하거나 다른 이름을 사용하세요.",
      "created": "MCP가 생성되었습니다"
    },
    "installDialog": {
      "title": "MCP 설치 확인",
      "descriptionWithName": "{name}을(를) 로컬 구성에 설치합니다.",
      "description": "설치할 대상 앱을 선택하세요.",
      "protocol": "프로토콜",
      "selectProtocol": "프로토콜 선택",
      "parameters": "구성 매개변수",
      "booleanPlaceholder": "true/false를 선택하세요",
      "selectOneValue": "값 선택",
      "targetApps": "대상 앱"
    },
    "actions": {
      "cancel": "취소",
      "confirmInstall": "설치 확인",
      "installing": "설치 중",
      "uninstall": "제거",
      "uninstalling": "제거 중",
      "viewDetails": "상세 보기",
      "save": "저장",
      "saving": "저장 중",
      "install": "설치",
      "refresh": "새로고침",
      "newMcp": "새 MCP",
      "create": "생성",
      "creating": "생성 중..."
    },
    "tabs": {
      "local": "로컬 MCP",
      "market": "MCP 마켓플레이스"
    },
    "local": {
      "filterPlaceholder": "로컬 MCP 필터...",
      "loadFailed": "로드 실패: {message}",
      "empty": "감지된 로컬 MCP가 없습니다.",
      "description": "로컬 MCP 구성은 직접 수정하고 저장할 수 있습니다.",
      "enabledApps": "활성화된 앱",
      "configJson": "MCP 구성 (JSON)",
      "draftTitle": "새 MCP",
      "draftDescription": "Server ID와 설정을 입력하여 로컬 MCP 서버를 생성합니다.",
      "serverIdLabel": "Server ID",
      "serverIdPlaceholder": "Server ID (예: my-mcp)",
      "typeHint": "지원 타입: stdio, http (별칭: streamable-http, streamableHttp), sse. env는 stdio 전용이며, 원격 MCP는 인증 토큰을 headers로 전달해야 합니다.",
      "envOnRemoteWarning": "원격 MCP 설정에 env가 포함되어 있습니다. env는 stdio에서만 사용되며 원격 MCP는 headers로 인증 토큰을 전달합니다. 저장 시 env는 무시됩니다."
    },
    "market": {
      "selectMarketplace": "마켓플레이스 선택",
      "searchPlaceholder": "MCP 검색...",
      "searchFailed": "검색 실패: {message}",
      "loadingList": "MCP 목록을 불러오는 중...",
      "empty": "MCP 검색 결과가 없습니다.",
      "loadingDetail": "마켓플레이스 상세 정보를 불러오는 중...",
      "detailLoadFailed": "상세 정보를 불러오지 못했습니다: {message}",
      "owner": "소유자: {owner}",
      "namespace": "네임스페이스: {namespace}",
      "defaultInstallProtocol": "기본 설치 프로토콜",
      "currentOptionParameterCount": "현재 옵션의 매개변수 수: {count}",
      "installConfigDescription": "설치 구성 (JSON, 설치 전에 편집 가능; 편집 내용은 프로토콜/매개변수 폼을 덮어씁니다)",
      "selectLeftToView": "상세 정보를 보려면 왼쪽에서 마켓플레이스 MCP를 선택하세요."
    },
    "badges": {
      "verified": "검증됨",
      "remote": "원격",
      "hasHomepage": "홈페이지 있음",
      "uses": "{count}회 사용",
      "deployed": "배포됨",
      "notDeployed": "미배포"
    },
    "selectLeftMcp": "왼쪽에서 MCP를 선택하세요."
  },
  "AcpAgentSettings": {
    "title": "Agent SDK 관리",
    "description": "Agent SDK 연결, 활성화 상태, 환경 변수, 구성 관리, 버전 사전 점검 정보를 한곳에서 관리합니다.",
    "loadingAgents": "에이전트 목록 불러오는 중...",
    "agentList": "에이전트 목록",
    "emptyNoAgent": "사용 가능한 에이전트가 없습니다.",
    "configManagement": "구성 관리",
    "envVars": "환경 변수",
    "nativeJsonConfig": "네이티브 JSON 구성",
    "modelHintDefault": "비워두면 시스템 기본 모델을 사용합니다.",
    "generalConfigDescriptionClaude": "API URL, API Key, Claude 모델을 빠르게 설정하고 네이티브 JSON 구성과 동기화합니다.",
    "generalConfigDescriptionDefault": "주요 구성 입력(API URL, API Key, Model)과 네이티브 JSON 구성 관리를 지원합니다.",
    "multiAgent": {
      "title": "다중 에이전트 협업",
      "description": "활성 에이전트가 하위 작업을 다른 에이전트에게 위임할 수 있도록 합니다.",
      "enable": "위임 사용",
      "enableHint": "끄면 delegate_to_agent 도구가 에이전트의 MCP 도구 목록에서 숨겨집니다.",
      "depthLimit": "최대 위임 깊이",
      "depthHint": "허용 범위: {min}–{max}. 위임 체인(루트 → 하위 → 손자 …)의 재귀 깊이를 제한합니다.",
      "completedCacheLabel": "완료 결과 캐시(MB)",
      "completedCacheHint": "실행 중인 위임 세션이 보관하는 완료된 하위 에이전트 결과의 메모리 내 캐시입니다. 해당 세션이 실행되는 동안에만 유지되며 세션이 종료되면 자동으로 삭제됩니다. 이 예산을 초과하면 오래된 결과부터 메모리에서 삭제됩니다(하위 에이전트 자체 세션에서는 계속 확인 가능). 0은 무제한(세션 종료 시에는 그래도 삭제됨).",
      "save": "저장",
      "saving": "저장 중…",
      "saved": "위임 설정이 저장되었습니다",
      "saveFailed": "위임 설정 저장 실패",
      "loadFailed": "위임 설정 로드 실패: {detail}",
      "tabGeneral": "일반",
      "tabAgentDefaults": "하위 에이전트 설정",
      "agentDefaultsDescription": "다중 에이전트 협업이 위임 호출을 위해 하위 에이전트를 시작할 때 적용되는 재정의 항목입니다. 아래 옵션은 실시간 프로브로 가져오므로 선택한 항목이 그대로 에이전트에 전달됩니다.",
      "probing": "에이전트에서 사용 가능한 옵션을 로드 중…",
      "probeFailed": "옵션 로드 실패: {detail}",
      "retry": "다시 시도",
      "noConfigAvailable": "이 에이전트에는 구성 가능한 옵션이 없습니다.",
      "modeLabel": "모드",
      "agentDefaultHint": "에이전트 기본값: {value}",
      "defaultOptionLabel": "기본값 ({value})"
    },
    "actions": {
      "dragSort": "드래그하여 순서 변경",
      "dragSortAgent": "{name} 순서 변경",
      "refreshCheck": "다시 확인",
      "refreshCheckAgent": "{name} 다시 확인",
      "clickEnable": "{name} 활성화",
      "clickDisable": "{name} 비활성화",
      "install": "설치",
      "upgrade": "업그레이드",
      "uninstall": "제거",
      "uninstalling": "제거 중...",
      "saveEnvVars": "환경 변수 저장",
      "saving": "저장 중...",
      "saveCodexConfig": "Codex 설정 저장",
      "saveGeminiConfig": "Gemini 설정 저장",
      "saveOpenCodeConfig": "OpenCode 설정 저장",
      "saveOpenClawConfig": "OpenClaw 설정 저장",
      "saveConfigManagement": "구성 관리 저장",
      "saveCurrentProvider": "현재 Provider 저장",
      "showApiKey": "API 키 보기",
      "hideApiKey": "API 키 숨기기",
      "showKey": "키 보기",
      "hideKey": "키 숨기기",
      "showToken": "토큰 보기",
      "hideToken": "토큰 숨기기",
      "cancel": "취소",
      "delete": "삭제",
      "deleting": "삭제 중...",
      "confirmDelete": "삭제 확인",
      "confirmUninstall": "제거 확인",
      "saveClineConfig": "Cline 설정 저장",
      "saveHermesConfig": "Hermes 설정 저장",
      "customInstall": "사용자 지정 설치"
    },
    "status": {
      "enabled": "활성화됨",
      "disabled": "비활성화됨",
      "unchecked": "확인 안 됨",
      "agentEnabledAria": "{name} 활성화됨",
      "agentEnabledSwitch": "{name} 활성화 스위치"
    },
    "preflight": {
      "count": "사전 점검 항목: {count}",
      "notRun": "점검이 아직 실행되지 않았습니다."
    },
    "codex": {
      "configDescription": "API URL, API Key, 모델 이름, reasoning effort를 빠르게 설정하고 `auth.json` / `config.toml`과 동기화합니다.",
      "authMode": "인증 방식",
      "chatgptSubscription": "공식 구독",
      "chatgptSubscriptionHint": "ChatGPT 공식 구독으로 로그인, API Key 불필요",
      "apiKeyHint": "API Key로 OpenAI 또는 호환 API 서비스에 연결",
      "selectProvider": "Provider 선택",
      "modelName": "모델 이름",
      "selectReasoningEffort": "Reasoning Effort 선택",
      "enableWebsocket": "WebSocket 활성화",
      "enableWebsocketAria": "Codex Provider용 WebSocket 활성화",
      "enableSkills": "Skills 활성화",
      "enableSkillsAria": "Codex용 Skills 활성화",
      "enableFast": "Fast 활성화",
      "enableFastAria": "Codex용 Fast 서비스 계층 활성화",
      "authJsonNative": "auth.json (네이티브)",
      "configTomlNative": "config.toml (네이티브)",
      "loginButton": "ChatGPT로 로그인",
      "loginRequesting": "로그인 코드 요청 중...",
      "loginStep1": "브라우저에서 다음 URL을 열어주세요:",
      "loginStep2": "아래 코드를 입력하세요:",
      "loginPolling": "인증 대기 중...",
      "loginCancel": "취소",
      "loginSuccess": "로그인 성공, 설정이 저장되었습니다!",
      "loginFailed": "로그인 실패: {message}",
      "loginRetry": "재시도",
      "loginCodeCopied": "코드가 복사되었습니다",
      "loggedIn": "계정 로그인됨",
      "loginRelogin": "재로그인 / 계정 전환",
      "loginTimeout": "로그인 시간 초과, 다시 시도해 주세요",
      "loginSaveFailed": "로그인 성공했지만 설정 저장 실패"
    },
    "gemini": {
      "authConfig": "Gemini 인증 설정",
      "authConfigDescription": "Gemini CLI 인증 문서와 정렬되며, 커스텀 엔드포인트, Google 로그인, Gemini API Key, Vertex AI(ADC / 서비스 계정 / API Key)를 지원합니다.",
      "authMode": "인증 모드",
      "selectAuthMode": "인증 모드 선택",
      "viewAuthDoc": "인증 문서 보기",
      "mode": {
        "custom": "커스텀 엔드포인트",
        "loginGoogle": "Google 로그인 (OAuth)",
        "vertexServiceAccount": "Vertex AI (서비스 계정)"
      },
      "hint": {
        "custom": "API URL, API Key, Model을 입력하세요. GOOGLE_GEMINI_BASE_URL / GEMINI_API_KEY / GEMINI_MODEL에 매핑됩니다.",
        "loginGoogle": "먼저 터미널에서 gemini를 실행해 Google 로그인을 완료하세요. API key는 필요하지 않습니다.",
        "geminiApiKey": "Gemini API 사용 시 GEMINI_API_KEY를 입력하세요.",
        "vertexAdc": "gcloud ADC를 사용합니다. GOOGLE_CLOUD_PROJECT와 GOOGLE_CLOUD_LOCATION 설정을 권장합니다.",
        "vertexServiceAccount": "서비스 계정 JSON 경로를 GOOGLE_APPLICATION_CREDENTIALS에 설정하세요.",
        "vertexApiKey": "Vertex AI API key 사용 시 GOOGLE_API_KEY를 입력하세요."
      }
    },
    "openCode": {
      "configManagement": "OpenCode 구성 관리",
      "configDescription": "OpenCode `provider` 스키마에 맞추어 다중 Provider 관리와 네이티브 JSON 파일 양방향 동기화를 지원합니다.",
      "providerManagement": "Provider 관리",
      "providerCount": "Provider {count}개",
      "addProvider": "Provider 추가",
      "emptyProvider": "아직 Provider가 없습니다. ID를 입력한 뒤 \"Provider 추가\"를 클릭하세요.",
      "providerEnabledState": "{providerId} 활성 상태",
      "selectProviderNpm": "provider.npm 선택",
      "modelManagement": "모델 관리",
      "modelCount": "모델 {count}개",
      "modelDescription": "OpenCode `provider.models`와 정렬됩니다. 빠른 관리는 현재 `name` / `id`를 지원하며, 기타 고급 필드는 유지되고 아래 네이티브 JSON에서 편집할 수 있습니다.",
      "addModel": "모델 추가",
      "emptyModel": "아직 모델이 없습니다. model id를 입력한 뒤 \"모델 추가\"를 클릭하세요.",
      "modelId": "모델 ID",
      "modelName": "모델 이름",
      "deleteModel": "모델 {modelId} 삭제",
      "nativeJsonConfig": "OpenCode 네이티브 JSON 구성",
      "mainModel": "메인 모델",
      "smallModel": "스몰 모델",
      "noMatchingModels": "일치하는 모델 없음"
    },
    "openClaw": {
      "gatewayConfig": "Gateway 구성",
      "gatewayDescription": "OpenClaw Gateway 연결을 구성합니다. 로컬 또는 원격 gateway를 지원합니다.",
      "gatewayUrlHint": "비워두면 로컬 openclaw 설정의 gateway.remote.url을 사용합니다.",
      "gatewayTokenPlaceholder": "Gateway 인증 토큰",
      "gatewayTokenHint": "가능하면 평문 토큰 대신 token-file을 사용하세요. openclaw CLI로 설정하세요.",
      "sessionKeyHint": "선택 사항입니다. gateway 세션 키를 지정합니다. 비워두면 격리된 세션이 자동 할당됩니다."
    },
    "hermes": {
      "configManagement": "Hermes 구성",
      "configDescription": "Hermes는 자격 증명을 ~/.hermes/.env에, 설정을 ~/.hermes/config.yaml에 직접 관리합니다. 공급자를 선택한 다음 API 키와 모델을 설정하세요. codeg가 두 파일을 모두 작성해 줍니다.",
      "providerLabel": "공급자",
      "providerHint": "공급자에 따라 Hermes가 사용하는 API 키 변수와 model.provider가 결정됩니다. OAuth 공급자는 아래 터미널 설정을 통해 구성합니다.",
      "groupApiKey": "API 키 제공자",
      "groupOauth": "OAuth 제공자",
      "groupAws": "AWS",
      "apiKeyHint": "~/.hermes/.env에 저장됩니다. 프로세스에 절대 주입되지 않으며, Hermes가 자체 구성에서 읽어옵니다.",
      "modelName": "모델",
      "oauthHint": "이 공급자는 OAuth를 사용합니다. 아래 설정을 실행하여 터미널에서 인증하세요.",
      "awsHint": "Bedrock은 AWS 자격 증명(환경 변수 또는 공유 구성)을 사용합니다. 위에서 모델 ID를 설정하고 환경에서 AWS 액세스를 구성하세요.",
      "unsupportedProvider": "이 제공자는 구조화된 필드로 편집할 수 없습니다. 아래의 config.yaml 원본 편집기나 터미널 설정을 사용하세요.",
      "setupTitle": "자체 관리 설정",
      "setupHint": "Hermes의 대화형 설정에는 터미널이 필요합니다. 아래에서 실행하거나 명령을 복사하여 직접 실행하세요.",
      "runSetup": "Hermes 설정 실행",
      "configureModel": "모델 구성",
      "openConfigFolder": "~/.hermes 열기",
      "copyCommand": "명령 복사",
      "commandCopied": "명령을 클립보드에 복사했습니다",
      "advancedTitle": "고급: config.yaml 편집",
      "rawConfigHint": "~/.hermes/config.yaml을 직접 편집합니다. 여기서 저장하면 파일이 그대로 덮어쓰여집니다.",
      "saveRawConfig": "config.yaml 저장"
    },
    "authModeOfficialSubscription": "공식 구독",
    "authModeCustomEndpoint": "사용자 정의 엔드포인트",
    "authModeCustomEndpointHint": "API URL과 API Key를 수동으로 구성하여 사용자 정의 엔드포인트에 연결합니다.",
    "authModeModelProvider": "모델 공급자",
    "modelProvider": "모델 공급자",
    "modelProviderHint": "구성된 모델 공급자의 API URL, API Key 및 모델을 사용합니다.",
    "selectModelProvider": "모델 공급자 선택",
    "noModelProviderAvailable": "이 에이전트에 구성된 모델 공급자가 없습니다. 모델 공급자 설정에서 추가하세요.",
    "claude": {
      "authMode": "인증 방식",
      "officialSubscription": "공식 구독",
      "officialSubscriptionHint": "Anthropic 공식 구독 사용, API Key 불필요.",
      "mainModel": "메인 모델",
      "reasoningModel": "추론 모델 (thinking)",
      "haikuDefaultModel": "기본 Haiku 모델",
      "sonnetDefaultModel": "기본 Sonnet 모델",
      "opusDefaultModel": "기본 Opus 모델",
      "effortLevel": "추론 수준",
      "effortLevelDefault": "기본 수준",
      "effortLevel_low": "낮음",
      "effortLevel_medium": "중간",
      "effortLevel_high": "높음",
      "effortLevel_xhigh": "매우 높음"
    },
    "dialogs": {
      "confirmDeleteProvider": "Provider {providerId}를 삭제하시겠습니까?",
      "confirmDeleteProviderDescription": "OpenCode config와 auth JSON이 함께 업데이트됩니다. 이 작업은 되돌릴 수 없습니다.",
      "confirmUninstall": "{name}을(를) 제거하시겠습니까?",
      "confirmUninstallDescription": "로컬 설치 버전을 제거합니다. 나중에 다시 설치할 수 있습니다.",
      "customInstallTitle": "{name} 사용자 지정 설치",
      "customInstallDescription": "설치할 버전을 입력하세요. 다시 설치되며 현재 설치된 버전을 대체합니다.",
      "customInstallVersionLabel": "버전 번호",
      "customInstallInvalid": "유효한 버전 번호를 입력하세요. 예: 1.2.3",
      "customInstallSubmit": "설치"
    },
    "errors": {
      "nativeJsonMustBeObject": "네이티브 JSON 구성은 객체여야 합니다",
      "nativeJsonInvalid": "네이티브 JSON 구성 형식 오류: {message}",
      "openCodeAuthMustBeObject": "OpenCode auth.json은 JSON 객체여야 합니다",
      "openCodeAuthInvalid": "OpenCode auth.json 형식 오류: {message}",
      "authMustBeObject": "auth.json은 JSON 객체여야 합니다",
      "authInvalid": "auth.json 형식 오류: {message}",
      "providerIdPattern": "Provider ID는 문자, 숫자, 밑줄, 점, 하이픈만 지원합니다",
      "providerExists": "Provider {providerId}가 이미 존재합니다",
      "modelIdPattern": "Model ID는 문자, 숫자, 밑줄, 점, 콜론, 하이픈만 지원합니다",
      "modelExists": "Model {modelId}가 이미 존재합니다"
    },
    "warnings": {
      "nativeJsonRecoveredStructured": "네이티브 JSON 구성이 잘못되어 구조화 구성으로 재설정했습니다",
      "nativeJsonRecoveredOpenCode": "네이티브 JSON 구성이 잘못되어 OpenCode 구조화 구성으로 재설정했습니다",
      "openCodeAuthRecovered": "OpenCode auth.json이 잘못되어 기본 구성으로 재설정했습니다",
      "authRecoveredStructured": "auth.json이 잘못되어 구조화 구성으로 재설정했습니다"
    },
    "toasts": {
      "agentActionCompleted": "{name} {action} 완료",
      "agentActionFailed": "{name} {action} 실패",
      "localVersion": "로컬 버전: {version}",
      "installCompletedVersionLater": "설치가 완료되었습니다. 버전은 다음 확인 시 업데이트됩니다",
      "uninstallCompleted": "{name} 제거 완료",
      "uninstallFailed": "{name} 제거 실패",
      "localVersionRemoved": "로컬 버전이 제거되었습니다",
      "saveAgentOrderFailed": "Agent 순서 저장 실패",
      "saveAgentSwitchFailed": "Agent 스위치 저장 실패",
      "saveEnvFailed": "환경 변수 저장 실패",
      "codexSaved": "Codex 설정 저장됨",
      "saveCodexNativeFailed": "Codex 네이티브 구성 저장 실패",
      "geminiSaved": "Gemini 설정 저장됨",
      "saveGeminiFailed": "Gemini 설정 저장 실패",
      "providerDeleted": "Provider {providerId} 삭제됨",
      "providerDeleteFailed": "Provider {providerId} 삭제 실패",
      "providerSaved": "Provider {providerId} 저장됨",
      "saveProviderFailed": "Provider {providerId} 저장 실패",
      "openCodeConfigSynced": "OpenCode config와 auth JSON이 동기화되었습니다.",
      "openCodeSaved": "OpenCode 설정 저장됨",
      "saveOpenCodeFailed": "OpenCode 설정 저장 실패",
      "openClawSaved": "OpenClaw 설정 저장됨",
      "saveOpenClawFailed": "OpenClaw 설정 저장 실패",
      "configSaved": "구성이 저장되었습니다",
      "configSavedHint": "기존 세션은 다시 열어야 적용됩니다",
      "saveConfigManagementFailed": "구성 관리 저장 실패",
      "clineSaved": "Cline 설정 저장됨",
      "saveClineFailed": "Cline 설정 저장 실패",
      "hermesSaved": "Hermes 설정 저장됨",
      "saveHermesFailed": "Hermes 설정 저장 실패",
      "modelProviderRequired": "저장하기 전에 모델 공급자를 선택하세요.",
      "affectedRunningSessions": "{count}개의 실행 중인 세션은 다시 연결하면 변경 사항이 적용됩니다"
    },
    "version": {
      "statusLabel": "버전 상태",
      "notInstalled": "설치되지 않음",
      "remoteLocal": "원격: {remoteVersion} · 로컬: {localVersion}",
      "platformUnsupported": "{versionText}. 현재 플랫폼에서는 이 에이전트를 지원하지 않습니다.",
      "uvxNotReady": "{versionText}. uv 런타임이 설치되지 않았습니다. 아래 uv 검사에서 설치하면 이 에이전트를 사용할 수 있습니다.",
      "clickInstall": "{versionText}. 오른쪽의 설치를 클릭하세요.",
      "localUnrecognized": "{versionText}. 로컬 버전을 비교할 수 없습니다. 덮어쓰기 설치를 위해 업그레이드를 시도하세요.",
      "upgradeAvailable": "{versionText}. 업그레이드가 가능합니다.",
      "remoteUnavailable": "{versionText}. 현재 원격 버전을 사용할 수 없습니다.",
      "latest": "{versionText}. 이미 최신입니다."
    },
    "cline": {
      "configDescription": "Cline API 제공자와 자격 증명을 구성합니다. 설정은 ~/.cline/data/에 저장됩니다."
    },
    "opencodePlugins": {
      "title": "OpenCode 플러그인",
      "declared": "선언된 플러그인",
      "noPlugins": "opencode.json에 선언된 플러그인이 없습니다",
      "status": {
        "installed": "설치됨",
        "missing": "미설치"
      },
      "installAll": "누락된 플러그인 모두 설치",
      "pinVersions": "@latest 버전 고정",
      "install": "설치",
      "uninstall": "제거",
      "refresh": "새로고침",
      "success": "모든 플러그인이 성공적으로 설치되었습니다",
      "failed": "플러그인 작업 실패"
    }
  },
  "SettingsPages": {
    "agentsLoading": "에이전트 설정을 불러오는 중..."
  },
  "GeneralSettings": {
    "loading": "로딩 중...",
    "sectionTitle": "일반",
    "sectionDescription": "기본 터미널, 렌더링 가속, 다중 에이전트 위임 등 공용 환경설정을 한곳에서 관리합니다.",
    "terminalTitle": "기본 터미널",
    "terminalDescription": "터미널 바 또는 파일 트리에서 새 터미널 탭을 열 때 사용할 셸을 선택합니다.",
    "defaultTerminalShell": "기본 셸",
    "terminalSystemDefault": "시스템 기본값",
    "terminalPowerShell7": "PowerShell 7 (pwsh)",
    "terminalWindowsPowerShell": "Windows PowerShell",
    "terminalCmd": "명령 프롬프트 (cmd)",
    "terminalSaveFailed": "터미널 설정 저장 실패: {message}",
    "terminalShellCustom": "사용자 지정 경로",
    "terminalShellCustomPath": "Shell 경로",
    "terminalShellCustomPlaceholder": "/usr/local/bin/fish",
    "terminalShellCustomSave": "저장",
    "terminalShellCustomHint": "절대 경로 또는 PATH에서 찾을 수 있는 명령 이름을 입력하세요.",
    "terminalShellNotInstalled": "설치되지 않음",
    "terminalShellNotFoundWarning": "이 경로는 현재 호스트에 존재하지 않습니다.",
    "terminalCurrentShell": "현재 사용 중: {path}",
    "renderingTitle": "렌더링",
    "renderingDescription": "앱이 검은 화면이 되거나 렌더링 문제가 발생하면(일부 AMD GPU 또는 Intel 내장 GPU에서 보고됨) 하드웨어 가속을 끄세요. Windows 데스크톱에서만 적용됩니다.",
    "disableHardwareAcceleration": "하드웨어 가속 비활성화",
    "renderingSaveFailed": "렌더링 설정 저장 실패: {message}",
    "restartRequired": "저장되었습니다. 변경 사항을 적용하려면 앱을 다시 시작하세요.",
    "restartNow": "지금 다시 시작",
    "restartFailed": "다시 시작 실패: {message}",
    "loadFailed": "불러오기 실패: {message}"
  },
  "LoginPage": {
    "documentTitle": "로그인 - codeg",
    "brand": "Codeg",
    "subtitle": "데스크톱 앱에 연결하려면 액세스 토큰을 입력하세요",
    "tokenPlaceholder": "액세스 토큰",
    "connect": "연결",
    "connecting": "연결 중...",
    "helpText": "토큰은 데스크톱 앱의 설정 → 웹 서비스에서 확인할 수 있습니다",
    "invalidToken": "유효하지 않은 토큰입니다. 확인 후 다시 시도하세요",
    "connectionFailed": "연결 실패 (HTTP {status})",
    "networkError": "서버에 연결할 수 없습니다"
  },
  "CommitPage": {
    "title": "커밋",
    "invalidFolderId": "유효하지 않은 폴더 ID",
    "loadingRepo": "저장소를 불러오는 중..."
  },
  "MergePage": {
    "title": "충돌 해결",
    "invalidFolderId": "잘못된 폴더 ID",
    "loadingRepo": "저장소 로딩 중...",
    "localVersion": "로컬 (우리 쪽)",
    "result": "결과",
    "remoteVersion": "원격 (상대 쪽)",
    "acceptLocal": "로컬 적용",
    "acceptRemote": "원격 적용",
    "markResolved": "해결됨으로 표시",
    "abortMerge": "중단",
    "completeMerge": "병합 완료",
    "unresolvedConflicts": "파일에 아직 해결되지 않은 충돌 마커가 있습니다",
    "fileResolved": "파일이 해결되었습니다",
    "allResolved": "모든 충돌이 해결되었습니다",
    "conflictFiles": "충돌 파일",
    "loadingFile": "파일 로딩 중...",
    "preparingMerge": "병합 준비 중...",
    "selectFile": "해결할 파일을 선택하세요",
    "noConflicts": "충돌 파일 없음",
    "skipFile": "건너뛰기",
    "abortSuccess": "작업이 중단되었습니다",
    "applyAllNonConflicting": "충돌하지 않는 모든 변경 적용",
    "applyLeftNonConflicting": "로컬 적용",
    "applyRightNonConflicting": "원격 적용"
  },
  "Folder": {
    "workspaceStatus": {
      "degradedTitle": "실시간 업데이트를 사용할 수 없음",
      "degradedHint": "감시자 시작 실패(권한 거부 등). 최신 변경 사항을 보려면 수동으로 새로 고치세요.",
      "retry": "다시 시도",
      "retrying": "다시 시도 중..."
    },
    "common": {
      "all": "전체",
      "cancel": "취소",
      "close": "닫기",
      "closeOthers": "다른 항목 닫기",
      "closeAll": "모두 닫기",
      "confirm": "확인",
      "save": "저장",
      "delete": "삭제",
      "rename": "이름 변경",
      "loading": "로딩 중...",
      "refresh": "새로고침",
      "refreshing": "새로고침 중...",
      "create": "생성",
      "createAndSwitch": "생성 후 전환",
      "openFile": "파일 열기",
      "viewDiff": "Diff 보기",
      "push": "푸시..."
    },
    "statusLabels": {
      "in_progress": "진행 중",
      "pending_review": "검토",
      "completed": "완료",
      "cancelled": "취소됨"
    },
    "sidebar": {
      "title": "대화",
      "locateActiveConversation": "활성 대화 찾기",
      "expandAllGroups": "모든 그룹 펼치기",
      "collapseAllGroups": "모든 그룹 접기",
      "newConversation": "새 대화",
      "newConversationShort": "새로 만들기",
      "newChat": "새 대화",
      "search": "검색",
      "noConversationsFound": "대화를 찾을 수 없습니다.",
      "importLocalSessions": "로컬 세션 가져오기",
      "importing": "가져오는 중...",
      "error": "오류: {message}",
      "completeAllSessions": "모든 세션 완료 처리",
      "completeAllReviewTitle": "모든 검토 세션을 완료 처리할까요?",
      "completeAllReviewDescription": "검토 상태의 {count, plural, one {#개 세션} other {#개 세션}}을 모두 완료로 표시합니다.",
      "completing": "완료 처리 중...",
      "toasts": {
        "importedSessions": "{imported, plural, one {#개 세션} other {#개 세션}}을 가져오고 {skipped}개를 건너뛰었습니다",
        "importedAndUpdated": "{imported, plural, one {#개 세션} other {#개 세션}}을 가져오고 {updated, plural, one {#개 제목} other {#개 제목}}을 업데이트하고 {skipped}개를 건너뛰었습니다",
        "updatedTitles": "{updated, plural, one {#개 제목} other {#개 제목}}을 업데이트하고 {skipped}개를 건너뛰었습니다",
        "noNewSessionsFound": "새 세션이 없습니다 ({skipped}개 건너뜀)",
        "importFailed": "가져오기 실패: {message}",
        "reviewCompleted": "{count, plural, one {#개 검토 세션} other {#개 검토 세션}}을 완료로 표시했습니다",
        "completeReviewFailed": "검토 세션 완료 처리 실패: {message}",
        "folderOpened": "폴더 {name}을(를) 열었습니다",
        "folderRemoved": "폴더 {name}을(를) 제거했습니다",
        "openFolderFailed": "폴더를 열 수 없습니다",
        "removeFolderFailed": "폴더 제거 실패: {message}",
        "reorderFoldersFailed": "폴더 순서 변경 실패: {message}",
        "changeFolderColorFailed": "색상 변경 실패: {message}",
        "changeFolderDefaultAgentFailed": "기본 에이전트 설정 실패: {message}"
      },
      "statsLabel": "{folders}개 폴더 · {convos}개 대화",
      "reorderHandle": "드래그하여 순서 변경",
      "openFolder": "폴더 열기",
      "searchPlaceholder": "대화 검색...",
      "showCompleted": "완료된 대화 표시",
      "moreOptions": "더 많은 옵션",
      "sortBy": "정렬 기준",
      "sortByCreatedAt": "생성 시간순",
      "sortByUpdatedAt": "업데이트 시간순",
      "statusRunningBadge": "실행 중",
      "statusCancelledBadge": "취소됨",
      "conversationCountUnit": "{count}개",
      "emptyFolderHint": "대화 없음",
      "noMatchingConversations": "일치하는 대화가 없습니다",
      "noUnfinishedConversations": "미완료 대화가 없습니다. 오른쪽 상단 메뉴에서 \"완료된 대화 표시\"를 활성화할 수 있습니다.",
      "removeFolderConfirmTitle": "이 폴더를 워크스페이스에서 제거하시겠습니까?",
      "removeFolderConfirmDescription": "워크스페이스에서 \"{name}\"을(를) 제거하시겠습니까? 관련 탭과 터미널이 닫힙니다.",
      "folderHeaderMenu": {
        "manageConversations": "대화 관리…",
        "changeColor": "색상 변경",
        "useThemeColor": "앱 테마 사용",
        "setDefaultAgent": "기본 에이전트 설정",
        "defaultAgentNone": "설정 없음(전역 사용)",
        "agentUnavailableSuffix": "(사용 불가)",
        "loadingAgents": "에이전트 로드 중…",
        "removeFromWorkspace": "워크스페이스에서 제거"
      },
      "manageConversations": {
        "title": "대화 관리 — {name}",
        "searchPlaceholder": "제목으로 검색…",
        "agentFilterAll": "모든 에이전트",
        "statusFilterAll": "모든 상태",
        "selectAllVisible": "전체 선택",
        "deselectAll": "선택 해제",
        "selectedCount": "{count}개 선택됨",
        "matchedCount": "{count}개 일치",
        "messagesShort": "{count}개",
        "untitledConversation": "제목 없는 대화",
        "setStatus": "상태 변경…",
        "deleteSelected": "삭제",
        "noConversations": "이 폴더에 대화가 없습니다.",
        "noMatchingConversations": "필터에 일치하는 대화가 없습니다.",
        "confirmDeleteTitle": "{count}개 대화를 삭제하시겠습니까?",
        "confirmDeleteDescription": "이 작업은 되돌릴 수 없습니다.",
        "toastDeleted": "{count}개 대화를 삭제했습니다",
        "toastStatusUpdated": "{count}개 대화의 상태를 업데이트했습니다",
        "toastOpFailed": "작업 실패: {message}"
      },
      "sectionPinned": "고정됨",
      "sectionFolders": "폴더",
      "sectionChats": "채팅",
      "noChats": "채팅 없음",
      "newChatAction": "새 채팅"
    },
    "conversation": {
      "reloadFailed": "대화 다시 불러오기 실패: {message}",
      "reloaded": "대화를 다시 불러왔습니다",
      "reload": "다시 불러오기",
      "activeConversationIndicator": "활성 대화",
      "newConversation": "새 대화",
      "closeConversation": "대화 닫기",
      "copyText": "텍스트 복사",
      "copyTextSuccess": "복사됨",
      "copyTextFailed": "복사 실패",
      "forkSession": "세션 포크",
      "forkSessionSuccess": "세션 포크 성공",
      "forkSessionFailed": "세션 포크 실패: {error}",
      "exportConversation": "대화 내보내기",
      "exportImage": "이미지",
      "exportMarkdown": "Markdown",
      "exportHtml": "HTML",
      "exportSuccess": "대화를 내보냈습니다",
      "exportFailed": "내보내기 실패",
      "exportImageTooLong": "대화가 너무 길어 이미지로 내보낼 수 없습니다",
      "exportLabels": {
        "untitledConversation": "제목 없는 대화",
        "agent": "에이전트",
        "model": "모델",
        "status": "상태",
        "started": "시작",
        "updated": "업데이트",
        "tokens": "토큰 통계",
        "duration": "소요 시간",
        "inputTokens": "입력",
        "outputTokens": "출력",
        "cacheRead": "캐시 읽기",
        "cacheWrite": "캐시 쓰기",
        "user": "사용자",
        "assistant": "어시스턴트",
        "system": "시스템",
        "toolResult": "결과",
        "toolError": "오류"
      }
    },
    "conversationCard": {
      "untitledConversation": "제목 없는 대화",
      "newConversation": "새 대화",
      "rename": "이름 변경",
      "status": "상태",
      "delete": "삭제",
      "importLocalSessions": "로컬 세션 가져오기",
      "importing": "가져오는 중...",
      "renameConversation": "대화 이름 변경",
      "deleteConversationTitle": "대화를 삭제할까요?",
      "deleteConversationDescription": "\"{title}\"을(를) 삭제합니다. 이 작업은 되돌릴 수 없습니다.",
      "cancel": "취소",
      "save": "저장",
      "pin": "고정",
      "unpin": "고정 해제",
      "markCompleted": "완료로 표시",
      "reopen": "다시 열기"
    },
    "search": {
      "dialogTitle": "검색",
      "dialogTitleWithFolder": "검색 — {name}",
      "tabConversations": "대화",
      "tabFiles": "파일",
      "placeholder": "대화 검색...",
      "filePlaceholder": "파일 또는 디렉토리 검색...",
      "allAgents": "전체",
      "searching": "검색 중...",
      "typeToSearch": "입력하여 대화를 검색하세요",
      "typeToSearchFiles": "입력하여 파일 또는 디렉토리를 검색하세요",
      "noResults": "검색 결과가 없습니다.",
      "untitledConversation": "제목 없는 대화"
    },
    "folderTitleBar": {
      "showSidebar": "사이드바 표시",
      "hideSidebar": "사이드바 숨기기",
      "toggleTerminal": "터미널 전환",
      "toggleAuxPanel": "보조 패널 전환",
      "search": "검색",
      "openSettings": "설정 열기",
      "withShortcut": "{label} ({shortcut} 단축키)"
    },
    "statusBar": {
      "connection": {
        "connected": "연결됨",
        "connecting": "연결 중...",
        "prompting": "응답 중...",
        "error": "연결 오류",
        "disconnected": "연결 끊김",
        "tooltip": "{agent}: {status}",
        "tooltipError": "{agent}: {error}"
      },
      "tasks": {
        "title": "작업"
      },
      "alerts": {
        "title": "알림",
        "empty": "알림 없음"
      },
      "stats": {
        "conversations": "{count}개 대화",
        "summary": "{conversations}개 대화 / {messages}개 메시지"
      },
      "tokens": {
        "contextWindowUsageAria": "컨텍스트 윈도우 사용량",
        "contextWindow": "컨텍스트 윈도우",
        "usedMax": "사용 / 최대",
        "tokenUsage": "토큰 사용량",
        "input": "입력",
        "output": "출력",
        "cacheRead": "캐시 읽기",
        "cacheWrite": "캐시 쓰기",
        "total": "합계"
      }
    },
    "auxPanel": {
      "tabs": {
        "files": "파일",
        "changes": "변경사항",
        "commits": "커밋"
      },
      "noFolderTitle": "열린 폴더 없음",
      "noFolderHint": "폴더를 열면 여기에 표시됩니다"
    },
    "windowControls": {
      "minimizeWindow": "창 최소화",
      "minimize": "최소화",
      "maximizeWindow": "창 최대화",
      "maximize": "최대화",
      "restoreWindow": "창 복원",
      "restore": "복원",
      "closeWindow": "창 닫기",
      "close": "닫기"
    },
    "tabs": {
      "closeConversationTab": "대화 탭 닫기",
      "close": "닫기",
      "closeOthers": "다른 항목 닫기",
      "closeAll": "모두 닫기",
      "tileDisplay": "타일 표시",
      "untileDisplay": "타일 해제"
    },
    "fileWorkspace": {
      "files": "파일",
      "closeFileTab": "파일 탭 닫기",
      "close": "닫기",
      "closeOthers": "다른 항목 닫기",
      "closeAll": "모두 닫기",
      "preview": "미리보기",
      "editSource": "소스 편집",
      "maximize": "최대화",
      "restore": "복원"
    },
    "terminal": {
      "rename": "이름 변경",
      "close": "닫기",
      "closeOthers": "다른 항목 닫기",
      "closeAll": "모두 닫기",
      "hideTerminal": "터미널 숨기기 ({shortcut})",
      "openFolderFirst": "먼저 폴더를 여세요"
    },
    "folderNameDropdown": {
      "fallbackFolderName": "폴더",
      "openFolder": "폴더 열기",
      "cloneRepository": "리포지토리 클론",
      "projectBoot": "프로젝트 부트",
      "opened": "열린 항목",
      "recentOpen": "최근 연 항목"
    },
    "fileWorkspacePanel": {
      "viewDiff": "Diff 보기",
      "openFile": "파일 열기",
      "fileCount": "{count, plural, one {#개 파일} other {#개 파일}}",
      "openFileOrDiff": "오른쪽 패널에서 파일 또는 diff를 여세요",
      "disk": "디스크",
      "head": "HEAD",
      "unsaved": "저장되지 않음",
      "workingTree": "작업 트리",
      "loading": "로딩 중...",
      "compareWithBranch": "{path} · {branch}와 비교",
      "hunkCount": "{count, plural, one {#개 hunk} other {#개 hunks}}",
      "prev": "이전",
      "next": "다음",
      "jumpToLine": "{line}행으로 이동",
      "noParsedDiffSections": "파싱된 diff 섹션이 없습니다",
      "loadingEditor": "에디터 로딩 중...",
      "imageZoomIn": "확대",
      "imageZoomOut": "축소",
      "imageZoomReset": "확대/축소 초기화",
      "htmlPreviewTitle": "HTML 미리보기",
      "htmlPreviewTrust": "스크립트 사용",
      "htmlPreviewTrustHint": "이 파일의 스크립트를 실행하고 네트워크 접근을 허용합니다. 신뢰할 수 있는 파일에서만 사용하세요."
    },
    "branchDropdown": {
      "toasts": {
        "commitCodeCompleted": "코드 커밋이 완료되었습니다",
        "pushCodeCompleted": "코드 푸시가 완료되었습니다",
        "committedFiles": "{count, plural, one {#개 파일 커밋됨} other {#개 파일 커밋됨}}",
        "taskCompleted": "{label} 완료",
        "taskFailed": "{label} 실패",
        "mergeNoNewCommits": "{branchName}에는 새 커밋이 없습니다",
        "mergedCommits": "{count, plural, one {#개 커밋 병합됨} other {#개 커밋 병합됨}}",
        "allFilesUpToDate": "모든 파일이 최신 상태입니다",
        "updatedFiles": "{count, plural, one {#개 파일 업데이트됨} other {#개 파일 업데이트됨}}",
        "openCommitWindowFailed": "커밋 창을 열지 못했습니다",
        "openPushWindowFailed": "푸시 창 열기 실패",
        "upstreamSet": "업스트림 브랜치가 설정되었습니다",
        "upstreamSetAndPushed": "업스트림 브랜치를 설정하고 {count, plural, one {#개 커밋} other {#개 커밋}}을 푸시했습니다",
        "noCommitsToPush": "푸시할 커밋이 없습니다",
        "pushedCommits": "{count, plural, one {#개 커밋 푸시됨} other {#개 커밋 푸시됨}}",
        "switchedToFolder": "{name}(으)로 전환했습니다",
        "switchFailed": "브랜치 전환에 실패했습니다"
      },
      "tasks": {
        "newBranch": "브랜치 {name} 생성",
        "newWorktree": "워크트리 {name} 생성",
        "checkoutTo": "{branchName}(으)로 체크아웃",
        "mergeBranch": "{branchName} 병합",
        "rebaseTo": "{branchName}로 리베이스",
        "deleteRemoteBranch": "원격 브랜치 {branchName} 삭제",
        "initGitRepo": "Git 저장소 초기화",
        "pullCode": "코드 pull",
        "fetchInfo": "정보 fetch",
        "pushCode": "코드 push",
        "stashChanges": "변경 사항 stash",
        "stashPop": "stash pop",
        "deleteBranch": "브랜치 {branchName} 삭제"
      },
      "confirm": {
        "mergeTitle": "브랜치 병합",
        "rebaseTitle": "브랜치 리베이스",
        "mergeDescription": "{branchName}을(를) 현재 브랜치 {currentBranch}에 병합할까요?",
        "rebaseDescription": "현재 브랜치 {currentBranch}를 {branchName} 위로 리베이스할까요?",
        "deleteRemoteTitle": "원격 브랜치 삭제",
        "deleteRemoteDescription": "원격 브랜치 {branchName}을(를) 삭제하시겠습니까? 이 작업은 원격 저장소에서 브랜치를 제거하며 되돌릴 수 없습니다.",
        "deleteTitle": "브랜치 삭제",
        "deleteDescription": "브랜치 {branchName}을(를) 삭제할까요? 이 작업은 되돌릴 수 없습니다.",
        "forceDeleteTitle": "브랜치 강제 삭제",
        "forceDeleteDescription": "브랜치 {branchName}가 완전히 병합되지 않았습니다. 강제 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다."
      },
      "current": "현재",
      "switchToBranch": "이 브랜치로 전환",
      "mergeBranchIntoCurrent": "{branchName}을(를) {currentBranch}에 병합",
      "rebaseCurrentToBranch": "{currentBranch}를 {branchName}로 리베이스",
      "noBranch": "브랜치 없음",
      "initGitRepo": "Git 저장소 초기화",
      "pullCode": "코드 pull",
      "fetchRemoteBranches": "원격 브랜치 가져오기",
      "openCommitWindow": "코드 커밋...",
      "pushCode": "푸시...",
      "newBranch": "새 브랜치...",
      "newWorktree": "새 워크트리...",
      "stashChanges": "스태시...",
      "stashPop": "stash pop...",
      "manageRemotes": "원격 관리...",
      "localBranches": "로컬 브랜치 ({count, plural, one {#} other {#}})",
      "noLocalBranches": "로컬 브랜치가 없습니다",
      "remoteBranches": "원격 브랜치 ({count, plural, one {#} other {#}})",
      "noRemoteBranches": "원격 브랜치가 없습니다",
      "dialogs": {
        "newBranchTitle": "새 브랜치",
        "newBranchDescription": "현재 브랜치 {branch}에서 새 브랜치를 만듭니다",
        "branchNamePlaceholder": "브랜치 이름",
        "newWorktreeTitle": "새 워크트리",
        "newWorktreeDescription": "현재 브랜치 {branch}에서 새 워크트리를 만듭니다",
        "branchNameLabel": "브랜치 이름",
        "worktreePathLabel": "워크트리 경로",
        "worktreePathPlaceholder": "워크트리 경로",
        "manageRemotesTitle": "원격 관리",
        "manageRemotesEmpty": "구성된 원격이 없습니다",
        "remoteNamePlaceholder": "원격 이름",
        "remoteUrlPlaceholder": "원격 URL",
        "addRemote": "추가",
        "savingRemotes": "저장 중..."
      },
      "conflict": {
        "title": "병합 충돌",
        "description": "다음 파일에 충돌이 있어 해결이 필요합니다:",
        "abort": "병합 중단",
        "openMergeTool": "병합 도구 열기",
        "completeMerge": "병합 완료",
        "abortSuccess": "병합이 중단되었습니다",
        "completeSuccess": "병합이 완료되었습니다"
      },
      "stashDialog": {
        "title": "변경 사항 스태시",
        "description": "현재 변경 사항을 스태시에 저장",
        "messageLabel": "메시지",
        "messagePlaceholder": "스태시 메시지 (선택사항)",
        "keepIndex": "인덱스 유지 (스테이지된 변경 사항 유지)",
        "cancel": "취소",
        "stash": "스태시",
        "success": "변경 사항이 스태시되었습니다",
        "error": "스태시 실패"
      },
      "unstashDialog": {
        "title": "스태시 적용",
        "noStashes": "스태시가 없습니다",
        "selectFile": "파일을 선택하여 차이 보기",
        "viewDiff": "차이 보기",
        "original": "원본",
        "modified": "수정됨",
        "apply": "적용",
        "drop": "삭제",
        "applySuccess": "스태시가 적용되었습니다",
        "dropSuccess": "스태시가 삭제되었습니다",
        "confirmApply": "스태시 {ref}을(를) 작업 디렉토리에 적용하시겠습니까?",
        "cancel": "취소"
      },
      "deleteBranch": "브랜치 삭제"
    },
    "commitDialog": {
      "toasts": {
        "commitCompleted": "코드 커밋이 완료되었습니다",
        "pushFailed": "푸시 실패",
        "committedFiles": "{count, plural, one {#개 파일 커밋됨} other {#개 파일 커밋됨}}",
        "addedToVcs": "VCS에 추가되었습니다",
        "addToVcsFailed": "VCS에 추가하지 못했습니다",
        "fileDeleted": "파일이 삭제되었습니다",
        "deleteFailed": "삭제에 실패했습니다",
        "fileRolledBack": "파일이 롤백되었습니다",
        "rollbackFailed": "롤백에 실패했습니다",
        "dirRolledBack": "디렉토리가 롤백되었습니다",
        "dirDeleted": "디렉토리가 삭제되었습니다"
      },
      "confirm": {
        "deleteTitle": "삭제 확인",
        "deleteDescription": "파일 \"{file}\"을(를) 삭제할까요? 이 작업은 되돌릴 수 없습니다.",
        "rollbackTitle": "롤백 확인",
        "rollbackDescription": "파일 \"{file}\"을(를) HEAD로 롤백할까요? 저장되지 않은 변경 사항은 사라집니다.",
        "rollbackDirDescription": "디렉토리 \"{dir}\"를 HEAD로 롤백하시겠습니까? 저장되지 않은 변경 사항이 손실됩니다.",
        "deleteDirDescription": "디렉토리 \"{dir}\"를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다."
      },
      "actions": {
        "select": "선택",
        "unselect": "선택 해제",
        "rollback": "롤백",
        "addToVcs": "VCS에 추가"
      },
      "aria": {
        "selectFile": "{action}: {path}",
        "unselectAllFiles": "모든 파일 선택 해제",
        "selectAllFiles": "모든 파일 선택",
        "unselectTracked": "추적된 변경 선택 해제",
        "selectTracked": "추적된 변경 선택",
        "unselectUntracked": "추적되지 않은 파일 선택 해제",
        "selectUntracked": "추적되지 않은 파일 선택"
      },
      "loading": "로딩 중...",
      "selectionCount": "{selected} / {total}개 파일",
      "emptyFiles": "변경된 파일이 없습니다",
      "trackedChanges": "추적된 변경 ({count})",
      "untrackedFiles": "추적되지 않은 파일 ({count})",
      "commitMessage": "커밋 메시지",
      "commitMessagePlaceholder": "커밋 메시지 입력...",
      "commitButton": "커밋 ({count})",
      "commitAndPushButton": "커밋 후 푸시 ({count})",
      "head": "HEAD",
      "workingTree": "작업 트리",
      "clickFileToDiff": "파일 이름을 클릭해 diff를 확인하세요",
      "loadingDiff": "diff 로딩 중..."
    },
    "pushWindow": {
      "title": "코드 푸시",
      "noUnpushedCommits": "푸시되지 않은 커밋이 없습니다",
      "noRemoteConfigured": "Git 원격이 구성되지 않았습니다\n「원격 관리」에서 원격을 추가하세요",
      "newBranchNoPushedCommits": "새 브랜치 — 푸시하여 원격 추적 브랜치 생성",
      "unpushed": "미푸시",
      "selectFileToViewDiff": "파일을 선택하여 차이 보기",
      "before": "변경 전",
      "after": "변경 후",
      "push": "푸시",
      "toasts": {
        "pushSuccess": "푸시 성공",
        "pushFailed": "푸시 실패",
        "upstreamSet": "원격 추적 브랜치가 설정되었습니다",
        "upstreamSetAndPushed": "원격 추적 브랜치 설정 및 {count}개 커밋 푸시 완료",
        "noCommitsToPush": "푸시할 커밋이 없습니다",
        "pushedCommits": "{count}개 커밋 푸시 완료"
      }
    },
    "gitLogTab": {
      "filesTitle": "파일",
      "expandAllFiles": "모든 파일 펼치기",
      "collapseAllFiles": "모든 파일 접기",
      "workspace": "작업 공간",
      "retry": "다시 시도",
      "noCommitsFound": "커밋을 찾을 수 없습니다",
      "notAGitRepoTitle": "Git 저장소가 아닙니다",
      "notAGitRepoHint": "위의 브랜치 메뉴에서 Git을 초기화하거나 기존 저장소를 여세요.",
      "hash": "해시",
      "copyHash": "해시 복사",
      "copyMessage": "메시지 복사",
      "author": "작성자",
      "noFileChangeDetails": "파일 변경 상세 정보가 없습니다.",
      "branchesTitle": "브랜치",
      "loadingBranches": "브랜치 로딩 중...",
      "noContainingBranches": "포함하는 브랜치를 찾을 수 없습니다.",
      "newBranch": "새 브랜치...",
      "resetToHere": "여기로 리셋",
      "resetDisabledReasonNotCurrentBranchView": "현재 브랜치 보기에서만 사용할 수 있습니다",
      "viewCommitDiffAria": "커밋 {hash}의 diff 보기",
      "copyFullCommitHashAria": "전체 커밋 해시 {hash} 복사",
      "pushStatus": {
        "pushed": "원격에 푸시됨",
        "notPushed": "원격에 푸시되지 않음",
        "unknown": "푸시 상태 알 수 없음 (upstream 미설정)"
      },
      "time": {
        "monthsAgo": "{count, plural, one {#개월 전} other {#개월 전}}",
        "daysAgo": "{count, plural, one {#일 전} other {#일 전}}",
        "hoursAgo": "{count, plural, one {#시간 전} other {#시간 전}}",
        "minsAgo": "{count, plural, one {#분 전} other {#분 전}}",
        "justNow": "방금 전"
      },
      "toasts": {
        "createdAndSwitchedNewBranch": "새 브랜치를 생성하고 전환했습니다",
        "newBranchFromCommit": "{name} ({shortHash}에서 생성)",
        "createBranchFailed": "브랜치 생성에 실패했습니다",
        "openPushWindowFailed": "푸시 창을 열지 못했습니다",
        "resetSuccess": "리셋 완료",
        "resetSuccessDescription": "{branch}을(를) {mode}로 {shortHash}에 리셋했습니다",
        "resetFailed": "리셋 실패"
      },
      "branchSelector": {
        "selectBranchPlaceholder": "브랜치 선택...",
        "localBranches": "로컬 브랜치",
        "current": "현재",
        "remoteBranches": "원격 브랜치",
        "refreshCommitHistory": "커밋 히스토리 새로고침"
      },
      "dialogs": {
        "newBranchTitle": "새 브랜치",
        "newBranchDescription": "커밋 {shortHash}를 최신 커밋으로 하여 새 브랜치를 생성합니다.",
        "branchNamePlaceholder": "브랜치 이름",
        "reset": {
          "title": "현재 브랜치를 이 커밋으로 리셋",
          "branchLabel": "브랜치",
          "targetLabel": "대상 커밋",
          "messageLabel": "커밋 메시지",
          "modeLabel": "리셋 모드",
          "confirmButton": "리셋",
          "modes": {
            "soft": {
              "label": "--soft",
              "description": "HEAD와 현재 브랜치 포인터를 대상 커밋으로 이동합니다.\nIndex와 Working Tree는 변경하지 않습니다.\n되돌려진 커밋의 변경 사항은 staged 상태로 유지됩니다."
            },
            "mixed": {
              "label": "--mixed (기본값)",
              "description": "HEAD를 대상 커밋으로 이동합니다.\nIndex를 대상 커밋으로 되돌리고 Working Tree 변경은 유지합니다.\n변경 사항은 staged에서 unstaged로 바뀝니다."
            },
            "hard": {
              "label": "--hard",
              "description": "HEAD를 이동하고 Index와 Working Tree를 모두 대상 커밋으로 되돌립니다.\n대상 커밋 이후의 추적된 로컬 변경은 삭제됩니다.\n파괴적인 작업입니다."
            },
            "keep": {
              "label": "--keep",
              "description": "HEAD를 대상 커밋으로 이동하면서 가능한 한 로컬 변경을 유지합니다.\n충돌하지 않는 변경만 보존됩니다.\n충돌이 감지되면 작업 보호를 위해 리셋이 중단됩니다."
            }
          }
        }
      }
    },
    "gitChangesTab": {
      "workspace": "작업 공간",
      "noChanges": "로컬 변경 사항이 없습니다",
      "notAGitRepoTitle": "Git 저장소가 아닙니다",
      "notAGitRepoHint": "위의 브랜치 메뉴에서 Git을 초기화하거나 기존 저장소를 여세요.",
      "trackedChanges": "추적된 변경 ({count})",
      "untrackedFiles": "추적되지 않은 파일 ({count})",
      "expandTracked": "추적된 변경 펼치기",
      "collapseTracked": "추적된 변경 접기",
      "expandUntracked": "추적되지 않은 파일 펼치기",
      "collapseUntracked": "추적되지 않은 파일 접기",
      "actions": {
        "commitCode": "코드 커밋",
        "rollback": "롤백",
        "addToVcs": "VCS에 추가",
        "delete": "삭제"
      },
      "toasts": {
        "noAddableFilesInDir": "이 디렉터리에는 VCS에 추가할 수 있는 변경 파일이 없습니다",
        "noRollbackFilesInDir": "이 디렉터리에는 롤백할 수 있는 변경 파일이 없습니다",
        "addedToVcs": "{name}을(를) VCS에 추가했습니다",
        "addToVcsFailed": "VCS에 추가하지 못했습니다",
        "openCommitWindowFailed": "커밋 창을 열지 못했습니다",
        "rolledBack": "{name}을(를) 롤백했습니다",
        "rollbackFailed": "롤백에 실패했습니다",
        "addedFilesToVcs": "{count, plural, one {#개 파일을 VCS에 추가} other {#개 파일을 VCS에 추가}}",
        "rolledBackFiles": "{count, plural, one {#개 파일 롤백} other {#개 파일 롤백}}",
        "deleted": "{name}이(가) 삭제되었습니다",
        "deleteFailed": "삭제에 실패했습니다",
        "deletedFiles": "{count}개 파일을 삭제했습니다",
        "noDeletableFilesInDir": "이 디렉터리에서 삭제할 수 있는 변경된 파일이 없습니다"
      },
      "directoryDialog": {
        "descriptionAdd": "디렉터리 {path} 아래에서 VCS에 추가할 파일을 선택하세요.",
        "descriptionRollback": "디렉터리 {path} 아래에서 롤백할 파일을 선택하세요.",
        "descriptionDelete": "디렉터리 {path} 아래에서 삭제할 파일을 선택하세요. 이 작업은 되돌릴 수 없습니다.",
        "descriptionFallback": "계속 진행할 파일을 선택하세요.",
        "selectionCount": "{selected} / {total} 선택됨",
        "selectAll": "모두 선택",
        "unselectAll": "모두 선택 해제",
        "loadingCandidates": "디렉터리 변경 사항 로딩 중...",
        "noOperableFiles": "작업 가능한 파일이 없습니다"
      },
      "rollbackConfirm": {
        "title": "롤백 확인",
        "descriptionWithTarget": "{kind} \"{name}\"의 로컬 변경 사항을 롤백할까요?",
        "descriptionFallback": "로컬 변경 사항을 롤백할까요?",
        "kindDirectory": "디렉터리",
        "kindFile": "파일"
      },
      "deleteConfirm": {
        "title": "삭제 확인",
        "descriptionWithTarget": "{kind} \"{name}\"을(를) 삭제할까요? 이 작업은 되돌릴 수 없습니다.",
        "descriptionFallback": "이 작업은 되돌릴 수 없습니다.",
        "kindDirectory": "디렉터리",
        "kindFile": "파일"
      }
    },
    "tabContext": {
      "loadingConversation": "로딩 중...",
      "untitledConversation": "제목 없는 대화",
      "newConversation": "새 대화"
    },
    "fileTreeTab": {
      "workspace": "작업 공간",
      "retry": "다시 시도",
      "git": "Git",
      "openInFileManager": "파일 관리자에서 열기",
      "openInFinder": "Finder에서 열기",
      "openInExplorer": "Explorer에서 열기",
      "attachToCurrentSession": "세션에 추가",
      "compareWithBranch": "브랜치와 비교...",
      "reloadFromDisk": "디스크에서 다시 불러오기",
      "new": "새로 만들기",
      "newFile": "파일",
      "newDirectory": "디렉터리",
      "openIn": "열기",
      "openInTerminal": "터미널에서 열기",
      "copyPath": "경로 복사",
      "upload": "파일/폴더 업로드",
      "download": "파일 다운로드",
      "downloadAsZip": "ZIP으로 다운로드",
      "actions": {
        "select": "선택",
        "unselect": "선택 해제",
        "commitCode": "코드 커밋",
        "rollback": "롤백",
        "addToVcs": "VCS에 추가"
      },
      "aria": {
        "selectPath": "{action}: {path}"
      },
      "toasts": {
        "openDirectoryFailed": "디렉터리를 열지 못했습니다",
        "openBuiltinTerminalFailed": "내장 터미널을 열 수 없습니다",
        "openCommitWindowFailed": "커밋 창을 열지 못했습니다",
        "noAddableFilesInDir": "이 디렉터리에는 VCS에 추가할 수 있는 변경 파일이 없습니다",
        "noRollbackFilesInDir": "이 디렉터리에는 롤백할 수 있는 변경 파일이 없습니다",
        "addedToVcs": "{name}을(를) VCS에 추가했습니다",
        "addToVcsFailed": "VCS에 추가하지 못했습니다",
        "loadBranchesFailed": "브랜치를 불러오지 못했습니다",
        "renameFailed": "이름 변경에 실패했습니다",
        "deleteFailed": "삭제에 실패했습니다",
        "rolledBack": "{name}을(를) 롤백했습니다",
        "rollbackFailed": "롤백에 실패했습니다",
        "addedFilesToVcs": "{count, plural, one {#개 파일을 VCS에 추가했습니다} other {#개 파일을 VCS에 추가했습니다}}",
        "rolledBackFiles": "{count, plural, one {#개 파일을 롤백했습니다} other {#개 파일을 롤백했습니다}}",
        "savedAsCopy": "사본으로 저장했습니다",
        "saveCopyFailed": "사본으로 저장하지 못했습니다",
        "watchStartFailed": "파일 감시 시작에 실패했습니다",
        "createFailed": "생성 실패",
        "downloadFailed": "{name} 다운로드 실패",
        "downloadSaved": "{name} 다운로드 완료",
        "pathCopied": "경로가 복사되었습니다",
        "copyPathFailed": "경로 복사에 실패했습니다"
      },
      "createDialog": {
        "newFile": "새 파일",
        "newDirectory": "새 디렉터리",
        "description": "새 {kind}의 이름을 입력하세요.",
        "placeholderFile": "file-name.ext",
        "placeholderDirectory": "folder-name"
      },
      "renameDialog": {
        "renameDirectory": "디렉터리 이름 변경",
        "renameFile": "파일 이름 변경",
        "description": "새 이름을 입력하세요(이름만, 경로 제외).",
        "placeholderDirectory": "새-폴더-이름",
        "placeholderFile": "새-파일-이름.ext"
      },
      "uploadDialog": {
        "title": "작업 공간에 업로드",
        "description": "필요하면 업로드 위치를 변경한 다음 파일이나 폴더를 추가하세요.",
        "workspaceRoot": "작업 공간 루트",
        "targetPathLabel": "업로드 위치",
        "targetPathHint": "실제 경로: {path}",
        "dropHint": "파일 또는 폴더를 여기에 끌어오거나 아래 버튼을 사용하세요",
        "dropHintActive": "놓으면 대기열에 추가됩니다",
        "selectFiles": "파일 선택",
        "selectFolder": "폴더 선택",
        "startUpload": "업로드 시작",
        "clearQueue": "완료된 항목 지우기",
        "removeItem": "대기열에서 제거",
        "retry": "다시 시도",
        "dropZoneAria": "파일을 여기에 드롭하거나 Enter 키로 찾아보기",
        "folderEmpty": "드롭한 폴더에서 파일을 찾을 수 없습니다",
        "summary": "합계: {total} · 성공: {succeeded} · 실패: {failed}",
        "status": {
          "pending": "대기 중",
          "uploading": "업로드 중",
          "success": "완료",
          "error": "실패",
          "cancelled": "취소됨"
        }
      },
      "directoryDialog": {
        "descriptionAdd": "디렉터리 {path} 아래에서 VCS에 추가할 파일을 선택하세요.",
        "descriptionRollback": "디렉터리 {path} 아래에서 롤백할 파일을 선택하세요.",
        "descriptionFallback": "계속할 파일을 선택하세요.",
        "selectionCount": "{selected} / {total}개 파일 선택됨",
        "selectAll": "모두 선택",
        "unselectAll": "모두 선택 해제",
        "loadingCandidates": "디렉터리 변경 사항을 불러오는 중...",
        "noOperableFiles": "작업 가능한 파일이 없습니다"
      },
      "compareDialog": {
        "title": "브랜치와 비교",
        "descriptionWithTarget": "브랜치를 선택하고 {kind} {path}와(과) 비교하세요",
        "descriptionFallback": "비교할 브랜치를 선택하세요.",
        "kindDirectory": "디렉터리",
        "kindFile": "파일",
        "filterPlaceholder": "브랜치 필터링 (예: main / origin/main)",
        "singleClickHint": "브랜치를 클릭하면 바로 비교합니다",
        "loadingBranches": "브랜치를 불러오는 중...",
        "recentBranches": "최근 브랜치 ({count})",
        "noCurrentBranch": "현재 브랜치 없음",
        "localBranches": "로컬 브랜치 ({count})",
        "remoteBranches": "원격 브랜치 ({count})",
        "noMatchingBranches": "일치하는 브랜치가 없습니다"
      },
      "externalConflictDialog": {
        "title": "외부 파일 변경 감지됨",
        "descriptionWithPath": "파일 {path} 이(가) 디스크에서 변경되었고 현재 편집 내용은 저장되지 않았습니다.",
        "descriptionFallback": "현재 파일이 디스크에서 변경되었고 현재 편집 내용은 저장되지 않았습니다.",
        "compare": "비교",
        "savingCopy": "사본 저장 중...",
        "saveAsCopy": "사본으로 저장",
        "reload": "다시 불러오기"
      },
      "deleteConfirm": {
        "title": "삭제 확인",
        "descriptionWithTarget": "{kind} \"{name}\"을(를) 삭제할까요? 이 작업은 되돌릴 수 없습니다.",
        "descriptionFallback": "이 작업은 되돌릴 수 없습니다.",
        "kindDirectory": "디렉터리",
        "kindFile": "파일"
      },
      "rollbackConfirm": {
        "title": "롤백 확인",
        "descriptionWithTarget": "파일 \"{name}\"의 로컬 변경 사항을 롤백할까요?",
        "descriptionFallback": "이 파일의 로컬 변경 사항을 롤백할까요?"
      },
      "terminalTitle": "터미널 · {name}"
    },
    "commandDropdown": {
      "loading": "로딩 중...",
      "addCommand": "명령 추가",
      "manageCommands": "명령 관리...",
      "runCommandTitle": "실행: {command}",
      "stopCommandTitle": "중지: {command}",
      "manageDialog": {
        "title": "명령 관리",
        "empty": "아직 명령이 없습니다",
        "namePlaceholder": "이름",
        "commandPlaceholder": "명령",
        "add": "추가",
        "saving": "저장 중..."
      }
    },
    "workspaceContext": {
      "confirmCloseDirtyTab": "저장하지 않고 \"{title}\" 탭을 닫을까요?",
      "confirmCloseOtherDirtyTabs": "저장되지 않은 변경 사항이 있는 다른 탭을 닫을까요?",
      "confirmCloseAllDirtyTabs": "저장되지 않은 변경 사항이 있는 모든 탭을 닫을까요?",
      "unableLoadContent": "콘텐츠를 불러올 수 없습니다.\n\n{message}",
      "previewRequestTimedOut": "미리보기 요청 시간이 초과되었습니다",
      "diffRequestTimedOut": "Diff 요청 시간이 초과되었습니다",
      "branchCompareRequestTimedOut": "브랜치 비교 요청 시간이 초과되었습니다",
      "commitDiffRequestTimedOut": "커밋 Diff 요청 시간이 초과되었습니다",
      "saveRequestTimedOut": "저장 요청 시간이 초과되었습니다",
      "reloadRequestTimedOut": "다시 불러오기 요청 시간이 초과되었습니다",
      "noChanges": "변경 사항이 없습니다.",
      "noDiffOutput": "Diff 출력이 없습니다.",
      "diffTitleWorkspace": "Diff · 워크스페이스",
      "diffDescriptionWorkingTree": "작업 트리 (HEAD)",
      "diffTitleFile": "차이 · {name}",
      "compareTitleFile": "비교 · {name}",
      "compareTitleBranch": "비교 · {branch}",
      "compareDescriptionPath": "{path} · {branch}와 비교",
      "compareDescriptionBranch": "{branch}와 비교",
      "diffTitleCommitFile": "차이 · {name} @ {hash}",
      "diffTitleCommit": "차이 · {hash}",
      "diffDescriptionCommitPath": "{path} · 커밋 {commit}",
      "diffDescriptionCommit": "커밋 {commit}",
      "diffTitleConflictFile": "충돌 · {name}",
      "diffDescriptionConflict": "{path} · 디스크 vs 저장되지 않음"
    },
    "chat": {
      "acpConnections": {
        "actions": {
          "openAgentsSettings": "에이전트 설정 열기",
          "retry": "다시 시도"
        },
        "agentsSetupHint": "설정 > 에이전트를 열어 설치를 관리하세요.",
        "withSetupHint": "{message}\n{hint}",
        "blocked": {
          "missingConfig": "현재 에이전트 구성을 읽을 수 없습니다.",
          "disabled": "{agent}은(는) 에이전트 설정에서 비활성화되어 있습니다. 연결 전에 활성화하세요.",
          "unavailable": "{agent}은(는) 현재 플랫폼에서 사용할 수 없습니다.",
          "sdkMissing": "{agent} SDK가 설치되어 있지 않습니다"
        },
        "backendErrors": {
          "initializeTimeout": "{agent} 연결 핸드셰이크가 시간 초과되었습니다(60초 동안 응답 없음). 설정을 열어 에이전트 및 네트워크 구성을 확인하세요.",
          "processExited": "{agent} 프로세스가 예기치 않게 종료되었습니다.",
          "spawnFailed": "{agent} 시작 실패: {message}",
          "downloadFailed": "{agent} 다운로드 실패: {message}",
          "sessionLoadResourceNotFound": "{agent} 세션 불러오기에 실패했습니다. 다시 불러와 재시도하거나 새 대화를 시작하세요.",
          "turnFailedRefusal": "{agent}이(가) 이번 턴을 계속하지 않았습니다. 백엔드나 게이트웨이 오류일 수 있습니다. 에이전트 로그를 확인하세요.",
          "turnFailedMaxTokens": "{agent}이(가) 이번 턴의 최대 토큰 한도에 도달했습니다.",
          "turnFailedMaxTurnRequests": "{agent}이(가) 이번 턴에서 허용된 최대 요청 수에 도달했습니다.",
          "turnFailedUnknown": "{agent}이(가) 알 수 없는 중지 사유로 턴을 종료했습니다.",
          "turnFailedEmpty": "{agent}이(가) 어떤 응답도 생성하지 않고 턴을 종료했습니다. 에이전트 구성을 확인하세요."
        },
        "unableReadAgentConfig": "에이전트 구성을 읽을 수 없습니다: {message}",
        "connectFailedTitle": "{agent} 연결 실패",
        "toolFallbackTitle": "도구",
        "eventErrorTitle": "에이전트 오류",
        "notificationTurnComplete": "{agent} 응답이 완료되었습니다",
        "notificationError": "{agent} 오류: {message}",
        "claudeApiRetry": {
          "fallbackError": "authentication_failed",
          "retryingWithMax": "재시도 중 {attempt}/{max}",
          "retryingAttempt": "{attempt}번째 재시도 중",
          "retrying": "재시도 중",
          "nextRetryIn": "{seconds}초 후 재시도",
          "line": "{error}{status} · {retry}",
          "lineWithDelay": "{error}{status} · {retry}, {delay}",
          "httpStatus": " (HTTP {status})"
        }
      },
      "connectionLifecycle": {
        "tasks": {
          "connectingTitle": "{agent}에 연결 중",
          "connectingDescription": "연결을 설정하는 중",
          "loadingSelectorsTitle": "{agent} 선택자 불러오는 중",
          "loadingSelectorsDescription": "모드 및 세션 구성 옵션을 가져오는 중",
          "initSessionTitle": "{agent} 세션 초기화 중",
          "initSessionDescription": "세션 생성 및 설정 불러오는 중"
        },
        "errors": {
          "connectionFailed": "연결 실패"
        }
      },
      "shared": {
        "attachedResources": "첨부된 리소스",
        "toolCallFailed": "도구 호출 실패"
      },
      "messageThread": {
        "emptyTitle": "아직 메시지가 없습니다",
        "emptyDescription": "대화를 시작하면 여기에서 메시지를 볼 수 있습니다"
      },
      "chatInput": {
        "connecting": "연결 중...",
        "agentResponding": "{agent} 응답 중...",
        "sendMessage": "메시지 보내기..."
      },
      "messageInput": {
        "askAnything": "무엇이든 물어보세요...",
        "removeAttachmentAria": "{name} 제거",
        "attachFiles": "파일 첨부",
        "addActions": "추가",
        "quickMessages": "빠른 메시지",
        "quickMessagesEmpty": "빠른 메시지가 없습니다",
        "quickMessagesLoading": "불러오는 중...",
        "quickMessageUntitled": "제목 없음",
        "liveFeedback": "라이브 피드백",
        "liveFeedbackDisabledHint": "에이전트가 작업 중일 때 보낼 수 있습니다",
        "dropFilesToAttach": "파일을 놓아 첨부",
        "loadingSettings": "설정 불러오는 중...",
        "loadingMode": "모드 불러오는 중...",
        "modeLabel": "모드",
        "agentSettings": "에이전트 설정",
        "cancel": "취소",
        "send": "보내기",
        "forkAndSend": "포크 & 전송",
        "slashCommands": "슬래시 명령",
        "expertSkills": "전문가 스킬",
        "expertsEmptyForAgent": "이 에이전트에 활성화된 전문가가 없습니다. 설정 > 전문가에서 활성화하세요.",
        "slashSearchPlaceholder": "명령 검색...",
        "slashSearchEmpty": "일치하는 명령이 없습니다",
        "attachLocalUpload": "로컬 파일 첨부",
        "attachServerFile": "서버 파일 첨부",
        "attachUploadTooLarge": "{names}이(가) {limit}MB 업로드 한도를 초과하여 건너뛰었습니다.",
        "attachUploadFailed": "{names} 업로드 실패.",
        "attachUploadNotAFile": "{names} 은(는) 일반 파일이 아니므로(디렉터리 또는 특수 파일) 건너뛰었습니다.",
        "attachUploadQuotaExceeded": "서버 업로드 저장 공간이 부족하여 {names} 을(를) 업로드하지 못했습니다."
      },
      "messageQueue": {
        "addToQueue": "대기열에 추가",
        "saveEdit": "저장",
        "cancelEdit": "편집 취소",
        "editItem": "편집",
        "deleteItem": "삭제"
      },
      "welcomeInputPanel": {
        "agentsSettingsPath": "설정 > 에이전트",
        "autoConnectFallback": "{path}을(를) 열어 설치를 관리하세요.",
        "autoConnectAppend": "{message}. {path}을(를) 열어 설치를 관리하세요.",
        "enableAgentFirstPlaceholder": "세션을 시작하기 전에 최소 한 개의 에이전트를 활성화하세요...",
        "prepareSessionFailed": "채팅 세션을 준비하지 못했습니다. 다시 시도해 주세요.",
        "createConversationFailed": "대화를 만들지 못했습니다. 다시 시도해 주세요.",
        "askAnythingPlaceholder": "무엇이든 물어보세요..."
      },
      "welcomePanel": {
        "greeting": "오늘은 <highlight>무엇을</highlight> 해볼까요?",
        "tips": {
          "tileTabs": "대화 탭을 우클릭하고 '바둑판 표시'를 선택하면 여러 세션을 나란히 비교할 수 있습니다",
          "pinTab": "대화 탭을 더블클릭하면 고정되어 새로 열린 세션이 자동으로 대체하지 않습니다",
          "shortcutsNewSearch": "<shortcut>{newConversation}</shortcut>로 새 대화를 열고, <shortcut>{searchConversations}</shortcut>로 기록을 검색할 수 있습니다",
          "slashAtMention": "입력창에서 /를 입력하면 슬래시 명령, @를 입력하면 프로젝트 내 파일을 참조할 수 있습니다",
          "pasteDropFiles": "스크린샷을 붙여넣거나 파일을 입력창에 드롭하면 바로 첨부됩니다",
          "queueMessage": "에이전트가 응답 중일 때도 계속 입력하면 다음 메시지가 대기열에 들어가 응답 후 자동 전송됩니다",
          "draftAutoSave": "보내지 않은 초안은 대화별로 자동 저장되어 돌아왔을 때 복원됩니다",
          "forkSend": "전송 버튼의 드롭다운에서 '분기 후 전송'을 선택하면 현재 지점에서 새 탭으로 분기할 수 있습니다",
          "exportConversation": "대화 내용을 우클릭하면 Markdown / HTML / 이미지로 내보낼 수 있습니다",
          "chatChannels": "'설정 → 채팅 채널'에서 Telegram / Lark / WeChat을 연결하면 휴대폰에서 이어서 사용할 수 있습니다",
          "shortcutsAuxPanel": "<shortcut>{toggleAuxPanel}</shortcut>로 오른쪽 패널을 열어 이번 세션에서 변경된 파일과 Git 변경 사항을 확인할 수 있습니다",
          "shortcutsTerminalSidebar": "<shortcut>{toggleTerminal}</shortcut>로 내장 터미널, <shortcut>{toggleSidebar}</shortcut>로 사이드바를 토글할 수 있습니다",
          "customShortcuts": "모든 단축키는 '설정 → 단축키'에서 자유롭게 변경할 수 있습니다",
          "webService": "'설정 → 웹 서비스'를 켜면 팀원이 브라우저로 같은 codeg에 접속할 수 있습니다",
          "fusionMode": "파일이나 diff를 열면 대화 옆에 자동으로 표시됩니다.",
          "quickMessages": "입력창 옆 + 버튼에서 '빠른 메시지'를 선택하면 저장된 스니펫을 한 번에 삽입할 수 있습니다('설정 → 빠른 메시지'에서 관리)",
          "experts": "+ 버튼의 '전문가 스킬' 메뉴에서 디버그 / 기획 등 사전 정의된 역할을 한 번에 불러올 수 있습니다"
        }
      },
      "agentSelector": {
        "noEnabledAgents": "활성화된 에이전트가 없습니다",
        "openAgentsSettings": "에이전트 설정 열기"
      },
      "subAgentOverlay": {
        "title": "서브 에이전트",
        "collapsedSummary": "서브 에이전트 {count}",
        "collapseAria": "서브 에이전트 접기"
      },
      "agentPlanOverlay": {
        "title": "에이전트 계획",
        "collapsePlanAria": "계획 접기",
        "collapsedSummary": "계획 {completed}/{total}",
        "status": {
          "completed": "완료",
          "inProgress": "진행 중",
          "pending": "대기",
          "unknown": "알 수 없음"
        },
        "priority": {
          "high": "높음",
          "medium": "중간",
          "low": "낮음",
          "unknown": "알 수 없음"
        }
      },
      "permissionDialog": {
        "subtitle": "에이전트가 이 턴을 계속하기 위한 권한을 요청합니다.",
        "kindFallbackTool": "도구",
        "command": "명령",
        "cwd": "작업 디렉터리: {cwd}",
        "filesSummary": "파일: {count}",
        "moreFiles": "+{count}개 파일 더",
        "plan": "계획",
        "allowedActions": "허용된 작업",
        "targetMode": "대상 모드: {mode}"
      },
      "questionDialog": {
        "title": "에이전트가 질문하고 있습니다",
        "placeholder": "답변을 입력하세요...",
        "send": "전송"
      },
      "messageBranch": {
        "previousBranchAria": "이전 브랜치",
        "nextBranchAria": "다음 브랜치",
        "pageOf": "{current} / {total}"
      },
      "terminal": {
        "title": "터미널",
        "running": "실행 중"
      },
      "reasoning": {
        "thinking": "생각 중…",
        "thoughtForFewSeconds": "생각함",
        "thoughtForSeconds": "생각함"
      },
      "linkSafety": {
        "errorCannotOpen": "로컬 파일을 열 수 없습니다",
        "errorNoWorkspace": "현재 활성화된 워크스페이스 폴더가 없습니다.",
        "errorOutsideWorkspace": "파일이 현재 워크스페이스 폴더 밖에 있습니다.",
        "errorFailedOpen": "로컬 파일 열기 실패",
        "errorFailedLink": "링크 열기 실패",
        "errorUnsupportedLinkProtocol": "이 링크 프로토콜은 지원되지 않습니다."
      },
      "messageList": {
        "attachedResources": "첨부된 리소스",
        "loading": "불러오는 중...",
        "error": "오류: {message}",
        "errorTitle": "세션 불러오기 실패",
        "errorActionReload": "다시 불러오기",
        "errorActionNewSession": "새 대화",
        "emptyConversation": "이 대화에는 메시지가 없습니다.",
        "systemMessage": "시스템 메시지",
        "copyMessage": "복사",
        "copied": "복사됨",
        "downloadImage": "이미지 다운로드",
        "downloadFailed": "다운로드 실패: {message}",
        "imageGeneration": "이미지 생성",
        "imageGenerationPending": "이미지 생성 중…",
        "imageGenerationFailed": "이미지 생성 실패",
        "model": "모델",
        "tokenStats": "토큰 사용량",
        "tokenInput": "입력",
        "tokenOutput": "출력",
        "tokenCacheRead": "캐시 읽기",
        "tokenCacheWrite": "캐시 쓰기",
        "duration": "소요 시간",
        "completedAt": "완료 시각",
        "jumpToPreviousUserMessage": "이전 사용자 메시지로 이동"
      },
      "liveTurnStats": {
        "thinking": "생각 중...",
        "streaming": "스트리밍 중",
        "elapsedHours": "{value}시간",
        "elapsedMinutes": "{value}분",
        "elapsedSeconds": "{value}초",
        "toolUseCount": "{count}개 도구 {count, plural, one {use} other {uses}}"
      },
      "tool": {
        "parameters": "매개변수",
        "error": "오류",
        "result": "결과",
        "status": {
          "approvalRequested": "승인 대기 중",
          "approvalResponded": "응답됨",
          "inputAvailable": "실행 중",
          "inputStreaming": "대기 중",
          "outputAvailable": "완료",
          "outputDenied": "거부됨",
          "outputError": "오류"
        }
      },
      "toolCallBlock": {
        "tool": "도구",
        "error": "오류",
        "result": "결과"
      },
      "delegation": {
        "subAgentRunning": "서브에이전트 실행 중…",
        "noDetail": "No detail available yet.",
        "unknownAgent": "하위 에이전트",
        "openDetail": "대화 보기",
        "detailTitle": "서브에이전트 대화",
        "detailDescription": "위임된 서브에이전트 대화를 읽기 전용으로 봅니다.",
        "waitForResult": "작업 {task} 실행 결과 대기 중",
        "waitForResultNoTask": "작업 실행 결과 대기 중",
        "cancelTask": "작업 {task} 취소 중",
        "cancelTaskNoTask": "작업 취소 중",
        "resultPageOf": "{current} / {total}",
        "prevResult": "이전 결과",
        "nextResult": "다음 결과",
        "noResultText": "이 확인에서는 결과가 없습니다",
        "status": {
          "starting": "시작 중",
          "running": "실행 중",
          "checked": "확인됨",
          "waiting": "승인 대기 중",
          "ok": "완료",
          "err": {
            "default": "실패",
            "delegation_disabled": "비활성화됨",
            "depth_limit": "깊이 제한",
            "invalid_agent_type": "잘못된 에이전트",
            "spawn_failed": "시작 실패",
            "send_failed": "전송 실패",
            "timeout": "시간 초과",
            "canceled": "취소됨",
            "child_refusal": "서브에이전트 거부",
            "child_max_tokens": "서브에이전트: 토큰 한도",
            "child_max_turn_requests": "서브에이전트: 요청 한도",
            "child_empty": "서브에이전트 응답 없음",
            "child_unknown": "서브에이전트: 오류",
            "unknown": "알 수 없는 작업"
          }
        }
      },
      "contentParts": {
        "showingTailOutput": "성능을 위해 스트리밍 중에는 출력의 끝부분만 표시합니다.",
        "result": "결과",
        "unknown": "알 수 없음",
        "inputTruncated": "입력이 잘렸습니다 — diff가 불완전할 수 있습니다.",
        "replaceAll": "모두 바꾸기",
        "filesCount": "파일: {count}",
        "update": "업데이트",
        "moreFiles": "+{count}개 파일 더",
        "timeoutMs": "시간 초과: {timeout}ms",
        "backgroundTrue": "백그라운드: true",
        "offset": "오프셋: {offset}",
        "limit": "제한: {limit}",
        "pages": "페이지: {pages}",
        "mode": "모드: {mode}",
        "cell": "셀: {cell}",
        "pathLabel": "경로:",
        "globLabel": "Glob 패턴:",
        "typeLabel": "유형:",
        "outputLabel": "출력:",
        "caseInsensitive": "대소문자 구분 안 함",
        "multiline": "여러 줄",
        "promptLabel": "프롬프트",
        "subjectLabel": "제목",
        "taskLabel": "작업",
        "nameLabel": "이름:",
        "agentPromptLabel": "프롬프트",
        "agentModelLabel": "모델",
        "agentRunning": "실행 중...",
        "agentFallbackTitle": "서브 에이전트 시작 중…",
        "agentStatsBash": "명령",
        "agentStatsRead": "파일 읽기",
        "agentStatsSearch": "검색",
        "agentStatsEdit": "편집",
        "agentStatsOther": "기타",
        "goal": {
          "title": "목표:",
          "titleWithStatus": "목표 {status}",
          "objective": "목표",
          "statusLabel": "상태",
          "tokensUsed": "사용 tokens",
          "budget": "예산",
          "remaining": "남음",
          "elapsed": "경과",
          "tokens": "tokens",
          "status": {
            "active": "진행 중",
            "paused": "일시 중지",
            "blocked": "차단됨",
            "usageLimited": "사용량 제한",
            "budgetLimited": "예산 제한",
            "complete": "완료"
          }
        },
        "field": {
          "file": "파일",
          "notebook": "노트북",
          "command": "명령",
          "old": "이전",
          "new": "새",
          "pattern": "패턴",
          "path": "경로",
          "query": "쿼리",
          "url": "URL:",
          "description": "설명",
          "content": "내용",
          "source": "소스",
          "prompt": "프롬프트",
          "subject": "제목",
          "taskId": "작업 ID",
          "status": "상태",
          "skill": "Skill",
          "args": "인자",
          "offset": "오프셋",
          "limit": "제한",
          "glob": "Glob 패턴",
          "type": "유형",
          "output": "출력",
          "replaceAll": "모두 바꾸기",
          "language": "언어",
          "timeout": "시간 초과",
          "background": "백그라운드",
          "agentType": "에이전트 유형",
          "library": "라이브러리",
          "libraryId": "라이브러리 ID"
        },
        "title": {
          "edit": "편집",
          "command": "명령",
          "todoWrite": "TodoWrite(할 일 업데이트)",
          "read": "읽기",
          "write": "쓰기",
          "notebookEdit": "NotebookEdit(노트북 편집)",
          "editFiles": "편집 ({count}개 파일)",
          "editWithTarget": "{target} 편집",
          "readWithTarget": "{target} 읽기",
          "writeWithTarget": "{target} 쓰기",
          "notebookEditWithTarget": "NotebookEdit({target})",
          "globWithPattern": "Glob 패턴 {pattern}",
          "grepWithPattern": "Grep 패턴 {pattern}",
          "taskCreateWithSubject": "작업 생성: {subject}",
          "taskUpdateWithStatus": "작업 업데이트 #{id} -> {status}",
          "taskUpdate": "작업 업데이트 #{id}",
          "webFetchWithUrl": "WebFetch ({url})",
          "webSearchWithQuery": "WebSearch ({query})",
          "todosProgress": "할 일 ({done}/{total})",
          "skillWithName": "Skill: {name}",
          "genericWithContext": "{tool} ({context})"
        },
        "toolGroup": {
          "search": "{count}회 검색",
          "command": "명령 {count}개 실행",
          "read": "파일 {count}회 읽기",
          "memory": "기억 {count}개 회상",
          "edit": "파일 {count}회 편집",
          "fetch": "리소스 {count}개 가져오기",
          "think": "{count}회 사고",
          "todo": "할 일 {count}개 업데이트",
          "task": "작업 {count}개 실행",
          "other": "도구 {count}개 사용",
          "errorSuffix": "{count}건 실패",
          "joiner": " · "
        }
      },
      "messageNav": {
        "title": "메시지 탐색",
        "collapse": "메시지 탐색 접기",
        "collapsedSummary": "메시지 {count}",
        "fileCount": "{count, plural, one {#개 파일} other {#개 파일}}",
        "remove": "제거",
        "noDiffDataAvailable": "{filePath}에 대한 diff 데이터가 없습니다"
      },
      "askQuestion": {
        "title": "에이전트가 선택을 요청합니다",
        "subtitle": "답변 후 제출하세요. 언제든 건너뛸 수 있습니다",
        "recommended": "추천",
        "other": "기타",
        "otherPlaceholder": "답변을 입력하세요…",
        "singleSelect": "단일 선택",
        "multiSelect": "다중 선택",
        "skip": "건너뛰기",
        "next": "다음",
        "submit": "제출",
        "submitError": "제출하지 못했습니다. 다시 시도해 주세요."
      },
      "feedbackCheckResult": {
        "count": "피드백 {count}개",
        "expand": "모든 피드백 표시",
        "collapse": "접기",
        "errorTitle": "피드백 확인 실패"
      },
      "askQuestionResult": {
        "title": "질문",
        "answeredLabel": "질문과 답변:",
        "awaiting": "답변을 기다리는 중…",
        "declined": "이 질문을 건너뛰었습니다 — 에이전트가 자체 판단으로 진행했습니다.",
        "noSelection": "선택 없음"
      },
      "configStale": {
        "agentConfigTitle": "에이전트 설정이 업데이트되었습니다",
        "modelProviderTitle": "모델 공급자가 업데이트되었습니다",
        "description": "이 세션은 아직 이전 설정을 사용 중입니다. 다시 연결하면 적용됩니다(대화 기록은 유지됩니다).",
        "reconnect": "다시 연결하여 적용",
        "reconnecting": "다시 연결하는 중…",
        "reconnectDisabledDuringTurn": "현재 턴이 끝나면 다시 연결할 수 있습니다",
        "dismiss": "닫기",
        "reconnectFailed": "세션 다시 연결 실패",
        "applied": "새 설정이 적용되었습니다"
      }
    },
    "diffPreview": {
      "mode": {
        "added": "추가됨",
        "deleted": "삭제됨",
        "renamed": "이름 변경됨",
        "modified": "수정됨"
      },
      "hunkLabel": "청크 {index}",
      "loadingHunk": "Hunk 로딩 중...",
      "noDiffData": "Diff 데이터 없음"
    },
    "conversationContextBar": {
      "folderTitle": "작업 폴더",
      "branchTitle": "작업 브랜치",
      "searchFolder": "Search folder...",
      "searchBranch": "Search branch...",
      "noFolders": "No folders",
      "noBranches": "No branches",
      "noBranch": "(no branch)",
      "chatModeLabel": "폴더 없음 모드",
      "commit": "Commit",
      "push": "Push",
      "merge": "Merge",
      "toasts": {
        "folderChanged": "Switched to {name}",
        "openFolderFailed": "Failed to open folder",
        "switchedToChatMode": "채팅 모드로 전환했습니다",
        "openStashFailed": "Failed to open stash window",
        "openMergeFailed": "Failed to open merge window"
      }
    },
    "cloneDialog": {
      "title": "저장소 클론",
      "repositoryUrl": "저장소 URL",
      "repositoryUrlPlaceholder": "https://github.com/user/repo.git",
      "directory": "디렉터리",
      "directoryPlaceholder": "대상 디렉터리 선택...",
      "browseDirectory": "디렉터리 찾아보기",
      "cancel": "취소",
      "clone": "클론",
      "clonePath": "클론 경로: {path}"
    },
    "toasts": {
      "cloneFailed": "저장소 클론에 실패했습니다"
    }
  },
  "ProjectBoot": {
    "title": "프로젝트 부트",
    "tabs": {
      "shadcn": "shadcn",
      "hyperframes": "HyperFrames"
    },
    "hyperframes": {
      "title": "HyperFrames 비디오 프로젝트",
      "subtitle": "HTML을 비디오로 만드는 프로젝트를 생성합니다. 이후 워크스페이스 에이전트가 작성하고 렌더링할 수 있습니다.",
      "resolution": "해상도",
      "skillsTitle": "에이전트 스킬",
      "skillsDesc": "선택한 에이전트에 HyperFrames 스킬을 전역(심볼릭 링크)으로 설치하여 영상 작성·렌더링을 지원합니다.",
      "recheck": "다시 확인",
      "installedBadge": "설치됨",
      "skillsInstall": "스킬 설치 / 업데이트",
      "skillsInstalling": "스킬 설치 중…",
      "skillsInstalled": "HyperFrames 스킬 설치 완료",
      "skillsInstallFailed": "HyperFrames 스킬 설치 실패"
    },
    "config": {
      "base": "베이스",
      "style": "스타일",
      "baseColor": "베이스 색상",
      "theme": "테마",
      "chartColor": "차트 색상",
      "iconLibrary": "아이콘 라이브러리",
      "font": "글꼴",
      "fontHeading": "제목 글꼴",
      "menuAccent": "메뉴 강조",
      "menuColor": "메뉴 색상",
      "radius": "둥글기",
      "template": "템플릿",
      "createProject": "프로젝트 만들기",
      "sectionStyle": "스타일",
      "sectionColors": "색상",
      "sectionTypography": "타이포그래피",
      "sectionInterface": "인터페이스"
    },
    "preview": {
      "loading": "미리보기 로딩 중..."
    },
    "createDialog": {
      "title": "프로젝트 만들기",
      "projectName": "프로젝트 이름",
      "projectNamePlaceholder": "my-app",
      "frameworkTemplate": "프레임워크 템플릿",
      "packageManager": "패키지 매니저",
      "saveDirectory": "저장 디렉토리",
      "saveDirectoryPlaceholder": "디렉토리 선택...",
      "browseDirectory": "찾아보기",
      "projectPath": "프로젝트 생성 위치: {path}",
      "advancedOptions": "고급 옵션",
      "base": "기본 라이브러리",
      "enableRtl": "RTL 지원 활성화",
      "enableRtlDescription": "오른쪽에서 왼쪽으로 쓰는 언어(예: 아랍어, 히브리어)의 레이아웃 지원 활성화",
      "pmChecking": "확인 중...",
      "pmNotInstalled": "설치되지 않음",
      "cancel": "취소",
      "create": "만들기",
      "creating": "프로젝트 생성 중..."
    },
    "toasts": {
      "createFailed": "프로젝트 생성에 실패했습니다",
      "createSuccess": "프로젝트가 성공적으로 생성되었습니다",
      "openWorkspaceFailed": "프로젝트가 생성되었지만 작업 공간에서 열지 못했습니다"
    },
    "errors": {
      "directoryExists": "대상 디렉터리가 이미 존재합니다",
      "commandFailed": "프로젝트 생성 명령이 실패했습니다."
    }
  },
  "WebServiceSettings": {
    "addressSwitchHint": "전환해도 여기에 표시되고 열리는 주소만 바뀝니다. 서비스는 모든 인터페이스에서 수신하며 어떤 주소로도 접속할 수 있습니다.",
    "sectionTitle": "웹 서비스",
    "sectionDescription": "활성화하면 브라우저를 통해 Codeg에 원격으로 접속할 수 있습니다",
    "port": "포트",
    "status": "상태",
    "autoStart": "자동 시작",
    "autoStartHint": "Codeg가 시작될 때 웹 서비스를 시작합니다",
    "running": "실행 중",
    "stopped": "중지됨",
    "processing": "처리 중...",
    "start": "시작",
    "stop": "중지",
    "startFailed": "시작 실패",
    "stopFailed": "중지 실패",
    "saveConfigFailed": "웹 서비스 설정 저장 실패",
    "open": "열기",
    "hide": "숨기기",
    "show": "표시",
    "copy": "복사",
    "qrcode": "QR 코드",
    "qrcodeTitle": "스캔하여 열기",
    "qrcodeHint": "휴대폰으로 스캔하여 브라우저에서 Codeg를 엽니다",
    "addressLabel": "접속 주소",
    "tokenLabel": "접속 토큰",
    "tokenHint": "웹 클라이언트 첫 접속 시 이 토큰을 입력하세요",
    "tokenPlaceholder": "비워두면 자동 생성",
    "regenerate": "재생성",
    "stalePortOccupiedTitle": "포트 {port}이(가) 다른 프로세스에 의해 사용 중입니다",
    "stalePortUnknownTitle": "포트 {port}의 상태를 확인할 수 없습니다",
    "stalePortHint": "포트가 해제될 때까지 Codeg은 바인딩할 수 없습니다. 위의 포트를 변경하거나 사용 중인 프로세스를 종료하세요.",
    "errors": {
      "alreadyRunning": "웹 서비스가 이미 실행 중입니다",
      "invalidAddress": "호스트 또는 포트 형식이 올바르지 않습니다",
      "portInUse": "포트 {port}가 이미 사용 중입니다. 해당 포트를 사용 중인 프로세스를 종료하거나 다른 포트를 선택하세요",
      "permissionDenied": "권한이 부족합니다. 1024 이상의 포트를 사용하거나 더 높은 권한으로 실행하세요",
      "addressUnavailable": "이 주소는 현재 시스템에서 사용할 수 없습니다",
      "bindFailed": "주소 바인딩에 실패했습니다"
    }
  },
  "DirectoryBrowser": {
    "title": "디렉토리 찾아보기",
    "pathPlaceholder": "디렉토리 경로 입력...",
    "goHome": "홈 디렉토리로 이동",
    "navigateUp": "상위 디렉토리로 이동",
    "select": "선택",
    "cancel": "취소",
    "loading": "로딩 중...",
    "emptyDirectory": "이 디렉토리는 비어 있습니다",
    "errorLoadingDir": "디렉토리 로딩 실패",
    "permissionDenied": "권한이 없습니다"
  },
  "ChatChannelSettings": {
    "loading": "로딩 중...",
    "sectionTitle": "채팅 채널",
    "sectionDescription": "IM 봇을 설정하여 이벤트 알림을 수신하고 코딩 활동을 조회합니다.",
    "addChannel": "채널 추가",
    "noChannels": "설정된 채팅 채널이 없습니다.",
    "channelName": "이름",
    "channelNamePlaceholder": "내 Telegram 봇",
    "channelType": "채널 유형",
    "lark": "Lark (飛書)",
    "weixin": "WeChat",
    "dailyReport": "일일 리포트",
    "dailyReportTime": "발송 시간",
    "nameRequired": "채널 이름을 입력하세요.",
    "tokenRequired": "토큰을 입력하세요.",
    "chatIdRequired": "Chat ID를 입력하세요.",
    "loadFailed": "채널 로딩에 실패했습니다.",
    "saveFailed": "저장에 실패했습니다.",
    "connectSuccess": "채널이 연결되었습니다.",
    "connectFailed": "연결에 실패했습니다",
    "disconnectSuccess": "채널이 연결 해제되었습니다.",
    "disconnectFailed": "연결 해제에 실패했습니다.",
    "testSuccess": "연결 테스트를 통과했습니다.",
    "testFailed": "연결 테스트에 실패했습니다",
    "deleteSuccess": "채널이 삭제되었습니다.",
    "deleteFailed": "채널 삭제에 실패했습니다.",
    "deleteConfirmTitle": "채널 삭제",
    "deleteConfirmMessage": "이 채널과 메시지 기록이 영구 삭제됩니다. 계속하시겠습니까?",
    "cancel": "취소",
    "delete": "삭제",
    "create": "생성",
    "save": "저장",
    "channelListTitle": "설정된 채널",
    "channelListDescription": "활성화된 채널은 서비스 시작 시 자동으로 연결됩니다.",
    "editChannel": "채널 편집",
    "editSuccess": "채널이 업데이트되었습니다.",
    "tokenPlaceholderKeep": "비워두면 현재 값 유지",
    "weixinScanTitle": "QR 코드 스캔",
    "weixinScanDescription": "WeChat을 열고 QR 코드를 스캔하여 연결하세요.",
    "weixinQrcodeExpired": "QR 코드가 만료되었습니다.",
    "weixinRefreshQrcode": "새로고침",
    "weixinWaitingScan": "스캔 대기 중...",
    "weixinPollError": "연결이 불안정합니다. 재시도 중...",
    "weixinReconnectNotice": "iLink 프로토콜 제한으로 인해, 재연결할 때마다 먼저 봇에게 메시지를 보내야 이벤트 트리거가 활성화됩니다.",
    "connect": "연결",
    "disconnect": "연결 해제",
    "test": "연결 테스트",
    "tabs": {
      "channels": "채널",
      "commands": "명령어",
      "events": "이벤트",
      "other": "기타"
    },
    "commands": {
      "title": "내장 명령어",
      "description": "채팅 채널에서 사용 가능한 Bot 명령어입니다. 그룹 채팅에서는 메시지를 처리하려면 @Bot이 필요합니다.",
      "prefixLabel": "명령어 접두사",
      "prefixDescription": "Bot 명령어를 실행하는 접두사, 1-3개의 영숫자가 아닌 문자 (기본값 /).",
      "prefixSaved": "명령어 접두사가 저장되었습니다.",
      "prefixSaveFailed": "명령어 접두사 저장에 실패했습니다.",
      "prefixInvalid": "접두사는 1-3개의 영숫자가 아닌 문자여야 합니다.",
      "save": "저장",
      "folderDesc": "작업 폴더 선택",
      "agentDesc": "AI 에이전트 선택",
      "taskDesc": "세션 생성 및 작업 실행",
      "sessionsDesc": "폴더 내 활성 세션 목록",
      "resumeDesc": "최근 대화 / 세션 재개",
      "cancelDesc": "현재 작업 취소",
      "approveDesc": "에이전트 권한 요청 승인",
      "denyDesc": "에이전트 권한 요청 거부",
      "searchDesc": "키워드로 대화 검색",
      "todayDesc": "오늘의 활동 요약",
      "statusDesc": "채널 연결 상태",
      "helpDesc": "도움말 표시"
    },
    "events": {
      "title": "이벤트 알림",
      "description": "이벤트를 활성화하면, 트리거 시 채널로 푸시됩니다.",
      "turnComplete": "턴 완료",
      "turnCompleteDesc": "에이전트 턴이 종료될 때",
      "error": "에이전트 오류",
      "errorDesc": "에이전트에 오류가 발생했을 때",
      "permissionRequest": "권한 요청",
      "permissionRequestDesc": "에이전트가 작업 권한을 요청할 때",
      "questionRequest": "에이전트 질문",
      "questionRequestDesc": "에이전트가 질문할 때",
      "userPromptSent": "사용자 메시지",
      "userPromptSentDesc": "메시지를 보낼 때 — 알림에 메시지 내용이 포함됩니다",
      "saved": "이벤트 필터가 업데이트되었습니다.",
      "saveFailed": "이벤트 필터 저장에 실패했습니다.",
      "loadFailed": "설정을 불러오지 못했습니다.",
      "retry": "다시 시도",
      "webhooksTitle": "Webhook",
      "webhooksDescription": "활성화된 이벤트가 발생하면 하나 이상의 URL로 JSON을 POST합니다. 위의 이벤트 필터는 Webhook에도 적용됩니다.",
      "webhookUrlPlaceholder": "https://example.com/webhook",
      "addWebhook": "Webhook 추가",
      "removeWebhook": "Webhook 삭제",
      "webhookSave": "저장",
      "webhooksSaved": "Webhook을 저장했습니다.",
      "webhooksSaveFailed": "Webhook 저장에 실패했습니다.",
      "webhookInvalidUrl": "유효한 http(s) URL을 입력하세요.",
      "docsTitle": "요청 형식",
      "docsMethod": "메서드",
      "docsContentType": "Content-Type",
      "docsNote": "활성화된 각 이벤트는 모든 URL로 전달됩니다. Webhook은 디바운스되지 않으며 위의 이벤트 필터가 계속 적용됩니다.",
      "editWebhook": "Webhook 편집",
      "enableWebhook": "Webhook 활성화",
      "webhookDuplicate": "이미 설정된 URL입니다.",
      "cancel": "취소",
      "webhooksEmpty": "아직 구성된 Webhook이 없습니다.",
      "deleteWebhookTitle": "Webhook 삭제",
      "deleteWebhookMessage": "이 Webhook을 삭제하시겠습니까? 이 URL로 더 이상 이벤트가 전달되지 않습니다.",
      "delete": "삭제"
    },
    "language": {
      "title": "메시지 언어",
      "description": "이벤트 알림, 명령 응답, 일일 보고서를 채팅 채널로 전송할 때 사용하는 언어입니다.",
      "saved": "메시지 언어가 저장되었습니다.",
      "saveFailed": "메시지 언어 저장에 실패했습니다.",
      "en": "영어",
      "zh-cn": "중국어 간체",
      "zh-tw": "중국어 번체",
      "ja": "일본어",
      "ko": "한국어",
      "es": "스페인어",
      "de": "독일어",
      "fr": "프랑스어",
      "pt": "포르투갈어",
      "ar": "아랍어"
    }
  },
  "ModelProviderSettings": {
    "sectionTitle": "모델 제공업체",
    "sectionDescription": "에이전트의 API 제공업체 자격 증명을 관리합니다.",
    "filterAll": "전체",
    "providerListTitle": "구성된 제공업체",
    "addProvider": "제공업체 추가",
    "editProvider": "제공업체 편집",
    "noProviders": "아직 구성된 모델 제공업체가 없습니다.",
    "providerName": "이름",
    "providerNamePlaceholder": "예: OpenAI, Anthropic",
    "apiUrl": "API URL",
    "apiUrlPlaceholder": "https://api.openai.com/v1",
    "apiKey": "API 키",
    "apiKeyPlaceholder": "sk-...",
    "apiKeyKeepCurrent": "현재 값을 유지하려면 비워두세요",
    "agentTypes": "에이전트 유형",
    "agentTypesRequired": "최소 하나의 에이전트 유형을 선택하세요.",
    "agentType": "에이전트 유형",
    "agentTypeRequired": "에이전트 유형을 선택하세요.",
    "agentTypeImmutableHint": "에이전트 유형은 생성 후 변경할 수 없습니다.",
    "model": "모델",
    "modelPlaceholderCodex": "gpt-5 / gpt-5-mini",
    "modelPlaceholderGemini": "gemini-3-pro-preview",
    "claudeMainModel": "메인 모델",
    "claudeReasoningModel": "추론 모델 (사고)",
    "claudeHaikuDefaultModel": "기본 Haiku 모델",
    "claudeSonnetDefaultModel": "기본 Sonnet 모델",
    "claudeOpusDefaultModel": "기본 Opus 모델",
    "nameRequired": "제공업체 이름은 필수입니다.",
    "apiUrlRequired": "API URL은 필수입니다.",
    "apiKeyRequired": "API 키는 필수입니다.",
    "loadFailed": "제공업체를 불러오지 못했습니다.",
    "saveFailed": "변경 사항을 저장하지 못했습니다.",
    "createSuccess": "제공업체가 생성되었습니다.",
    "editSuccess": "제공업체가 업데이트되었습니다.",
    "deleteSuccess": "제공업체가 삭제되었습니다.",
    "deleteConfirmTitle": "제공업체 삭제",
    "deleteConfirmMessage": "제공업체 \"{name}\"을(를) 영구적으로 삭제하시겠습니까?",
    "deleteBlockedByAgent": "{agents}이(가) 이 공급자를 사용 중입니다. 삭제하기 전에 연결을 해제해 주세요.",
    "cancel": "취소",
    "delete": "삭제",
    "create": "생성",
    "save": "저장",
    "affectedRunningSessions": "{count}개의 실행 중인 세션은 다시 연결하면 변경 사항이 적용됩니다"
  },
  "ExpertsSettings": {
    "title": "전문가 스킬",
    "description": "AI 코딩 에이전트를 위해 엄선되고 실전 검증된 스킬 워크플로를 활성화하세요. 각 전문가는 superpowers 프로젝트의 독립 실행형 스킬이며 — codeg가 중앙 복사본을 관리하고 선택한 에이전트에 연결합니다.",
    "loading": "전문가 로딩 중…",
    "loadingContent": "콘텐츠 로딩 중…",
    "emptyExperts": "사용 가능한 전문가가 없습니다. 애플리케이션 로그를 확인하세요.",
    "emptySelection": "전문가를 선택하여 내용을 보고 활성화를 관리하세요.",
    "emptySearch": "현재 검색과 일치하는 전문가가 없습니다.",
    "searchPlaceholder": "이름, ID 또는 설명으로 전문가 검색",
    "enableForAgents": "에이전트에 활성화",
    "noAgents": "ACP 에이전트가 감지되지 않았습니다.",
    "copyModeWarning": "복사됨(연결되지 않음). 최신 버전을 받으려면 codeg 업데이트 후 재활성화하세요.",
    "previewTitle": "SKILL.md 미리보기",
    "categories": {
      "discovery": "발견 및 설계",
      "planning": "계획",
      "execution": "실행",
      "quality": "품질 및 테스트",
      "debugging": "디버깅",
      "review": "검토 및 통합",
      "meta": "메타"
    },
    "states": {
      "not_linked": "활성화되지 않음",
      "linked_to_codeg": "활성화됨",
      "linked_elsewhere": "차단됨 — 다른 링크가 존재함",
      "blocked_by_real_directory": "차단됨 — 사용자 정의 스킬이 이 이름을 점유 중",
      "broken": "손상된 링크"
    },
    "badges": {
      "userModified": "사용자가 수정함"
    },
    "actions": {
      "openCentralDir": "중앙 폴더 열기",
      "refresh": "새로고침"
    },
    "toasts": {
      "loadFailed": "전문가 세부 정보를 로드하지 못했습니다",
      "enabled": "이 에이전트에 전문가가 활성화되었습니다",
      "disabled": "이 에이전트에서 전문가가 비활성화되었습니다",
      "enableFailed": "전문가 활성화에 실패했습니다",
      "disableFailed": "전문가 비활성화에 실패했습니다",
      "openFolderFailed": "폴더를 열지 못했습니다"
    }
  },
  "QuickMessagesSettings": {
    "title": "빠른 메시지",
    "description": "재사용 가능한 메시지 스니펫을 관리합니다. 드래그하여 순서를 변경하세요.",
    "loading": "빠른 메시지 불러오는 중…",
    "emptyList": "빠른 메시지가 없습니다. \"새로 만들기\"를 클릭하여 추가하세요.",
    "emptySelection": "편집할 빠른 메시지를 선택하세요.",
    "searchPlaceholder": "제목 또는 내용으로 검색",
    "untitled": "제목 없음",
    "actions": {
      "new": "새로 만들기",
      "save": "저장",
      "delete": "삭제",
      "dragSort": "드래그하여 순서 변경",
      "dragSortMessage": "빠른 메시지 순서 변경: {name}"
    },
    "fields": {
      "title": "제목",
      "titlePlaceholder": "이 메시지에 짧은 제목을 지정하세요",
      "content": "내용",
      "contentPlaceholder": "여기에 메시지 내용을 입력하세요"
    },
    "confirmDelete": {
      "title": "빠른 메시지를 삭제하시겠습니까?",
      "message": "\"{name}\" 이(가) 영구적으로 삭제됩니다. 계속하시겠습니까?",
      "cancel": "취소",
      "confirm": "삭제"
    },
    "toasts": {
      "loadFailed": "빠른 메시지를 불러오지 못했습니다",
      "createFailed": "빠른 메시지를 만들지 못했습니다",
      "saveFailed": "빠른 메시지를 저장하지 못했습니다",
      "deleteFailed": "빠른 메시지를 삭제하지 못했습니다",
      "saveOrderFailed": "순서를 저장하지 못했습니다",
      "created": "빠른 메시지가 생성되었습니다",
      "saved": "빠른 메시지가 저장되었습니다",
      "deleted": "빠른 메시지가 삭제되었습니다"
    }
  },
  "Pet": {
    "badge": {
      "running": "실행 중 {count}개",
      "waiting": "승인 대기 {count}개",
      "error": "오류 {count}개"
    },
    "panel": {
      "title": "활성 세션",
      "empty": "활성 세션 없음",
      "emptyHint": "실행 중이거나 사용자의 조치가 필요한 세션이 여기에 표시됩니다.",
      "statusRunning": "실행 중",
      "statusWaiting": "대기 중",
      "statusError": "오류"
    },
    "menu": {
      "scale": "크기",
      "openManager": "펫 관리",
      "close": "닫기"
    },
    "loadError": "펫을 불러오지 못했습니다",
    "missingPetIdParam": "선택된 펫이 없습니다",
    "summonButton": "펫",
    "manager": {
      "title": "데스크톱 펫",
      "description": "Codex 호환 스프라이트 시트로 동작하는 데스크톱 동반자.",
      "addPet": "펫 추가",
      "importFromCodex": "Codex 에서 가져오기",
      "noPets": "펫이 아직 없습니다. 새로 추가하거나 Codex 에서 가져오세요.",
      "setActive": "활성화",
      "active": "활성",
      "edit": "편집",
      "delete": "삭제",
      "deleteConfirm": "펫 \"{name}\"을(를) 삭제할까요? 디스크에서도 함께 제거됩니다.",
      "summon": "펫 창 호출",
      "openCodexHelp": "Codex 펫은 ~/.codex/pets/ 아래에 설치되어야 합니다. 찾을 수 없습니다.",
      "specRequirement": "스프라이트 시트는 1536x1872 PNG 또는 WebP(투명) 이어야 합니다.",
      "form": {
        "id": "펫 ID",
        "idHelp": "소문자/숫자/'-'/'_' 만 가능. 최대 64자.",
        "displayName": "표시 이름",
        "description": "설명 (선택)",
        "spritesheet": "스프라이트 시트",
        "chooseFile": "파일 선택",
        "replaceFile": "스프라이트 교체",
        "saveCreate": "펫 추가",
        "saveUpdate": "변경 저장",
        "cancel": "취소"
      },
      "errors": {
        "missingId": "펫 ID 는 필수입니다",
        "missingName": "표시 이름은 필수입니다",
        "missingSpritesheet": "스프라이트 시트는 필수입니다",
        "addFailed": "펫 추가에 실패했습니다",
        "updateFailed": "펫 갱신에 실패했습니다",
        "deleteFailed": "펫 삭제에 실패했습니다",
        "loadFailed": "펫 목록 로드에 실패했습니다",
        "setActiveFailed": "활성 펫 설정에 실패했습니다",
        "summonFailed": "펫 창 호출에 실패했습니다"
      }
    },
    "import": {
      "title": "Codex 에서 가져오기",
      "subtitle": "~/.codex/pets/ 에서 발견된 펫 목록입니다.",
      "selectAll": "전체 선택",
      "alreadyImported": "이미 가져옴",
      "renameOnConflict": "충돌 시 -imported 접미어로 이름 변경",
      "import": "선택 항목 가져오기",
      "noneFound": "가져올 수 있는 Codex 펫이 없습니다.",
      "imported": "가져오기 완료",
      "failed": "가져오기 실패",
      "close": "닫기"
    },
    "marketplace": {
      "openMarketplace": "펫 마켓",
      "title": "펫 마켓",
      "search": "펫 검색",
      "kindFilter": {
        "all": "전체",
        "object": "오브젝트",
        "animal": "동물",
        "person": "인물",
        "creature": "생물"
      },
      "sortFilter": {
        "latest": "최신",
        "popular": "인기",
        "views": "조회수순"
      },
      "refresh": "새로고침",
      "install": "설치",
      "installing": "설치 중",
      "reinstall": "다시 설치",
      "reinstallConfirm": "로컬 펫 \"{name}\" 을(를) 덮어쓰시겠습니까? 기존 데이터가 교체됩니다.",
      "cancel": "취소",
      "stats": {
        "views": "조회수",
        "downloads": "다운로드",
        "likes": "좋아요"
      },
      "actions": {
        "idle": "대기",
        "running_right": "오른쪽 달리기",
        "running_left": "왼쪽 달리기",
        "waving": "손 흔들기",
        "jumping": "점프",
        "failed": "실패",
        "waiting": "기다림",
        "running": "실행",
        "review": "리뷰"
      },
      "page": "{page} / {total} 페이지",
      "prev": "이전",
      "next": "다음",
      "empty": "조건에 맞는 펫이 없습니다.",
      "successInstalled": "\"{name}\" 을(를) 설치했습니다",
      "errors": {
        "loadFailed": "마켓을 불러오지 못했습니다",
        "installFailed": "설치에 실패했습니다",
        "alreadyInstalled": "해당 펫이 이미 존재합니다"
      }
    }
  },
  "RemoteWorkspace": {
    "openRemoteWorkspace": "Open remote workspace",
    "manage": "Manage remote workspace",
    "manageTitle": "Remote Workspace connections",
    "empty": "No remote connections",
    "searchPlaceholder": "Search remote workspaces",
    "orderFailed": "Failed to save remote workspace order",
    "dragSort": "Drag to sort",
    "dragSortConnection": "Drag to sort {name}",
    "newConnection": "New connection",
    "loading": "Loading",
    "loadingConnection": "Loading remote connection",
    "name": "Name",
    "baseUrl": "Service URL",
    "token": "Access token",
    "save": "Save",
    "delete": "Delete",
    "confirmDelete": {
      "title": "Delete remote connection?",
      "message": "This will remove \"{name}\" from this device. This action cannot be undone.",
      "cancel": "Cancel",
      "confirm": "Delete"
    },
    "saved": "Remote connection saved.",
    "deleted": "Remote connection deleted.",
    "loadFailed": "Failed to load remote connections",
    "saveFailed": "Failed to save remote connection",
    "deleteFailed": "Failed to delete remote connection",
    "openFailed": "Failed to open remote workspace",
    "connectionLoadFailed": "Failed to load remote connection: {message}",
    "connectionExpired": "Remote connection \"{name}\" is expired. Update its token and reload this window."
  },
  "ServerFileBrowser": {
    "title": "서버 파일 선택",
    "pathPlaceholder": "디렉토리 경로 입력...",
    "goHome": "홈 디렉토리로",
    "navigateUp": "상위 디렉토리로",
    "select": "선택",
    "cancel": "취소",
    "loading": "로드 중...",
    "emptyDirectory": "이 디렉토리는 비어 있습니다",
    "errorLoadingDir": "디렉토리 로드 실패",
    "selectedCount": "{count}개 선택됨"
  },
  "BackupSettings": {
    "title": "백업 및 복원",
    "description": "codeg 데이터의 이동 가능한 백업을 내보내거나 백업에서 복원합니다.",
    "tabs": {
      "backup": "백업",
      "restore": "복원"
    },
    "export": {
      "includeExternal": "대화 내용 포함",
      "includeExternalHint": "각 CLI의 대화 기록(Claude, Codex, Gemini 등)도 함께 보관합니다. 용량이 커집니다.",
      "passphrase": "암호문 (선택)",
      "passphrasePlaceholder": "비워 두면 암호화하지 않습니다",
      "passphraseConfirm": "암호문 확인",
      "passphraseMismatch": "암호문이 일치하지 않습니다.",
      "noPassphraseWarning": "이 백업에는 비밀 정보(API 키, 토큰)가 평문으로 포함됩니다. 안전한 곳에 보관하세요.",
      "passphraseLossWarning": "이 암호문으로 암호화됩니다. 분실하면 백업을 복구할 수 없습니다.",
      "button": "백업 내보내기",
      "inProgress": "백업 만드는 중…",
      "success": "백업을 만들었습니다.",
      "started": "백업 다운로드를 시작했습니다."
    },
    "restore": {
      "selectFile": "백업 파일 선택",
      "passphrasePrompt": "이 백업은 암호화되어 있습니다. 암호문을 입력하세요.",
      "unlock": "잠금 해제",
      "preview": {
        "title": "백업 정보",
        "encrypted": "암호화됨",
        "compatible": "호환됨",
        "incompatible": "호환되지 않음",
        "createdAt": "생성: {value}",
        "appVersion": "앱 버전: {value}",
        "incompatibleHint": "이 백업은 더 새로운 버전의 codeg에서 만들어져 복원할 수 없습니다."
      },
      "replaceWarning": "복원하면 현재의 모든 codeg 데이터(데이터베이스 및 업로드)가 교체됩니다. 현재 데이터는 먼저 스냅샷되어 복구할 수 있습니다.",
      "keyringNote": "데스크톱의 GitHub/채팅 토큰은 OS 키체인에 저장되어 포함되지 않습니다. 복원 후 다시 입력하세요.",
      "button": "복원",
      "staging": "복원 준비 중…",
      "staged": "복원이 준비되었습니다. 다시 시작합니다…",
      "restarting": "복원이 준비되었습니다. 서버를 다시 시작합니다…",
      "restartTimeout": "서버가 제때 돌아오지 않았습니다. 서버가 켜지면 페이지를 새로 고치세요.",
      "externalSideLocation": "대화 기록을 {path}에 복원했습니다",
      "confirmTitle": "모든 데이터를 교체할까요?",
      "confirmBody": "현재 codeg 데이터베이스와 업로드를 백업으로 교체한 후 다시 시작합니다. 현재 데이터는 먼저 스냅샷됩니다.",
      "cancel": "취소",
      "confirmAction": "교체 후 다시 시작",
      "external": {
        "title": "대화 내용",
        "hint": "이 백업에는 CLI 대화 기록이 포함됩니다. 복원 위치를 선택하세요.",
        "modeSkip": "복원 안 함",
        "modeSide": "안전한 별도 폴더에 복원",
        "modeOriginal": "CLI 원래 위치에 복원",
        "forceOverwrite": "기존 파일 덮어쓰기",
        "forceOverwriteHint": "CLI 폴더에 이미 있는 파일을 교체합니다.",
        "scanning": "충돌 확인 중…",
        "noConflicts": "덮어쓸 기존 파일이 없습니다.",
        "conflictCount": "기존 파일 {count}개가 영향을 받습니다.",
        "conflictSkipNote": "덮어쓰기를 켜지 않으면 기존 파일은 유지(건너뜀)됩니다."
      },
      "restartFailed": "복원이 준비되었지만 서버를 다시 시작하지 못했습니다. 수동으로 다시 시작해 복원을 적용하세요."
    },
    "remoteUnsupported": "백업 및 복원은 codeg를 실행 중인 컴퓨터의 데이터를 대상으로 합니다. 현재 원격 작업 공간에 연결되어 있습니다. 해당 서버에서 직접 백업을 관리하세요."
  },
  "backup": {
    "restore": {
      "error": {
        "badPassphrase": "암호문이 올바르지 않거나 백업이 손상되었습니다.",
        "corrupted": "백업 아카이브가 손상되었습니다.",
        "unknownFormat": "이 파일은 인식할 수 있는 codeg 백업이 아닙니다.",
        "newerVersion": "이 백업은 codeg {backupVersion}에서 만들어졌으며 현재 버전({appVersion})보다 최신입니다.",
        "alreadyPending": "적용 대기 중인 복원이 이미 있습니다. 먼저 다시 시작해 적용한 뒤 새 복원을 준비하세요."
      }
    },
    "error": {
      "diskSpace": "작업을 완료할 디스크 공간이 부족합니다.",
      "cancelled": "작업이 취소되었습니다."
    }
  },
  "WebConnection": {
    "disconnectedTitle": "연결이 끊어졌습니다",
    "reconnectingDescription": "서버에 다시 연결하는 중입니다. 보통 몇 초 내에 자동으로 복구됩니다.",
    "reconnectNow": "지금 다시 연결",
    "sessionExpiredTitle": "세션이 만료되었습니다",
    "sessionExpiredDescription": "세션이 더 이상 유효하지 않습니다. 계속하려면 다시 로그인하세요.",
    "goToLogin": "로그인으로 이동"
  },
  "SessionFeedbackSettings": {
    "title": "라이브 피드백",
    "description": "작업 중인 에이전트에게 메모와 수정 사항을 보낼 수 있습니다. 활성화하면 에이전트가 라이브 피드백을 확인하는 도구를 갖게 되고, 대화에 메모 입력이 표시됩니다. 팁: 에이전트는 보통 프롬프트에서 언급할 때만 피드백을 확인합니다. 예를 들어 메시지에 \"작업 중 정기적으로 라이브 피드백을 확인해\"를 추가하세요.",
    "enable": "라이브 피드백 활성화",
    "enableHint": "활성화 후 시작된 에이전트에 피드백 확인 도구를 주입합니다.",
    "save": "저장",
    "saving": "저장 중…",
    "saved": "피드백 설정을 저장했습니다",
    "saveFailed": "피드백 설정 저장에 실패했습니다",
    "loadFailed": "불러오기 실패: {detail}"
  },
  "LiveFeedback": {
    "placeholder": "{agent}이(가) 작업하는 동안 메모 보내기…",
    "agentFallback": "에이전트",
    "ariaLabel": "라이브 피드백 메모",
    "dialogTitle": "라이브 피드백",
    "dialogDescription": "에이전트가 작업하는 동안 메모를 보냅니다. 현재 단계를 중단하지 않고 다음 확인 시 읽습니다.",
    "send": "보내기",
    "cancel": "취소",
    "pending": "대기 중",
    "delivered": "수신됨",
    "turnEndedUnread": "에이전트가 피드백을 읽기 전에 턴을 마쳤습니다.",
    "sendAsMessage": "새 메시지로 보내기",
    "dismiss": "닫기",
    "turnEndedResent": "턴이 종료되어 새 메시지로 보냈습니다.",
    "turnEnded": "턴이 이미 종료되었습니다.",
    "submitFailed": "메모를 보내지 못했습니다"
  },
  "AskQuestionSettings": {
    "title": "사용자에게 질문",
    "description": "에이전트가 작업을 멈추고 대화 입력창 위에 표시되는 객관식 질문을 할 수 있습니다. 답변(또는 건너뛰기)할 때까지 에이전트는 대기합니다.",
    "enable": "사용자 질문 사용",
    "enableHint": "이 설정을 켠 후 시작된 에이전트에 ask_user_question 도구를 추가합니다.",
    "save": "저장",
    "saving": "저장 중…",
    "saved": "질문 설정이 저장되었습니다",
    "saveFailed": "질문 설정 저장 실패",
    "loadFailed": "불러오기 실패: {detail}"
  }
}
