"sidebar.context.eyebrow" = "컨텍스트";
"sidebar.context.defaultTitle" = "현재 실행 환경";
"sidebar.workspace.eyebrow" = "작업공간";
"sidebar.projects.title" = "프로젝트";
"sidebar.projects.empty" = "저장된 프로젝트 없음";
"sidebar.projects.openPicker" = "프로젝트 선택 열기";
"sidebar.providers.eyebrow" = "에이전트";
"sidebar.providers.title" = "프로바이더";
"sidebar.addProvider.title" = "프로바이더 추가";
"sidebar.addProvider.subtitle" = "CLI 명령을 등록";
"sidebar.actions.eyebrow" = "작업";
"sidebar.commands.title" = "커맨드";
"sidebar.commands.all" = "전체 커맨드";
"sidebar.status.eyebrow" = "상태";
"sidebar.connections.title" = "연결";
"sidebar.addProject.title" = "프로젝트 추가";
"sidebar.addProject.subtitle" = "폴더를 선택해서 등록";
"sidebar.telegram.connected" = "연결됨";
"sidebar.telegram.ready" = "준비됨";
"sidebar.telegram.setup" = "설정 필요";
"sidebar.noProject" = "선택된 프로젝트 없음";
"sidebar.label.model" = "모델";
"sidebar.label.profile" = "프로필";
"sidebar.label.bridge" = "브리지";
"sidebar.model.default" = "기본값";
"sidebar.bridge.running" = "실행 중";
"sidebar.bridge.stopped" = "중지됨";
"sidebar.profile.help" = "작업 프로필 선택";
"sidebar.codex.checking" = "확인 중...";
"sidebar.codex.installedVersion" = "%2$@에 설치됨 (%1$@)";
"sidebar.codex.installed" = "%@에 설치됨";
"sidebar.codex.notInstalled" = "PATH에서 찾을 수 없습니다. Codex CLI를 설치한 뒤 새로고침하세요.";
"sidebar.status.failed" = "상태 확인 실패: %@";
"sidebar.telegram.notConfigured" = "설정되지 않음 (봇 토큰 필요)";
"sidebar.telegram.tokenOnly" = "토큰 설정됨 (chat_id 없음, 봇에 /chat_info 전송)";
"sidebar.telegram.configured" = "설정됨 (토큰: %@, chat_id: %@)";
"sidebar.configured" = "설정됨";
"sidebar.executors" = "실행기";
"sidebar.refreshTools" = "도구 상태 새로고침";
"sidebar.claude.installed" = "Claude가 %@에 설치됨";
"sidebar.claude.notInstalled" = "PATH에서 Claude를 찾을 수 없습니다. Claude Code를 설치한 뒤 `claude --version`을 확인하세요.";
"sidebar.addProject.error.noDirectory" = "프로젝트 디렉터리를 선택하세요.";
"sidebar.addProject.error.pipe" = "| 문자가 포함된 프로젝트 경로는 이 폼에서 추가할 수 없습니다.";
"sidebar.addProject.duplicateNotice" = "같은 경로로 등록된 프로젝트가 이미 있습니다: %@\n그래도 추가하려면 프로젝트 추가를 한 번 더 누르세요.";
"sidebar.projectDelete.title" = "프로젝트 삭제";
"sidebar.projectDelete.message" = "%@ 프로젝트를 왼쪽 메뉴에서 삭제할까요?\n%@\n\n프로젝트 파일은 삭제되지 않습니다.";
"sidebar.projectDelete.cancel" = "취소";
"sidebar.projectDelete.confirm" = "삭제";
"sidebar.projectDelete.help" = "프로젝트 삭제";
"sidebar.providerDelete.title" = "프로바이더 삭제";
"sidebar.providerDelete.message" = "%@ 프로바이더를 왼쪽 메뉴에서 삭제할까요?\n%@\n\n저장된 프로바이더 명령이 삭제됩니다.";
"sidebar.providerDelete.cancel" = "취소";
"sidebar.providerDelete.confirm" = "삭제";
"sidebar.providerDelete.help" = "프로바이더 삭제";
"sidebar.usage.emptyLabel" = "토큰: --";
"sidebar.usage.emptyTooltip" = "아직 이 앱 대화에 기록된 토큰이 없습니다.";
"sidebar.usage.tooltip" = "마지막 턴: %d / 약 %d 토큰 (컨텍스트의 %d%%) · %@";
"content.typing" = "입력 중";
"content.activity.answering" = "답변중";
"content.activity.working" = "작업중";
"content.activity.waitingForInput" = "대기중";
"content.openProject.help.disabled" = "먼저 프로젝트를 선택하세요";
"content.openProject.help.enabled" = "프로젝트 열기";
"content.inspector.show" = "우측 패널 열기";
"content.inspector.hide" = "우측 패널 닫기";
"content.background.title" = "채팅 배경";
"content.background.help" = "채팅 배경 선택";
"content.background.standard" = "기본 배경";
"content.background.bankTeller" = "은행 창구";
"content.background.visitationRoom" = "면회실";
"content.background.classroom" = "교실";
"content.background.laborRally" = "노동 집회";
"content.background.aiPlanningMeeting" = "AI 기획 회의";
"content.background.custom" = "사용자 지정 이미지";
"content.background.chooseFile" = "이미지 파일 선택…";
"content.background.invalidImage" = "선택한 파일이 올바른 이미지가 아닙니다.";
"content.background.importFailed" = "선택한 배경 이미지를 저장하지 못했습니다.";
"content.background.importFailedWithReason" = "선택한 배경 이미지를 저장하지 못했습니다.\n\n%@";
"content.traceReview.show" = "트레이스 검토";
"content.saveAttachmentFailed" = "첨부파일 저장 실패\n\n%@";
"content.scriptTerminal.command" = "터미널에서 스크립트 실행: %@ %@";
"content.scriptTerminal.unavailable" = "스크립트를 사용할 수 없습니다: %@";
"about.menu" = "PromptPiece에 관하여";
"about.title" = "PromptPiece에 관하여";
"about.version" = "버전 %@";
"about.versionWithBundleBuild" = "버전 %@ (%@)";
"about.build" = "앱 빌드";
"about.commit" = "커밋";
"about.branch" = "브랜치";
"about.builtAt" = "빌드 시간";
"about.latestBuild" = "최신 빌드";
"about.latestBuiltAt" = "최신 시간";
"about.updateStatus" = "업데이트";
"about.checkedAt" = "조회 시간";
"about.latestLoading" = "조회 중";
"about.latestFailed" = "조회 실패: %@";
"about.updateAvailable" = "업데이트 가능";
"about.updateCurrent" = "최신";
"inspector.title" = "프로젝트 도구";
"inspector.noProject" = "프로젝트 없음";
"inspector.noProjectDetail" = "프로젝트를 선택하면 파일, Git, 터미널을 사용할 수 있습니다.";
"inspector.files.tab" = "파일";
"inspector.files.changes" = "변경내역";
"inspector.files.noChanges" = "변경된 파일이 없습니다.";
"inspector.files.title" = "파일 목록";
"inspector.files.refresh" = "파일 목록 새로고침";
"inspector.files.empty" = "표시할 파일이 없습니다.";
"inspector.files.openExternal" = "기본 앱으로 열기";
"inspector.files.editor.save" = "저장";
"inspector.files.editor.cancel" = "취소";
"inspector.files.editor.unsaved" = "저장 안 됨";
"inspector.files.editor.ready" = "편집 가능한 텍스트 파일";
"inspector.files.editor.quickLook" = "미리보기 전용";
"inspector.files.editor.loading" = "파일 불러오는 중...";
"inspector.files.editor.loadFailed" = "이 파일을 불러올 수 없습니다.";
"inspector.files.editor.confirmTitle" = "변경사항을 저장할까요?";
"inspector.files.editor.confirmMessage" = "%@에 저장하지 않은 변경사항이 있습니다.";
"inspector.files.name" = "이름";
"inspector.files.kind" = "종류";
"inspector.files.kind.folder" = "폴더";
"inspector.files.kind.file" = "파일";
"inspector.files.modified" = "수정일";
"inspector.files.modified.unknown" = "--";
"inspector.git.tab" = "Git";
"inspector.git.refresh" = "Git 상태 새로고침";
"inspector.git.notRepository" = "이 프로젝트는 Git 저장소가 아닙니다.";
"inspector.git.detached" = "Detached HEAD";
"inspector.git.changes" = "변경내역";
"inspector.git.navigator.changes" = "Changes";
"inspector.git.navigator.repositories" = "Repositories";
"inspector.git.uncommittedChanges" = "커밋되지 않은 변경";
"inspector.git.recentLocations" = "최근 위치";
"inspector.git.clean" = "작업 트리가 깨끗합니다.";
"inspector.git.changed" = "변경";
"inspector.git.staged" = "스테이지됨";
"inspector.git.unstaged" = "스테이지 전";
"inspector.git.untracked" = "추적 안 됨";
"inspector.git.ahead" = "앞섬";
"inspector.git.behind" = "뒤처짐";
"inspector.git.autoRefresh" = "자동 갱신";
"inspector.git.actions" = "작업";
"inspector.git.moreTools" = "브랜치, 리모트, 태그 도구";
"inspector.git.branches" = "브랜치";
"inspector.git.branches.local" = "로컬";
"inspector.git.branches.remote" = "리모트";
"inspector.git.branches.current" = "현재";
"inspector.git.branches.empty" = "브랜치가 없습니다.";
"inspector.git.branches.local.empty" = "로컬 브랜치가 없습니다.";
"inspector.git.branches.remote.empty" = "리모트 브랜치가 없습니다.";
"inspector.git.branch.create.placeholder" = "새 브랜치 이름";
"inspector.git.branch.create.head" = "HEAD에서 생성";
"inspector.git.branch.create.selected" = "선택 커밋에서 생성";
"inspector.git.branch.create.fromBranch" = "이 브랜치에서 새 브랜치 만들기";
"inspector.git.branch.create.fromBranchSummary" = "기준 브랜치 %@";
"inspector.git.branch.create.confirm" = "생성";
"inspector.git.branch.create.cancel" = "취소";
"inspector.git.branch.delete" = "브랜치 삭제";
"inspector.git.branch.delete.title" = "브랜치를 삭제할까요?";
"inspector.git.branch.delete.message" = "%@ 브랜치를 삭제합니다. 병합되지 않은 커밋이 있으면 Git이 삭제를 거부합니다.";
"inspector.git.branch.delete.confirm" = "삭제";
"inspector.git.branch.delete.cancel" = "취소";
"inspector.git.branch.create.withChanges" = "변경내역 들고 이동";
"inspector.git.branch.create.withChanges.hint" = "현재 변경내역을 유지한 채 새 브랜치로 전환합니다.";
"inspector.git.branch.create.withChanges.currentBranch" = "%@에서 새 브랜치를 만들고 현재 작업 트리 변경내역을 그대로 유지합니다.";
"inspector.git.branch.moveWithChanges" = "변경내역 들고 이동";
"inspector.git.branch.moveWithChanges.summary" = "현재 작업 트리 변경내역을 유지한 채 선택한 로컬 브랜치로 이동하거나, 선택 브랜치에서 새 브랜치를 만들어 이동합니다.";
"inspector.git.branch.moveWithChanges.target" = "이동 또는 기준 브랜치";
"inspector.git.branch.moveWithChanges.currentTarget" = "%@ · 현재";
"inspector.git.branch.moveWithChanges.confirm" = "이동";
"inspector.git.branch.moveWithChanges.newBranchHint" = "새 브랜치는 위에서 선택한 브랜치로부터 생성됩니다.";
"inspector.git.branch.create.selectedHint" = "브랜치 흐름에서 커밋을 선택하면 그 지점에서 브랜치를 만들 수 있습니다.";
"inspector.git.branch.create.selectedSummary" = "선택 %@ · %@";
"inspector.git.branch.create.needsName" = "먼저 브랜치 이름을 입력하세요.";
"inspector.git.remotes" = "리모트";
"inspector.git.remotes.empty" = "설정된 리모트가 없습니다.";
"inspector.git.remotes.fetch" = "Fetch";
"inspector.git.remotes.push" = "Push";
"inspector.git.remotes.noURL" = "URL 없음";
"inspector.git.remotes.fetchSelected" = "%@ Fetch";
"inspector.git.remotes.pruneSelected" = "%@ Prune";
"inspector.git.remotes.fetchSelectedShort" = "Fetch";
"inspector.git.remotes.pruneSelectedShort" = "Prune";
"inspector.git.tags" = "태그";
"inspector.git.tags.empty" = "태그가 없습니다.";
"inspector.git.tag.create.placeholder" = "새 태그 이름";
"inspector.git.tag.create.action" = "태그 생성";
"inspector.git.tag.create.selectedSummary" = "선택 %@ · %@";
"inspector.git.tag.create.needsName" = "먼저 태그 이름을 입력하세요.";
"inspector.git.tag.create.exists" = "%@ 태그가 이미 있습니다.";
"inspector.git.tag.create.title" = "Lightweight 태그를 만들까요?";
"inspector.git.tag.create.message" = "%@ 태그를 %@ 지점에 만듭니다: %@";
"inspector.git.tag.create.confirm" = "태그 생성";
"inspector.git.tag.create.cancel" = "취소";
"inspector.git.merge.action" = "머지";
"inspector.git.merge.fromBranch" = "이 브랜치에서 머지";
"inspector.git.merge.toBranch" = "현재 브랜치를 이 브랜치로 머지";
"inspector.git.merge.selected" = "선택 %@";
"inspector.git.merge.into" = "%@에 머지";
"inspector.git.merge.title" = "선택한 브랜치를 머지할까요?";
"inspector.git.merge.message" = "%@ 브랜치를 %@에 머지합니다. HEAD, 인덱스, 작업 트리가 변경될 수 있습니다.";
"inspector.git.merge.confirm" = "머지";
"inspector.git.merge.cancel" = "취소";
"inspector.git.merge.conflict" = "머지가 충돌로 중단되었습니다. 계속하기 전에 충돌 파일을 해결하세요.";
"inspector.git.rebase.action" = "리베이스";
"inspector.git.rebase.title" = "현재 브랜치를 리베이스할까요?";
"inspector.git.rebase.message" = "%@ 브랜치를 %@ 위로 리베이스합니다. 현재 브랜치 히스토리를 다시 쓰며 HEAD, 인덱스, 작업 트리가 변경될 수 있습니다.";
"inspector.git.rebase.confirm" = "리베이스";
"inspector.git.rebase.cancel" = "취소";
"inspector.git.rebase.conflict" = "리베이스가 충돌로 중단되었습니다. 계속하기 전에 충돌 파일을 해결하세요.";
"inspector.git.cherryPick.action" = "체리픽";
"inspector.git.cherryPick.selected" = "선택 %@";
"inspector.git.cherryPick.title" = "선택한 커밋을 체리픽할까요?";
"inspector.git.cherryPick.message" = "%@ 커밋을 현재 브랜치에 적용합니다: %@";
"inspector.git.cherryPick.confirm" = "체리픽";
"inspector.git.cherryPick.cancel" = "취소";
"inspector.git.cherryPick.conflict" = "체리픽이 충돌로 중단되었습니다. 계속하기 전에 충돌 파일을 해결하세요.";
"inspector.git.recovery.normal" = "정상";
"inspector.git.recovery.merging" = "머지 진행 중";
"inspector.git.recovery.merging.message" = "충돌을 해결하거나 머지를 중단한 뒤 다른 Git 작업을 실행하세요.";
"inspector.git.recovery.rebasing" = "리베이스 진행 중";
"inspector.git.recovery.rebasing.message" = "충돌을 해결하거나 리베이스를 중단한 뒤 다른 Git 작업을 실행하세요.";
"inspector.git.recovery.cherryPicking" = "체리픽 진행 중";
"inspector.git.recovery.cherryPicking.message" = "현재 체리픽을 해결한 뒤 계속하세요.";
"inspector.git.recovery.reverting" = "리버트 진행 중";
"inspector.git.recovery.reverting.message" = "현재 리버트를 해결한 뒤 계속하세요.";
"inspector.git.recovery.bisecting" = "바이섹트 진행 중";
"inspector.git.recovery.bisecting.message" = "바이섹트를 끝내거나 초기화한 뒤 계속하세요.";
"inspector.git.recovery.abortMerge" = "머지 중단";
"inspector.git.recovery.abortRebase" = "리베이스 중단";
"inspector.git.recovery.abort.title" = "Git 작업을 중단할까요?";
"inspector.git.recovery.abortMerge.message" = "현재 머지를 중단하고 저장소를 머지 전 상태로 되돌립니다.";
"inspector.git.recovery.abortRebase.message" = "현재 리베이스를 중단하고 브랜치를 리베이스 전 상태로 되돌립니다.";
"inspector.git.recovery.abort.confirm" = "중단";
"inspector.git.recovery.abort.cancel" = "취소";
"inspector.git.flow" = "브랜치 흐름";
"inspector.git.flow.commits" = "커밋";
"inspector.git.flow.commitsCount" = "커밋 %d개";
"inspector.git.flow.empty" = "커밋이 없습니다.";
"inspector.git.flow.current" = "현재";
"inspector.git.flow.upstream" = "업스트림";
"inspector.git.flow.base" = "기준";
"inspector.git.flow.none" = "없음";
"inspector.git.flow.localRefs" = "로컬";
"inspector.git.flow.remoteRefs" = "리모트";
"inspector.git.flow.refs.empty" = "ref 없음";
"inspector.git.flow.mergeBase" = "기준";
"inspector.git.flow.merge" = "머지";
"inspector.git.flow.copyTagID" = "태그 ID 복사";
"inspector.git.flow.copyCommitID" = "커밋 ID 복사";
"inspector.git.flow.showChanges" = "변경 내역 보기";
"inspector.git.stash" = "스태시";
"inspector.git.stash.count" = "스태시 %d개";
"inspector.git.stash.empty" = "저장된 스태시가 없습니다.";
"inspector.git.stash.loading" = "스태시 갱신 중...";
"inspector.git.stash.selected" = "선택한 스태시";
"inspector.git.stash.selectPrompt" = "스태시를 선택하면 내용을 확인할 수 있습니다.";
"inspector.git.stash.message.placeholder" = "스태시 메시지 (선택)";
"inspector.git.stash.create" = "스태시 생성";
"inspector.git.stash.create.confirm" = "스태시 생성";
"inspector.git.stash.create.cancel" = "취소";
"inspector.git.stash.createAll" = "작업 트리 스태시";
"inspector.git.stash.createSelected" = "선택 %d개 스태시";
"inspector.git.stash.apply" = "스태시 적용";
"inspector.git.stash.pop" = "스태시 팝";
"inspector.git.stash.drop" = "스태시 삭제";
"inspector.git.stash.drop.title" = "스태시를 삭제할까요?";
"inspector.git.stash.drop.message" = "%@ 항목을 영구 삭제합니다: %@";
"inspector.git.stash.drop.confirm" = "삭제";
"inspector.git.stash.drop.cancel" = "취소";
"inspector.git.stash.detail" = "스태시 상세";
"inspector.git.stash.detail.loading" = "스태시 상세 로딩 중...";
"inspector.git.stash.detail.files" = "변경 파일";
"inspector.git.stash.detail.noFiles" = "변경 파일을 찾지 못했습니다.";
"inspector.git.stash.detail.moreFiles" = "파일 %d개 더 있음";
"inspector.git.stash.detail.diff" = "Diff";
"inspector.git.stash.files" = "파일 %d개";
"inspector.git.stash.more" = "스태시 %d개 더 있음";
"inspector.git.stash.noMeta" = "스태시 메타데이터 없음";
"inspector.git.stagedSection" = "스테이지";
"inspector.git.workingTreeSection" = "작업 트리";
"inspector.git.kind.modified" = "수정됨";
"inspector.git.kind.added" = "추가됨";
"inspector.git.kind.deleted" = "삭제됨";
"inspector.git.kind.renamed" = "이름 변경";
"inspector.git.kind.copied" = "복사됨";
"inspector.git.kind.conflicted" = "충돌";
"inspector.git.kind.untracked" = "추적 안 됨";
"inspector.git.action.stage" = "스테이지에 올리기";
"inspector.git.action.unstage" = "스테이지에서 내리기";
"inspector.git.action.previewDiff" = "Diff 미리보기";
"inspector.git.action.discard" = "변경 버리기";
"inspector.git.action.open" = "열기";
"inspector.git.action.reveal" = "Finder에서 보기";
"inspector.git.action.fetch" = "Fetch";
"inspector.git.action.pull" = "Pull";
"inspector.git.action.push" = "Push";
"inspector.git.push.noRemote" = "이 브랜치를 푸시하려면 먼저 리모트를 추가하세요.";
"inspector.git.push.title" = "Push 대상 선택";
"inspector.git.push.remote" = "원격";
"inspector.git.push.sameBranch" = "같은 브랜치명으로 Push";
"inspector.git.push.sameBranchHint" = "%@/%@로 Push합니다. 원격 브랜치가 없으면 생성됩니다.";
"inspector.git.push.targetBranch" = "원격 브랜치";
"inspector.git.push.noRemoteBranches" = "선택한 원격에 가져온 브랜치가 없습니다. 같은 브랜치명 Push를 사용하면 원격 브랜치를 만들 수 있습니다.";
"inspector.git.action.commit" = "커밋";
"inspector.git.action.openMergeTool" = "머지 도구로 열기";
"inspector.git.diffPreview.stageFile" = "파일 스테이지";
"inspector.git.diffPreview.unstageFile" = "파일 스테이지 해제";
"inspector.git.diffPreview.revertHunk" = "묶음 되돌리기";
"inspector.git.diffPreview.revertHunk.range" = "적용 범위 %@";
"inspector.git.diffPreview.revertHunk.title" = "이 코드 묶음을 되돌릴까요?";
"inspector.git.diffPreview.revertHunk.message" = "%@의 이 diff 묶음만 되돌립니다.";
"inspector.git.diffPreview.revertHunk.confirm" = "묶음 되돌리기";
"inspector.git.progress" = "%@ 진행 중...";
"inspector.git.success" = "%@ 완료";
"inspector.git.operation" = "Git 작업";
"inspector.git.checkout" = "%@ 체크아웃";
"inspector.git.feedback.safe" = "안전";
"inspector.git.feedback.destructive" = "주의";
"inspector.git.commit.placeholder" = "커밋 메시지";
"inspector.git.commit.confirm" = "커밋";
"inspector.git.commit.cancel" = "취소";
"inspector.git.commit.hint" = "스테이지된 변경을 커밋합니다. 선택한 미스테이지 파일은 먼저 스테이지에 올립니다.";
"inspector.git.commit.noChanges" = "파일을 스테이지에 올리거나 미스테이지 파일을 선택해야 커밋할 수 있습니다.";
"inspector.git.commit.needsMessage" = "커밋 메시지가 필요합니다.";
"inspector.git.discard.title" = "변경을 버릴까요?";
"inspector.git.discard.message" = "선택한 파일 %d개의 변경을 영구적으로 버립니다. 추적되지 않은 파일은 삭제됩니다. 이 작업은 되돌릴 수 없습니다.";
"inspector.git.discard.confirm" = "버리기";
"inspector.git.discard.cancel" = "취소";
"inspector.git.error.deleteUntracked" = "추적되지 않은 파일을 삭제하지 못했습니다:\n%@";
"inspector.terminal.tab" = "터미널";
"inspector.terminal.placeholder" = "명령어 입력";
"inspector.terminal.empty" = "프로젝트 cwd에서 실행할 명령어를 입력하세요.";
"inspector.terminal.running" = "셸 실행 중";
"inspector.terminal.stopped" = "셸 중지됨";
"projectAction.finder" = "Finder에서 열기";
"projectAction.terminal" = "터미널에서 열기";
"projectAction.ide" = "%@에서 열기";
"projectAdd.eyebrow" = "작업공간";
"projectAdd.title" = "프로젝트 추가";
"projectAdd.subtitle" = "로컬 프로젝트 폴더를 PromptPiece에 등록합니다.";
"projectAdd.folder" = "프로젝트 폴더";
"projectAdd.pathPlaceholder" = "/프로젝트/경로";
"projectAdd.choose" = "선택";
"projectAdd.displayName" = "표시 이름";
"projectAdd.displayNameCaption" = "비워두면 폴더 이름을 사용합니다.";
"projectAdd.optional" = "선택 사항";
"projectAdd.cancel" = "취소";
"projectAdd.submit" = "프로젝트 추가";
"profilePicker.eyebrow" = "컨텍스트";
"profilePicker.title" = "작업 프로필";
"profile.default.title" = "기본";
"profile.default.summary" = "추가 역할 없이 현재 대화와 프로젝트 지침을 그대로 따릅니다.";
"profile.owner.title" = "오너";
"profile.owner.summary" = "제품 가치, 범위 결정, 우선순위 절충을 우선합니다.";
"profile.planner.title" = "기획";
"profile.planner.summary" = "사용자 요구, 대안 제시, 범위와 수용 기준을 우선합니다.";
"profile.developer.title" = "구현";
"profile.developer.summary" = "기존 설계를 크게 바꾸지 않고 요구사항 반영과 검증을 우선합니다.";
"profile.designer.title" = "디자인";
"profile.designer.summary" = "사용 흐름, 시각적 완성도, 상태 피드백을 우선합니다.";
"profile.architect.title" = "설계";
"profile.architect.summary" = "기획을 구현 가능한 구조로 바꾸고 책임 분리와 변경 비용을 우선합니다.";
"profile.reviewer.title" = "리뷰";
"profile.reviewer.summary" = "회귀, 누락 검증, 불명확한 상태 전이를 우선합니다.";
"settings.eyebrow" = "환경설정";
"settings.title" = "PromptPiece 설정";
"settings.subtitle" = "전송 설정, 실행기 기본값, 로컬 머신 가정을 명확하게 관리합니다.";
"settings.telegram.eyebrow" = "전송";
"settings.telegram.title" = "Telegram 봇";
"settings.telegram.subtitle" = "Telegram에서 시작했지만 이제 모든 표면과 같은 코어에 연결됩니다.";
"settings.botToken" = "봇 토큰";
"settings.botToken.caption" = "필수. chat ID를 모르면 Telegram에서 /chat_info를 실행해 chat_id를 복사하세요.";
"settings.chatID" = "Chat ID";
"settings.chatID.caption" = "선택 사항. /chat_info로 확인할 수 있습니다.";
"settings.botUsername" = "봇 사용자 이름";
"settings.allowedUserID" = "허용 사용자 ID";
"settings.pollingInterval" = "폴링 간격";
"settings.executor.eyebrow" = "실행기";
"settings.codex.title" = "Codex CLI";
"settings.codex.subtitle" = "바이너리 경로와 작업공간 가정을 이 머신 기준으로 명확히 둡니다.";
"settings.executablePath" = "실행 파일 경로";
"settings.executablePath.caption" = "PATH 감지만으로 부족할 때 쓰는 선택적 수동 경로입니다.";
"settings.defaultWorkspace" = "기본 작업공간";
"settings.defaultWorkspace.placeholder" = "기본 작업공간 경로";
"settings.defaultModel" = "기본 모델";
"settings.defaultSandbox" = "기본 샌드박스";
"settings.codex.skipGit" = "Codex 실행 시 --skip-git-repo-check 전달";
"settings.claude.title" = "Claude CLI";
"settings.claude.subtitle" = "Claude를 별도 바이너리 경로와 저장소 가정을 가진 동등한 런타임으로 다룹니다.";
"settings.claude.executable.caption" = "선택적 수동 경로입니다. Claude는 선택된 프로젝트를 작업 디렉터리로 실행합니다.";
"settings.claude.skipGit" = "Claude 프로젝트 실행에도 skip-git-repo-check 대응 옵션 유지";
"menu.zoomIn" = "확대";
"menu.view" = "보기";
"menu.zoomOut" = "축소";
"menu.actualSize" = "실제 크기";
"install.eyebrow" = "설치";
"install.method" = "설치 방법";
"install.codex.subtitle" = "앱과 CLI는 별도입니다. 설치 후에도 찾지 못하면 설정에서 실행 파일 경로를 직접 지정하세요.";
"install.codex.after" = "설치 후 Codex 상태 새로고침을 누르세요.";
"install.claude.subtitle" = "PromptPiece는 별도의 Claude Code CLI가 필요합니다. 설치 후에도 찾지 못하면 설정에서 실행 파일 경로를 직접 지정하세요.";
"install.claude.after" = "설치 후 터미널에서 `claude --version`을 확인하고 로그인하세요.";
"install.step.install" = "설치";
"install.step.verify" = "확인";
"install.step.signIn" = "로그인";
"install.step.linkBundled" = "앱 포함 바이너리를 PATH에 연결";
"install.copy" = "복사";
"install.copied" = "복사됨";
"install.run" = "실행";
"install.done" = "완료.";
"install.commandFailed" = "명령이 종료 코드 %d로 실패했습니다.";
"web.close" = "닫기";
"terminalStatus.openPopover" = "실행 중인 터미널";
"terminalStatus.open" = "터미널 열기";
"terminalStatus.send" = "보내기";
"terminalStatus.ctrlC" = "Ctrl-C";
"terminalStatus.stop" = "중지";
"terminalStatus.close" = "닫기";
"terminalStatus.running" = "실행 중";
"terminalStatus.elapsed" = "%d:%02d 실행 중";
"terminalStatus.inputPlaceholder" = "터미널에 보낼 텍스트";
"appScriptStatus.openPopover" = "실행 중인 앱 스크립트";
"appScriptStatus.stop" = "중지";
"appScriptStatus.elapsed" = "%d:%02d 실행 중";
"appScriptStatus.inputPlaceholder" = "스크립트에 보낼 텍스트";
"appScriptStatus.send" = "전송";
"web.input.placeholder" = "/projects, /scripts 또는 일반 프롬프트 입력";
"web.attach" = "첨부";
"web.attachFiles" = "파일 첨부";
"web.send" = "보내기";
"web.copy" = "복사";
"web.saveAs" = "다른 이름으로 저장";
"web.attachedFiles" = "첨부파일";
"web.noDiffPreview" = "이 파일의 diff 미리보기가 없습니다.";
"web.reply" = "답장";
"web.remove" = "제거";
"web.replyingToCommand" = "커맨드에 답장";
"web.replyingToSystem" = "시스템 메시지에 답장";
"web.replyingToBridge" = "브리지 응답에 답장";
"web.cancelReply" = "답장 취소";
"web.diagramNotWired" = "아직 다이어그램 렌더링이 연결되지 않아 원본을 아래에 표시합니다.";
"web.pendingAttachments" = "대기 중인 첨부파일";
"web.queued" = "개 대기 중";
"web.sendResponse" = "응답 보내기";
"web.waitingForReply" = "응답 대기 중";
"web.answering" = "답변중";
"web.working" = "작업중";
"web.waitingForInput" = "사용자 입력 대기 중";
"web.fileChange" = "파일 변경";
"web.fileChangeEdits" = "%d회 수정";
"web.fileChangeRevision" = "수정";
"web.fileChangeTotal" = "전체 변경";
"web.fileChangeBack" = "수정 목록";
"web.showMore" = "더 보기";
"web.showLess" = "접기";
"web.traceFamily.label" = "학습 라벨";
"web.traceFamily.unset" = "구분 선택";
"web.traceFamily.message" = "답변";
"web.traceFamily.status" = "작업 활동";
"web.traceFamily.workspaceChange" = "파일 변경";
"web.traceFamily.approvalRequest" = "사용자 입력";
"web.traceFamily.usage" = "사용량/제한";
"web.traceFamily.error" = "오류";
"web.traceFamily.ignore" = "숨김/무시";
"web.inputMode.projectPath" = "프로젝트 경로";
"web.inputMode.projectName" = "프로젝트 이름";
"web.inputMode.shellCommand" = "셸 명령";
"web.inputMode.telegram.botToken" = "Telegram 봇 토큰";
"web.inputMode.telegram.chatID" = "Telegram 채팅 ID";
"web.inputMode.telegram.botUsername" = "Telegram 봇 사용자 이름";
"web.inputMode.telegram.allowedUserID" = "허용할 Telegram 사용자 ID";
"web.inputMode.telegram.pollingInterval" = "Telegram 폴링 간격";
"web.inputMode.scriptDisplayName" = "스크립트 이름";
"web.inputMode.scriptPath" = "스크립트 경로";
"web.inputMode.scriptExecutionMode" = "스크립트 실행 방식";
"web.inputMode.scriptDescription" = "스크립트 설명";
"web.inputMode.modelID" = "모델 ID";
"web.inputMode.localModelConfig" = "로컬 모델 설정";
"web.inputMode.customProviderConfig" = "커스텀 프로바이더 설정";
"web.inputMode.taskPlanItems" = "작업 계획 항목";
"web.inputMode.taskPlanPrompt" = "작업 계획 목표";
"web.inputMode.scriptChoice" = "스크립트 선택: %@";
"web.inputMode.scriptText" = "스크립트 입력: %@";
"web.inputMode.approvalText" = "승인 입력: %@";
"taskPlanForm.title" = "작업 계획";
"taskPlanForm.subtitle" = "작업을 추가하고 항목마다 작업 프로필을 선택하세요. PromptPiece가 선택된 프로젝트 안에 계획 파일을 만들고 체크리스트가 완료될 때까지 프로바이더에게 계속 요청합니다.";
"taskPlanForm.taskPlaceholder" = "해야 할 작업";
"taskPlanForm.addTask" = "작업 추가";
"taskPlanForm.removeTask" = "작업 제거";
"taskPlanForm.autoApprove" = "이 계획 진행 중 권한요청 자동 승인";
"taskPlanForm.autoApproveHelp" = "작업 계획을 실행하는 동안 승인 요청을 자동으로 수락합니다. 텍스트 질문은 계속 직접 답해야 합니다.";
"taskPlanForm.cancel" = "취소";
"taskPlanForm.start" = "시작";
"traceReview.eyebrow" = "Provider 트레이스";
"traceReview.title" = "분류 검토";
"traceReview.subtitle" = "수집된 provider 진행 메시지에 정답 라벨을 지정합니다. 라벨은 로컬에만 보관되고 normalized trace 로그에 append됩니다.";
"traceReview.scope.unclassified" = "미분류";
"traceReview.scope.hidden" = "숨김";
"traceReview.scope.ignored" = "무시됨";
"traceReview.scope.all" = "전체";
"traceReview.outputPrediction" = "새 ML";
"traceReview.outputCategory.label" = "출력 분류";
"traceReview.outputCategory.unset" = "출력 선택";
"traceReview.outputCategory.message" = "메시지";
"traceReview.outputCategory.fileChange" = "파일 변경";
"traceReview.outputCategory.workInfo" = "작업정보";
"traceReview.outputCategory.userInputText" = "주관식 입력";
"traceReview.outputCategory.userInputChoice" = "객관식 입력";
"traceReview.outputCategory.systemError" = "시스템 오류";
"traceReview.inputSource.aiPrompt" = "AI 프롬프트";
"traceReview.inputSource.script" = "스크립트";
"traceReview.inputSource.shell" = "셸";
"traceReview.inputSource.unknown" = "출처 없음";
"traceReview.observationSource.providerAdapter" = "Provider 어댑터";
"traceReview.observationSource.tuiCLI" = "TUI/CLI";
"traceReview.observationSource.scriptOutput" = "스크립트 출력";
"traceReview.observationSource.unknown" = "경로 없음";
"traceReview.hidden" = "숨김";
"traceReview.fileChangeMapping.title" = "파일 변경 매핑";
"traceReview.fileChangeMapping.path" = "경로";
"traceReview.fileChangeMapping.displayPath" = "표시 경로";
"traceReview.fileChangeMapping.counts" = "변경 수";
"traceReview.fileChangeMapping.save" = "라벨 저장";
"traceReview.fileChangeMapping.saved" = "저장됨";
"traceReview.empty.title" = "트레이스 없음";
"traceReview.empty.subtitle" = "로그 수집을 켜고 provider 진행 메시지가 생기면 여기에 표시됩니다.";
"settings.update.eyebrow" = "앱 업데이트";
"settings.update.title" = "자동 업데이트";
"settings.update.subtitle" = "새 릴리스를 확인하고 다운로드한 뒤, 앱을 종료한 상태에서 교체하고 다시 실행합니다.";
"settings.update.autoCheck" = "앱 시작 시 새 버전 확인";
"settings.update.current" = "현재 %@ · %@";
"settings.update.lastChecked" = "확인 %@";
"settings.update.check" = "업데이트 확인";
"settings.update.install" = "다운로드 후 재시작";
"settings.update.status.idle" = "업데이트 확인 전입니다.";
"settings.update.status.checking" = "새 버전을 확인하는 중입니다.";
"settings.update.status.upToDate" = "최신 버전을 사용 중입니다.";
"settings.update.status.available" = "새 버전을 사용할 수 있습니다: %@ · %@";
"settings.update.status.downloading" = "새 버전을 다운로드하는 중입니다: %@";
"settings.update.status.downloadingProgress" = "새 버전을 다운로드하는 중입니다: %@";
"settings.update.status.downloadingSizePending" = "새 버전의 다운로드 크기를 확인하는 중입니다.";
"settings.update.status.preparing" = "다운로드를 검증하고 압축을 해제하는 중입니다.";
"settings.update.status.installing" = "앱을 종료한 뒤 새 버전으로 교체합니다.";
"settings.update.status.failed" = "업데이트 실패: %@";
"settings.update.error.invalidURL" = "업데이트 다운로드 주소가 올바르지 않습니다.";
"settings.update.error.http" = "업데이트 서버가 HTTP %d 응답을 반환했습니다.";
"settings.update.error.checksum" = "다운로드한 파일의 체크섬이 일치하지 않습니다.";
"settings.update.error.bundle" = "다운로드한 압축 파일에서 PromptPiece.app을 찾지 못했습니다.";
"settings.update.error.permission" = "현재 앱 위치를 쓸 수 없습니다. 쓰기 가능한 위치로 앱을 옮긴 뒤 다시 시도하세요.";
"settings.update.error.process" = "%@ 실행에 실패했습니다.";
"updateAlert.title" = "새 PromptPiece 버전";
"updateAlert.message" = "%@ · %@ 버전을 설치할 수 있습니다. 다운로드 후 앱을 종료하고 교체한 뒤 다시 실행합니다.";
"updateAlert.message.fallback" = "새 버전을 설치할 수 있습니다.";
"updateAlert.install" = "다운로드 후 재시작";
"updateAlert.later" = "나중에";
"updateProgress.title" = "업데이트 설치";
"updateProgress.detail" = "다운로드와 검증이 끝나면 PromptPiece를 종료하고 새 버전으로 교체한 뒤 다시 엽니다.";
"updateProgress.downloadStarting" = "서버에 연결하고 다운로드를 시작하는 중입니다.";
"updateProgress.downloadSizePending" = "다운로드 크기를 확인하는 중입니다.";
"updateProgress.downloadBytes" = "%@ / %@";
"updateProgress.downloadBytesUnknown" = "%@ 다운로드됨";
"updateProgress.preparingDetail" = "다운로드한 파일의 체크섬을 확인하고 앱 번들을 준비하는 중입니다.";
"updateProgress.installingDetail" = "PromptPiece를 종료하고 앱을 교체합니다. 앱이 바로 닫히지 않으면 설치 도구가 자동으로 종료한 뒤 계속 진행합니다.";
"updateProgress.failureDetail" = "다운로드나 검증 중 문제가 발생했습니다. 네트워크 상태를 확인한 뒤 다시 시도할 수 있습니다.";
"updateProgress.retry" = "다시 시도";
"updateProgress.dismiss" = "닫기";
