Files
codeg/src/i18n/messages/ko.json
xintaofei d163e42457 feat(settings): add ChatGPT OAuth device code login for Codex CLI
Add OAuth device code flow for Codex CLI official subscription auth,
allowing users to log in with their ChatGPT account directly from the
agent settings page without using the terminal.

- Backend: two new endpoints (codex_request_device_code, codex_poll_device_code)
  that handle the OpenAI OAuth device code flow and return tokens to frontend
- Frontend: login UI with verification URL, copyable user code, polling status,
  15-minute timeout, and auto-save via existing persistEnv/persistConfig path
- Auth.json written in Codex CLI compatible format (nested tokens, account_id,
  last_refresh) so codex-acp can use OAuth tokens directly
- Show logged-in status and re-login option when tokens are present
- Remove auth.json textarea from Codex settings UI
- i18n: all 10 languages updated with new login-related keys
2026-04-16 00:29:01 +08:00

2044 lines
95 KiB
JSON

{
"Language": {
"followSystem": "시스템 설정 따름",
"english": "영어",
"simplifiedChinese": "简体中文",
"traditionalChinese": "繁體中文",
"japanese": "일본어",
"korean": "한국어",
"spanish": "스페인어",
"german": "독일어",
"french": "프랑스어",
"portuguese": "포르투갈어",
"arabic": "아랍어"
},
"WelcomePage": {
"title": "Codeg에 오신 것을 환영합니다",
"openSettings": "설정 열기",
"searchPlaceholder": "폴더 검색...",
"loading": "로딩 중...",
"emptyFolders": "폴더가 없습니다",
"removeFromHistory": "기록에서 제거",
"openFolder": "폴더 열기",
"cloneRepository": "저장소 클론",
"projectBoot": "프로젝트 부트",
"softwareVersion": "버전 {version}",
"toasts": {
"loadFolderHistoryFailed": "폴더 기록을 불러오지 못했습니다",
"openFolderFailed": "폴더를 열지 못했습니다",
"removeFromHistoryFailed": "기록에서 제거하지 못했습니다",
"openSettingsFailed": "설정을 열지 못했습니다",
"cloneFailed": "저장소 클론에 실패했습니다",
"openProjectBootFailed": "프로젝트 부트를 열지 못했습니다"
},
"errors": {
"unknown": "예기치 않은 오류가 발생했습니다",
"invalidInput": "잘못된 입력입니다.",
"notFound": "리소스를 찾을 수 없습니다.",
"alreadyExists": "리소스가 이미 존재합니다.",
"dependencyMissing": "필수 의존성이 누락되었습니다.",
"databaseError": "데이터베이스 작업에 실패했습니다.",
"ioError": "파일 작업에 실패했습니다.",
"externalCommandFailed": "외부 명령 실행에 실패했습니다.",
"windowOperationFailed": "창 작업에 실패했습니다.",
"gitNotInstalled": "Git이 설치되어 있지 않습니다. 먼저 Git을 설치하세요.",
"targetDirectoryNotEmpty": "대상 디렉터리가 이미 존재하며 비어 있지 않습니다.",
"repositoryNotFound": "저장소를 찾을 수 없습니다. URL 및 접근 권한을 확인하세요.",
"networkUnavailable": "네트워크를 사용할 수 없습니다. 연결을 확인한 뒤 다시 시도하세요.",
"authenticationFailed": "인증에 실패했습니다. 자격 증명 또는 SSH 키를 확인하세요.",
"permissionDenied": "권한이 없습니다. 디렉터리 권한을 확인하세요."
},
"cloneDialog": {
"title": "저장소 클론",
"repositoryUrl": "저장소 URL",
"repositoryUrlPlaceholder": "https://github.com/user/repo.git",
"directory": "디렉터리",
"directoryPlaceholder": "대상 디렉터리 선택...",
"browseDirectory": "디렉터리 찾아보기",
"cancel": "취소",
"clone": "클론",
"clonePath": "클론 경로: {path}"
}
},
"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": {
"appearance": "외관",
"agents": "에이전트",
"mcp": "MCP",
"skills": "Skills",
"shortcuts": "단축키",
"version_control": "버전 관리",
"system": "시스템",
"chat_channels": "채팅 채널",
"web_service": "웹 서비스",
"model_providers": "모델 제공업체",
"experts": "전문가"
}
},
"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}%"
},
"resetToDefaults": "기본값으로 재설정",
"resetHint": "테마 색상과 창 확대/축소를 기본값으로 재설정합니다."
},
"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}로 업그레이드",
"foundUpdate": "새 버전 v{version}을 찾았습니다",
"alreadyLatest": "이미 최신 버전입니다",
"checkUpdateFailed": "업데이트 확인 실패: {message}",
"installSuccess": "업데이트가 설치되었습니다. 앱을 다시 시작합니다.",
"installFailed": "업데이트 실패: {message}",
"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": "파일 모드에서만 모든 파일 탭을 닫습니다"
},
"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\"을 클릭하여 만드세요.",
"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": "# 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 객체여야 합니다"
},
"jsonNames": {
"localConfig": "MCP 구성",
"installConfig": "설치 구성"
},
"toasts": {
"uninstalled": "MCP가 제거되었습니다",
"uninstallFailed": "제거 실패: {message}",
"selectAtLeastOneApp": "대상 앱을 최소 하나 선택하세요",
"saveSuccess": "저장됨",
"saveFailed": "저장 실패: {message}",
"installed": "{name} 설치됨",
"installFailed": "설치 실패: {message}"
},
"installDialog": {
"title": "MCP 설치 확인",
"descriptionWithName": "{name}을(를) 로컬 구성에 설치합니다.",
"description": "설치할 대상 앱을 선택하세요.",
"protocol": "프로토콜",
"selectProtocol": "프로토콜 선택",
"parameters": "구성 매개변수",
"booleanPlaceholder": "true/false를 선택하세요",
"selectOneValue": "값 선택",
"targetApps": "대상 앱"
},
"actions": {
"cancel": "취소",
"confirmInstall": "설치 확인",
"installing": "설치 중",
"uninstall": "제거",
"uninstalling": "제거 중",
"viewDetails": "상세 보기",
"save": "저장",
"saving": "저장 중",
"install": "설치"
},
"tabs": {
"local": "로컬 MCP",
"market": "MCP 마켓플레이스"
},
"local": {
"filterPlaceholder": "로컬 MCP 필터...",
"loadFailed": "로드 실패: {message}",
"empty": "감지된 로컬 MCP가 없습니다.",
"description": "로컬 MCP 구성은 직접 수정하고 저장할 수 있습니다.",
"enabledApps": "활성화된 앱",
"configJson": "MCP 구성 (JSON)"
},
"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 구성 관리를 지원합니다.",
"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 설정 저장"
},
"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 선택",
"notSet": "설정 안 됨",
"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 세션 키를 지정합니다. 비워두면 격리된 세션이 자동 할당됩니다."
},
"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": "높음",
"effortLevelMax": "최고 (Opus만 지원)"
},
"dialogs": {
"confirmDeleteProvider": "Provider {providerId}를 삭제하시겠습니까?",
"confirmDeleteProviderDescription": "OpenCode config와 auth JSON이 함께 업데이트됩니다. 이 작업은 되돌릴 수 없습니다.",
"confirmUninstall": "{name}을(를) 제거하시겠습니까?",
"confirmUninstallDescription": "로컬 설치 버전을 제거합니다. 나중에 다시 설치할 수 있습니다."
},
"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 설정 저장 실패",
"modelProviderRequired": "저장하기 전에 모델 공급자를 선택하세요."
},
"version": {
"statusLabel": "버전 상태",
"notInstalled": "설치되지 않음",
"remoteLocal": "원격: {remoteVersion} · 로컬: {localVersion}",
"platformUnsupported": "{versionText}. 현재 플랫폼에서는 이 에이전트를 지원하지 않습니다.",
"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": "에이전트 설정을 불러오는 중..."
},
"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": {
"common": {
"all": "전체",
"cancel": "취소",
"close": "닫기",
"closeOthers": "다른 항목 닫기",
"closeAll": "모두 닫기",
"confirm": "확인",
"save": "저장",
"delete": "삭제",
"rename": "이름 변경",
"loading": "로딩 중...",
"refresh": "새로고침",
"refreshing": "새로고침 중...",
"create": "생성",
"createAndSwitch": "생성 후 전환",
"openFile": "파일 열기",
"viewDiff": "Diff 보기",
"push": "푸시..."
},
"modes": {
"conversation": "대화 모드",
"fusion": "퓨전 모드",
"files": "파일 모드",
"workspaceModesAria": "워크스페이스 모드"
},
"statusLabels": {
"in_progress": "진행 중",
"pending_review": "검토",
"completed": "완료",
"cancelled": "취소됨"
},
"sidebar": {
"title": "대화",
"locateActiveConversation": "활성 대화 찾기",
"expandAllGroups": "모든 그룹 펼치기",
"collapseAllGroups": "모든 그룹 접기",
"newConversation": "새 대화",
"noConversationsFound": "대화를 찾을 수 없습니다.",
"importLocalSessions": "로컬 세션 가져오기",
"importing": "가져오는 중...",
"error": "오류: {message}",
"completeAllSessions": "모든 세션 완료 처리",
"completeAllReviewTitle": "모든 검토 세션을 완료 처리할까요?",
"completeAllReviewDescription": "검토 상태의 {count, plural, one {#개 세션} other {#개 세션}}을 모두 완료로 표시합니다.",
"completing": "완료 처리 중...",
"toasts": {
"importedSessions": "{imported, plural, one {#개 세션} other {#개 세션}}을 가져오고 {skipped}개를 건너뛰었습니다",
"noNewSessionsFound": "새 세션이 없습니다 ({skipped}개 건너뜀)",
"importFailed": "가져오기 실패: {message}",
"reviewCompleted": "{count, plural, one {#개 검토 세션} other {#개 검토 세션}}을 완료로 표시했습니다",
"completeReviewFailed": "검토 세션 완료 처리 실패: {message}"
}
},
"conversation": {
"reloadFailed": "대화 다시 불러오기 실패: {message}",
"reloaded": "대화를 다시 불러왔습니다",
"reload": "다시 불러오기",
"newConversation": "새 대화",
"closeConversation": "대화 닫기",
"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": "저장"
},
"search": {
"dialogTitle": "검색",
"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": {
"diff": "차이",
"files": "파일",
"changes": "변경사항",
"commits": "커밋"
}
},
"windowControls": {
"minimizeWindow": "창 최소화",
"minimize": "최소화",
"maximizeWindow": "창 최대화",
"maximize": "최대화",
"restoreWindow": "창 복원",
"restore": "복원",
"closeWindow": "창 닫기",
"close": "닫기"
},
"tabs": {
"closeConversationTab": "대화 탭 닫기",
"close": "닫기",
"closeOthers": "다른 항목 닫기",
"closeAll": "모두 닫기",
"tileDisplay": "타일 표시",
"untileDisplay": "타일 해제"
},
"fileWorkspace": {
"files": "파일",
"closeFileTab": "파일 탭 닫기",
"close": "닫기",
"closeOthers": "다른 항목 닫기",
"closeAll": "모두 닫기",
"preview": "미리보기",
"editSource": "소스 편집"
},
"terminal": {
"rename": "이름 변경",
"close": "닫기",
"closeOthers": "다른 항목 닫기",
"closeAll": "모두 닫기",
"hideTerminal": "터미널 숨기기 ({shortcut})"
},
"sessionFiles": {
"currentResponse": "현재 응답",
"noDiffDataAvailable": "{filePath}에 대한 diff 데이터가 없습니다",
"loading": "로딩 중...",
"noFileChangesInConversation": "이 대화에서 파일 변경을 찾을 수 없습니다",
"openConversationToSeeChanges": "대화를 열어 파일 변경을 확인하세요",
"remove": "제거",
"changeCount": "{count, plural, one {#개 변경} other {#개 변경}}",
"fileCount": "{count, plural, one {#개 파일} other {#개 파일}}"
},
"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": "확대/축소 초기화"
},
"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 {#개 커밋 푸시됨}}"
},
"tasks": {
"newBranch": "브랜치 {name} 생성",
"newWorktree": "워크트리 {name} 생성",
"checkoutTo": "{branchName}(으)로 체크아웃",
"mergeBranch": "{branchName} 병합",
"rebaseTo": "{branchName}로 리베이스",
"deleteBranch": "브랜치 {branchName} 삭제",
"deleteRemoteBranch": "원격 브랜치 {branchName} 삭제",
"initGitRepo": "Git 저장소 초기화",
"pullCode": "코드 pull",
"fetchInfo": "정보 fetch",
"pushCode": "코드 push",
"stashChanges": "변경 사항 stash",
"stashPop": "stash pop"
},
"confirm": {
"mergeTitle": "브랜치 병합",
"rebaseTitle": "브랜치 리베이스",
"deleteTitle": "브랜치 삭제",
"mergeDescription": "{branchName}을(를) 현재 브랜치 {currentBranch}에 병합할까요?",
"rebaseDescription": "현재 브랜치 {currentBranch}를 {branchName} 위로 리베이스할까요?",
"deleteDescription": "브랜치 {branchName}을(를) 삭제할까요? 이 작업은 되돌릴 수 없습니다.",
"forceDeleteTitle": "브랜치 강제 삭제",
"forceDeleteDescription": "브랜치 {branchName}가 완전히 병합되지 않았습니다. 강제 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
"deleteRemoteTitle": "원격 브랜치 삭제",
"deleteRemoteDescription": "원격 브랜치 {branchName}을(를) 삭제하시겠습니까? 이 작업은 원격 저장소에서 브랜치를 제거하며 되돌릴 수 없습니다."
},
"current": "현재",
"switchToBranch": "이 브랜치로 전환",
"mergeBranchIntoCurrent": "{branchName}을(를) {currentBranch}에 병합",
"rebaseCurrentToBranch": "{currentBranch}를 {branchName}로 리베이스",
"deleteBranch": "브랜치 삭제",
"versionControl": "버전 관리",
"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": "원격 브랜치가 없습니다",
"parentBranchHint": "현재 브랜치는 {parentBranch}에서 생성되었습니다. 클릭하여 {parentBranch}를 현재 브랜치에 병합하세요.",
"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": "취소"
}
},
"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": "커밋을 찾을 수 없습니다",
"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": "로컬 변경 사항이 없습니다",
"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": "터미널에서 열기",
"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": "생성 실패"
},
"createDialog": {
"newFile": "새 파일",
"newDirectory": "새 디렉터리",
"description": "새 {kind}의 이름을 입력하세요.",
"placeholderFile": "file-name.ext",
"placeholderDirectory": "folder-name"
},
"renameDialog": {
"renameDirectory": "디렉터리 이름 변경",
"renameFile": "파일 이름 변경",
"description": "새 이름을 입력하세요(이름만, 경로 제외).",
"placeholderDirectory": "새-폴더-이름",
"placeholderFile": "새-파일-이름.ext"
},
"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}"
},
"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": "파일 첨부",
"dropFilesToAttach": "파일을 놓아 첨부",
"loadingSettings": "설정 불러오는 중...",
"loadingMode": "모드 불러오는 중...",
"cancel": "취소",
"send": "보내기",
"forkAndSend": "포크 & 전송",
"slashCommands": "슬래시 명령",
"expertSkills": "전문가 스킬",
"expertsEmptyForAgent": "이 에이전트에 활성화된 전문가가 없습니다. 설정 > 전문가에서 활성화하세요."
},
"messageQueue": {
"addToQueue": "대기열에 추가",
"saveEdit": "저장",
"cancelEdit": "편집 취소",
"editItem": "편집",
"deleteItem": "삭제"
},
"welcomeInputPanel": {
"agentsSettingsPath": "설정 > 에이전트",
"autoConnectFallback": "{path}을(를) 열어 설치를 관리하세요.",
"autoConnectAppend": "{message}. {path}을(를) 열어 설치를 관리하세요.",
"enableAgentFirstPlaceholder": "세션을 시작하기 전에 최소 한 개의 에이전트를 활성화하세요...",
"askAnythingPlaceholder": "무엇이든 물어보세요..."
},
"agentSelector": {
"noEnabledAgents": "활성화된 에이전트가 없습니다",
"openAgentsSettings": "에이전트 설정 열기"
},
"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": {
"localFileTitle": "로컬 파일을 여시겠습니까?",
"externalLinkTitle": "외부 링크를 여시겠습니까?",
"localFileDescription": "파일 패널에서 로컬 파일을 열려고 합니다.",
"externalLinkDescription": "외부 웹사이트를 방문하려고 합니다.",
"cancel": "취소",
"opening": "열고 있습니다…",
"openFile": "파일 열기",
"openLink": "링크 열기",
"errorCannotOpen": "로컬 파일을 열 수 없습니다",
"errorNoWorkspace": "현재 활성화된 워크스페이스 폴더가 없습니다.",
"errorOutsideWorkspace": "파일이 현재 워크스페이스 폴더 밖에 있습니다.",
"errorFailedOpen": "로컬 파일 열기 실패",
"errorFailedLink": "링크 열기 실패"
},
"messageList": {
"attachedResources": "첨부된 리소스",
"loading": "불러오는 중...",
"error": "오류: {message}",
"emptyConversation": "이 대화에는 메시지가 없습니다.",
"systemMessage": "시스템 메시지",
"copyMessage": "복사",
"copied": "복사됨"
},
"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": "결과"
},
"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": "이름:",
"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})"
}
}
},
"diffPreview": {
"mode": {
"added": "추가됨",
"deleted": "삭제됨",
"renamed": "이름 변경됨",
"modified": "수정됨"
},
"hunkLabel": "청크 {index}",
"loadingHunk": "Hunk 로딩 중...",
"noDiffData": "Diff 데이터 없음"
}
},
"ProjectBoot": {
"title": "프로젝트 부트",
"tabs": {
"shadcn": "shadcn"
},
"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": "프로젝트가 성공적으로 생성되었습니다"
},
"errors": {
"directoryExists": "대상 디렉터리가 이미 존재합니다",
"commandFailed": "프로젝트 생성 명령이 실패했습니다."
}
},
"WebServiceSettings": {
"sectionTitle": "웹 서비스",
"sectionDescription": "활성화하면 브라우저를 통해 Codeg에 원격으로 접속할 수 있습니다",
"port": "포트",
"status": "상태",
"running": "실행 중",
"stopped": "중지됨",
"processing": "처리 중...",
"start": "시작",
"stop": "중지",
"startFailed": "시작 실패",
"stopFailed": "중지 실패",
"open": "열기",
"hide": "숨기기",
"show": "표시",
"copy": "복사",
"addressLabel": "접속 주소",
"tokenLabel": "접속 토큰",
"tokenHint": "웹 클라이언트 첫 접속 시 이 토큰을 입력하세요"
},
"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": "연결이 불안정합니다. 재시도 중...",
"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": "에이전트에 오류가 발생했을 때",
"saved": "이벤트 필터가 업데이트되었습니다.",
"saveFailed": "이벤트 필터 저장에 실패했습니다."
},
"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": "최소 하나의 에이전트 유형을 선택하세요.",
"nameRequired": "제공업체 이름은 필수입니다.",
"apiUrlRequired": "API URL은 필수입니다.",
"apiKeyRequired": "API 키는 필수입니다.",
"loadFailed": "제공업체를 불러오지 못했습니다.",
"saveFailed": "변경 사항을 저장하지 못했습니다.",
"createSuccess": "제공업체가 생성되었습니다.",
"editSuccess": "제공업체가 업데이트되었습니다.",
"deleteSuccess": "제공업체가 삭제되었습니다.",
"deleteConfirmTitle": "제공업체 삭제",
"deleteConfirmMessage": "제공업체 \"{name}\"을(를) 영구적으로 삭제하시겠습니까?",
"deleteBlockedByAgent": "{agents}이(가) 이 공급자를 사용 중입니다. 삭제하기 전에 연결을 해제해 주세요.",
"cancel": "취소",
"delete": "삭제",
"create": "생성",
"save": "저장"
},
"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": "폴더를 열지 못했습니다"
}
}
}