{
  "product": "YSK Server",
  "tagline": "AI-centric, security-first Linux server management platform",
  "company": "YSK Limited",
  "agents": {
    "title": "AI 에이전트 런타임",
    "body": "OpenClaw / Hermes / IonClaw 설치 및 감독; 모든 도구 호출은 허용 목록 및 승인을 거칩니다.",
    "status": {
      "running": "달리기",
      "activating": "시작",
      "stuck": "시작이 멈췄습니다.",
      "connected": "온라인",
      "registered": "등록만 됨",
      "stale": "탁한",
      "disconnected": "오프라인",
      "not_installed": "미설치",
      "failed": "실패한",
      "error": "오류",
      "unknown": "프로브되지 않음",
      "fallback": "알 수 없음"
    },
    "cmdStatus": {
      "queued": "대기 중",
      "acked": "확인됨",
      "done": "완료",
      "error": "오류"
    },
    "activatingStuckHint": "5분 이상 활성화하면 실패로 처리됩니다. 일지를 확인하세요.",
    "noOnlineAgents": "온라인 상담원 없음",
    "journal": "신문",
    "writeUnit": "쓰기 단위",
    "writeUnitConfirm": "/etc/systemd 아래에 {{kind}}에 대한 systemd 단위를 작성합니다. 서비스가 시작되지 않았거나 활성화되지 않았습니다.",
    "liveN": "{{count}} 온라인",
    "registeredOnly": "등록만 됨",
    "awaitProbe": "조사 대기 중",
    "runtimes": "런타임",
    "running": "달리기",
    "liveAgents": "온라인 에이전트",
    "fleet": "함대",
    "aiTasks": "AI 작업",
    "expBanner": "실험적입니다.",
    "expBody": "등록 ≠ 온라인. 실제 운영에서는 CLI를 사용합니다.",
    "expDocs": "문서: 저장소",
    "expEdge": "가장자리에서:",
    "expPayload": "; 명령 페이로드 권장사항",
    "fleetCan": "함대가 할 수 있는 일",
    "fleetCanDesc": "빈 목록이 아님 — 에지 노드를 위한 실제 제어 평면 기능",
    "capRegister": "등록하다",
    "capRegisterD": "제어 영역 목록 쓰기('등록된 상태'만 해당) — 프로세스가 실행되고 있지 않을 수 있습니다.",
    "capCommand": "명령",
    "capCommandD": "CLI 사전 설정(준비 상태/호스트/프로젝트…) 또는 사용자 정의 에지 풀, ysk-server 실행 및 ack",
    "capHistory": "명령 내역",
    "capHistoryD": "대기 중/완료/오류, 종료 코드, 예쁜 JSON 결과",
    "capDelete": "삭제",
    "capDeleteD": "세션 및 관련 메시지를 제거합니다.",
    "capStatus": "상태",
    "capStatusD": "등록만 가능 → 온라인(하트비트) → 부실(하트비트가 없는 60초 이상)",
    "statusFlowTitle": "상태 흐름",
    "statusFlow": "등록만 → 온라인 → 오래된(60초 이상) → 오프라인(연결 끊김). 필터 \"오프라인\"이 연결 해제되었습니다.",
    "colSession": "세션 UUID",
    "copySession": "클러스터/CLI --session에 대한 세션 UUID 복사",
    "staleFor": "보이지 않음 {{age}}",
    "commandTitle": "이 세션에 대한 명령을 대기열에 넣습니다.",
    "historyTitleShort": "명령 기록 열기(읽기 전용)",
    "fleetTitle": "함대 ({{count}})",
    "fleetDesc": "컨트롤 플레인 레지스트리 · 등록 ≠ 노드 온라인",
    "registerPlus": "+ 에이전트 등록",
    "colId": "ID",
    "colStatus": "상태",
    "colGroup": "그룹",
    "colLastSeen": "마지막으로 본",
    "command": "명령",
    "history": "역사",
    "emptyAgents": "등록된 에이전트가 없습니다.",
    "emptyAgentsDesc": "목록에서 등록하거나 에지 프로세스가 자체 등록될 때까지 기다립니다.",
    "historyTitle": "명령 내역 · {{id}}",
    "historyDesc": "노드가 풀릴 때까지 대기합니다.",
    "refreshHistory": "기록 새로고침",
    "colTime": "시간",
    "finishedAt": "완료 {{at}}",
    "colCommand": "명령",
    "colResult": "결과 요약",
    "colExit": "출구",
    "hasResult": "결과 있음",
    "emptyCmds": "아직 명령이 없습니다.",
    "emptyCmdsDesc": "\"명령\"이 포함된 대기열; Edge Agent가 온라인 상태가 될 때까지 대기 상태를 유지합니다.",
    "edgeOnlineTitle": "엣지 에이전트가 온라인 상태가 되는 방법",
    "edgeOnlineDesc": "패널 등록 후 노드는 하트비트/풀 명령에 대한 아웃바운드 루프를 실행해야 합니다.",
    "controlPlaneApi": "제어 영역 API:",
    "controlPlaneHint": "(접근 가능해야 하며 프로덕션에서는 실제 패널 주소를 사용하십시오)",
    "queueNote": "에지 프로세스가 없어도 \"명령\"은 계속 작동합니다. 에이전트가 온라인 상태가 될 때까지 대기열에 들어갑니다.",
    "runtimeTitle": "AI 런타임",
    "runtimeDesc": "프로브 경로 및 단위",
    "emptyRuntime": "아직 프로브 결과가 없습니다",
    "emptyRuntimeDesc": "런타임을 로드하거나 개별적으로 조사하려면 새로 고침하세요.",
    "pathExists": "존재한다",
    "pathMissing": "미설치",
    "unitUnknown": "{{unit}} · 알 수 없음",
    "unitFallback": "단위",
    "path": "길",
    "probe": "조사",
    "install": "설치",
    "recentOps": "최근 작업",
    "registerTitle": "에이전트 등록",
    "registerDesc": "제어 영역 목록만 작성합니다. 노드가 온라인 상태라는 의미는 아닙니다.",
    "register": "등록하다",
    "agentId": "에이전트 ID",
    "agentIdHint": "고유 ID(예: edge-1 또는 사무실 게이트웨이",
    "group": "그룹",
    "groupHint": "구역화/목록 필터용",
    "registerNote": "노드가 아웃바운드 에이전트 및 하트비트를 실행할 때까지 상태는 \"등록 전용\"으로 표시됩니다.",
    "cmdTitle": "명령 · {{id}}",
    "cmdTitlePlain": "명령",
    "cmdDesc": "대기 중입니다. 에지 에이전트 풀, 실행 및 승인(오프라인 동안 대기열에 유지됨)",
    "enqueue": "대기열에 추가",
    "cmdPreset": "명령(CLI 우선)",
    "cmdTypeAria": "명령 유형",
    "customCli": "맞춤형 CLI",
    "cliArgs": "CLI 인수",
    "cliArgsHint": "ysk-server를 포함하지 마십시오. 예를 들어 로그 저널 --unit nginx.service",
    "cmdNote": "Edge ysk-server 에이전트 실행은 CLI JSON을 로컬로 실행합니다(-json 추가). 호스트 변경에는 여전히 Edge에서 YSK_EXECUTE=1이 필요합니다. 기록에서 종료 코드 및 JSON을 참조하세요.",
    "resultTitle": "명령 결과 · 종료 {{code}}",
    "resultTitlePlain": "명령 결과",
    "codeComment": "# 개념: 등록 → 하트비트 루프 → 풀 명령 → ack\n# 라이브러리: ysk-server-core runOutboundAgent/agentCycle",
    "resultOuter": "외부: 에지 ack(exitCode / stderr). 내부 결과:",
    "deleteTitle": "{{id}}을 삭제하시겠습니까?",
    "deleteTitlePlain": "에이전트를 삭제하시겠습니까?",
    "deleteDesc": "관련 명령 기록도 제거됩니다.",
    "fact": {
      "kind": "유형",
      "name": "이름",
      "status": "상태",
      "unitActive": "서비스",
      "unitName": "단위",
      "pathExists": "경로가 존재합니다",
      "installPath": "설치 경로"
    },
    "installBlocked": "관리자 패널에서 설치를 완료할 수 없습니다",
    "registeredMsg": "등록됨 {{id}}(컨트롤 플레인만 해당, 온라인으로 전환하려면 노드가 아웃바운드 에이전트 및 하트비트를 실행해야 함)",
    "registerFailed": "등록 실패",
    "removedFleet": "함대 등록이 제거되었습니다.",
    "enqueuedMsg": "대기열에 있는 명령 {{id}}… (노드 풀 후 실행)",
    "enqueueFailed": "대기열에 넣지 못했습니다.",
    "loadCommandsFailed": "명령을 로드하지 못했습니다.",
    "probedMsg": "조사 {{kind}}",
    "probeFailed": "프로브 실패",
    "wroteUnitMsg": "{{kind}} 유닛 설정을 작성했습니다.",
    "writeFailed": "쓰기 실패",
    "installedMsg": "설치됨 {{kind}}",
    "installIncomplete": "설치가 완료되지 않았습니다.",
    "badgeDryRun": "드라이런",
    "badgeBlocked": "막힌",
    "labelStderr": "표준 오류",
    "labelAckCli": "ack + CLI JSON",
    "labelStdoutBody": "CLI 표준 출력 본문",
    "resultOuterHint": "외부 결과는 CLI --json stdout입니다.",
    "noteAllowlist": "에이전트 도구 호출은 허용 목록을 통과해야 합니다.",
    "noteRbacCap": "상담원 역할은 쓰기 제한으로 제한됩니다."
  },
  "ai": {
    "status": {
      "completed": "완전한",
      "done": "완료",
      "executed": "실행됨",
      "failed": "실패한",
      "error": "오류",
      "rejected": "거부됨",
      "pending": "보류 중",
      "planned": "예정",
      "approved": "승인됨",
      "running": "달리기",
      "cancelled": "취소"
    },
    "activeCount": "{{count}} 활성",
    "taskCount": "{{count}} 작업",
    "tasks": "작업",
    "active": "활동적인",
    "tasksTab": "할 일({{count}})",
    "playbooksTab": "플레이북({{count}})",
    "queueTitle": "작업 대기열",
    "queueSub": "계획 및 단계를 보려면 선택하세요. 단말기 상태에 대한 추가 작업은 없습니다.",
    "createTaskPlus": "+ 작업 생성",
    "emptyTasks": "아직 할 일이 없습니다.",
    "emptyTasksDesc": "목록에서 작업을 생성하거나 플레이북을 실행하세요.",
    "browsePlaybooks": "플레이북 찾아보기",
    "noPrompt": "(프롬프트 없음)",
    "stepsOf": "단계 {{done}}/{{total}}",
    "noPlanSummary": "(계획 요약 없음)",
    "pipelineAria": "작업 단계",
    "phase": {
      "plan": "계획",
      "approve": "검토",
      "run": "실행하다",
      "done": "완료"
    },
    "approveRun": "승인 및 실행",
    "cancelTask": "작업 취소",
    "terminalHint": "작업 완료 — 새 작업 생성 또는 플레이북 실행",
    "stepsTitle": "걸음수({{count}})",
    "noSteps": "아직 단계가 없습니다.",
    "needsApproval": "승인 필요",
    "noApproval": "승인되지 않음",
    "reject": "거부하다",
    "selectTask": "작업 선택",
    "selectTaskDesc": "계획과 단계를 보려면 왼쪽에서 작업을 선택하세요.",
    "playbooksTitle": "플레이북",
    "playbooksSub": "사전 설정된 작업 · 실행 중 작업이 생성되고 작업으로 전환됩니다.",
    "countItems": "{{count}}",
    "searchPh": "이름 / 설명",
    "noPlaybooks": "일치하는 플레이북이 없습니다.",
    "noPlaybooksDesc": "키워드 변경 또는 검색 지우기",
    "run": "달리다",
    "createTitle": "AI 작업 생성",
    "createDesc": "계획 ≠ 실행. 도구는 허용 목록에 유지됩니다.",
    "generatePlan": "계획 생성",
    "promptLabel": "자연어 교육",
    "promptHint": "예를 들어 호스트 로드를 확인하세요. 또는 nginx 상태",
    "promptPh": "원하는 것이 무엇인지 설명하세요…",
    "createHint": "다음: 작업 세부정보에서 승인 및 실행하거나 개별 단계를 거부합니다."
  },
  "apache": {
    "pageDesc": "Apache 사이트(PHP 프로젝트 + 독립 실행형)",
    "pillSites": "{{count}} 사이트",
    "pillSitesSplit": "{{n}} 사이트 · {{leftover}} 남은 사이트",
    "listTitle": "사이트({{count}})",
    "emptyTitle": "사이트 없음",
    "createSite": "+ 사이트 만들기",
    "createTitle": "사이트 만들기",
    "editTitle": "사이트 편집",
    "deleteTitle": "사이트를 삭제하시겠습니까?",
    "deleteDesc": "이 Apache 사이트를 삭제하시겠습니까?",
    "stopSites": "{{n}} 사이트가 HTTP 응답을 중단합니다.",
    "colServerName": "서버 이름",
    "colSource": "원천",
    "colKind": "유형",
    "colTarget": "목표",
    "colStatus": "상태",
    "filterSource": "소스 필터",
    "sourceAll": "전체",
    "sourceProject": "프로젝트",
    "sourceStandalone": "독립형",
    "sourceArtifact": "디스크에",
    "sourceOrphan": "나머지",
    "orphanSite": "프로젝트가 사라졌습니다.",
    "openProject": "프로젝트 열기",
    "kindLabel": "유형",
    "kindProxy": "대리",
    "kindStatic": "공전",
    "kindPhp": "PHP",
    "upstreamLabel": "업스트림",
    "rootLabel": "문서 루트",
    "sslLabel": "SSL",
    "sslTerminatedUpstream": "TLS는 전면 Nginx에서 끝납니다.",
    "apply": "적용",
    "notInstalled": "아파치가 설치되지 않았습니다",
    "globalSettings": "전역 설정",
    "siteSettings": "사이트 설정",
    "saveApply": "저장 및 적용",
    "settingsSaved": "저장됨",
    "setGzip": "Gzip",
    "setShowVersion": "버전 표시",
    "setHttp2": "HTTP/2",
    "setBody": "최대 본체",
    "setKeepalive": "Keepalive",
    "setAccessLog": "액세스 로그",
    "logOn": "켜짐",
    "logOff": "꺼짐",
    "setForceHttps": "강제 HTTPS",
    "setHsts": "HSTS",
    "setIndexes": "디렉토리 목록",
    "bodyInherit": "글로벌",
    "conflict": "이름 충돌",
    "conflictHint": "동일한 ServerName에 소스가 여러 개 있습니다. 프로젝트/독립 실행형 행을 유지하고 디스크 고아를 제거합니다.",
    "removeArtifact": "잔여물 제거",
    "removeArtifactTitle": "잔여 conf를 제거하시겠습니까?",
    "removeArtifactDesc": "요청되지 않은 Apache conf를 패널 데이터 디렉터리에서 삭제하고 가능하면 시스템 쌍을 비활성화합니다. 프로젝트를 삭제하지 않습니다.",
    "removeArtifactHint": "이 잔여 디스크 conf만 삭제하며 프로젝트는 지우지 않습니다.",
    "previewConf": "미리보기 구성",
    "cleanupConflicts": "깨끗한 충돌 잔차",
    "cleanupConflictsTitle": "모든 충돌 잔여물을 청소하시겠습니까?",
    "cleanupConflictsDesc": "프로젝트 또는 독립 실행형 ServerName과 충돌하는 모든 디스크상의 아티팩트 구성을 제거하십시오. 프로젝트 행은 유지됩니다.",
    "artifactRemovedOk": "잔여 conf가 제거되었습니다."
  },
  "applyStatus": {
    "draft": "초안",
    "written": "작성(패널 데이터)",
    "planned": "진행중",
    "applied": "호스트에 적용됨",
    "failed": "실패한",
    "pendingExecute": "호스트 실행 필요",
    "uploaded": "업로드됨",
    "issued": "발급됨",
    "missing": "파일 누락"
  },
  "audit": {
    "recent": "최근 감사",
    "lastN": "마지막 {{n}}",
    "actions": {
      "protection.change": "보호 설정이 변경됨",
      "auth.locale": "UI 언어가 변경됨",
      "auth.login": "로그인됨",
      "auth.logout": "로그아웃됨",
      "system.firewall.allow_port": "방화벽 허용 포트",
      "system.firewall.deny": "방화벽은 IP를 거부",
      "system.firewall.apply": "방화벽 적용",
      "project.deploy": "프로젝트 배포",
      "project.create": "프로젝트가 생성되었습니다.",
      "project.delete": "프로젝트가 삭제되었습니다.",
      "ssl.request": "SSL 요청",
      "ssl.upload": "SSL 업로드",
      "system.firewall.enable": "방화벽 활성화/비활성화",
      "system.firewall.delete_rule": "방화벽 규칙 삭제",
      "system.firewall.delete_deny": "영구 거부 IP 제거",
      "db.adminer.apply": "DB 브라우저 프로젝트",
      "project.goLive": "프로젝트 가동",
      "project.publish": "Nginx 게시",
      "project.suspend": "프로젝트 일시 중단",
      "software.install": "소프트웨어 설치",
      "software.update": "소프트웨어 업데이트",
      "backup.restore": "백업 복원",
      "backup.run": "백업 실행",
      "backup.delete": "백업이 삭제되었습니다."
    }
  },
  "backups": {
    "settingsSaved": "백업 설정이 저장되었습니다.",
    "saveFailed": "저장 실패",
    "downloadStarted": "다운로드 시작됨: {{name}}",
    "nothingToDo": "할 일 없음",
    "tarOkSideFail": "tar 확인/사이드 스텝에 문제가 있음",
    "success": "성공",
    "hasFailures": "실패가 있음",
    "notYet": "아직 아님",
    "enabled": "사용",
    "needPassword": "비밀번호 분실",
    "off": "꺼짐",
    "lastRun": "마지막 {{label}}",
    "backupFiles": "백업 파일",
    "projects": "프로젝트",
    "lastAll": "마지막으로",
    "latestFile": "최신 아카이브",
    "remote": "원격",
    "withBackups": "백업이 있는 프로젝트",
    "ops": "행위",
    "remoteExclude": "원격/제외",
    "about": "설명",
    "noBackups": "아직 백업이 없습니다.",
    "noBackupsDesc": "\"모든 프로젝트 백업\" 또는 프로젝트 세부정보 백업 실행",
    "goOps": "작업으로 이동",
    "projectShort": "프로젝트",
    "download": "다운로드",
    "preview": "시사",
    "restoreWeb": "웹 복원",
    "restoreFull": "전체 복원",
    "restoreFullTitle": "이 아카이브의 프로젝트 파일 및 데이터베이스 덮어쓰기 - 확인하려면 파일 이름을 입력하세요.",
    "restoreWebTitle": "이 아카이브에서만 웹사이트 파일을 복원하세요.",
    "previewTitle": "쓰지 않고 복원 미리보기",
    "partialSkipped": "부분 — 일부 프로젝트를 건너뛰었습니다.",
    "delete": "삭제",
    "opsTitle": "행위",
    "opsHint": "프로젝트가 0개이거나 모두 건너뛰었음 = 성공;",
    "noProjects": "(프로젝트 없음)",
    "successRatio": "· {{ok}}/{{total}} 알았어",
    "summary": "요약{{extra}}",
    "backupFailed": "백업 실패",
    "backupDone": "백업 완료",
    "backupAll": "모든 프로젝트 백업",
    "controlPlane": "백업 제어 영역",
    "controlPlaneDone": "제어 영역 백업 완료",
    "cronCmd": "명령: ysk-server backup all --data-dir …",
    "cronHint": "install=true로 POST를 예약하면 EXECUTE가 켜져 있을 때 호스트 crontab이 로드됩니다.",
    "dailyCronRegistered": "매일 03:00 일정 등록",
    "registerDailyCron": "일일 일정 등록(+설치)",
    "resticNeedConfig": "Restic을 활성화하고 Remote/exclude first에서 비밀번호를 설정합니다.",
    "resticFailed": "Restic 실패",
    "resticDone": "잔여 증분 완료",
    "resticOnly": "나머지만 실행",
    "listSnapshots": "나머지 스냅샷 나열",
    "lastAllDetail": "마지막 전체 백업 세부정보",
    "time": "시간",
    "result": "결과",
    "nothingZero": "할 일 없음(0개 프로젝트)",
    "notes": "메모",
    "status": "상태",
    "skipped": "건너뛰었습니다.",
    "failed": "실패한",
    "lastNoProjects": "지난번에는 백업이 필요하지 않은 프로젝트가 없습니다.",
    "noPerProject": "프로젝트별 결과가 없습니다.",
    "remoteSide": "원격/안정적인 사이드 스텝",
    "step": "단계",
    "remoteStep": "원격",
    "restoreProjectId": "projectId 복원(비어 있음 = 모두 나열)",
    "needProjectOrTag": "채우기 프로젝트 ID 또는 스냅샷에는 프로젝트: 태그가 있어야 합니다.",
    "dryRunDone": "테스트 실행 완료(쓰기 없음)",
    "allSuccess": "모두 성공했습니다",
    "failOrSkip": "실패/건너뛰기",
    "noteN": "참고 {{n}}",
    "enableRemote": "원격 푸시 활성화",
    "targetKind": "대상 유형",
    "remoteKindAria": "원격 대상 유형",
    "localPath": "로컬 경로",
    "host": "주인",
    "port": "포트",
    "username": "사용자 이름",
    "password": "비밀번호",
    "passwordSshHint": "호스트 SSH 키를 사용하려면 비어 있습니다.",
    "savedLeaveEmpty": "이미 저장한 경우 비워 두세요.",
    "s3Bucket": "버킷 경로",
    "region": "지역",
    "endpointOptional": "엔드포인트(선택사항)",
    "localMirror": "로컬 미러 경로",
    "remotePath": "원격 경로",
    "remotePathHint": "원격 사용자의 집(또는 SFTP chroot)을 기준으로 합니다. “.” 그 집이에요.",
    "resticTitle": "잔여 증분",
    "resticDesc": "선택 과목; PATH에 고정되어 있습니다. 활성화된 경우 비밀번호가 필요함(기본값 없음)",
    "enableRestic": "나머지 활성화",
    "repoPath": "저장소 경로",
    "repoPassword": "저장소 비밀번호",
    "repoPassSaved": "저장되었습니다. 비움 = 유지. 활성화된 경우 필수입니다.",
    "repoPassRequired": "Restic이 활성화된 경우 필수(기본 비밀번호 없음)",
    "savedPlaceholder": "저장됨(비어 있음 = 유지)",
    "required": "필수의",
    "s3RepoUrl": "또는 S3 저장소 URL",
    "excludeTitle": "규칙 제외",
    "excludeSub": "tar 제외 경로, 한 줄에 하나의 글로브",
    "excludeList": "제외 목록",
    "saveAll": "모든 설정 저장",
    "restoreFailed": "복원 실패",
    "previewDone": "미리보기 완료",
    "restoreDone": "복원 완료",
    "previewQ": "백업 내용을 미리 보시겠습니까?",
    "restoreWebQ": "선택적 복원(웹)?",
    "restoreFullQ": "전체 복원?",
    "previewDesc": "목록 {{name}}만 — 파일은 변경되지 않습니다.",
    "restoreWebDesc": "{{name}}를 프로젝트 홈으로 추출합니다(더 안전함).",
    "restoreFullDesc": "{{name}}의 전체 타르 복원; 기존 파일을 덮어쓸 수 있습니다.",
    "restore": "복원하다",
    "cancel": "취소",
    "deleteFailed": "삭제 실패",
    "deleted": "삭제됨",
    "deleteTitle": "백업 파일을 삭제하시겠습니까?",
    "deleteDesc": "영구 삭제 {{name}}",
    "tabTrash": "휴지통",
    "trashTitle": "휴지통 ({{count}})",
    "trashSub": "삭제된 아카이브는 7일 동안 여기에 보관된 후 영구적으로 제거됩니다.",
    "trashEmpty": "휴지통이 비어 있습니다.",
    "trashEmptyDesc": "삭제된 백업 파일은 7일 동안 여기에 표시됩니다.",
    "trashRestore": "복원하다",
    "trashPurge": "완전삭제",
    "trashEmptyAll": "휴지통 비우기",
    "trashExpires": "만료 {{at}}",
    "trashPurgeTitle": "이 백업을 영구적으로 삭제하시겠습니까?",
    "trashPurgeDesc": "{{name}}를 영구 삭제합니다. 이 작업은 취소할 수 없습니다.",
    "trashEmptyTitle": "휴지통을 비우셨나요?",
    "trashEmptyDescConfirm": "{{count}} 아카이브를 영구적으로 삭제합니다. 확인하려면 개수를 입력하세요.",
    "trashRestored": "휴지통에서 복원됨",
    "trashPurged": "영구적으로 삭제됨",
    "trashedOk": "휴지통으로 옮겼습니다",
    "resticSafeTitle": "안전한 디렉터리로 복원하시겠습니까?",
    "resticSafeDesc": "{{snapshot}}을 프로젝트 {{project}} .restic-restore-* 디렉토리로 복원",
    "resticRestoreDone": "안정적인 복원 완료",
    "overwriteTitle": "위험: 집 덮어쓰기",
    "overwriteDesc": "프로젝트 {{project}}의 홈을 덮어씁니다. 확인하려면 OVERWRITE를 입력하세요.",
    "confirmString": "문자열 확인",
    "overwriteHome": "집 덮어쓰기",
    "resticOverwriteDone": "Restic 덮어쓰기 홈 완료",
    "opsResult": "작업 결과",
    "filesTitle": "백업 파일({{count}})",
    "filesSub": "관리-dir tar · 다운로드에는 로그인 필요 · 복원: dry-run / web / full",
    "backupAllBtn": "모두 백업",
    "yes": "예",
    "no": "아니요",
    "safeDir": "안전한 디렉토리",
    "remotePushTitle": "원격 푸시 대상",
    "remotePushSub": "로컬 tar가 성공한 후 SFTP, 로컬 경로 또는 S3로 푸시합니다.",
    "accessKey": "액세스 키",
    "secretKey": "비밀키",
    "overwriteConfirmHint": "덮어쓰기를 확인하려면 OVERWRITE를 입력하세요.",
    "testRemote": "대상 테스트",
    "testRemoteHint": "원격 호스트에 연결하고 작은 프로브 파일을 작성합니다. 읽기 전용이 아닙니다.",
    "testRemoteDone": "원격 탐침 완료",
    "testRemoteFailed": "원격 탐침 실패",
    "resticRepoPh": "패널 데이터 디렉토리 / Restic-repo",
    "testDisabledHint": "테스트하기 전에 원격 푸시를 켜십시오.",
    "identityId": "아웃바운드 SSH ID",
    "identityHint": "우선의. /security SSH와 동일한 볼트입니다. 비밀번호에는 sshpass가 필요합니다.",
    "identityNone": "없음 — 비밀번호 또는 기본 키",
    "skippedListHint": "건너뛴 프로젝트는 다음과 같습니다.",
    "skippedPendingOs": "건너뛰기 - OS 사용자/홈이 프로비저닝되지 않음",
    "goLogs": "로그 열기",
    "goAbout": "백업 메모",
    "previewListingTitle": "아카이브 내용",
    "restoreNamedDesc": "{{name}}를 프로젝트 {{project}}로 복원합니다.",
    "overwriteNamedDesc": "스냅샷 {{snapshot}}에서 프로젝트 {{project}}의 파일을 덮어씁니다.",
    "resticSafeNamed": "프로젝트 {{project}}의 스냅샷 {{snapshot}}을 안전한 디렉터리에 복원하세요."
  },
  "btTracker": {
    "title": "블루투스 트래커",
    "sub": "Self-hosted BitTorrent / WebTorrent tracker for file shares",
    "pageDesc": "Seed panel file shares over BitTorrent. Start the tracker, set a public announce host, then create BT shares in Files.",
    "status": "상태",
    "running": "달리기",
    "stopped": "중지됨",
    "installed": "Installed (bundled)",
    "start": "Start tracker",
    "stop": "Stop tracker",
    "stopTitle": "추적기를 중지합니다. 시드 및 다운로드가 중단됩니다.",
    "stopDesc": "실행 중인 토렌트가 발표를 중지합니다. 추적기를 다시 시작할 때까지 피어의 연결이 끊어집니다.",
    "fillPublicHost": "{{host}} 사용",
    "fillPublicHostTitle": "현재 패널 호스트 이름을 공개 발표 호스트로 입력하세요.",
    "refresh": "새로고침",
    "settings": "설정",
    "httpPort": "HTTP / WebSocket port",
    "udpPort": "UDP port (0 = off)",
    "listenHost": "Listen host",
    "listenHostHint": "0.0.0.0은 모든 주소를 수신합니다. 피어가 이 호스트에 연결해야 하는 경우가 아니면 127.0.0.1을 선호합니다.",
    "listenAllWarn": "추적기는 모든 주소에 바인딩됩니다. 방화벽을 끄면 공개됩니다. 로컬 전용으로 127.0.0.1을 바인딩하거나 방화벽에서 포트를 제한하세요.",
    "bindLoopback": "127.0.0.1 전용",
    "bindAll": "0.0.0.0(전체)",
    "wsEnabled": "WebSocket tracker (browser WebTorrent)",
    "wsEnabledHint": "Required for browser WebTorrent clients",
    "autostart": "Autostart with panel",
    "autostartHint": "Start tracker when ysk-server serve boots",
    "publicAnnounceHost": "Public announce host",
    "publicAnnounceHostHint": "Host or host:port used in magnet announce URLs. Empty = 127.0.0.1 until you set a public hostname.",
    "maxSeeds": "Max concurrent seeds",
    "seederPorts": "Seeder peer ports",
    "seederPortMin": "피어 포트 시작",
    "seederPortMax": "피어 포트 끝",
    "seederPortsHint": "Local peer listen range for the in-process seeder",
    "saveSettings": "Save settings",
    "applyHint": "Saving ports does not open the firewall — use network exposure or Start after EXECUTE.",
    "torrents": "Tracked torrents",
    "torrentsEmpty": "No announce traffic yet",
    "torrentsEmptyHint": "Create a file share with BitTorrent mode in Files. This table fills as peers announce and the server seeds.",
    "torrentsDesc": "Live swarm from the tracker, plus local seeder status for panel shares.",
    "colName": "이름",
    "colHash": "Info hash",
    "colSeeds": "씨앗",
    "colLeechers": "거머리",
    "colStatus": "상태",
    "announceUrls": "Announce URLs",
    "announceDesc": "Put these trackers in clients, or rely on magnets generated by the panel.",
    "copy": "복사",
    "copied": "복사됨",
    "statsTorrents": "급류",
    "statsLibrary": "도서관",
    "statsLibraryHint": "패널 라이브러리의 토렌트/파일 공유",
    "statsTrackerLeftover": "Tracker leftover",
    "statsTrackerLeftoverHint": "Tracker announce hashes that are not library rows",
    "leftoverHashesTitle": "추적기 남은 해시",
    "publicHostMissingLive": "추적기가 듣고 있지만 공개 발표 호스트가 설정되지 않았습니다. 오프호스트 피어는 이 시드를 찾을 수 없습니다.",
    "leftoverHashesHint": "읽기 전용입니다. 이러한 공지는 라이브러리 또는 공유 행이 아닙니다.",
    "statsPeers": "동료",
    "statsAnnounces": "발표하다",
    "statsAnnouncesHint": "추적기 프로세스에서 확인한 요청 발표",
    "statsJobs": "Active jobs",
    "openShares": "File shares",
    "needExecute": "Enable system-change permission (YSK_EXECUTE) to open ports and run production seeds.",
    "guideTitle": "What is this?",
    "guideBody": "When you create a BT file share, YSK builds a .torrent, seeds it, and announces peers via this tracker. Open the port if downloaders are off-host.",
    "restoreSeeds": "Re-seed BT shares",
    "restoreSeedsHint": "Start tracker if needed and re-seed shares that still have a .torrent on disk.",
    "bundledNote": "Bundled with YSK Server (Node). No apt install/uninstall — Start/Stop manages the process.",
    "stackTitle": "소프트웨어",
    "jobs": "Torrent jobs",
    "jobsEmpty": "No background torrent jobs",
    "jobsEmptyHint": "Large shares (≥128 MiB) build .torrent files in the background so the Files dialog stays responsive.",
    "jobsDesc": "Background create-torrent queue for large file or folder shares.",
    "colJob": "직업",
    "colShare": "공유하다",
    "colJobStatus": "Job status",
    "colEnqueued": "Enqueued",
    "refreshJobs": "Refresh jobs",
    "tabOverview": "개요",
    "tabTorrents": "급류",
    "tabJobs": "채용정보",
    "tabSettings": "설정",
    "tabAbout": "설명",
    "heroRunning": "Tracker is live",
    "heroStopped": "Tracker is stopped",
    "heroRunningSub": "Peers can announce and discover seeds for panel shares.",
    "heroStoppedSub": "Start the tracker before sharing large files over BitTorrent.",
    "live": "살다",
    "liveOff": "게으른",
    "quickStart": "Quick start",
    "quickStartDesc": "Three steps to share files over BitTorrent.",
    "step1Title": "Set public announce host",
    "step1Hint": "Hostname clients use in magnets (Settings).",
    "step2Title": "Start the tracker",
    "step2Hint": "Open port exposure if peers are off this host.",
    "step3Title": "Create a BT share",
    "step3Hint": "In Files → Share, choose BitTorrent or both.",
    "stepDone": "완료",
    "stepTodo": "토도",
    "networkCard": "네트워크",
    "networkCardDesc": "Where the tracker listens and what host appears in magnets.",
    "seederCard": "파종기",
    "seederCardDesc": "In-process WebTorrent seeder limits and peer ports.",
    "lifecycleCard": "수명주기",
    "lifecycleCardDesc": "Boot behaviour and how the service is packaged.",
    "pid": "PID",
    "port": "포트",
    "announceHost": "Announce host",
    "goSettings": "Open settings",
    "searchTorrents": "Search name or hash…",
    "filterAll": "전체",
    "filterSeeding": "파종",
    "filterOther": "다른",
    "noMatch": "No torrents match your filter",
    "seedStatusSeeding": "파종",
    "seedStatusPending": "보류 중",
    "seedStatusError": "오류",
    "seedStatusStopped": "중지됨",
    "seedStatusNone": "없음",
    "notesTitle": "Service notes",
    "exposureTitle": "Network access",
    "protoHttp": "HTTP",
    "protoWs": "WS",
    "protoUdp": "UDP",
    "saveOk": "Settings saved",
    "saveOkRestart": "저장됨 - 포트를 적용하려면 트래커를 다시 시작하세요",
    "startedOk": "Tracker started",
    "stoppedOk": "Tracker stopped",
    "restoredOk": "Re-seed finished",
    "restoredCount": "{{attempted}} 토렌트 중 {{seeded}} 리시드됨",
    "portInvalid": "1~65535 사이의 포트를 입력하세요.",
    "extraTrackerRequired": "공지 URL을 입력하세요.",
    "stopPort": "추적기 포트 {{port}}가 수신을 중지합니다.",
    "stopPid": "프로세스 PID {{pid}}가 종료됩니다.",
    "swarmLeftoverUnlisted": "{{count}} 추가 남은 공지사항은 이 목록에 해시가 없습니다.",
    "httpPortHint": "Default 8000 (YSK catalog / firewall chip). Open TCP if peers are off-host.",
    "udpPortHint": "Optional classic UDP announce. 0 = off (browser WebTorrent uses HTTP/WS). Prefer 6969 or the same port as HTTP if you open UDP on the firewall.",
    "udpPortOff": "0 · Off",
    "udpPortSameHttp": "Same as HTTP ({{port}})",
    "udpPortClassic": "6969 · Classic",
    "portSuggest8000": "8000 · Recommended",
    "announceHostUnset": "미설정",
    "tabTrackers": "추적기",
    "addTorrent": "토렌트 추가",
    "addTorrentTitle": "토렌트 추가",
    "addTorrentHint": ".torrent를 업로드하거나 자석을 붙여넣으세요. 파일 폴더를 선택합니다. WebTorrent는 완료되면 누락된 파일과 시드를 다운로드합니다.",
    "dropTorrent": "여기에 .torrent를 드롭하세요.",
    "chooseFile": "또는 파일을 선택하세요",
    "magnetLabel": "자석",
    "magnetPlaceholder": "자석:?xt=urn:btih:…",
    "inspect": "읽다",
    "extraTrackersPreview": "{{n}} 추가 추적자에게도 알립니다.",
    "saveLocation": "위치 저장",
    "saveRootPublic": "공개 파일",
    "newFolder": "새 폴더",
    "destPreview": "에 쓸 것입니다",
    "startDownload": "다운로드 시작",
    "filterDownloading": "다운로드 중",
    "filterPaused": "일시중지됨",
    "filterError": "오류",
    "emptyDrop": "여기에 .torrent를 드롭하거나 파일을 선택하세요.",
    "emptyHint": "선택한 폴더에 파일이 들어갑니다. 이미 완료된 경우 이 호스트가 시드됩니다. 엔진: WebTorrent — 추가 소프트웨어 다운로드가 없습니다.",
    "pause": "정지시키다",
    "resume": "재개하다",
    "openFolder": "폴더 열기",
    "remove": "제거하다",
    "removeKeep": "파일 제거, 보관",
    "removeDelete": "파일 제거 및 삭제",
    "removeConfirm": "라이브러리에서 이 토렌트를 삭제하시겠습니까?",
    "kindShare": "공유하다",
    "filesInTorrent": "파일",
    "extraTrackersDesc": "추가 공지 URL. 라이브러리 다운로드/시드 및 파일 공유 시드는 .torrent 목록 외에 이를 사용합니다. 이것은 임의의 떼에 대한 로컬 추적기를 열지 않습니다.",
    "extraTrackersEmpty": "추가 추적기가 없습니다. 이 호스트가 피어를 찾을 수 있도록 HTTP(S), UDP 또는 WS(S) 알림 URL을 추가하세요.",
    "extraTrackerAdd": "추가하다",
    "extraTrackerUrl": "URL 발표",
    "extraTrackerApply": "현재 시드에 적용",
    "extraTrackerApplyOk": "추가 추적기 적용",
    "extraEnabled": "켜짐",
    "extraTrackerBad": "URL은 http://, https://, udp://, ws:// 또는 wss://로 시작해야 합니다.",
    "extraTrackerDup": "이미 나열됨",
    "extraTrackerLimit": "최대 32개의 추가 추적기",
    "addOk": "라이브러리에 추가됨",
    "savedTo": "저장",
    "folderEmpty": "하위 폴더 없음",
    "needTorrentFile": ".torrent 파일을 선택하세요",
    "torrentTooBig": "8MiB보다 큰 .torrent",
    "seedStatusDownloading": "다운로드 중",
    "seedStatusChecking": "확인 중",
    "seedStatusPaused": "일시중지됨",
    "seedStatusQueued": "대기 중",
    "swarmLeftover": "Tracker에 라이브러리에 없는 announce가 {{count}}개 있습니다(Torrent 목록과 출처가 다름)",
    "addSourceSection": "소스",
    "addSourceFile": "파일",
    "addSourceMagnet": "자석",
    "previewSection": "미리보기",
    "saveRoot": "루트",
    "clearFile": "파일 지우기",
    "extraTrackersTitle": "추가 announce",
    "extraTrackersEmptyTitle": "아직 Tracker가 없습니다",
    "extraEnabledCount": "{{count}}개 사용 중",
    "extraApplyHint": "기존 시드에 적용하려면 하나 이상 켜세요",
    "destMode": "이 폴더 사용 방법",
    "seedExisting": "기존 파일로 시드",
    "downloadNewFolder": "새 폴더로 다운로드",
    "destFileConflict": "여기에 {{name}} 파일이 있습니다. 다른 폴더를 고르거나, 내용이 같으면 기존 파일로 시드하세요.",
    "waitingPeers": "피어를 기다리는 중입니다. 파일이 이 호스트에 있으면 다시 추가하고 기존 파일로 시드하세요."
  },
  "catalog": {
    "sw": {
      "vsftpd": "vsftpd(FTPS)",
      "db_util": "db-util (FTP 사용자 DB)",
      "nginx": "Nginx",
      "certbot": "Certbot (Let's Encrypt)",
      "mysql_client": "MySQL/MariaDB 클라이언트",
      "mysql_server": "MySQL 서버",
      "mariadb_server": "마리아DB 서버",
      "postgresql_client": "PostgreSQL 클라이언트",
      "postgresql": "PostgreSQL 서버",
      "redis_tools": "레디스 클라이언트",
      "redis_server": "레디스 서버",
      "ufw": "UFW 방화벽",
      "fail2ban": "fail2ban",
      "postfix": "Postfix",
      "dovecot": "Dovecot",
      "opendkim": "OpenDKIM",
      "pdns_server": "PowerDNS",
      "git": "힘내",
      "node": "Node.js",
      "php": "PHP",
      "python": "Python",
      "go": "Go",
      "rust": "Rust",
      "chromium": "Chromium / Chrome"
    },
    "php": {
      "session": "세션",
      "opcache": "OPcache"
    }
  },
  "cdn": {
    "fromProjectOk": "프로젝트에서 생성된 CDN 사이트 — 엣지/DNS 적용",
    "fromProjectUpdated": "업데이트된 프로젝트 바인딩 CDN 사이트",
    "fromProjectFailed": "프로젝트에서 실패했습니다",
    "nodeUpdated": "노드가 업데이트되었습니다.",
    "nodeCreated": "노드가 생성되었습니다.",
    "saveFailed": "저장 실패",
    "geoMapInvalid": "잘못된 geoMap JSON(예: {\"hkg\":[\"노드-ID\"]}",
    "siteUpdated": "사이트가 업데이트되었습니다.",
    "siteCreated": "사이트가 생성되었습니다.",
    "probeOnline": "프로브 OK(온라인)",
    "probeOffline": "프로브 실패(오프라인)",
    "probeFailed": "프로브 실패",
    "batchProbeOk": "모든 노드가 프로브됨",
    "batchProbePartial": "일부/전체 노드가 비정상입니다.",
    "batchProbeFailed": "일괄 조사 실패",
    "drainingSet": "배수로 설정",
    "drainCleared": "배수구가 깨끗해졌습니다",
    "confirmDeleteNode": "이 CDN 노드를 삭제하시겠습니까?",
    "nodeDeleted": "노드가 삭제되었습니다.",
    "deleteFailed": "삭제 실패",
    "confirmDeleteSite": "이 CDN 사이트를 삭제하시겠습니까?",
    "siteDeleted": "사이트가 삭제되었습니다.",
    "blocked": "차단됨(시스템 변경 권한 필요)",
    "previewRender": "렌더링 미리보기({{status}}) 해시={{hash}}",
    "fanoutDone": "팬아웃 완료({{status}})",
    "purgeDone": "삭제 완료({{status}})",
    "dnsSyncDone": "DNS 동기화 완료({{status}})",
    "sslDone": "SSL 완료({{status}})",
    "confWritten": "회의 작성({{status}})",
    "partialFail": "완전히 성공하지 못함({{status}}) — 참고 사항 참조",
    "statNodes": "노드",
    "hitNoStats": "아직 에지 통계가 없습니다",
    "loopbackOriginBlocked": "루프백 origin {{url}}을 원격 에지에 쓰지 않습니다. 먼저 도달 가능한 origin으로 바꾸세요.",
    "applyFailedHint": "적용 실패 — 아래 메모를 보세요",
    "applyFailedNoNote": "저장된 이유가 없습니다. 오류를 포착하려면 다시 적용하세요.",
    "applyStatus": {
      "draft": "초안",
      "planned": "계획됨",
      "applying": "적용 중",
      "applied": "적용됨",
      "failed": "실패",
      "partial": "부분"
    },
    "statSites": "사이트",
    "statSitesCount": "{{n}} 사이트",
    "cacheMethod": {
      "none": "견적 없음",
      "access_log": "액세스 로그",
      "cache_dir": "캐시 디렉토리",
      "log_format": "로그 형식이 필요합니다"
    },
    "geoMapLabel": "지역 지도(JSON)",
    "statApplyFailed": "적용 실패",
    "pillNodesSites": "{{n}} 노드 · {{s}} 사이트",
    "statOnline": "온라인",
    "statHit": "적중률",
    "hitUnknown": "알 수 없음",
    "lastHealthHint": "마지막 조사 {{at}} · {{ok}}",
    "lastHealthNever": "아직 프로브되지 않음 - 프로브 실행",
    "lastHealthFail": "프로브 실패",
    "healthLoopNeedSites": "먼저 사이트를 추가하세요.",
    "nodeStatus": {
      "online": "온라인",
      "offline": "오프라인",
      "draining": "배수",
      "unknown": "알려지지 않은"
    },
    "recentNotes": "최근 메모",
    "previewOnlyNote": "미리보기만 가능 - 가장자리에는 아무것도 기록되지 않았습니다.",
    "statByRegion": "지역:",
    "statByApply": "적용 상태:",
    "col": {
      "origin": "기원",
      "edges": "가장자리",
      "apply": "적용",
      "dns": "DNS",
      "edgesOnline": "Edges 온라인/적용됨",
      "dnsRr": "CDN DNS 레코드"
    },
    "mode": {
      "origin_pull": "원산지 풀",
      "reverse_proxy": "역방향 프록시",
      "static_edge": "정적 가장자리"
    },
    "dnsStrategy": {
      "multi_a": "여러 A 레코드",
      "cname": "CNAME",
      "geo": "지역"
    },
    "edgesOnlineApplied": "{{online}}/{{total}} 온라인 · {{applied}} 적용",
    "hitMiss": "조회수 {{hits}} / 실패 {{misses}}",
    "cacheBytes": "캐시 {{n}} B",
    "hitRateUnknown": "캐시 상태가 포함된 액세스 로그와 캐시 디렉토리가 없어 적중률을 추정할 수 없습니다.",
    "edgeConfPreview": "Nginx Edge conf 미리보기",
    "tabs": {
      "nodes": "노드",
      "sites": "사이트",
      "dashboard": "대시보드",
      "about": "설명"
    },
    "nodesTitle": "CDN 노드({{count}})",
    "nodesDesc": "제어/오리진/엣지/DNS를 등록합니다. 프로브 업데이트 상태.",
    "offlineHint": "오프라인 - 프로브가 실패했습니다. 노드가 남아 있으면 제거하십시오.",
    "colName": "이름",
    "colRole": "역할",
    "colStatus": "상태",
    "clearDrain": "배수구 청소",
    "drain": "물을 빼다",
    "drainTitle": "이 에지로 새 CDN 트래픽 전송을 중지합니다.",
    "drainDesc": "“{{name}}”을 비우시겠습니까? 기존 연결은 완료될 때까지 유지됩니다.",
    "drainLastTitle": "이것이 마지막 가장자리입니다. 배수구는 가장자리 없이 모든 사이트를 떠납니다.",
    "drainLastDesc": "“{{name}}”이 유일한 가장자리입니다. 그것을 비우면 모든 사이트에 우위가 없습니다.",
    "clearDrainTitle": "이 에지에서 새 트래픽을 다시 수락합니다.",
    "clearDrainDesc": "'{{name}}'의 배수를 삭제하시겠습니까?",
    "deleteNodeTitle": "이 CDN 에지 삭제",
    "deleteLastNodeTitle": "마지막 가장자리 삭제 - 모든 사이트에 가장자리가 없습니다.",
    "purge": "숙청",
    "previewTitle": "nginx 구성 미리보기(쓰기 없음)",
    "writeConfTitle": "Edge nginx 구성 파일 쓰기",
    "applyEdgesTitle": "이 사이트를 엣지에 적용(nginx 작성)",
    "purgeTitle": "가장자리의 캐시 제거",
    "dnsSyncTitle": "CDN DNS 레코드 쓰기",
    "probeDnsTitle": "프로브 에지 및 DNS(읽기 전용)",
    "distSslTitle": "TLS 자료를 가장자리에 복사",
    "leIssueTitle": "Let’s Encrypt 인증서 발급 및 배포",
    "deleteSiteTitle": "이 CDN 사이트 삭제",
    "siteOpConfirmGeneric": "'{{name}}'에서 이 작업을 실행하시겠습니까?",
    "siteOpConfirmDesc": "사이트 “{{name}}” · {{action}}. 이는 nginx, DNS 또는 인증서를 변경할 수 있습니다.",
    "siteOpConfirm": {
      "apply": "이 사이트를 가장자리에 적용하시겠습니까?",
      "render": "이 사이트에 대한 nginx 구성을 작성하시겠습니까?",
      "purge": "이 사이트의 캐시를 삭제하시겠습니까?",
      "dns-sync": "이 사이트의 DNS를 동기화하시겠습니까?",
      "dist": "TLS를 에지에 배포하시겠습니까?",
      "issue": "Issue 암호화해서 배포하자?"
    },
    "emptyNodesTitle": "아직 CDN 노드가 없습니다.",
    "emptyNodesDesc": "\"+ 노드 추가\"를 사용하여 엣지를 등록한 후 사이트를 생성하세요.",
    "sitesTitle": "CDN 사이트({{count}})",
    "sitesDesc": "도메인 + 오리진 + 에지 + 캐시 + 다중 A DNS. 엣지/DNS 동기화/퍼지를 적용합니다.",
    "healthLoopOk": "모든 사이트에 대한 상태 루프가 완료되었습니다.",
    "healthLoopPartial": "상태 루프가 부분적으로 실패함",
    "healthLoopFailed": "상태 루프 실패",
    "colDomain": "도메인",
    "colMode": "방법",
    "emptySitesTitle": "아직 CDN 사이트가 없습니다.",
    "emptySitesDesc": "표 도구 모음에서 '+ 사이트 추가'를 사용하세요.",
    "emptySitesNoEdge": "아직 엣지가 없습니다. 먼저 노드 탭에 노드를 등록한 다음 사이트를 생성하세요.",
    "dashboardTitle": "CDN 대시보드",
    "updatedAt": "업데이트됨 {{at}}",
    "dashboardEmpty": "대시보드가 ​​로드되지 않았습니다.",
    "siteStatus": "사이트 상태",
    "cacheHitEstimate": "캐시 적중률(예상)",
    "dashboardNotes": "대시보드 메모",
    "editNode": "CDN 노드 편집",
    "addNode": "CDN 노드 추가",
    "nodeAddrHint": "IPv4 / IPv6 / healthUrl / baseUrl 중 하나 이상을 입력하세요.",
    "sshHostHint": "비어 있음 = IPv4 사용; 127.0.0.1 = 로컬 적용",
    "sshHostPlaceholder": "공개 IPv4의 경우 비워 두세요.",
    "sshUser": "SSH 사용자",
    "fleetHint": "플릿 전용(SSH 없음): 에이전트용 팬아웃 대기열.",
    "fleetPlaceholder": "에이전트 페이지 세션 UUID",
    "editSite": "CDN 사이트 편집",
    "addSite": "CDN 사이트 추가",
    "originHint": "현재 URL은 원본입니다. 나중에 프로젝트 바인딩",
    "commaSeparated": "쉼표로 구분",
    "originUrl": "엣지 원본 URL",
    "edgeNodes": "엣지 노드",
    "cache": "은닉처",
    "dnsPolicy": "DNS 정책",
    "dnsPolicyHint": "multi_a = 다중 IP; 장애 조치 = 가장 건강한 것만",
    "zoneOptional": "비어 있음 = 도메인별 자동 일치 영역",
    "sslMode": "SSL 모드",
    "sslModeHint": "업로드 = SSL 페이지의 인증서; le_http01 = 엣지 ACME",
    "leEmailOptional": "LE 이메일(선택사항)",
    "leEmailHint": "발행을 위한 사전 채우기",
    "shieldHint": "이 노드를 통해 비실드 가장자리가 시작됩니다.",
    "geoMapHint": "strategy=geo의 경우, 예: {\"hkg\":[\"id1\"],\"nrt\":[\"id2\"]}",
    "geoSubdomain": "지역 하위 도메인",
    "addNodeBtn": "+ 노드 추가",
    "addSiteBtn": "+ 사이트 추가",
    "probeAll": "모두 조사",
    "healthLoop": "건강 루프",
    "setDraining": "배수 설정",
    "fromProjectUpdatedAlt": "업데이트된 프로젝트 바인딩 CDN 사이트",
    "refresh": "새로고침",
    "closePreview": "미리보기 닫기",
    "probe": "조사",
    "preview": "시사",
    "writeConf": "conf 쓰기",
    "applyEdges": "가장자리 적용",
    "dnsSync": "DNS 동기화",
    "probeDns": "프로브+DNS",
    "distSsl": "SSL 배포",
    "leIssue": "LE 문제",
    "reaggregate": "집계 새로 고침",
    "createEdgeFirst": "먼저 에지 노드를 만듭니다.",
    "enableProxyCache": "Proxy_cache 활성화",
    "autoMatch": "(자동 일치)",
    "none": "(없음)",
    "writeRegionDns": "지역 하위 도메인 A/AAAA(예: hkg) 쓰기",
    "workflowHint": "흐름: conf 쓰기 → 에지 적용 → 프로브+DNS → SSL",
    "healthLoopAll": "헬스 루프 모든 사이트",
    "deleteNodeDesc": "CDN 노드 \"{{name}}\"을 삭제합니다.",
    "deleteSiteDesc": "CDN 사이트 \"{{name}}\"을 삭제합니다.",
    "deleteSiteC1": "사이트 정책 및 에지 연결",
    "deleteSiteC2": "적용된 nginx 구성은 별도의 정리 또는 재적용이 필요할 수 있습니다.",
    "statOnlineOf": "온라인 {{n}}/{{total}}",
    "colRegion": "지역",
    "statDraining": "물 빼기 {{n}}",
    "statOffline": "오프라인 {{n}}",
    "localTest": "로컬/테스트",
    "statHitRate": "적중률 {{v}}"
  },
  "cli": {
    "unknownCommand": "알 수 없는 명령: {{command}}\n`{{cli}} 도움말`을 실행하세요.",
    "usagePrefix": "용법:",
    "security": {
      "help": "사용법: ysk-server 보안 상태\n       ysk-server 보안 세션 목록|revoke|revoke-others [--user U]\n       ysk-server 보안 API 키 목록|생성|삭제 …",
      "sessionsHelp": "사용법: ysk-server 보안 세션 목록 [--user U]\n       ysk-server 보안 세션은 --id PREFIX [--user U]를 취소합니다.\n       ysk-server 보안 세션 revoke-others [--user U] [--keep-token T]",
      "apiKeysHelp": "사용법: ysk-server 보안 API 키 목록\n       ysk-server security api-keys create --name N [--user U] [--scope full|read]\n       ysk-server 보안 API-키 삭제 --id KEY_ID",
      "noUser": "사용자를 찾을 수 없습니다. 먼저 관리자를 생성하거나 --user <name|id>를 전달하세요.",
      "tokenOnce": "한 번 표시된 토큰 — 안전하게 보관",
      "sessionRevokeUsage": "사용법: ysk-server 보안 세션은 --id <sessionIdPrefix> [--user U]를 취소합니다.",
      "apiKeyDeleteUsage": "사용법: ysk-server security api-keys delete --id KEY_ID"
    },
    "help": {
      "blurb": "제어 플레인 CLI - AI 에이전트의 경우 --json을 선호합니다.\n문서: docs/agent/README.md · docs/cli/reference.md · docs/agent/commands.json",
      "main": "{{product}} ({{cli}}) v{{version}}\n\n제어 플레인 CLI - AI 에이전트의 경우 --json을 선호합니다.\n문서: docs/agent/README.md · docs/cli/reference.md · docs/agent/commands.json\n\n사용법:\n  {{cli}} <명령어> [옵션]\n\n명령:\n  초기화 dataDir + 관리자 설정\n  업데이트 자체 업데이트 확인/적용\n  HTTP API + 웹 UI 제공\n  시스템 장치 설치 ysk-server.service 설치 [--enable]\n  도구 목록 도구; tools run --tool <이름> [--dry-run]\n  NL에게 물어보기 → AI 계획 [--execute]\n  프로젝트 목록|가져오기|생성|배포|중지|상태|백업|템플릿\n  모두 백업|목록|상태|복원|삭제|일정|제어판|설정|restic\n  템플릿 앱 템플릿\n  nginx|dns|db|방화벽 도우미 호스팅\n  dns zone|zones (AI 별칭 → 호스팅 dns-*)\n  로그 소스|쿼리|저널|개요\n  호스트 개요|메트릭(읽기 전용)\n  nginx 상태|목록|테스트|동기화\n  SSL 목록|가져오기(인증서)\n  db-cluster list|get|create|plan(HA 계획 우선)\n  ssh-key list|create|import|public|export|install|delete(SSH ID 저장소)\n  ssh-2fa list|enroll|confirm|install|pam|retire (SSH 로그인 TOTP ≠ 패널 2FA)\n  서비스 호스트 서비스 매트릭스(systemctl 프로브)\n  방어 | 보호 상태|금지|금지 해제|허용 목록\n  보안 상태|세션|api-keys(2FA 플래그 · 세션 취소 · API 키)\n  CDN 노드|사이트|렌더링|적용|퍼지|프로브|대시보드|상태 루프|프로젝트에서\n  에이전트 런타임|플릿 목록|명령|등록(패널 + 에지)\n  에이전트 실행 아웃바운드 플릿 폴러(실험적)\n  저장소 상태|내보내기|가져오기|마이그레이션 (json|sqlite|postgres 문서 백엔드)\n  파일 목록|읽기|쓰기|mkdir|rm|stat|이름 바꾸기|복사|이동|chmod|trash|공유(샌드박스)\n  cron 목록|생성|삭제|활성화|비활성화|실행|설치|상태\n  이메일 도메인|사서함|배달성|부트스트랩|dns(패널 패리티)\n  health 로컬 모드 스냅샷 또는 --url http://host:port/health\n  준비 | 의사 생산 준비 상태 (솔직함)\n  마이그레이션 인벤토리|호스트|게시|상태|이력서(전체 호스트 마이그레이션)\n  버전 | 도움\n\n글로벌:\n  --json JSON 표준 출력(AI)\n  --data-dir 경로\n  --config 경로\n  --도움말 | --버전\n\n종료: 0 확인 · 오류 1개 · 유효성 검사 2개 · 차단 3개 · 찾을 수 없음 4개 · 호스트 오류 5개\n\n안전:\n  위험한 작업은 기본적으로 시험 실행됩니다(계획에만 해당).\n  호스트를 변경하려면 --execute(별칭 --apply) + env YSK_EXECUTE=1을 전달합니다.\n\n예:\n  {{cli}} 준비 상태 --json\n  {{cli}} 호스트 --json\n  {{cli}} nginx 상태 --json\n  {{cli}} SSL 목록 --json\n  {{cli}} 프로젝트는 --id UUID --json을 얻습니다.\n  {{cli}} 방어 금지 --ip 1.2.3.4 --json # 테스트 실행 계획\n  {{cli}} 프로젝트 목록 --json\n  {{cli}} 로그 쿼리 --source 저널: --lines 100 --json\n  {{cli}} 도구 --json"
    },
    "usage": {
      "tools": {
        "run": {
          "--tool": {
            "name": {
              "--arg": {
                "cd327c": "사용법: ysk-server tools run --tool <name> [--arg key=val] [--dry-run]"
              }
            }
          }
        }
      },
      "email": {
        "domains": {
          "list": {
            "create": {
              "get": {
                "b94a62": "사용법: ysk-server 이메일 도메인 목록|생성|get …"
              }
            }
          },
          "create": {
            "--domain": {
              "example": {
                "bd4036": "사용법: ysk-server 이메일 도메인 create --domain example.com --ip A.B.C.D"
              }
            }
          }
        },
        "mailboxes": {
          "list": {
            "create": {
              "42b26c": "사용법: ysk-server 이메일 사서함 목록|생성 …"
            }
          },
          "create": {
            "--domain": {
              "example": {
                "7227f3": "사용법: ysk-server 이메일 사서함 create --domain example.com --local user [--password P]"
              }
            }
          }
        },
        "dns": {
          "--domain": {
            "example": {
              "com": {
                "26b806": "사용법: ysk-server 이메일 dns --domain example.com"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "73dad0": "사용법: ysk-server 이메일 <sub> [--data-dir PATH] [--json]\n  도메인 목록|생성|가져오기 [--q TEXT]\n    --domain example.com --ip A.B.C.D 만들기\n    --domain example.com 받기 | --id UUID\n  사서함 목록|생성 [--도메인 D | --id 도메인 ID]\n    create --domain D --local user [--password P]\n  배달 가능성 --도메인 D | --id UUID\n  배달 가능성 개요\n  bootstrap --domain D --ip A.B.C.D [--install]\n  dns --도메인 D | --id UUID # 패널용 DNS 번들\n또한: 호스팅 email-apply|email-mailbox|email-deliverability(별칭)"
              }
            }
          }
        },
        "deliverability": {
          "--domain": {
            "example": {
              "com": {
                "b0dff0": "사용법: ysk-server 이메일 전달 가능성 --domain example.com"
              }
            }
          }
        },
        "bootstrap": {
          "--domain": {
            "example": {
              "com": {
                "affc8d": "사용법: ysk-server 이메일 부트스트랩 --domain example.com --ip 1.2.3.4 [--install]"
              }
            }
          }
        }
      },
      "cron": {
        "delete": {
          "--id": {
            "job": {
              "id": {
                "f6aafe": "사용법: ysk-server cron delete --id JOB_ID"
              }
            }
          }
        },
        "sub": {
          "--id": {
            "job": {
              "id": {
                "99cfdf": "사용법: ysk-server cron {{sub}} --id JOB_ID"
              }
            }
          },
          "--data-dir": {
            "path": {
              "--json": {
                "0349e6": "사용법: ysk-server cron <sub> [--data-dir PATH] [--json]\n  list [--project-id ID] [--q TEXT]\n  create --schedule \"0 3 * * *\" --command CMD [--project-id ID] [--user USER]\n  update --id JOB_ID [--schedule S] [--command CMD] [--user USER] [--project-id ID] [--enable|--disable]\n  delete --id JOB_ID\n  enable|disable --id JOB_ID\n  run --id JOB_ID              # run-now (needs YSK_EXECUTE=1)\n  install                     # load managed crontab (needs EXECUTE)\n  status                      # probe managed file vs host crontab\n  host [list] [--user USER] [--jobs-only]\n  host edit --user USER --old-schedule S --old-command C --schedule S --command C --execute\n  host disable|enable|delete|adopt --user USER --old-schedule S --old-command C --execute\n  host run --user USER --command C --execute\nHonesty: install / host write blocked without YSK_EXECUTE=1.\n"
              }
            }
          }
        },
        "run": {
          "--id": {
            "job": {
              "id": {
                "a0a97f": "사용법: ysk-server cron run --id JOB_ID"
              }
            }
          }
        },
        "create": {
          "--schedule": {
            "0": {
              "3": {
                "9a8328": "사용법: ysk-server cron create --schedule \"0 3 * * *\" --command CMD [--project-id ID] [--user USER]"
              }
            }
          }
        }
      },
      "files": {
        "stat": {
          "--path": {
            "rel": {
              "17c8f2": "사용법: ysk-server 파일 stat --path REL"
            }
          }
        },
        "read": {
          "--path": {
            "rel": {
              "e35f8d": "사용법: ysk-server 파일 읽기 --path REL"
            }
          }
        },
        "mkdir": {
          "--path": {
            "rel": {
              "ae0438": "사용법: ysk-server 파일 mkdir --path REL"
            }
          }
        },
        "rm": {
          "--path": {
            "rel": {
              "--permanent": {
                "fe2051": "사용법: ysk-server 파일 rm --path REL [--permanent]"
              }
            }
          }
        },
        "rename": {
          "--from": {
            "rel": {
              "--to": {
                "35a260": "사용법: ysk-server 파일 이름 바꾸기 --REL에서 --REL로"
              }
            }
          }
        },
        "copy": {
          "--from": {
            "rel": {
              "--to": {
                "5337f4": "사용법: ysk-server 파일 복사 --REL에서 --REL로"
              }
            }
          }
        },
        "move": {
          "--from": {
            "rel": {
              "--to": {
                "75cf5d": "사용법: ysk-server 파일 이동 --REL에서 --REL로"
              }
            }
          }
        },
        "chmod": {
          "--path": {
            "rel": {
              "--mode": {
                "39f983": "사용법: ysk-server 파일 chmod --path REL --mode 644"
              }
            }
          }
        },
        "trash": {
          "restore": {
            "--id": {
              "trash": {
                "c89ce9": "사용법: ysk-server 파일 휴지통 복원 --id TRASH_ID"
              }
            }
          },
          "list": {
            "restore": {
              "purge": {
                "ef063d": "사용법: ysk-server 파일 휴지통 목록|복원|제거"
              }
            }
          }
        },
        "shares": {
          "list": {
            "ac342c": "사용법: ysk-server 파일 공유 목록"
          }
        },
        "webdav": {
          "status": {
            "token": {
              "disable": {
                "f8e94b": "사용법: ysk-server files webdav status|token|disable"
              }
            }
          }
        },
        "sub": {
          "--root": {
            "public": {
              "project": {
                "42ebd4": "사용법: ysk-server 파일 <sub> [--root public|project:ID] [--data-dir PATH] [--json]\n  목록 [--path DIR] [--q TEXT] [--정렬 이름|크기|mtime] [--order asc|desc]\n  통계 --경로 REL\n  읽기 --path REL\n  --path REL --content TEXT 쓰기 | --파일 로컬\n  mkdir --path REL\n  rm --path REL [--영구]\n  이름 바꾸기 --REL에서 --REL로\n  복사 --REL에서 --REL로\n  이동 --REL에서 --REL로\n  chmod --path REL --mode 644\n  휴지통 목록|복원|삭제 [--id TRASH_ID]\n  공유 목록\n  즐겨찾기 목록\n  업로드 --dir REL --file LOCAL [--file LOCAL2…]\n  webdav 상태|토큰|비활성화\n샌드박스: 공개 파일 루트 또는 프로젝트 홈만(경로 제한)"
              }
            }
          }
        },
        "write": {
          "--path": {
            "rel": {
              "--content": {
                "0addb1": "사용법: ysk-server 파일 쓰기 --path REL --content TEXT | --파일 로컬"
              }
            }
          }
        },
        "upload": {
          "--dir": {
            "rel": {
              "--file": {
                "f8c3bf": "사용법: ysk-server 파일 업로드 --dir REL --file LOCAL [--file LOCAL2…]"
              }
            }
          }
        }
      },
      "store": {
        "import": {
          "--in": {
            "file": {
              "json": {
                "5b6fdd": "사용법: ysk-server store import --in FILE.json"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "d580e4": "사용법: ysk-server store <sub> [--data-dir PATH] [--json]\n  상태 백엔드 종류 + 개수 표시\n  내보내기 --out FILE.json 덤프 문서 스냅샷\n  import --in FILE.json 파일의 스냅샷 덮어쓰기\n  마이그레이션 --to sqlite|json [--out PATH]\n    현재 저장소를 다른 백엔드 파일에 복사\nEnv: YSK_STORE=json|sqlite|postgres YSK_DATABASE_URL=postgres://…\n정직: 문서-BLOB 백엔드(아직 완전한 관계형 스키마는 아님)."
              }
            }
          }
        },
        "migrate": {
          "--to": {
            "json": {
              "sqlite": {
                "1c52a3": "사용법: ysk-server store migration --to json|sqlite [--out PATH]\n  (postgres: JSON을 내보낸 후 YSK_DATABASE_URL로 가져오기)"
              }
            }
          }
        }
      },
      "cdn": {
        "nodes": {
          "delete": {
            "--id": {
              "node": {
                "0c6a1e": "사용법: ysk-server cdn 노드 삭제 --id NODE_ID"
              }
            }
          },
          "drain": {
            "--id": {
              "node": {
                "a8aa81": "사용법: ysk-server cdn 노드 배수 --id NODE_ID [--off]"
              }
            }
          },
          "list": {
            "upsert": {
              "delete": {
                "52549e": "사용법: ysk-server cdn 노드 목록|upsert|삭제|프로브|드레인 …"
              }
            }
          },
          "upsert": {
            "--name": {
              "name": {
                "8f6f39": "사용법: ysk-server cdn 노드 upsert --name NAME [--id ID] [--base-url U] [--fleet-agent-id S] [--ssh-host H] [--region R]"
              }
            }
          }
        },
        "sites": {
          "get": {
            "--id": {
              "site": {
                "3c3c35": "사용법: ysk-server cdn 사이트는 --id SITE_ID를 얻습니다."
              }
            }
          },
          "delete": {
            "--id": {
              "site": {
                "51ef8f": "사용법: ysk-server cdn 사이트 삭제 --id SITE_ID"
              }
            }
          },
          "list": {
            "get": {
              "upsert": {
                "609da6": "사용법: ysk-server CDN 사이트 목록|get|upsert|삭제 …"
              }
            }
          },
          "upsert": {
            "--name": {
              "n": {
                "6ebb75": "사용법: ysk-server cdn 사이트 upsert --name N --domains a.com,b.com [--edge-id ID]… [--origin-url U] [--origin-project ID]"
              }
            }
          }
        },
        "render": {
          "--site-id": {
            "id": {
              "--dry-run": {
                "2149eb": "사용법: ysk-server cdn render --site-id ID [--dry-run]"
              }
            }
          }
        },
        "apply": {
          "--site-id": {
            "id": {
              "--edge-id": {
                "a527b3": "사용법: ysk-server cdn apply --site-id ID [--edge-id EDGE]"
              }
            }
          }
        },
        "purge": {
          "--site-id": {
            "id": {
              "--edge-id": {
                "bc08ec": "사용법: ysk-server cdn purge --site-id ID [--edge-id EDGE]"
              }
            }
          }
        },
        "dns-sync": {
          "--site-id": {
            "id": {
              "--apply-zone": {
                "343068": "사용법: ysk-server cdn dns-sync --site-id ID [--apply-zone]"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "092842": "사용법: ysk-server cdn <sub> [--data-dir PATH] [--json]\n  노드 목록|upsert|삭제|프로브|드레인\n  사이트 목록|업서트|삭제|가져오기\n  렌더링 --site-id ID [--dry-run]\n  --site-id ID 적용 [--edge-id ID] # 팬아웃(EXECUTE 없이 플릿 대기열 확인)\n  purge --site-id ID [--edge-id ID]\n  dns-sync --site-id ID [--apply-zone]\n  프로브 | 대시보드 | 건강 루프 [--적용 영역]\n  from-project --project-id ID [--edge-id ID…]\n정직성: Apply_status 작성/대기 중 ≠ 에이전트 승인/EXECUTE 다시 로드까지 Edge nginx가 적용됩니다."
              }
            }
          }
        },
        "from-project": {
          "--project-id": {
            "id": {
              "--edge-id": {
                "a96f42": "사용법: ysk-server cdn from-project --project-id ID [--edge-id ID]..."
              }
            }
          }
        }
      },
      "agents": {
        "fleet": {
          "remove": {
            "--session": {
              "session": {
                "1827fe": "사용법: ysk-server 에이전트 플릿 제거 --session SESSION_ID"
              }
            }
          },
          "register": {
            "--id": {
              "agent": {
                "209b2d": "사용법: ysk-server 에이전트 플릿 레지스터 --id AGENT_ID [--group g] [--edge]"
              }
            }
          },
          "commands": {
            "--session": {
              "session": {
                "f8067c": "사용법: ysk-server 에이전트 함대 명령 --session SESSION_ID"
              }
            }
          }
        },
        "register": {
          "--id": {
            "agent": {
              "id": {
                "3c4477": "사용법: ysk-server 에이전트는 --id AGENT_ID [--group g]를 등록합니다."
              }
            }
          }
        },
        "commands": {
          "--session": {
            "session": {
              "id": {
                "e620d2": "사용법: ysk-server 에이전트 명령 --session SESSION_ID"
              }
            }
          }
        },
        "runtimes": {
          "probe": {
            "fleet": {
              "list": {
                "261fa4": "사용법: ysk-server 에이전트 [런타임|프로브|플릿 목록|플릿 등록|플릿 명령|등록|명령]"
              }
            }
          }
        }
      },
      "agent": {
        "run": {
          "--control-plane": {
            "url": {
              "--id": {
                "cfefbe": "사용법: ysk-server 에이전트 실행 --control-plane URL --id AGENT_ID [--group g]"
              }
            }
          }
        }
      },
      "ask": {
        "check": {
          "system": {
            "info": {
              "b0c781": "사용법: ysk-server에서 \"시스템 정보 확인\"을 요청합니다."
            }
          }
        }
      },
      "backup": {
        "delete": {
          "--project-id": {
            "id": {
              "--name": {
                "d66c29": "사용법: ysk-server 백업 삭제 --project-id ID --name ARCHIVE"
              }
            }
          }
        },
        "restic": {
          "list": {
            "run": {
              "restore": {
                "10402b": "사용법: ysk-server 백업 나머지 목록|실행|복원 …"
              }
            }
          },
          "restore": {
            "--project-id": {
              "id": {
                "a8f133": "사용법: ysk-server 백업 복원 복원 --project-id ID --snapshot SNAP [--dry-run] [--overwrite-home --confirm PHRASE]"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "777243": "사용법: ysk-server 백업 <sub> [--data-dir PATH] [--json]\n  all 모든 프로젝트 홈 백업(+ 구성 시 원격/휴지 측)\n  목록 [--프로젝트-id ID] [--q TEXT]\n  상태 마지막 실행 + 예약 프로브\n  복원 --project-id ID --name ARCHIVE [--mode full|web|dry-run]\n  삭제 --프로젝트 ID ID --name ARCHIVE\n  일정 [--cron \"0 3 * * *\"] [--install]\n  제어 평면 스냅샷 ysk.json + config.json\n  control-plane-restore --name ARCHIVE [--mode dry-run|full] [--확인 RESTORE-CONTROL-PLANE]\n  설정 [get|set] 원격 / 제외 / 나머지\n    set --remote-kind local|sftp|s3 --remote-path P [--remote-host H] …\n    설정 --exclude a,b,c | --제외 파일 FILE\n    set --restic-enable --restic-password P [--restic-repo PATH]\n    set --from-json FILE # 전체 패치 {remote?,exclusions?,restic?}\n  Restic list|run|restore 증분 Restic 도우미"
              }
            }
          }
        },
        "control-plane-restore": {
          "--name": {
            "archive": {
              "--mode": {
                "316a76": "사용법: ysk-server backup control-plane-restore --name ARCHIVE [--mode dry-run|full] [--confirm RESTORE-CONTROL-PLANE]"
              }
            }
          }
        },
        "restore": {
          "--project-id": {
            "id": {
              "--name": {
                "bc7041": "사용법: ysk-server 백업 복원 --project-id ID --name ARCHIVE [--mode full|web|dry-run]"
              }
            }
          }
        }
      },
      "packages": {
        "list": {
          "--q": {
            "text": {
              "b8e16b": "사용법: ysk-server 패키지 목록 [--q text]"
            }
          }
        }
      },
      "projects": {
        "stop": {
          "--id": {
            "projectid": {
              "b15409": "사용법: ysk-server projects stop --id <projectId>"
            }
          }
        },
        "backup": {
          "--id": {
            "projectid": {
              "e62846": "사용법: ysk-server projects backup --id <projectId>"
            }
          }
        },
        "health": {
          "--id": {
            "projectid": {
              "e816ec": "사용법: ysk-server projects health --id <projectId>"
            }
          }
        },
        "isolation": {
          "provision": {
            "--id": {
              "projectid": {
                "5aff44": "사용법: ysk-server 프로젝트 격리 프로비저닝 --id <projectId>\n       ysk-server 프로젝트 격리 프로비저닝-all [--limit 20]"
              }
            }
          },
          "backfill-owners": {
            "--owner-user-id": {
              "id": {
                "8691da": "사용법: ysk-server 프로젝트 격리 backfill-owners --owner-user-id <id>"
              }
            }
          },
          "list": {
            "provision": {
              "provision-all": {
                "8e9da3": "사용법: ysk-server 프로젝트 격리 목록|provision|provision-all|backfill-owners"
              }
            }
          }
        },
        "get": {
          "--id": {
            "projectid": {
              "name": {
                "b0d532": "사용법: ysk-server 프로젝트 get --id <projectId|name> [--json]"
              }
            }
          }
        },
        "create": {
          "--name": {
            "name": {
              "--domain": {
                "66e857": "사용법: ysk-server 프로젝트 create --name <name> [--domain d] [--runtime node|php|static|python|go|rust] [--template id]"
              }
            }
          }
        },
        "deploy": {
          "--id": {
            "projectid": {
              "--entry": {
                "339111": "사용법: ysk-server 프로젝트 배포 --id <projectId> [--entry f] [--port N] [--fpm|--builtin] [--reload]"
              }
            }
          }
        },
        "git-deploy": {
          "--id": {
            "id": {
              "--git-url": {
                "a513f5": "사용법: ysk-server 프로젝트 git-deploy --id ID [--git-url URL] [--branch main] [--no-redeploy] [--깊이 1] [--entry f]"
              }
            }
          }
        },
        "template": {
          "--id": {
            "projectid": {
              "--template": {
                "591ce4": "사용법: ysk-server 프로젝트 템플릿 --id <projectId> --template <id> [--force]"
              }
            }
          }
        },
        "list": {
          "get": {
            "create": {
              "deploy": {
                "253b48": "사용법: ysk-server 프로젝트 목록|get|create|deploy|git-deploy|stop|backup|template|health [옵션]\n  배포 --id UUID [--entry f] [--port N] [--fpm|--builtin] [--reload]\n  git-deploy --id UUID [--git-url URL] [--branch B] [--no-redeploy]"
              }
            }
          }
        }
      },
      "cli": {
        "name": {
          "db-cluster": {
            "get": {
              "--id": {
                "00f803": "사용법: {{CLI_NAME}} db-cluster get --id UUID [--json]"
              }
            },
            "plan": {
              "--id": {
                "483f52": "사용법: {{CLI_NAME}} db-cluster plan --id UUID [--json]"
              }
            },
            "artifacts": {
              "--id": {
                "6b33c4": "사용법: {{CLI_NAME}} db-cluster 아티팩트 --id UUID [--json]"
              }
            },
            "bundle": {
              "--id": {
                "94ed27": "사용법: {{CLI_NAME}} db-cluster Bundle --id UUID [--json]"
              }
            },
            "delete": {
              "--id": {
                "3de0e4": "사용법: {{CLI_NAME}} db-cluster delete --id UUID [--json]"
              }
            },
            "create": {
              "--name": {
                "e3b733": "사용법: {{CLI_NAME}} db-cluster create --name N --engine mariadb --kind mariadb-galera --member HOST=role[:access] ..."
              }
            },
            "apply": {
              "--id": {
                "4cddb8": "사용법: {{CLI_NAME}} db-cluster apply --id UUID [--execute] [--bootstrap] [--json]"
              }
            },
            "probe": {
              "--id": {
                "22870c": "사용법: {{CLI_NAME}} db-cluster 프로브 --id UUID [--peers] [--json]"
              }
            },
            "install-peers": {
              "--id": {
                "600b02": "사용법: {{CLI_NAME}} db-cluster install-peers --id UUID [--execute] [--no-restart] [--identity ID] [--json]"
              }
            },
            "push": {
              "--id": {
                "697080": "사용법: {{CLI_NAME}} db-cluster push --id UUID [--member ID] [--identity ID] [--execute] [--json]"
              }
            },
            "fleet": {
              "--id": {
                "239462": "사용법: {{CLI_NAME}} db-cluster 함대 --id UUID [--op apply|probe|plan] [--execute] [--edge-execute] [--json]"
              }
            },
            "list": {
              "get": {
                "3b9cfa": "사용법: {{CLI_NAME}} db-cluster list|get|create|plan|apply|probe|install-peers|artifacts|bundle|push|fleet|overview|delete [--peers] [--execute] [--json]"
              }
            }
          },
          "ssh-key": {
            "get": {
              "--id": {
                "292716": "사용법: {{CLI_NAME}} ssh-key get --id UUID [--json]"
              }
            },
            "public": {
              "--id": {
                "525d7d": "사용법: {{CLI_NAME}} ssh-key public --id UUID"
              }
            },
            "export": {
              "--id": {
                "0a6d81": "사용법: {{CLI_NAME}} ssh-key 내보내기 --id UUID [--out PATH] [--json]"
              }
            },
            "delete": {
              "--id": {
                "a6e2f2": "사용법: {{CLI_NAME}} ssh-key delete --id UUID [--json]"
              }
            },
            "create": {
              "--name": {
                "8b1d79": "사용법: {{CLI_NAME}} ssh-key create --name N [--algo ed25519|rsa-4096] [--목적 사용자|패널|unbound] [--프로젝트 ID] [--user U] [--home PATH] [--reveal] [--json]"
              }
            },
            "import": {
              "--name": {
                "6eb800": "사용법: {{CLI_NAME}} ssh-key import --name N --file PATH [--목적 패널|사용자] [--json]"
              }
            },
            "install": {
              "--id": {
                "b99c56": "사용법: {{CLI_NAME}} ssh-key install --id UUID [--execute] [--json]"
              }
            },
            "test": {
              "--id": {
                "e1aed3": "사용법: {{CLI_NAME}} ssh-key test --id UUID --target user@host[:port] [--execute] [--json]"
              }
            },
            "rotate": {
              "--id": {
                "9c3224": "사용법: {{CLI_NAME}} ssh-key 회전 --id UUID [--reveal] [--json]"
              }
            },
            "authorize-self": {
              "--id": {
                "b7ea2e": "사용법: {{CLI_NAME}} ssh-key Authorize-self --id UUID [--json]"
              }
            },
            "uninstall": {
              "--id": {
                "afcba0": "사용법: {{CLI_NAME}} ssh-key uninstall --id UUID [--execute] [--json]"
              }
            },
            "list": {
              "get": {
                "2c92c6": "사용법: {{CLI_NAME}} ssh-key list|get|create|import|public|export|install|test|rotate|authorize-self|uninstall|delete [--json]"
              }
            }
          },
          "ssh-2fa": {
            "reveal": {
              "--id": {
                "a6c27f": "사용법: {{CLI_NAME}} ssh-2fa 공개 --id UUID [--json]"
              }
            },
            "retire": {
              "--id": {
                "6e1fa3": "사용법: {{CLI_NAME}} ssh-2fa 은퇴 --id UUID [--json]"
              }
            },
            "enroll": {
              "--user": {
                "081432": "사용법: {{CLI_NAME}} ssh-2faregister --user LINUX|--프로젝트 ID [--home PATH] [--from-panel] [--json]"
              }
            },
            "confirm": {
              "--id": {
                "9ee8a2": "사용법: {{CLI_NAME}} ssh-2fa verify --id UUID --code 123456 [--json]"
              }
            },
            "install": {
              "--id": {
                "dace06": "사용법: {{CLI_NAME}} ssh-2fa install --id UUID [--execute] [--json]"
              }
            },
            "uninstall": {
              "--id": {
                "0bb464": "사용법: {{CLI_NAME}} ssh-2fa uninstall --id UUID [--execute] [--json]"
              }
            },
            "list": {
              "enroll": {
                "802ed0": "사용법: {{CLI_NAME}} ssh-2fa list|enroll|confirm|install|uninstall|pam|reveal|retire [--json]"
              }
            }
          },
          "ssl": {
            "list": {
              "get": {
                "79c232": "사용법: {{CLI_NAME}} ssl list|get --domain X [--json]"
              }
            },
            "get": {
              "--domain": {
                "91c444": "사용법: {{CLI_NAME}} ssl get --domain example.com [--json]"
              }
            }
          },
          "dns": {
            "zone": {
              "--zone": {
                "ad30fa": "사용법: {{CLI_NAME}} dns zone --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--validate] [--reload]"
              }
            },
            "zones": {
              "zone": {
                "5b8bda": "사용법: {{CLI_NAME}} dns zones|zone --zone X --ip A.B.C.D [--ipv6 …] [--json]"
              }
            }
          },
          "nginx": {
            "status": {
              "list": {
                "d67a16": "사용법: {{CLI_NAME}} nginx status|list|test|sync [--execute] [--json]"
              }
            }
          },
          "host": {
            "overview": {
              "metrics": {
                "93c828": "사용법: {{CLI_NAME}} 호스트 개요|메트릭|네트워크 [--path /] [--json]"
              }
            }
          },
          "logs": {
            "sources": {
              "overview": {
                "79058c": "사용법: {{CLI_NAME}} 로그 소스|개요|단위|저널|쿼리 [--소스 ID] [--json]"
              }
            }
          },
          "services": {
            "sub": {
              "--unit": {
                "4fe3fa": "사용법: {{CLI_NAME}} 서비스 {{sub}} --unit <systemd-unit> [--execute] [--json]"
              }
            },
            "matrix": {
              "start": {
                "4f3a35": "사용법: {{CLI_NAME}} 서비스 매트릭스|start|stop|restart|reload --unit NAME [--execute] [--json]"
              }
            }
          },
          "defense": {
            "ban": {
              "--ip": {
                "cc22de": "사용법: {{CLI_NAME}} 방어 금지 --ip <ip> [--method 실패2ban|ufw|둘 다] [--reason t] [--execute]"
              }
            },
            "unban": {
              "--ip": {
                "46aa23": "사용법: {{CLI_NAME}} defence unban --ip <ip> [--method 실패2ban|ufw|둘 다] [--execute]"
              }
            },
            "whitelist": {
              "--action": {
                "c1cbdf": "사용법: {{CLI_NAME}} 방어 화이트리스트 --action list|추가|제거 [--ip IP]"
              }
            },
            "status": {
              "bans": {
                "a8d96b": "사용법: {{CLI_NAME}} 방어 상태|bans|suspects|ban|unban|whitelist|stack-apply|fail2ban|firewall|timeline|presets [--json]\n 금지 [--q 텍스트] [--source 실패2ban|패널|ufw|자동]\n 용의자 [--q 텍스트]\n stack-apply [--execute] # UFW + fail2ban + 현재 프리셋\n 실패2반 | 방화벽 # 심층 조사(정직)\n 타임라인 [--limit N] [--q 텍스트]\n 사전 설정 # 목록 + activePreset"
              }
            }
          }
        }
      },
      "system": {
        "unit-install": {
          "--enable": {
            "--data-dir": {
              "path": {
                "33daa1": "사용법: ysk-server 시스템 장치-설치 [--enable] [--data-dir PATH]"
              }
            }
          }
        }
      },
      "users": {
        "create": {
          "--username": {
            "u": {
              "--password": {
                "7145c7": "사용법: ysk-server 사용자는 --username <u> --password <p> [--role Operator|viewer|admin] [--package-id id]를 만듭니다."
              }
            }
          }
        },
        "list": {
          "--q": {
            "text": {
              "--role": {
                "544685": "사용법: ysk-server 사용자 목록 [--q text] [--role admin|operator|viewer]\n       ysk-server 사용자는 --username u --password p [--role 연산자]를 생성합니다."
              }
            }
          }
        }
      },
      "rbac": {
        "list": {
          "policies": {
            "330ade": "사용법: ysk-server rbac list|policies\n       ysk-server rbac show --role 연산자\n       ysk-server rbac audit # 경로 → 캡 샘플 매트릭스"
          }
        }
      },
      "hosting": {
        "postgres-provision": {
          "--db": {
            "name": {
              "--user": {
                "2c8889": "사용법: postgres-provision --db NAME --user U --password P(min8) [--execute]를 호스팅하는 ysk-server\n  기본 테스트 실행(호스트 변경 없음) --execute + YSK_EXECUTE=1을 전달하여 적용합니다."
              }
            }
          }
        },
        "mysql-provision": {
          "--db": {
            "name": {
              "--user": {
                "fc25aa": "사용법: mysql-provision --db NAME --user U --password P(min8) [--execute]를 호스팅하는 ysk-server\n  기본 테스트 실행(호스트 변경 없음) --execute + YSK_EXECUTE=1을 전달하여 적용합니다."
              }
            }
          }
        },
        "dns-zone": {
          "--zone": {
            "example": {
              "com": {
                "bdaa0d": "사용법: dns-zone --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--validate] [--reload]를 호스팅하는 ysk-server"
              }
            }
          }
        },
        "powerdns-load": {
          "--zone": {
            "example": {
              "com": {
                "dba49c": "사용법: ysk-server 호스팅 powerdns-load --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--load|--execute]"
              }
            }
          }
        },
        "email-apply": {
          "--domain": {
            "example": {
              "com": {
                "37d350": "사용법: ysk-server 호스팅 email-apply --domain example.com [--install|--execute]"
              }
            }
          }
        },
        "email-mailbox": {
          "--domain": {
            "x": {
              "--local": {
                "3d9be3": "사용법: ysk-server 호스팅 email-mailbox --domain X --local user [--password P] [--ip A.B.C.D]"
              }
            }
          }
        },
        "ftps-apply": {
          "--domain": {
            "files": {
              "example": {
                "284a7c": "사용법: ftps-apply --domain files.example.com을 호스팅하는 ysk-server [--install|--execute]"
              }
            }
          }
        },
        "webmail-apply": {
          "--domain": {
            "webmail": {
              "example": {
                "2ad5b5": "사용법: ysk-server 호스팅 webmail-apply --domain webmail.example.com [--download]"
              }
            }
          }
        },
        "public-files": {
          "--domain": {
            "files": {
              "example": {
                "0e9013": "사용법: 공개 파일을 호스팅하는 ysk-server --domain files.example.com [--reload]"
              }
            }
          }
        },
        "email-deliverability": {
          "--domain": {
            "example": {
              "com": {
                "8774a4": "사용법: ysk-server 호스팅 email-deliverability --domain example.com\n       ysk-server 호스팅 email-deliverability --id <domainId>"
              }
            }
          }
        },
        "email-bootstrap": {
          "--domain": {
            "example": {
              "com": {
                "796da5": "사용법: ysk-server 호스팅 email-bootstrap --domain example.com --ip 1.2.3.4 [--admin postmaster] [--password P] [--install]"
              }
            }
          }
        }
      },
      "migrate": {
        "post": {
          "--job": {
            "id": {
              "--data-dir": {
                "6a73cd": "사용법: ysk-server migration post --job <id> --data-dir PATH --execute"
              }
            }
          }
        },
        "host": {
          "--target": {
            "root": {
              "new": {
                "3e94a2": "사용법: ysk-server 마이그레이션 호스트 --target root@NEW_IP [--identity-file PATH|--identity-id ID] [--password] --execute --data-dir PATH"
              }
            }
          }
        }
      },
      "x": {
        "972912": "사용법:\n  ysk-server 인벤토리 마이그레이션 [--data-dir PATH] --json\n  ysk-server 마이그레이션 호스트 --target root@IP [--identity-file PATH|--identity-id ID|--password PW] --execute [--maintenance] [--force-wipe-target]\n  ysk-server 마이그레이션 post --job ID --data-dir PATH --execute # 대상에서\n  ysk-server 마이그레이션 상태 [--작업 ID]\n  ysk-server 마이그레이션 이력서 --작업 ID --execute\n  ysk-server migrate orphan-homes [--data-dir PATH] --json\n  ysk-server migrate orphan-homes --path /home/ysk-server-UUID --confirm PATH --execute\n"
      },
      "hostingHelp": "사용법: ysk-server 호스팅 <sub>\n  위험한 작전의 기본 테스트 실행; 적용하려면 --execute(+ YSK_EXECUTE=1)를 추가하세요.\n  엔진엑스 | nginx-sync [--실행]\n  redis 제공 | postgres 제공 | mysql-provision [--실행]\n  dns-zone --zone X --ip A.B.C.D [--ipv6 X:X::X] [--validate] [--reload]\n  DNS 영역 | powerdns 상태 | powerdns-install [--install|--실행]\n  powerdns-load --zone X --ip A.B.C.D [--load|--execute]\n  이메일 적용 --domain X [--install|--execute]\n  email-mailbox --domain X --local user [--password P] [--ip A.B.C.D] [--system]\n  ftps-apply --domain X [--install|--execute]\n  런타임 | 런타임 설치 --kind node|php|python|go|rust --version V [--install|--execute]\n  dovecot-passdb --domain X | --모두\n  webmail-apply --domain webmail.example.com [--다운로드]\n  공개 파일 --domain files.example.com [--reload]\n  email-bootstrap --domain example.com --ip A.B.C.D [--install|--execute]\n  email-deliverability --domain example.com # PTR/DNSBL/웜업 팩(정직)\n  방화벽 적용 [--smtp] [--실행]",
      "logsQuery": "사용법: {{CLI_NAME}} 로그 쿼리 --source <id> [--lines N] [--grep G] [--since 1h] [--priority err]\n  소스 예: 저널: 저널:nginx.service 파일:syslog 프로젝트:<uuid>\n  {{CLI_NAME}} 로그 소스 --json\n  {{CLI_NAME}} 로그 저널 [--unit nginx.service] --json"
    },
    "msg": {
      "domain": {
        "missing": {
          "pass": {
            "5be09b": "도메인 누락 - 먼저 도메인을 생성하려면 --ip를 전달하세요."
          }
        }
      },
      "--root": {
        "must": {
          "be": {
            "a84834": "--root는 공개이거나 project:<id>여야 합니다."
          }
        }
      },
      "need": {
        "--content": {
          "or": {
            "4d7001": "--content 또는 --file 필요"
          }
        },
        "at": {
          "least": {
            "7d311a": "최소한 하나의 --member HOST[=role][:access]가 필요합니다."
          }
        }
      },
      "action": {
        "must": {
          "be": {
            "ba14c1": "작업은 목록|추가|제거여야 합니다."
          }
        }
      },
      "use": {
        "ysk-server": {
          "backup": {
            "ca67f4": "사용: ysk-server backup control-plane-restore --name ARCHIVE(restore --project-id control-plane 아님)"
          }
        }
      },
      "new": {
        "domain": {
          "requires": {
            "986b78": "새 도메인에는 --ip A.B.C.D가 필요합니다(자리 표시자 기본값 없음)."
          }
        }
      },
      "import-sync": {
        "prefers": {
          "fleet": {
            "4d7590": "import-sync는 Fleet ClusterSync 페이로드를 선호합니다. 또는 --file snapshot.json"
          }
        }
      },
      "security": {
        "control": {
          "plane": {
            "f59a63": "보안: 공개적으로 바인딩된 제어 평면(0.0.0.0/::). 127.0.0.1 + 역방향 프록시/UFW를 선호합니다."
          }
        }
      }
    },
    "err": {
      "unknown": {
        "email": {
          "sub": {
            "sub": {
              "e37257": "알 수 없는 이메일 하위: {{sub}}\n실행: ysk-server 이메일 도움말"
            }
          }
        },
        "cron": {
          "sub": {
            "sub": {
              "e1a9ed": "알 수 없는 크론 하위: {{sub}}\n실행: ysk-server cron help"
            }
          }
        },
        "files": {
          "sub": {
            "sub": {
              "07ad7e": "알 수 없는 파일 하위: {{sub}}\n실행: ysk-server 파일 도움말"
            }
          }
        },
        "store": {
          "sub": {
            "sub": {
              "b7a083": "알 수 없는 매장 하위: {{sub}}\n실행: ysk-server store help"
            }
          }
        },
        "cdn": {
          "subcommand": {
            "sub": {
              "76664f": "알 수 없는 cdn 하위 명령: {{sub}}\n실행: ysk-server cdn help"
            }
          }
        },
        "backup": {
          "subcommand": {
            "sub": {
              "4092ad": "알 수 없는 백업 하위 명령: {{sub}}\n실행: ysk-server 백업 도움말"
            }
          }
        }
      }
    },
    "setup": {
      "dryRunOk": "{{product}} 설정 테스트 실행 OK",
      "dryRunNext": "구성을 작성하고 데이터베이스를 초기화하려면 --dry-run 없이 다시 실행하세요.",
      "weakPassword": "관리자 비밀번호가 취약하거나 기본값입니다. 강력한 --admin-password(최소 8, \"admin\"/공통 기본값 아님)를 전달하거나 로컬 개발자에 대해서만 YSK_ALLOW_INSECURE_DEFAULTS=1을 설정하세요.",
      "weakPasswordShort": "취약하거나 기본 관리자 비밀번호가 거부됨",
      "nextStart": "시작(API + 웹 UI): {{cli}} 서브 --config {{configPath}}",
      "nextOpen": "http://{{host}}:{{port}}/을 열고 {{user}}로 로그인하세요.",
      "nextUnit": "시스템 단위 템플릿: {{unitPath}}",
      "nextInstall": "설치 단위(루트 + YSK_EXECUTE): {{cli}} system unit-install --enable --data-dir {{dataDir}}",
      "nextExecute": "프로덕션 호스트 돌연변이에는 YSK_EXECUTE=1 및 루트가 필요합니다.",
      "nextGolive": "라이브 시작: docs/deploy/go-live.md + ysk-server 준비 --json",
      "secPassword": "보안: 즉시 관리자 비밀번호 변경(부트스트랩이 취약한/기본 비밀번호를 사용함)",
      "sec2fa": "보안: 보안 → 계정에서 관리자 2FA를 활성화하세요.",
      "secListen": "보안: 모든 인터페이스에서 수신 대기 - 방화벽/역방향 프록시 뒤에 배치됩니다. 관리자용 127.0.0.1 + SSH 터널 선호",
      "ok": "{{product}} 설정 완료(데이터베이스 초기화)",
      "okInsecure": "{{product}} 설정 완료(데이터베이스 초기화) [INSECURE BOOTSTRAP — 비밀번호 변경]"
    }
  },
  "common": {
    "all": "전체",
    "cancel": "취소",
    "confirm": "확인하다",
    "refresh": "새로고침",
    "loading": "로딩 중…",
    "save": "저장",
    "apply": "적용",
    "close": "닫기",
    "copy": "복사",
    "copied": "복사됨",
    "expandAll": "모두 펼치기",
    "collapseAll": "모두 접기",
    "empty": "비어 있는",
    "back": "뒤로",
    "showTechnical": "기술 세부정보 표시",
    "hideTechnical": "기술 세부정보 숨기기",
    "needExecute": "YSK_EXECUTE 필요",
    "needRoot": "루트가 필요합니다",
    "needExecuteRoot": "YSK_EXECUTE 및 루트가 필요합니다.",
    "writtenOnly": "패널 데이터에 기록됩니다. 호스트에 적용되지 않음",
    "applyToLive": "적용하려면 적용하세요",
    "saveDraft": "초안 저장",
    "languageName": "영어",
    "languageNative": "영어",
    "language": "언어",
    "switchLanguage": "언어 전환",
    "showPassword": "보여주다",
    "hidePassword": "숨다",
    "searchGlobal": "찾다…",
    "menu": "메뉴",
    "processing": "일하고 있는…",
    "unavailable": "지금은 이용할 수 없습니다",
    "retry": "다시 해 보다",
    "success": "성공",
    "ok": "OK",
    "failed": "실패한",
    "blocked": "실행할 수 없습니다",
    "status": "상태",
    "port": "포트",
    "url": "URL",
    "actions": "행위",
    "noData": "데이터 없음",
    "input": "입력",
    "pleaseEnter": "{{value}} 입력",
    "pleaseFill": "이 필드를 작성하십시오",
    "required": "필수",
    "about": "설명",
    "more": "더",
    "operation": "행위",
    "delete": "삭제",
    "edit": "편집",
    "create": "만들기",
    "install": "설치",
    "installing": "설치 중…",
    "reprobe": "재확인",
    "search": "검색",
    "yes": "예",
    "no": "아니요",
    "on": "켜짐",
    "off": "꺼짐",
    "open": "열려 있는",
    "enabled": "사용",
    "disabled": "사용 안 함",
    "installed": "설치됨",
    "notInstalled": "미설치",
    "running": "달리기",
    "stopped": "중지됨",
    "ready": "준비됨",
    "unknown": "알 수 없음",
    "normal": "OK",
    "degraded": "타락한",
    "missing": "없어진",
    "available": "사용 가능",
    "applied": "적용된",
    "notApplied": "적용되지 않음",
    "completed": "완전한",
    "incomplete": "불완전한",
    "probed": "조사됨",
    "notProbed": "프로브되지 않음",
    "probe": "조사",
    "name": "이름",
    "username": "사용자 이름",
    "password": "비밀번호",
    "domain": "도메인",
    "host": "주인",
    "version": "버전",
    "type": "유형",
    "mode": "방법",
    "notes": "메모",
    "time": "시간",
    "steps": "단계",
    "target": "목표",
    "package": "패키지",
    "panel": "패널",
    "system": "시스템",
    "user": "사용자",
    "project": "프로젝트",
    "database": "데이터 베이스",
    "mail": "우편",
    "files": "파일",
    "memory": "메모리",
    "custom": "관습",
    "static": "공전",
    "lifecycle": "수명주기",
    "loadFailed": "로드하지 못했습니다.",
    "saveFailed": "저장하지 못했습니다.",
    "opFailed": "작업 실패",
    "installFailed": "설치 실패",
    "createFailed": "생성 실패",
    "deleteFailed": "삭제 실패",
    "applyFailed": "적용 실패",
    "startFailed": "시작 실패",
    "statusLoadFailed": "상태를 로드하지 못했습니다.",
    "downloadFailed": "다운로드 실패",
    "uploadDone": "{{count}} 파일 업로드됨",
    "downloadStarted": "다운로드 시작됨: {{name}}",
    "savedOk": "저장됨",
    "noneSelectedShort": "—",
    "unknownError": "알 수 없는 오류",
    "writtenSettings": "기록된 설정",
    "panelBlocked": "관리자 패널에서 이 작업을 완료할 수 없습니다",
    "partialSuccess": "작업이 완전히 성공하지 못했습니다.",
    "createdOk": "생성됨",
    "updatedOk": "업데이트됨",
    "deletedOk": "삭제됨",
    "applyDone": "신청완료",
    "applyIncomplete": "미완료 신청",
    "checking": "확인 중…",
    "dismiss": "닫기",
    "hide": "숨다",
    "show": "보여주다",
    "done": "완료",
    "next": "다음",
    "previous": "이전",
    "redirectedTo": "{{to}}(으)로 이동했습니다(원래 {{from}})"
  },
  "cron": {
    "presetCdTrue": "CD 앱 + true(테스트)",
    "presetCleanTmp": "청정온도(샘플)",
    "presetNpmCron": "npm run cron(있는 경우)",
    "presetAppBin": "앱 바이너리 실행",
    "presetRsync": "정적 동기화(샘플 rsync)",
    "noLinuxUser": "(리눅스 사용자 없음) · {{name}}",
    "projectUser": "프로젝트 사용자",
    "panelUser": "ysk · 패널 / 시스템",
    "system": "시스템",
    "rootCareful": "루트 · 시스템 (주의)",
    "customUser": "{{user}} · 맞춤",
    "success": "성공",
    "failed": "실패한",
    "noProjects": "아직 프로젝트가 없습니다.",
    "noProjectsHint": "cron을 등록하기 전에 프로젝트(그리고 가급적이면 시스템 사용자)를 생성하세요.",
    "userSuffix": "· 사용자",
    "mon": "월",
    "tue": "화요일",
    "wed": "수요일",
    "thu": "목",
    "fri": "금",
    "sat": "앉았다",
    "sun": "해",
    "everyNMin": "N분마다",
    "fixedInterval": "고정 간격",
    "hourly": "시간별",
    "atMinute": "분당",
    "daily": "일일",
    "atTime": "시간에",
    "weekly": "주간",
    "weekdayTime": "평일+시간",
    "monthly": "월간 간행물",
    "dayTime": "요일 + 시간",
    "advanced": "고급의",
    "customExpr": "맞춤 표현",
    "everyMinute": "매분",
    "everyMinutes": "{{n}}분마다",
    "hourlyAt": "시간별 분 {{n}}",
    "dailyAt": "매일 {{time}}",
    "weeklyNone": "매주(요일 없음) {{time}}",
    "weeklyAt": "주간 {{days}} {{time}}",
    "monthlyAt": "매월 일 {{day}} {{time}}",
    "customAt": "맞춤설정: {{expr}}",
    "frequency": "일정 빈도",
    "interval": "간격",
    "fromHour": "정시부터",
    "intervalMinutes": "간격(분)",
    "min1": "1분",
    "minN": "{{n}}분",
    "minuteOfHour": "매 시간의 분",
    "minPad": "{{n}}분",
    "hour": "시간",
    "minute": "분",
    "pickWeekdays": "평일을 선택하세요",
    "dayOfMonth": "해당 월의 일",
    "dayOfMonthHint": "해당 월에 해당 날짜가 없으면 건너뜁니다.",
    "cronExpr": "크론탭 표현",
    "cronExprHint": "5개 필드: 최소 시 일 월 주중(0=일)",
    "cronExprPh": "크론탭 표현",
    "needLinuxUser": "선택한 프로젝트에는 Linux 사용자가 없습니다. 먼저 프로젝트 리소스 아래에 Linux 사용자를 만드세요.",
    "boundProject": "프로젝트에 바인딩됩니다. {{user}}로 실행(runuser 격리)",
    "systemJob": "시스템 작업; {{user}}로 실행",
    "writtenManage": "관리되는 crontab에 기록됨(아직 호스트에 설치되지 않음)",
    "needInstall": "시스템 crontab에 설치를 눌러 적용하십시오.",
    "createdManageOnly": "생성됨(관리 전용)",
    "installedSystem": "시스템에 설치됨",
    "hostSynced": "호스트 동기화됨",
    "hostNotInstalled": "호스트에 없음",
    "statusUnknown": "알 수 없는 상태",
    "systemCrontab": "시스템 크론탭",
    "synced": "동기화됨",
    "managedLines": "관리 라인",
    "jobsOnlyManage": "작업은 관리 전용입니다. 시스템 크론탭",
    "hostHasYsk": "YSK 항목 포함",
    "hostNoYsk": "설치되지 않았거나 YSK 항목이 없습니다.",
    "pressInstall": "등록된 작업이 아직 시스템 crontab에 없습니다. 시스템에 설치를 클릭하세요.",
    "jobsTab": "채용 정보({{count}})",
    "jobsTabPending": "채용 정보({{count}}) · 대기 중 {{pending}}",
    "registeredJobs": "등록된 채용정보({{count}})",
    "jobsSub": "관리 항목 · 변경 후 시스템에 설치",
    "addJob": "+ 직업 추가",
    "noCron": "아직 크론이 없습니다.",
    "noCronDesc": "작업을 추가하고(목록의 오른쪽 상단) 시스템 crontab에 설치합니다.",
    "onceInstalled": "이전에 설치됨",
    "manageOnly": "관리만",
    "projectLabel": "프로젝트",
    "systemLevel": "시스템",
    "runOnce": "지금 실행",
    "runOnceOk": "한 번 실행",
    "updatedManage": "관리가 업데이트되었습니다. 시스템 crontab에 다시 설치",
    "updatedManageShort": "관리 업데이트됨",
    "deletedManage": "관리에서 제거되었습니다. 동기화 호스트에 다시 설치",
    "installStatus": "설치 상태",
    "manageVsHost": "관리 대 호스트",
    "hostYsk": "호스트 YSK",
    "lastInstall": "마지막 설치",
    "installToSystem": "시스템 crontab에 설치",
    "installHint": "병합 호스트 crontab 설치: YSK가 아닌 행을 유지하고 패널 관리 작업만 업데이트합니다.",
    "hostPreview": "호스트 crontab 미리보기",
    "cannotRead": "읽을 수 없거나 설치되지 않았습니다(권한이 필요함)",
    "addJobTitle": "직업 추가",
    "addJobDesc": "쓰기 관리; crontab을 실행할 수 있도록 시스템에 설치",
    "createManageOnly": "생성(관리 전용)",
    "whenRun": "실행 시기",
    "whenRunHint": "아래에서 빈도를 선택하세요. 원시 crontab의 고급 모드",
    "userPathHint": "사용자 + 명령 경로는 프로젝트 홈/런타임을 따릅니다.",
    "pickProject": "— 프로젝트 선택 —",
    "runAsUser": "사용자로 실행",
    "runAsHint": "프로젝트 사용자는 위의 프로젝트를 동기화합니다. 시스템 사용자 = 시스템 수준 cron",
    "noProjectsYet": "(아직 프로젝트가 없습니다)",
    "runInHome": "프로젝트 홈({{home}})에서 실행합니다. 저장 시 runuser로 래핑됨",
    "absPath": "절대 경로 선호",
    "commonCmds": "일반 명령어({{runtime}})",
    "actualPreview": "실제 crontab 라인(미리보기)",
    "noLinuxName": "이 프로젝트에는 Linux 사용자 이름이 없습니다. 먼저 리소스에서 시스템 사용자를 만드세요.",
    "afterCreate": "생성 후:",
    "projectParen": "(프로젝트 {{name}})",
    "systemParen": "(시스템 수준, 바인딩되지 않음)",
    "weekLabel": "주일",
    "willRun": "실행됩니다",
    "projectNoLinux": "(리눅스 사용자 없음)",
    "createManageOnlyParen": "생성(관리 전용)",
    "runAsHintFull": "프로젝트 사용자는 위의 프로젝트를 동기화합니다. 시스템 사용자 = 시스템 수준 cron",
    "systemParenFull": "(시스템 수준, 바인딩되지 않음)",
    "hostOtherLines": "비 YSK 회선 호스트",
    "hostOtherLinesVal": "{{other}} 기타({{total}} 호스트 직무)",
    "deleteTitle": "크론 작업을 삭제하시겠습니까?",
    "deleteDesc": "\"{{name}}\"을 삭제합니다. 시스템 crontab에 적용될 때까지 제어 평면만 해당됩니다.",
    "hostJobs": "호스트 작업",
    "hostJobsTitle": "호스트 크론탭({{count}})",
    "usersScanned": "사용자",
    "filterUser": "사용자",
    "filterAll": "모든 사용자",
    "sourceYsk": "패널",
    "sourceHost": "주인",
    "noHostJobs": "이 범위에는 crontab 작업이 없습니다.",
    "hostPartial": "모든 사용자 crontab을 읽을 수 없습니다(루트 필요).",
    "pendingInstall": "설치 대기 중({{count}})",
    "pendingStale": "{{days}}일 동안 시스템 crontab에 기록되지 않으며 실행되지 않습니다.",
    "willNotRun": "시스템 crontab에 기록되지 않음 — 실행되지 않습니다.",
    "hourRange": "시간은 0~23이어야 합니다.",
    "minuteRange": "분은 0~59여야 합니다.",
    "hoursCommon": "공통시간",
    "hoursAll": "모든 시간",
    "invalidExpr": "유효한 5개 필드 크론 표현식이 아닙니다.",
    "needCommand": "명령이 필요합니다.",
    "needUser": "프로젝트 또는 시스템 사용자를 선택합니다.",
    "hostCounts": "호스트 라인",
    "hostCountsVal": "{{ysk}} · 기타 {{other}} · 합계 {{total}}",
    "hostYskYes": "패널라인 존재",
    "hostYskNo": "패널라인이 없다",
    "emptyHostCrontab": "{{user}}에는 crontab이 없습니다.",
    "writtenOnHost": "쓴",
    "registeredJobsChip": "등기",
    "registeredVsWritten": "패널에 등록됨과 호스트 crontab에 기록됨",
    "installPreviewTitle": "시스템 crontab에 설치하기 전에 미리보기",
    "installPreviewDesc": "그러면 YSK 블록이 호스트 crontab에 병합됩니다. 기존 비 YSK 노선은 그대로 유지됩니다.",
    "installPreviewMerge": "Install은 YSK 서버 crontab 병합 블록을 작성합니다. 전체 crontab을 대체하지는 않습니다.",
    "installPreviewEmpty": "보류 중인 관리 작업이 없습니다. 설치 시 YSK 블록이 계속 새로 고쳐집니다.",
    "editJobTitle": "채용정보 수정",
    "editJobDesc": "변경 사항은 시스템 crontab에 설치할 때까지 패널에 유지됩니다.",
    "saveJob": "저장(관리 전용)",
    "panelLines": "패널라인",
    "otherLines": "다른 노선",
    "totalLines": "총",
    "writtenOnHostHint": "호스트 crontab에 이미 작성된 행",
    "registeredJobsHint": "패널에 등록된 작업(대기 중인 설치 포함)",
    "pendingInstallCount": "{{n}} 설치 대기 중",
    "systemJobBadge": "프로젝트 없음 · 시스템 사용자",
    "hostEdit": "편집",
    "hostEditTitle": "호스트 crontab 줄 편집",
    "hostEditDesc": "지금 이 사용자의 라이브 crontab을 작성합니다. 루트 및 YSK_EXECUTE=1이 필요합니다. 다른 노선은 그대로 유지됩니다.",
    "hostSave": "크론탭 작성",
    "hostSaveTitle": "이 crontab 줄을 작성하시겠습니까?",
    "hostSaveDesc": "Replaces the live line for {{user}}. Type EDIT to confirm.\n\nCurrent:\n{{from}}\n\nNext:\n{{to}}",
    "hostDisable": "사용 안 함",
    "hostDisableTitle": "호스트 crontab 라인을 비활성화하시겠습니까?",
    "hostDisableDesc": "{{user}} 행에 주석을 달습니다. 확인하려면 DISABLE을 입력하세요.",
    "hostEnable": "사용",
    "hostEnableTitle": "호스트 crontab 라인을 활성화하시겠습니까?",
    "hostEnableDesc": "{{user}}에 대한 댓글을 삭제합니다. 확인하려면 ENABLE을 입력하세요.",
    "hostRunTitle": "이 호스트 명령을 한 번 실행하시겠습니까?",
    "hostRunDesc": "이제 {{user}}로 실행됩니다. crontab을 변경하지 않습니다. 확인하려면 RUN을 입력하세요.",
    "hostAdopt": "패널에 가져 가라.",
    "hostAdoptTitle": "이 호스트 라인을 패널로 가져가시겠습니까?",
    "hostAdoptDesc": "라이브 라인 # ysk:id에 태그를 지정하고 등록합니다. 다음 설치에서는 복제되지 않습니다. 확인하려면 ADOPT를 입력하세요.",
    "hostDeleteTitle": "호스트 crontab 줄을 제거하시겠습니까?",
    "hostDeleteDesc": "{{user}}의 라이브 라인을 제거합니다. 확인하려면 명령을 입력하세요.",
    "hostUserLocked": "Crontab 소유자(여기에서는 사용자 간에 이동할 수 없습니다)",
    "hostLinePreview": "쓰여질 줄",
    "disabledJob": "사용 안 함",
    "confirmMismatch": "확인은 명령과 일치해야 합니다.",
    "writtenHost": "호스트 crontab을 작성했습니다.",
    "adoptedHost": "패널로 가져옴",
    "keepDisabledHint": "이 회선은 비활성화되었습니다. 저장하면 주석이 달린 상태로 유지됩니다.",
    "currentLine": "현재의",
    "nextLine": "다음"
  },
  "dashboard": {
    "serviceAria": "{{name}}: {{state}}",
    "sev": {
      "ok": "OK",
      "warn": "경고",
      "bad": "문제"
    },
    "title": "대시보드",
    "health": "건강",
    "protection": "보호 모드",
    "welcome": "YSK 서버에 오신 것을 환영합니다",
    "audit": "최근 감사",
    "needLogin": "감사 이벤트를 보려면 로그인하세요.",
    "features": "특징",
    "featuresHint": "배지: 준비 = 소프트웨어 설치됨;",
    "badge": {
      "panel": "패널",
      "notInstalled": "미설치",
      "ready": "준비됨",
      "installed": "설치됨",
      "prodReady": "프로덕션 준비",
      "check": "확인하다",
      "needPerm": "파마가 필요함"
    },
    "status": {
      "healthy": "건강한",
      "prodReady": "프로덕션 준비",
      "needsCheck": "확인 필요"
    },
    "stat": {
      "backups": "백업",
      "notifications": "경고",
      "certExpiry": "인증서 만료"
    },
    "tabs": {
      "overview": "개요",
      "wizard": "빨리 만들기",
      "notifications": "경고",
      "features": "특징"
    },
    "serviceHealth": "서비스 상태",
    "serviceHealthDesc": "라이브 systemctl 프로브",
    "fullServiceMatrix": "전체 서비스 매트릭스",
    "readinessCheck": "준비:",
    "prodOk": "생산 준비 완료",
    "notFullyReady": "완전히 준비되지 않았습니다",
    "readinessBlocked": "{{n}} 차단제",
    "modeScore": "모드 {{mode}} · 점수 {{ready}}/{{total}}",
    "mode": {
      "degraded": "타락한",
      "production_capable": "생산 준비 완료",
      "blocked": "막힌",
      "normal": "정상"
    },
    "details": "세부",
    "certExpiryTitle": "인증서 만료:",
    "certExpired": "만료됨",
    "certDays": "{{days}}일",
    "securityStrip": "보안 및 신청 현황",
    "securityStripDesc": "실시간 알림 + 정직감사 적용 (서면≠적용)",
    "notifCount": "알림 {{count}}",
    "criticalCount": "· 중요 {{count}}",
    "warnCount": "· 경고 {{count}}",
    "applyAuditBadge": "감사 적용 · 확인 {{ok}} · 경고 {{warn}} · 나쁨 {{bad}}",
    "executeBadge": "실행 {{state}}",
    "executeLabel": "EXECUTE",
    "publicNo2fa": "이 패널은 모든 인터페이스를 수신하며 관리자 계정에는 2FA가 없습니다.",
    "go": "열려 있는",
    "open": "열려 있는",
    "noCriticalWarn": "중요 또는 경고 알림 없음",
    "notifCenter": "알림 센터",
    "noHealthYet": "아직 건강 상태를 확인할 수 없습니다.",
    "sysChange": "시스템 변경",
    "opened": "켜짐",
    "closed": "꺼짐",
    "readinessLink": "준비 상태 →",
    "hostMetrics": "호스트 측정항목",
    "loadAvg": "평균 부하(1 · 5 · 15분)",
    "memoryDash": "메모리 -",
    "metricsLink": "측정항목 →",
    "runningOf": "달리기 {{running}}/{{total}}",
    "noProjects": "아직 프로젝트가 없습니다.",
    "wizardLink": "빠른 생성 →",
    "allProjects": "모든 프로젝트 →",
    "recentN": "마지막 {{n}}",
    "runningCount": "달리기 {{n}}",
    "securityLink": "보안 →",
    "wizardTitle": "빨리 만들기",
    "wizardDesc": "프로젝트를 생성하고 선택적으로 DNS/메일/데이터베이스 초안을 작성합니다(각 기능 페이지에 적용).",
    "projectName": "프로젝트 이름",
    "projectNameHint": "표시 이름 일치하는 디렉토리를 생성합니다",
    "nameRequired": "프로젝트 이름을 입력하세요.",
    "domainOptional": "도메인(선택사항)",
    "domainHint": "DNS 및 메일 옵션을 활성화하는 데 필요합니다.",
    "runtime": "실행 시간",
    "runtimeHint": "기본 런타임 버전 및 배포 스타일 설정",
    "runtimeVersion": "런타임 버전",
    "versionHint": "프로젝트 실행 환경 버전 설정에 씁니다",
    "serverIpv4": "서버 IPv4",
    "serverIpv4Hint": "DNS A/메일 SPF",
    "serverIpv4Ph": "이 호스트의 공개 IPv4",
    "serverIpv6": "서버 IPv6(선택 사항)",
    "serverIpv6Hint": "AAAA / ip6 쓰기: 설정 시",
    "serverIpv6Ph": "공용 IPv6(선택사항)",
    "needDomainFirst": "먼저 도메인을 입력하세요",
    "withDns": "DNS 영역도 생성",
    "withDnsDesc": "도메인이 필요합니다. 등록 전용 — DNS 페이지에서 영역 적용",
    "withMail": "메일 도메인도 등록하세요",
    "withMailDesc": "도메인이 필요합니다. 메일 세부정보 페이지에 소프트웨어 및 DNS 설치",
    "withDb": "또한 MySQL 데이터베이스 초안",
    "withDbDesc": "제어 평면 등록 SQL 엔진 페이지에 적용",
    "wizardHint": "빠른 생성이 자동으로 실행되지 않습니다.",
    "wizardSubmit": "만들기",
    "wizardOk": "생성됨",
    "wizardPartial": "부분적으로 실패함",
    "notifCenterTitle": "알림({{count}})",
    "notifCenterDesc": "심각 {{critical}} · 경고 {{warn}} · 정보 {{info}}",
    "noNotifs": "알림 없음",
    "noNotifsDesc": "시스템 경고 및 할 일이 여기에 표시됩니다.",
    "applyAuditTitle": "현황 감사 적용",
    "applyAuditDesc": "알았어 {{ok}} · 경고 {{warn}} · 나쁘다 {{bad}}",
    "barTitle": "호스트 알림 {{count}}건",
    "levelCritical": "심각",
    "levelWarn": "경고",
    "levelInfo": "정보",
    "colTitle": "알림",
    "colDetail": "내용",
    "colSource": "출처",
    "notifSearch": "알림 검색",
    "notifAll": "전체",
    "notifDismiss": "숨다",
    "goFix": "고치다"
  },
  "dataTable": {
    "empty": "데이터 없음",
    "actions": "행위"
  },
  "db": {
    "serviceSettings": "서비스 설정",
    "installedOk": "{{engine}} 설치됨",
    "startedOk": "{{engine}} 시작됨",
    "installFirst": "{{engine}}를 먼저 설치하세요",
    "softwareMissing": "{{engine}} 소프트웨어가 설치되지 않았습니다.",
    "serviceOverview": "서비스 개요",
    "readonlyStatus": "읽기 전용 상태",
    "readonlyProbe": "읽기 전용 프로브",
    "systemChange": "시스템 변경",
    "opened": "사용",
    "notOpened": "사용 안 함",
    "admin": "관리자",
    "client": "고객",
    "hasClient": "예",
    "noClient": "아니요",
    "canProvision": "DB 생성 가능",
    "dumpOk": "덤프 완료",
    "dumpFailed": "덤프 실패",
    "noDumpToImport": "가져올 덤프 파일이 없습니다.",
    "expiredTempUsersProcessed": "만료된 임시 사용자가 처리되었습니다.",
    "dumpFirstDb": "첫 번째 DB 덤프",
    "importLatestDump": "최신 덤프 가져오기",
    "cleanupExpiredTempUsers": "만료된 임시 사용자 정리",
    "adminerEntry": "DB 브라우저 프로젝트",
    "browserProjectTitle": "DB 브라우저 프로젝트 생성",
    "browserTool": "도구",
    "browserNameHint": "PHP 프로젝트를 생성합니다. 이름은 고유해야 합니다.",
    "browserNameTaken": "프로젝트 이름이 이미 존재합니다: {{name}}",
    "browserProjectCreated": "DB 브라우저 프로젝트가 생성되었습니다.",
    "createBrowserProject": "프로젝트 생성 및 배포",
    "downloadPhpMyAdmin": "phpMyAdmin 다운로드(시스템 변경 + 네트워크 필요)",
    "createDatabase": "데이터베이스 생성",
    "installBannerHint": "{{engine}}를 설치하려면 위 배너를 사용하세요.",
    "exclusiveMariaHint": "이 호스트는 MariaDB를 실행합니다. MariaDB 페이지 또는 원클릭 스위치(SWITCH 입력)를 사용하세요.",
    "exclusiveMysqlHint": "이 호스트는 MySQL을 실행합니다. MySQL 페이지 또는 원클릭 스위치(SWITCH 유형)를 사용하십시오.",
    "openMaria": "MariaDB",
    "openMysql": "MySQL",
    "openMariaService": "마리아DB 서비스",
    "openMysqlService": "MySQL 서비스",
    "startService": "서비스 시작",
    "openServiceConsole": "서비스 콘솔 열기",
    "opsResult": "작업 결과",
    "tempPasswordOnce": "임시 읽기 전용 비밀번호(한 번 표시됨):",
    "tabDatabases": "데이터베이스({{count}})",
    "tabUsers": "사용자 ({{count}})",
    "tabTemp": "임시 읽기 전용({{count}})",
    "tabRemote": "원격 호스트({{count}})",
    "dbList": "데이터베이스 목록",
    "charset": "문자셋",
    "noDatabasesYet": "아직 데이터베이스가 없습니다.",
    "emptyDbInstallFirst": "배너를 통해 {{engine}}를 설치한 후 데이터베이스 생성",
    "emptyDbCannotProvision": "지금은 서버에 데이터베이스를 생성할 수 없습니다.",
    "emptyDbCreateHint": "데이터베이스 생성을 사용한 다음 적용을 사용하십시오.",
    "emptyDbHostHasRows": "호스트에는 이 제어 영역 목록에 없는 데이터베이스가 이미 있습니다.",
    "registeredVsHostHint": "패널 등록 / 호스트 실측",
    "registeredCount": "등기",
    "hostCount": "호스트에서",
    "registeredUsers": "등록된 사용자",
    "registeredUsersHint": "패널 등록만 가능 - 모든 MySQL 계정이 아님",
    "hostStillExists": "아직 호스트에 있음",
    "expiresLabel": "만료",
    "dumpNeedRegistered": "먼저 패널에 데이터베이스를 등록하세요",
    "dumpFirstDbTitle": "첫 등록 데이터베이스 내보내기",
    "importNeedRegistered": "먼저 패널에 데이터베이스를 등록하세요",
    "importLatestNeedConfirm": "확인 필요 — 등록된 데이터베이스로 가져옵니다",
    "hostHasUntracked": "{{count}} 호스트 데이터베이스가 패널에 등록되지 않았습니다.",
    "hostInventoryHint": "테이블은 제어 영역 행 전용입니다. 실제 이름은 SHOW DATABASES에서 가져옵니다.",
    "userList": "사용자",
    "userListDesc": "사용자에게 데이터베이스에 대한 액세스 권한 부여",
    "createUserBtn": "+ 사용자 생성",
    "noUsersYet": "아직 사용자가 없습니다.",
    "tempReadonlyUsers": "임시 읽기 전용 사용자",
    "tempReadonlyDesc": "TTL 이후 제어 평면 표시가 만료되었습니다.",
    "dbName": "데이터베이스 이름",
    "ttlHours": "TTL(시간)",
    "ttlHoursHint": "만료 후 유효하지 않은 것으로 표시됨",
    "createReadonlyUser": "읽기 전용 사용자 생성",
    "tempUserCreated": "임시 읽기 전용 사용자가 생성되었습니다.",
    "expiresAt": "만료",
    "revokeRegistration": "등록 취소",
    "remoteDbHosts": "원격 데이터베이스 호스트",
    "remoteDbHostsDesc": "연결 대상 등록(비밀번호는 에코되지 않음)",
    "remoteTest": "테스트 연결",
    "remoteTestDone": "원격 호스트 프로브 완료",
    "remoteTestOk": "도달 가능",
    "remoteTestFail": "접근할 수 없음",
    "remoteNotChecked": "테스트되지 않음",
    "remoteDeleteTitle": "이 등록만 제거",
    "remoteDeleteConfirm": "등록 {{name}}을(를) 제거할까요? 원격 서버는 변경되지 않습니다.",
    "displayName": "표시 이름",
    "prodReplicaPlaceholder": "프로덕션 복제본",
    "remoteHostSaved": "원격 호스트가 저장되었습니다.",
    "createDbTitle": "{{engine}} 데이터베이스 생성",
    "createDbDesc": "Control-plane 등록 후 서버에 쓰기 신청",
    "dbNameHint": "소문자 alnum 및 밑줄; 생성 후 시스템에 적용",
    "alsoCreateUser": "사용자도 생성",
    "alsoCreateUserDesc": "이 데이터베이스에 연결할 수 있는 로그인 만들기",
    "passwordMin8": "8자 이상",
    "passwordMin8chars": "8자 이상",
    "allowConnectHost": "허용된 호스트",
    "allowConnectHostHint": "종종 %(any) 또는 localhost",
    "allowConnectHostHintShort": "종종 % 또는 localhost",
    "createDbHint": "제어 영역만 씁니다. Apply는 서버에서 CREATE DATABASE를 실행합니다.",
    "createUserTitle": "{{engine}} 사용자 생성",
    "createUserDesc": "생성 후 적용",
    "bindDatabase": "데이터베이스 바인딩",
    "bindDatabaseHint": "선택 과목; 이 DB에 대한 권한을 부여합니다",
    "noneOption": "- 없음 -",
    "importDumpTitle": "덤프를 가져오시겠습니까?",
    "importDumpDesc": "{{dump}}를 {{db}}로 가져오기",
    "import": "수입",
    "importOk": "가져오기 완료",
    "importFailed": "가져오기 실패",
    "deleteDbTitle": "데이터베이스 등록을 삭제하시겠습니까?",
    "deleteDbDesc": "제어 영역 기록만 제거합니다. 서버 데이터베이스를 삭제하지 않습니다.",
    "deleteUserTitle": "사용자 등록을 삭제하시겠습니까?",
    "deleteUserDesc": "제어 영역 기록만 제거합니다.",
    "adminerTitle": "관리자 데이터베이스 브라우저",
    "adminerDesc": "관리자 다운로드 + Nginx conf 작성; 시스템 실행에 적용 nginx -t + reload",
    "adminerWritten": "관리자가 관리 파일에 기록됨",
    "adminerApplied": "관리자가 신청했습니다",
    "writeOnly": "쓰기 전용(쓰기)",
    "applyToSystem": "시스템에 적용",
    "adminerRisk": "Public Adminer는 위험합니다. 소스 IP를 제한하거나 HTTP 인증을 추가하세요. PHP-FPM 소켓이 필요합니다(기본값은 php8.2).",
    "vhostName": "가상 호스트 이름",
    "vhostHint": "외부 액세스를 위해 DNS A가 이 호스트를 가리키도록 합니다.",
    "downloadAdminer": "Adminer PHP 다운로드(YSK_EXECUTE + 아웃바운드 넷 필요)",
    "downloadAdminerDesc": "끄기 = 이미 다운로드한 파일만 사용",
    "adminerWriteHint": "쓰기 전용 = 관리 쓰기;",
    "pgInstallBanner": "먼저 배너를 통해 PostgreSQL을 설치하세요.",
    "pgEmptyCreateHint": "생성 후 시스템에 적용하여 서버에 쓰기",
    "pgNoDbs": "아직 PostgreSQL 데이터베이스가 없습니다.",
    "pgCreateTitle": "PostgreSQL 데이터베이스 생성",
    "pgCreateDesc": "제어 평면 등록 시스템 실행에 적용 CREATE DATABASE",
    "pgAlsoCreateRole": "역할도 생성",
    "pgAlsoCreateRoleDesc": "로그인 역할을 생성하고 이 데이터베이스에 부여",
    "roleName": "역할 이름",
    "roleHint": "PostgreSQL 역할/로그인 사용자",
    "pgDeleteDbDesc": "제어 영역 레코드를 제거합니다(해지 적용이 실행되지 않는 한 자동 삭제되지 않음).",
    "update": "업데이트",
    "alsoCreateRole": "역할도 생성",
    "cluster": {
      "standaloneOtherEngines": "이 엔진은 독립형입니다. 다른 엔진에는 클러스터가 있습니다: {{names}}.",
      "roleUnassigned": "할당된 역할이 없습니다.",
      "title": "무리",
      "description": "계획 → 쓰기 관리 → 적용 → 프로브 → 피어 배포/플릿. 기본 테스트 실행.",
      "redirectedFromCluster": "/cluster에서 여기로 리디렉션되었습니다. 데이터베이스 클러스터 탭입니다.",
      "notApplied": "적용되지 않음",
      "plannedAt": "생성됨 {{when}}",
      "clearStalePlans": "오래된 계획 지우기",
      "clearStalePlansTitle": "오래된 계획 클러스터를 삭제하시겠어요?",
      "clearStalePlansDesc": "7일이 지난 계획/초안 등록 {{n}}을 삭제합니다. 적용하거나 푸시하지 않습니다. 시스템 구성은 건드리지 않습니다.",
      "landingTitle": "데이터베이스 클러스터",
      "landingDesc": "No database engine is installed on this host. Open an engine page to install, then return here.",
      "landingNoneInstalled": "MySQL, MariaDB, PostgreSQL, and Redis are not installed. /cluster does not open a MySQL tab when MySQL is missing.",
      "openEngine": "오픈 {{engine}}",
      "overviewPill": "클러스터 {{n}}",
      "enginesInstalled": "엔진",
      "plannedCount": "예정",
      "overviewList": "클러스터({{count}})",
      "overviewEmpty": "아직 클러스터 등록이 없습니다.",
      "engine": "엔진",
      "kind": "친절한",
      "members": "회원",
      "kindGalera": "심플 갈레라",
      "kindMysqlReplica": "MySQL 기본/복제본",
      "kindPgReplica": "PostgreSQL 스트리밍 복제본",
      "kindRedisReplica": "Redis 기본/복제본",
      "createGalera": "간단한 갈레라 만들기",
      "createMysqlReplica": "기본/복제본 만들기",
      "createPgReplica": "스트리밍 복제본 만들기",
      "createSentinel": "센티넬 생성",
      "createRedisReplica": "Redis 복제본 만들기",
      "needRealIps": "실제 로컬 및 피어 IP/호스트 이름을 입력하세요.",
      "hostInvalid": "유효한 IPv4, IPv6 또는 호스트 이름을 입력하세요.",
      "statusNote": "상태: {{status}}(계획 성공 ≠ 클러스터 상태)",
      "artifactNote": "유물: {{dir}}",
      "planGenerated": "생성된 계획(모의 실행)",
      "planUpdated": "계획이 업데이트되었습니다.",
      "manageWritten": "작성된 관리 파일(시험 실행)",
      "bootstrapTried": "부트스트랩 시도됨",
      "applyTried": "시스템 구성 적용을 시도했습니다.",
      "localOk": "로컬 OK",
      "localProbeFail": "로컬 프로브 실패",
      "probedWithPeers": "프로브(동료 포함)",
      "probedLocal": "로컬 탐색",
      "peerTarNote": "다운로드된 피어 번들(.tar.gz) - 피어에 conf 추출 및 설치",
      "downloaded": "다운로드됨",
      "peerPushed": "피어로 푸시됨",
      "pushPlanGenerated": "푸시 계획이 생성되었습니다.",
      "registrationDeleted": "등록이 삭제되었습니다.",
      "nodes": "노드",
      "remoteInstallPlan": "원격 설치 계획",
      "fleetSession": "Fleet 에이전트 세션 ID",
      "fleetSessionHint": "Optional. Paste a session UUID from /agents. Then this peer uses fleet (no SSH). Leave empty for SSH scp.",
      "fleetSessionPh": "에이전트 페이지 세션 UUID",
      "fleetSessionNone": "없음 - SSH 사용",
      "fleetSessionOpenAgents": "/agents를 열어 세션을 등록하세요.",
      "createWizardTitle": "계획 마법사를 엽니다. 로컬 IP와 1개 이상의 피어가 필요합니다. 패널 아티팩트만 씁니다(시험 실행). 적용할 때까지 엔진을 다시 시작하지 않습니다.",
      "bootstrap": "부트스트랩",
      "fleetApply": "함대 적용",
      "planTitle": "클러스터 계획 재생성(호스트 변경 없음)",
      "writeFileTitle": "패널 데이터 디렉토리 아래에 관리 파일 쓰기(드라이런)",
      "probeLocalTitle": "이 호스트만 프로브",
      "probeAllTitle": "등록된 모든 회원을 조사하세요.",
      "bootstrapTitle": "로컬 드롭인 설치 및 첫 번째 노드 부트스트랩",
      "remoteInstallPlanTitle": "원격 설치 미리보기(실행 없음)",
      "downloadBundleTitle": "피어 conf 번들(.tar.gz) 다운로드",
      "pushPlanTitle": "피어로 푸시 미리보기(SCP 없음)",
      "fleetSyncPlanTitle": "플릿 동기화 미리보기(실행 없음)",
      "fleetApplyTitle": "함대 구성원에게 대기열을 적용하시겠습니까?",
      "status": {
        "healthy": "건강한",
        "planned": "예정",
        "partial": "부분",
        "failed": "실패한",
        "draft": "초안",
        "degraded": "타락한",
        "applied": "적용된"
      },
      "fleetSyncPlan": "차량 동기화 계획",
      "standaloneTitle": "현재: 독립형",
      "standaloneRepl": "등록된 복제본이 없습니다. 기본/마스터 + 복제본을 설정하여 conf 및 스크립트를 생성합니다.",
      "standaloneHa": "등록된 HA가 없습니다. 피어 노드를 추가하여 conf 계획을 생성한 다음 부트스트랩/조인합니다.",
      "recentProbe": "최근 프로브(로컬 wsrep)",
      "probeRequired": "건강하려면 통과 프로브가 필요합니다.",
      "planPreview": "계획 미리보기",
      "planPreviewDesc": "테스트 실행 · 성공은 단계/conf가 생성되었음을 의미합니다.",
      "files": "파일",
      "systemChangeNeed": "신청 시 필수",
      "planModalDesc": "노드 선택 → 계획 생성(피어 시스템을 변경하지 않음)",
      "generatePlan": "계획 생성",
      "clusterName": "클러스터 이름",
      "localIp": "로컬 IP / 호스트",
      "primaryIpHint": "제어 영역 호스트(기본/마스터 + 액세스=로컬)",
      "localIpHint": "제어 영역 호스트(액세스=로컬)",
      "ipExample1": "예를 들어 10.0.0.1",
      "ipExample2": "예를 들어 10.0.0.2",
      "ipExample3": "예를 들어 10.0.0.3",
      "replicaIp": "복제본 IP/호스트",
      "peerIp": "피어 IP/호스트",
      "replicaHint": "복제본 노드",
      "peerHint": "두 번째 노드(Galera는 3개를 선호함)",
      "thirdNode": "세 번째 노드(선택 사항)",
      "thirdNodeHint": "갈레라/다중 복제에 권장",
      "sstMethod": "SST 방식",
      "forbidDemoIp": "데모 IP(203.0.113.x)가 없습니다.",
      "fwGalera": "내부 3306/4567/4444/4568을 엽니다.",
      "fwPg": "스트리밍에는 내부 5432가 필요합니다. 스크립트에서 CHANGE_ME 비밀번호를 변경하세요.",
      "fwRedis": "Redis 내부 6379(센티넬 26379).",
      "fwRepl": "복제본에는 일치하는 내부 포트가 필요합니다. CHANGE_ME 비밀번호를 변경하세요.",
      "needExecuteRoot": "시스템 구성을 적용하려면 YSK_EXECUTE=1 + 루트가 필요합니다.",
      "topology": "토폴로지: {{kind}}",
      "applyLocalTitle": "로컬 시스템 구성을 적용하시겠습니까?",
      "applyBootstrapDesc": "Galera 드롭인 및 부트스트랩 설치(galera_new_cluster)",
      "applyJoinDesc": "Galera 드롭인 및 systemctl restart mariadb를 설치합니다.",
      "confirmApply": "적용 확인",
      "deleteClusterTitle": "클러스터 등록을 삭제하시겠어요?",
      "remoteInstallTitle": "원격 설치 피어?",
      "pushTitle": "피어로 푸시하시겠습니까?",
      "fleetSyncTitle": "함대 동기화?",
      "confirmOp": "확인하다",
      "deleteClusterDesc": "시스템 구성은 자동으로 지워지지 않습니다(v1).",
      "remoteInstallDesc": "피어에 conf를 설치하고 다시 시작하세요. YSK_EXECUTE + SSH가 필요합니다.",
      "pushDesc": "scp 파일을 /tmp 피어로 보내시겠습니까?",
      "fleetSyncDesc": "클러스터 스냅샷을 Fleet Edge에 동기화한 후 적용합니다.",
      "fleetApplyDesc": "엔큐는 함대 구성원에게 적용됩니다.",
      "remoteInstalled": "원격 설치됨",
      "fleetSynced": "Fleet 동기화 대기 중",
      "fleetApplyQueued": "함대 신청 대기 중",
      "engineNotInstalled": "{{engine}}은(는) 이 호스트에 설치되어 있지 않습니다. 먼저 설치하거나 실제로 실행 중인 엔진을 엽니다.",
      "plan": "계획",
      "writeFile": "파일 쓰기",
      "applyLocal": "지역적용",
      "probeAll": "모든 노드 조사",
      "remoteInstall": "원격 설치",
      "downloadBundle": "번들 다운로드",
      "pushPlan": "푸시 계획",
      "pushExecute": "푸시 실행",
      "fleetSync": "함대 동기화",
      "localConfPreview": "로컬 conf 미리보기",
      "refresh": "새로고침",
      "close": "닫기",
      "cancel": "취소",
      "delete": "삭제",
      "probe": "조사",
      "name": "이름",
      "type": "유형"
    },
    "console": {
      "dataBrowse": "데이터 찾아보기",
      "dbManage": "데이터베이스 관리자",
      "realtime": "살다",
      "reload": "새로고침",
      "needRestart": "다시 시작해야 함",
      "affectsProjects": "이 엔진을 사용하는 사이트와 서비스가 중단됩니다.",
      "lifecycle": "수명주기",
      "overview": "개요",
      "actionDone": "{{action}} 완료",
      "installDone": "설치 완료",
      "noChanges": "신청할 내용이 없습니다.",
      "settingsApplied": "설정이 적용되었습니다.",
      "notReadFromService": "서비스에서 읽히지 않음",
      "applyMode": "적용 모드: {{mode}}",
      "dirtyNotApplied": "수정되었으나 적용되지 않음",
      "highRisk": "고위험 설정",
      "engine": "엔진",
      "bootEnabled": "부팅 시 시작",
      "uptimeSec": "가동 시간(초)",
      "currentConnections": "사이",
      "changes": "변경 사항",
      "serviceTitle": "{{title}} 서비스",
      "softwareMissing": "{{title}} 소프트웨어가 설치되지 않았습니다.",
      "overviewDesc": "프로브의 읽기 전용 정보(양식 필드 아님)",
      "lifecycleDesc": "부팅 시 설치, 시작, 중지 및 활성화",
      "about": "설명",
      "cluster": "무리",
      "noSettings": "이 카테고리에는 설정이 없습니다(또는 이 버전에서는 지원되지 않음).",
      "applyHint": "라이브는 온라인으로 바뀔 수 있습니다.",
      "applyCategory": "카테고리 적용",
      "applyAll": "모든 변경 사항 적용",
      "applyCatCount": "카테고리 적용({{n}})",
      "applyAllCount": "모두 적용({{n}})",
      "lifecycleNote": "설정에서 라이브는 온라인으로 변경됩니다. 재시작 필수에는 적용 후 수명 주기를 다시 시작해야 합니다.",
      "installEngine": "{{title}}를 설치하려면 위 배너를 사용하세요.",
      "reloadConfig": "구성 다시 로드",
      "disableBoot": "부팅 시 비활성화",
      "disableBootConfirm": "다시 활성화할 때까지 재부팅 후 엔진이 시작되지 않습니다.",
      "needRights": "시스템 변경 권한과 관리자가 필요합니다. 실패는 이유를 보여줍니다. 절대 가짜 성공이 아닙니다.",
      "noneFetched": "- 없음 -"
    },
    "importEntry": "입장: {{url}}",
    "adminerRiskFull": "Public Adminer는 위험합니다. 소스 IP를 제한하거나 HTTP 인증을 추가하세요. PHP-FPM 소켓이 필요합니다(기본값은 php8.2).",
    "adminerWriteHintFull": "쓰기 전용 = 관리 쓰기;",
    "pgInstalled": "PostgreSQL 설치됨",
    "pgStarted": "PostgreSQL이 시작되었습니다.",
    "notInstalledShort": "미설치",
    "serviceConsole": "서비스 콘솔",
    "installPgFirst": "PostgreSQL을 먼저 설치하세요",
    "pgSoftwareMissing": "PostgreSQL 소프트웨어가 설치되지 않았습니다.",
    "installPgBanner": "위 배너를 사용하여 PostgreSQL을 설치하세요.",
    "createPlus": "+ 만들기",
    "dbNameHintPg": "소문자 alnum 및 밑줄; 생성 후 적용",
    "deleteNotePg": "등록을 삭제해도 서버 DB는 삭제되지 않습니다. 적용 성공은 DDL이 호스트에서 실행되었음을 의미합니다.",
    "tabDatabasesSimple": "데이터베이스({{count}})",
    "frozenTitle": "데이터베이스 서비스를 복구해야 합니다.",
    "frozenBody": "문제 감지됨(정지 모드: {{mode}};",
    "unfreezeBtn": "진단 및 수리",
    "unfreezeConfirmTitle": "수리 {{engine}}?",
    "unfreezeConfirmDesc": "진단에서 일반 복구 계획 실행(중지, 정지 해제, 구성 삭제, emp 초기화)",
    "unfreezeConfirmBtn": "수리 확인",
    "unfreezeOk": "{{engine}} 수리 완료",
    "startAfterUnfreeze": "서비스 시작(실패 시 복구 계획 자동 실행)",
    "serviceDownTitle": "데이터베이스 서비스가 다운되었습니다",
    "serviceDownBody": "서비스 상태가 좋지 않음",
    "adoptHostDb": "등록 {{name}}",
    "adoptHostDbTitle": "제어면에 이름만 등록하며 호스트 데이터는 바꾸지 않습니다.",
    "cleanupExpiredTempUsersTitle": "만료된 패널 임시 사용자를 삭제합니다",
    "invalidSqlIdent": "소문자 식별자를 사용하십시오. 문자로 시작한 다음 문자, 숫자 또는 밑줄을 사용하십시오.",
    "remoteHostRequired": "원격 호스트를 입력하세요.",
    "remoteTestUnsaved": "먼저 이 호스트를 저장한 다음 연결을 테스트하세요. 아니면 호스트를 채우고 저장하세요.",
    "serverNotInstalled": "이 엔진은 서버에 설치되어 있지 않습니다.",
    "dumpNeedEngine": "데이터베이스를 내보내기 전에 엔진을 설치하십시오.",
    "unboundDatabase": "데이터베이스 등록이 제거됨",
    "userGoneRefresh": "해당 사용자는 사라졌습니다. 목록이 새로 고쳐졌습니다."
  },
  "dialogs": {
    "confirmDefault": "확인하다",
    "cancelDefault": "취소",
    "severity": {
      "consequencesTitle": "이는 다음을 수행합니다.",
      "typeToConfirm": "확인하려면 \"{{text}}\"를 입력하세요."
    }
  },
  "dns": {
    "templates": {
      "minimal": "최소 - 정점 A만",
      "web": "웹 — 정점 + www",
      "mail": "메일 — apex + 메일 + MX + SPF",
      "full": "전체 — 웹 + 메일 + ftp + SPF",
      "cdn": "CDN — apex + www + cdn(다중 에지 지원)"
    },
    "dnssecOk": "생성된 DNSSEC 키(작성됨 — 영역이 서명되지 않음/등록 기관에 없음)",
    "dnssecNotOk": "DNSSEC 키가 생성되지 않음(참고만 가능하거나 도구를 사용할 수 없음 - 잘못된 성공 없음)",
    "dnssecFailed": "DNSSEC 실패",
    "blocked": "차단됨(시스템 변경 권한 필요)",
    "clusterDone": "완료({{status}})",
    "clusterPartial": "완전히 성공하지 못함({{status}}) — 아래 세부정보 참조",
    "clusterFailed": "클러스터 작업 실패",
    "validateFailed": "기록 유효성 검사에 실패했습니다.",
    "validateRequestFailed": "유효성 검사 요청이 실패했습니다.",
    "lookupFailed": "조회 실패",
    "statRecords": "기록",
    "statSelected": "선택된",
    "notInstalled": "필수 DNS 소프트웨어가 설치되지 않았습니다.",
    "dsForRegistrar": "DS(등록기관용, 자동 게시되지 않음):",
    "tabs": {
      "zones": "구역",
      "records": "기록",
      "cluster": "무리",
      "dnssec": "DNSSEC",
      "tools": "도구",
      "ddns": "DDNS",
      "about": "설명"
    },
    "recentWrite": "최근 쓰기 결과",
    "zonesTitle": "구역({{count}})",
    "zonesDesc": "생성 후 영역 쓰기/적용",
    "createZone": "+ 영역 생성",
    "mailZonesMissing": "이메일 도메인에는 DNS 영역이 없습니다: {{domains}}.",
    "createMailZone": "메일 영역 생성",
    "colZoneName": "구역 이름",
    "colServerIp": "서버 IP",
    "colTemplate": "주형",
    "colStatus": "상태",
    "emptyZonesTitle": "아직 DNS 영역이 없습니다.",
    "emptyZonesDesc": "목록 도구 모음에서 \"영역 만들기\"를 사용하세요.",
    "applyZoneTitle": "영역 파일을 작성하고 PowerDNS Named.conf에 등록 + 재발견(쓰기 ≠ 답변 답변 작성)",
    "applyZone": "작성/적용",
    "recordsFor": "기록 — {{zone}}",
    "recordsNeedSelect": "기록(먼저 영역 선택)",
    "statusLabel": "상태",
    "addRecord": "+ 기록 추가",
    "writeZoneFile": "쓰기 및 로드 영역",
    "healthLoaded": "짐을 실은",
    "stateLoaded": "짐을 실은",
    "healthPublicNs": "공공 NS",
    "statePublicNs": "공공 NS",
    "publicNsHere": "→ 이 호스트",
    "requestLeTitle": "{{zone}}에 대한 Let’s Encrypt 요청",
    "requestZoneSsl": "영역에 대한 SSL 요청",
    "soaTitle": "SOA / 기본 TTL",
    "soaDesc": "영역 파일을 작성할 때 SOA 네임서버 및 $TTL",
    "soaBlockNs": "네임서버",
    "soaBlockTiming": "TTL 및 타이머",
    "recordsListTitle": "DNS 레코드({{count}})",
    "recordsListDesc": "편집 후 위의 \"Write zone file\"을 사용하여 이름이 지정된 디스크 상의 파일 업데이트를 수행합니다.",
    "soaNsLabel": "SOA 네임서버",
    "soaNsHint": "비워두세요 → 기본값 ns1.zone.",
    "defaultTtl": "기본 TTL(초)",
    "min1": "1분",
    "min5": "5분",
    "min10": "10분",
    "hour1": "1시간",
    "day1": "1일",
    "customSeconds": "맞춤 초",
    "soaSaved": "SOA 저장(제어 평면) - 적용할 \"영역 파일 쓰기\"",
    "soaSaveFailed": "SOA를 저장하지 못했습니다.",
    "soaSavedAndWritten": "Zone 파일을 저장하고 작성했습니다.",
    "soaWriteFailed": "SOA 쓰기 실패",
    "failed": "실패한",
    "colType": "유형",
    "colName": "이름",
    "colValue": "값",
    "emptyRecords": "기록 없음",
    "noZoneSelectedTitle": "선택한 영역이 없습니다.",
    "noZoneSelectedDesc": "영역 탭에서 영역을 선택하세요.",
    "clusterTitle": "DNS 클러스터",
    "clusterDesc": "영역 파일의 SCP 이후 원격 다시 로드(rndc/named/bind9/pdns)",
    "peerHost": "피어 호스트",
    "peerHostHint": "보조 NS 호스트 이름 또는 IP(SSH 키 로그인)",
    "sshUser": "SSH 사용자",
    "sshUserHint": "대상 경로에 쓰기 및 다시 로드 권한이 필요합니다.",
    "labelOptional": "라벨(선택사항)",
    "labelPlaceholder": "예를 들어 ns2 / hkg-edge-dns",
    "opPerPeer": "이 작업(피어당)",
    "registeredPeers": "등록된 피어({{count}})",
    "lastProbeHint": "프로브 또는 푸시 후 lastProbe 업데이트",
    "noPeers": "아직 등록된 동료가 없습니다.",
    "zoneDirMissing": "· 영역 디렉터리 누락",
    "generateKeys": "키 생성 자동으로 라이브로 전환되지 않습니다",
    "selectZoneFirst": "먼저 구역을 선택하세요",
    "lookupTitle": "DNS 조회(발굴)",
    "lookupDesc": "공개 리졸버를 쿼리합니다. 다중 A/CDN을 검증합니다. 답변을 발명하지 않습니다.",
    "lookupNamePlaceholder": "예를 들어 example.com 또는 www.example.com",
    "lookupType": "쿼리 유형",
    "lookupResults": "결과({{count}})",
    "lookupNoAnswerFail": "답변 없음/실패",
    "digNotInstalled": "발굴이 설치되지 않았습니다",
    "digNotInstalledHint": "이 탭에는 dig 바이너리(bind9-dnsutils)가 필요합니다. NXDOMAIN이 아닙니다. 호스트 패키지 관리자에서 bind9-dnsutils를 설치합니다. 이 페이지에서는 자동으로 설치되지 않습니다.",
    "method": "방법: {{method}}",
    "noAnswers": "답변 없음",
    "noAnswersDesc": "NXDOMAIN, RRset 비우기 또는 실패 해결",
    "lookupOkHint": "실시간 쿼리 결과",
    "lookupFailHint": "조회에 실패했거나 비어 있습니다. 이름, 유형, 업스트림 해석기를 확인하세요.",
    "validateTitle": "기록 검증",
    "validateDesc": "자동 유효성 검사(CNAME 충돌, A/AAAA 형식 등)를 생성/편집합니다.",
    "createZoneTitle": "DNS 영역 생성",
    "createZoneDesc": "템플릿에서 레코드 생성",
    "createZoneNeedValid": "유효한 영역 이름과 IPv4 주소를 입력하세요.",
    "zoneNameHint": "예를 들어 example.com(뒤에 점이 없음)",
    "invalidZone": "영역 이름이 잘못되었습니다. 실제 도메인(예: example.com)을 사용하세요.",
    "invalidIpv4": "IPv4가 잘못되었습니다. 각 옥텟은 0~255여야 합니다.",
    "serverIpv4": "서버 IPv4",
    "serverIpv4Hint": "템플릿 A 레코드에 사용되는 주소",
    "thisHostIpv4": "이 호스트의 공개 IPv4",
    "serverIpv6Optional": "서버 IPv6(선택 사항)",
    "serverIpv6Hint": "공개 v6이 존재하는 경우 AAAA를 작성합니다. 비워 둘 수 있다",
    "thisHostIpv6": "이 호스트는 공용 IPv6(선택 사항)",
    "soaNsCreateHint": "ns1.zone-name은 비워 두세요.",
    "defaultTtlLabel": "기본 TTL",
    "defaultTtlHint": "SOA 및 새 레코드에 대한 기본값",
    "recordTemplate": "레코드 템플릿",
    "editRecord": "기록 편집",
    "addRecordTitle": "레코드 추가",
    "recordModalDesc": "Zone {{zone}} · 저장 후 zone 파일 쓰기",
    "recordType": "DNS 레코드 유형",
    "nameHint": "@ = 정점; www = 하위 도메인",
    "mxPlaceholder": "예를 들어 10 mail.example.com.",
    "spfPlaceholder": "예를 들어 v=spf1 a mx ip4:… ip6:… ~all",
    "needIpv6": "IPv6 주소를 입력하세요.",
    "needIpv4": "IPv4 주소를 입력하세요.",
    "valueHint": "IP, 호스트 이름 또는 레코드 콘텐츠",
    "ipv6Address": "IPv6 주소",
    "ipv4Address": "IPv4 주소",
    "cacheTime": "캐시 시간",
    "deleteZoneTitle": "영역을 삭제하시겠습니까?",
    "deleteZoneDesc": "또한 해당 DNS 레코드 등록을 제거합니다.",
    "deleteRecordTitle": "기록을 삭제하시겠습니까?",
    "deleteRecordDesc": "제거 후 영역 파일 쓰기",
    "addPeer": "피어 추가",
    "probe": "조사",
    "pushZones": "푸시 존",
    "reloadRemote": "원격 재로드",
    "generateDnssec": "DNSSEC 키 생성",
    "lookup": "조회",
    "saveSoa": "SOA 저장",
    "saveSoaAndWrite": "영역 파일 저장 및 쓰기",
    "saveSoaSettings": "SOA 설정 저장",
    "saveSoaAndWriteBtn": "영역 파일 저장 및 쓰기",
    "goToZones": "구역으로 이동",
    "refresh": "새로고침",
    "pushReload": "푸시 + 새로고침",
    "pushOnly": "푸시만(다시 로드 없음)",
    "reloadOnly": "원격 재로드만 가능",
    "probePeers": "프로브 피어",
    "clusterDefaultHint": "기본값: 피어에 DNS를 푸시한 후 다시 로드합니다. 시스템 변경 권한이 필요합니다.",
    "notProbed": "아직 조사되지 않음",
    "probeHealthy": "조사: {{status}}",
    "pushReloadShort": "푸시+새로고침",
    "dnssecCardDesc": "키/DS를 생성합니다.",
    "currentZone": "현재 구역:",
    "generateAndSign": "키 생성 및 영역 서명 시도",
    "lookupName": "이름",
    "fillCurrentZone": "현재 영역 채우기",
    "lookupToolHint": "호스트 발굴을 선호합니다.",
    "validateExtra": "오류로 인해 저장이 차단됩니다. 경고(예: apex CNAME)는 알림만 제공합니다.",
    "createAfterHint": "생성 후 레코드 탭을 검토하고 영역 파일을 디스크에 씁니다.",
    "valueLabel": "값",
    "ttlHint": "캐시 시간",
    "soaSavedControl": "SOA 저장(컨트롤 플레인) — 적용할 영역 파일 쓰기",
    "soaNs2Label": "보조 NS(선택 사항)",
    "soaNs2Hint": "두 번째 네임서버 FQDN(예: ns2.example.com.",
    "soaHostmaster": "SOA 호스트마스터(RNAME)",
    "soaHostmasterHint": "@ 대신 점을 사용하세요. 호스트마스터.example.com.",
    "soaRefresh": "새로 고침(초)",
    "soaRetry": "재시도(초)",
    "soaExpire": "만료(초)",
    "soaMinimum": "최소/부정 캐시 TTL(초)",
    "soaTimingHint": "SOA 타이밍 매개변수(초)입니다.",
    "healthTitle": "DNS 서비스 상태",
    "healthDesc": "호스트 진실: 유닛 / 포트 53 / 작성된 영역 파일 / 로컬 발굴 응답(작성됨 ≠ 다시 로드됨 ≠)",
    "healthPillOk": "DNS 확인",
    "healthPillBad": "DNS 문제",
    "healthService": "서비스",
    "healthServiceDown": "아래에",
    "healthListen": "포트 53",
    "healthWritten": "영역 파일",
    "healthAnswering": "현지 답변",
    "healthAnsweringYes": "예",
    "healthAnsweringNo": "아니오/거절",
    "healthRefresh": "다시 조사",
    "healthProbeLocal": "프로브 상태 다시 확인",
    "healthOpen53": "방화벽 53 열기(TCP+UDP)",
    "healthOpened53": "공개 요청 53 TCP+UDP",
    "healthOpen53Failed": "53을 열지 못했습니다.",
    "healthPortClosed": "듣지 않는다",
    "healthPortOpenAlready": "53은 열려 있는 것으로 나타납니다.",
    "healthHint": "발굴이 거부되면 PowerDNS를 수정하고 포트 53을 연 다음 영역을 작성하십시오.",
    "stateService": "서비스",
    "stateListen": "듣다",
    "stateWritten": "쓴",
    "stateAnswering": "현지 응답",
    "lookupServer": "서버(@)",
    "lookupServerHint": "127.0.0.1 = 로컬 인증; 공개 IP 테스트는 외부에서 수행됩니다. 비어 있음 = 시스템 확인자",
    "healthHealPdns": "PowerDNS 바인딩 복구",
    "healNeedInstall": "PowerDNS가 설치되지 않았습니다. 먼저 소프트웨어 탭에 설치하세요.",
    "applyNeedService": "DNS 서비스가 실행되고 있지 않습니다. 적용하기 전에 시작하거나 설치하세요.",
    "goStartService": "DNS 서비스 시작",
    "startBindHint": "시작이 중지됨으로 돌아가면 포트 53이 systemd-resolved에 의해 유지되는 경우가 많습니다. 아래의 힐 바인드를 사용한 후 다시 시작하세요.",
    "deleteZoneNeedName": "이 영역 삭제 — 확인을 위해 영역 이름을 입력합니다.",
    "healthHealPdnsHint": "0에서 systemd-resolved와 충돌을 피하기 위해 로컬 주소를 공용 IP로 설정하십시오.",
    "healthHealPdnsOk": "PowerDNS가 {{ip}}에 바인딩되어 시작을 시도했습니다.",
    "healthHealPdnsFailed": "PowerDNS 복구 실패",
    "startProbeFailed": "시작 후 DNS 상태를 다시 확인할 수 없습니다.",
    "startNotListening": "PowerDNS 시작이 반환되었지만 장치가 포트 53에서 응답하지 않습니다.",
    "aboutTitle": "DNS 필수사항",
    "aboutSub": "구역 우선; 레코드, 클러스터 및 DNSSEC에는 선택된 도메인이 필요합니다.",
    "aboutZonesTitle": "영역 및 범위",
    "aboutZonesBody": "영역 아래에서 영역을 선택한 다음 해당 도메인에 대한 레코드, 클러스터 및 DNSSEC를 관리하세요.",
    "aboutHealthTitle": "서비스 상태",
    "aboutHealthBody": "도구를 사용하여 PowerDNS를 검색하고 바인딩을 복구하고 포트 53을 엽니다.",
    "aboutStackTitle": "소프트웨어",
    "aboutStackBody": "소프트웨어에서 PowerDNS 패키지를 확인/업데이트하세요.",
    "aboutDdnsTitle": "DDNS",
    "aboutDdnsBody": "이 호스트의 WAN 주소가 변경되면 DDNS 탭은 A/AAAA 레코드를 업데이트합니다. 영역 CRUD를 대체하지 않습니다. 서면은 공개 해결자 진실과 동일하지 않습니다.",
    "ddns": {
      "honesty": "성공적인 쓰기는 아직 공개 DNS가 아닙니다. 확인자 캐시와 등록자 NS는 계속 적용됩니다. 비어 있거나 개인 IP는 게시되지 않습니다.",
      "needExecute": "공급자 업데이트에는 루트 및 YSK_EXECUTE=1이 필요합니다. 감지가 계속 실행 중입니다.",
      "lastRun": "마지막 실행",
      "nextRun": "다음 실행",
      "wanRemembered": "WAN IPv4를 기억함",
      "updateNow": "지금 업데이트",
      "updateTitle": "감지된 WAN 주소를 게시하시겠습니까?",
      "updateDesc": "Calls Cloudflare, nsupdate, or the local zone for each enabled record. Type UPDATE to confirm.",
      "updated": "DDNS 업데이트 완료",
      "updateFailed": "DDNS 업데이트 실패",
      "probe": "프로브 WAN",
      "probed": "WAN 프로브 완료",
      "probeFailedUi": "WAN 프로브 실패",
      "forceHint": "이제 주소가 변경되지 않은 경우에도 업데이트가 다시 게시됩니다. 프로브는 절대로 공급자에게 전화하지 않습니다.",
      "saved": "저장됨",
      "saveFailed": "저장할 수 없습니다.",
      "deleted": "기록이 삭제되었습니다.",
      "emptyTitle": "DDNS 레코드 없음",
      "emptyDesc": "아래에 호스트 이름을 추가하세요. Cloudflare, RFC 2136 또는 이 호스트의 PowerDNS 영역(managedBy=ddns).",
      "colFqdn": "호스트 이름",
      "colProvider": "공급자",
      "colPublished": "게시됨",
      "colEnabled": "상태",
      "colFrom": "에서",
      "colTo": "에게",
      "colWhen": "언제",
      "colNote": "메모",
      "pauseRecord": "정지시키다",
      "resumeRecord": "재개하다",
      "statusCard": "WAN 상태",
      "recordsCard": "호스트 이름",
      "addCard": "호스트 이름 추가",
      "settingsCard": "설정",
      "historyTitle": "최근 업데이트",
      "historyEmpty": "아직 DDNS 기록이 없습니다.",
      "paused": "스케줄러가 일시중지되었습니다.",
      "pausedHint": "예약된 업데이트가 사용 중지되었습니다. 프로브 및 업데이트는 이제 계속 실행됩니다.",
      "schedulerOn": "예정된 업데이트",
      "schedulerOnHint": "진행 중인 스케줄러. 크론탭이 아닙니다. 꺼짐은 자동 upsert가 없음을 의미합니다.",
      "zone": "존",
      "zoneHint": "Leave empty to use the last two labels of the hostname",
      "zoneSelectHint": "이 호스트의 로컬 영역. Cloudflare와 RFC 2136은 모든 영역 이름을 사용할 수 있습니다.",
      "noLocalZones": "아직 로컬 영역이 없습니다. 로컬 PowerDNS를 사용하는 경우 먼저 영역 탭에서 하나를 생성하십시오.",
      "providerLocal": "로컬 PowerDNS",
      "proxied": "Cloudflare가 프록시됨",
      "proxiedHint": "주황색 구름. VPN/WireGuard 호스트 이름은 그대로 두십시오.",
      "proxiedWarnTitle": "Cloudflare 오렌지 구름?",
      "proxiedWarnDesc": "프록시된 레코드는 원본 IP를 숨깁니다. VPN 및 WireGuard 호스트 이름은 DNS로만 유지되어야 합니다. 확인하려면 PROXY를 입력하세요.",
      "addRecord": "호스트 이름 추가",
      "interval": "간격(초)",
      "intervalHint": "60-86400. 진행 중인 스케줄러; 크론탭이 아닙니다.",
      "cfToken": "Cloudflare API 토큰",
      "cfTokenHint": "쓰기 전용. 설정된 경우 Env CF_API_TOKEN이 사용됩니다. 다시는 표시되지 않습니다.",
      "tokenConfigured": "Cloudflare 토큰이 저장됩니다. 보관하려면 비워두세요.",
      "tokenMissing": "Cloudflare 토큰이 저장되지 않았습니다(env CF_API_TOKEN이 계속 적용됨).",
      "rfcServer": "RFC 2136 서버",
      "rfcServerHint": "원격 서버에는 데이터 디렉터리 아래에 TSIG 키 파일이 필요합니다. 루프백이 서명되지 않았을 수 있습니다. 비밀은 argv로 전달되지 않습니다.",
      "rfcKeyFile": "TSIG 키 파일",
      "rfcKeyFileHint": "DDNS 데이터 디렉터리를 기준으로 하거나 데이터 디렉터리 아래의 절대 경로를 기준으로 합니다.",
      "rfcKeyConfigured": "키 파일 경로가 저장됩니다. 보관하려면 비워두세요.",
      "primaryFqdn": "기본 호스트 이름",
      "primaryFqdnHint": "VPN 엔드포인트 힌트로 사용됩니다. 기존 피어를 다시 작성하지 않습니다.",
      "updateIdentity": "WAN IPv4를 기억하세요",
      "updateIdentityHint": "이 호스트에 대한 DDNS 상태의 마지막 공용 IPv4 저장",
      "vpnHint": "VPN 엔드포인트는 DDNS 호스트 이름을 사용할 수 있습니다(자동으로 다시 작성되지 않음).",
      "sslHint": "Let's Encrypt HTTP-01은 여기에서 해결하기 위해 호스트 이름이 필요합니다. IP 변경 시 인증서는 재발급되지 않습니다.",
      "deleteTitle": "DDNS 호스트 이름을 삭제하시겠습니까?",
      "deleteDesc": "확인하려면 {{fqdn}}를 입력하세요. Local ManagedBy=ddns 행은 영역 편집기에서 삭제되지 않습니다.",
      "err": {
        "requiresExecute": "게시하려면 루트 및 YSK_EXECUTE=1이 필요합니다.",
        "missingToken": "Cloudflare API 토큰이 누락되었습니다.",
        "rfc2136NeedKey": "원격 RFC 2136에는 데이터 디렉터리 아래에 TSIG 키 파일이 필요합니다.",
        "rfc2136KeyMissing": "TSIG 키 파일이 누락되었거나 데이터 디렉터리 외부에 있습니다.",
        "noPublicIpv4": "공개 IPv4가 감지되지 않았습니다.",
        "noPublicIpv6": "공개 IPv6가 감지되지 않았습니다.",
        "notPublicIpv4": "감지된 IPv4는 공개되지 않습니다.",
        "notPublicIpv6": "감지된 IPv6은 공개되지 않습니다.",
        "probeFailed": "공개 IP 프로브에 실패했습니다.",
        "localNoZone": "이 호스트 이름에 대한 로컬 DNS 영역이 없습니다.",
        "localNeedsDb": "로컬 공급자에는 제어 영역 데이터베이스가 필요합니다.",
        "managedByClash": "해당 이름은 DDNS가 아닌 다른 기능의 소유입니다.",
        "unknownProvider": "알 수 없는 DDNS 공급자입니다.",
        "nsupdateFailed": "nupdate가 실패했습니다.",
        "updateFailed": "공급자 업데이트에 실패했습니다.",
        "invalidFqdn": "호스트 이름이 잘못되었습니다.",
        "invalidType": "유형은 A 또는 AAAA여야 합니다.",
        "invalidProvider": "알 수 없는 공급자입니다.",
        "notFound": "기록을 찾을 수 없습니다.",
        "confirmMismatch": "확인은 호스트 이름과 일치해야 합니다.",
        "schedulerDisabled": "예약된 DDNS가 일시중지되었습니다.",
        "provider": "공급자가 오류를 반환했습니다."
      }
    },
    "createMailZoneNow": "메일존 생성 {{domain}}",
    "toolsFirewallTitle": "방화벽(UFW)",
    "toolsFirewallHint": "53번 포트를 허용하거나 차단합니다. PowerDNS를 시작하거나 중지하지 않습니다.",
    "toolsUnitTitle": "PowerDNS 유닛",
    "toolsUnitHint": "systemd 유닛 pdns — 시작, 중지, 재시작, 다시 로드.",
    "installConfirmTitle": "PowerDNS를 설치할까요?",
    "installConfirmDesc": "pdns-server를 설치하고 관리 설정을 씁니다. root와 YSK_EXECUTE=1이 필요합니다.",
    "installConfirmConsequence": "설치 후 시작하면 PowerDNS가 53번 포트를 바인딩합니다.",
    "installPort53Busy": "53번 포트가 이미 사용 중입니다. 해당 수신을 중지하거나 복구하기 전에는 PowerDNS 바인딩이 실패할 수 있습니다.",
    "installPort53BusyConsequence": "53번에서 응답을 기대하기 전에 바인드를 복구하거나 다른 수신을 중지하십시오."
  },
  "docker": {
    "title": "Docker",
    "subtitle": "이 서버에서 Docker 엔진, 컨테이너, 이미지, Compose 프로젝트, 디스크를 설치하고 제어합니다.",
    "refresh": "새로 고침",
    "notInstalled": "Docker Engine이 설치되어 있지 않습니다. 이 페이지에서 docker.io와 docker-compose-v2를 설치하세요.",
    "protected": "보호됨",
    "pruneConfirm": "volume 또는 시스템 정리를 확인하려면 PRUNE을 입력",
    "needEngineTitle": "Docker 엔진을 먼저 설치하세요",
    "stopEngineDesc": "그러면 이 호스트의 Docker 엔진과 모든 {{n}} 컨테이너가 중지됩니다.",
    "notInstalledValue": "미설치",
    "nameHint": "문자, 숫자, 밑줄, 점, 하이픈(최대 128개)",
    "volPlaceholder": "내 데이터",
    "netPlaceholder": "마이넷",
    "runPorts": "포트 게시",
    "runPortsHint": "호스트:줄당 컨테이너, 예: 8080:80",
    "runEnv": "환경",
    "runEnvHint": "KEY=라인당 값",
    "runRestart": "정책 다시 시작",
    "runNetwork": "네트워크",
    "runVolumes": "볼륨",
    "runVolumesHint": "볼륨:라인당 대상",
    "runAdvancedHint": "다중 서비스 스택의 경우 이 호스트에 이미 있는 유효성 검사기 노드 또는 Compose 파일을 사용하세요.",
    "daemonConfirmTitle": "데몬 설정을 적용하시겠습니까?",
    "daemonConfirmDesc": "daemon.json을 작성하고 docker.service를 다시 시작합니다. 모든 컨테이너가 중단됩니다.",
    "settingsHint": "안전한 daemon.json 항목만 엽니다. 적용하면 파일을 쓰고 docker.service를 다시 시작합니다.",
    "cli": {
      "usage": "사용법: ysk-server docker status|ps|images|volumes|networks|df|logs|inspect|exec|start|stop|restart|rm|pull|run|prune|engine|compose [--image IMG] [--name N] [--preset version|help|hostname] [--bin BIN] [--project P] [--execute] [--json]"
    },
    "tab": {
      "overview": "개요",
      "containers": "컨테이너",
      "images": "이미지",
      "compose": "Compose",
      "volumes": "Volume",
      "networks": "네트워크",
      "prune": "정리",
      "settings": "설정",
      "about": "설명"
    },
    "col": {
      "engine": "엔진",
      "containers": "컨테이너",
      "version": "버전",
      "dataRoot": "데이터 디렉터리",
      "disk": "디스크",
      "validators": "검증자 스택",
      "name": "이름",
      "image": "이미지",
      "status": "상태",
      "ports": "포트",
      "managed": "패널 관리",
      "size": "크기",
      "driver": "드라이버",
      "type": "유형",
      "reclaimable": "회수 가능"
    },
    "state": {
      "up": "실행 중",
      "down": "중지됨",
      "running": "달리기",
      "exited": "종료됨",
      "exitedCode": "종료됨({{n}})",
      "restarting": "다시 시작하는 중",
      "restartingCount": "다시 시작 · {{n}}회",
      "paused": "일시중지됨",
      "created": "생성됨",
      "dead": "죽은",
      "removing": "풀이",
      "unknown": "알 수 없음"
    },
    "df": {
      "images": "이미지",
      "containers": "컨테이너",
      "volumes": "로컬 볼륨",
      "builder": "캐시 구축",
      "other": "다른"
    },
    "actions": {
      "start": "시작",
      "stop": "중지",
      "restart": "다시 시작",
      "remove": "삭제",
      "logs": "로그",
      "inspect": "검사",
      "exec": "실행(version)",
      "run": "이미지 실행",
      "pull": "받기",
      "up": "시작",
      "down": "중지",
      "createVolume": "volume 만들기",
      "createNetwork": "네트워크 만들기",
      "pruneContainers": "컨테이너 정리",
      "pruneImages": "이미지 정리",
      "pruneVolumes": "volume 정리",
      "pruneSystem": "시스템 정리",
      "startEngine": "엔진 시작",
      "stopEngine": "엔진 중지",
      "restartEngine": "엔진 다시 시작",
      "applyDaemon": "엔진 설정 적용"
    },
    "empty": {
      "containers": "컨테이너 없음",
      "images": "이미지 없음",
      "compose": "Compose 프로젝트 없음",
      "composeDesc": "프로젝트는 이 호스트에 이미 있는 유효성 검사기 노드 또는 Compose 파일에서 가져옵니다. 이 페이지는 임의의 YAML 업로드를 허용하지 않습니다.",
      "composeCta": "검증인 노드 열기",
      "volumes": "volume 없음",
      "networks": "네트워크 없음"
    },
    "logs": {
      "empty": "아직 로그가 없습니다",
      "follow": "따르다"
    },
    "deleteRunningWarn": "이 컨테이너는 아직 실행 중이거나 다시 시작 중입니다. 강제로 제거됩니다.",
    "settings": {
      "logMaxSize": "컨테이너 로그 한도",
      "liveRestore": "실시간 복원(데몬 재시작 시 컨테이너 유지)",
      "mirrors": "Registry 미러(줄마다 URL 하나)",
      "insecure": "암호화되지 않은 Registry(줄마다 호스트 하나)"
    },
    "about": {
      "body": "Docker는 Nginx와 같은 등급의 YSK Server 호스트 서비스입니다. 패널에서 Ubuntu docker.io + docker-compose-v2로 설치합니다. 검증자 노드는 yskval-* Compose 프로젝트로 실행됩니다.",
      "honesty": "호스트 변경에는 root와 YSK_EXECUTE=1이 필요합니다. 기본은 시험 실행입니다. 이 페이지는 Kubernetes가 아닙니다.",
      "validators": "검증자 노드 열기"
    },
    "alerts": {
      "daemonTitle": "Docker 데몬이 중지됨",
      "daemonBody": "Docker는 설치되어 있지만 docker.service가 활성 상태가 아닙니다. 검증자 스택을 시작할 수 없습니다."
    },
    "errors": {
      "notInstalled": "Docker가 설치되어 있지 않습니다",
      "daemonDown": "Docker 데몬이 활성 상태가 아닙니다",
      "needCompose": "docker compose(v2 플러그인)가 필요합니다",
      "badImage": "이미지 참조가 올바르지 않습니다",
      "badName": "이름이 올바르지 않습니다",
      "badPort": "포트 공개가 올바르지 않습니다",
      "badEnv": "환경 변수가 올바르지 않습니다",
      "badVolume": "볼륨 마운트가 올바르지 않습니다",
      "badNetwork": "네트워크가 올바르지 않습니다",
      "protectedNetwork": "내장 Docker 네트워크는 삭제할 수 없습니다",
      "badRestart": "재시작 정책이 올바르지 않습니다",
      "badPrune": "정리 범위가 올바르지 않습니다",
      "needPruneConfirm": "volume 또는 시스템 정리에는 confirm=PRUNE이 필요합니다",
      "badDaemon": "엔진 설정이 올바르지 않습니다",
      "composeMissing": "이 프로젝트의 Compose 파일을 찾을 수 없습니다",
      "logsFailed": "컨테이너 로그를 읽을 수 없습니다",
      "mutateFailed": "Docker 명령이 실패했습니다",
      "engineFailed": "docker.service를 제어할 수 없습니다",
      "badExec": "exec는 허용 목록의 바이너리와 프리셋만 가능합니다(셸 불가, TTY 불가)",
      "uninstallBusy": "Docker를 제거하기 전에 패널이 관리하는 컨테이너(검증자 스택 포함)를 중지하십시오",
      "badCommand": "잘못된 명령 또는 진입점",
      "portBusy": "호스트 포트 {{bind}}:{{port}}가 이미 사용 중입니다.",
      "nameInUse": "{{name}}라는 컨테이너가 이미 존재합니다. 제거하거나 다른 이름을 선택하세요.",
      "unpublished": "컨테이너가 네트워크에 연결되지 않았거나 포트를 게시하지 않았습니다. 이것을 시작된 것으로 취급하지 않습니다."
    },
    "notes": {
      "dryMutate": "시험 실행입니다. 호스트를 바꾸려면 --execute와 YSK_EXECUTE=1을 사용하세요.",
      "dryPrune": "정리 미리보기(적용되지 않음).",
      "dryEngine": "엔진 제어는 시험 실행입니다.",
      "dryDaemon": "/etc/docker/daemon.json을 쓰고 docker.service를 다시 시작합니다.",
      "daemonWrote": "daemon.json을 썼습니다",
      "start": "컨테이너를 시작했습니다",
      "stop": "컨테이너를 중지했습니다",
      "restart": "컨테이너를 다시 시작했습니다",
      "remove": "컨테이너를 삭제했습니다",
      "ran": "이미지로 컨테이너를 시작했습니다",
      "leftoverRemoved": "바인드 실패 후 남은 컨테이너 {{name}} 제거",
      "pulled": "이미지를 받았습니다",
      "exec": "허용 목록 exec를 실행했습니다",
      "imageRemoved": "이미지를 삭제했습니다",
      "volumeCreated": "volume을 만들었습니다",
      "volumeRemoved": "volume을 삭제했습니다",
      "networkCreated": "네트워크를 만들었습니다",
      "networkRemoved": "네트워크를 삭제했습니다",
      "pruned": "정리가 끝났습니다",
      "compose": {
        "up": "Compose 프로젝트를 시작했습니다",
        "down": "Compose 프로젝트를 중지했습니다",
        "restart": "Compose 프로젝트를 다시 시작했습니다",
        "rm": "Compose 프로젝트가 삭제되었습니다."
      },
      "engine": {
        "start": "docker.service를 시작했습니다",
        "stop": "docker.service를 중지했습니다",
        "restart": "docker.service를 다시 시작했습니다"
      }
    },
    "ui": {
      "whatYouGet": "이 페이지에서 할 수 있는 일",
      "whatYouGetLead": "먼저 Docker Engine을 설치합니다. 이후 단일 컨테이너 실행, 이미지 받기, 이 호스트의 검증자 Compose 스택 확인이 가능합니다.",
      "capEngine": "엔진",
      "capEngineDesc": "docker.io와 docker-compose-v2를 한 번에 설치합니다. docker.service 시작과 중지도 여기에서 합니다.",
      "capWork": "컨테이너와 이미지",
      "capWorkDesc": "자주 쓰는 이미지를 고르고 받은 뒤 실행하고, 로그를 보거나 검사합니다.",
      "capStacks": "검증자 스택",
      "capStacksDesc": "다중 서비스 스택은 검증자 Compose 프로젝트(yskval-*)입니다. 이 페이지는 YAML 업로드를 받지 않습니다.",
      "cardEngine": "엔진",
      "cardDisk": "디스크",
      "cardWork": "이 호스트",
      "compose": "Compose",
      "cgroup": "cgroup",
      "used": "사용량",
      "free": "여유",
      "running": "실행 중",
      "images": "이미지",
      "volumes": "Volume",
      "networks": "네트워크",
      "goImages": "이미지",
      "goValidators": "검증자 노드",
      "imagePickHint": "자주 쓰는 이미지를 고르세요. 다른 참조가 필요할 때만 기타를 사용합니다.",
      "imageCustom": "기타",
      "driver": "드라이버",
      "driverLocalOnly": "이 패널은 local volume만 만듭니다.",
      "netDefaultDriver": "새 네트워크는 Docker 기본 bridge 드라이버를 사용합니다.",
      "pruneWhat": "삭제할 항목",
      "pruneAck": "사용하지 않는 데이터가 삭제되며 복구할 수 없음을 이해합니다",
      "pruneAckDesc": "Volume 또는 시스템 정리는 되돌릴 수 없습니다. 선택한 범위의 중지된 컨테이너와 미사용 이미지를 삭제합니다.",
      "pruneNow": "지금 정리",
      "useMirrors": "Registry 미러 사용",
      "useInsecure": "암호화되지 않은 Registry 허용",
      "publishPorts": "호스트에 포트 공개",
      "attachVolume": "Volume 연결",
      "setEnv": "환경 변수 설정",
      "defaultNet": "기본",
      "mountPath": "마운트 경로",
      "restartNo": "안 함",
      "restartUnless": "중지하기 전까지",
      "restartAlways": "항상",
      "restartOnFail": "실패 시",
      "needAck": "정리 전에 확인해 주세요",
      "scopeContainers": "중지된 컨테이너",
      "scopeImages": "미사용 이미지",
      "scopeVolumes": "미사용 Volume",
      "scopeBuilder": "빌드 캐시",
      "scopeSystem": "미사용 전부",
      "noVolumesYet": "Volume이 없습니다. 먼저 Volume 탭에서 만드세요.",
      "command": "명령",
      "commandHint": "선택 과목. 이미지 뒤의 토큰. 이미지 CMD를 사용하려면 비워두세요.",
      "entrypoint": "진입점",
      "entrypointHint": "선택적 단일 바이너리. ENTRYPOINT 이미지를 사용하려면 비워 두세요.",
      "portMap": "호스트:컨테이너",
      "portOccupied": "이 호스트 포트는 이미 사용 중입니다.",
      "validatorImage": "검증인 노드에 의해 관리됨",
      "newVolume": "새로운 명명된 볼륨",
      "loopbackUrl": "로컬 테스트 URL",
      "nginxProxy": "Nginx 역방향 프록시 만들기",
      "intentPorts": "요청됨(게시되지 않음)",
      "customPort": "다른 호스트 포트",
      "customPortHost": "호스트 포트",
      "customPortContainer": "컨테이너 포트",
      "pctUsed": "{{n}}% 사용",
      "customPortHint": "1~65535. 예: 9090 → 80.",
      "pickBridge": "브리지 네트워크"
    },
    "deleteTitle": "삭제 {{id}}",
    "deleteDesc": "이 작업은 취소할 수 없습니다.",
    "deleteC1": "리소스가 이 호스트에서 제거됩니다.",
    "deleteComposeVal": "이것은 유효성 검사기 스택입니다. 유효성 검사기 인스턴스도 삭제됩니다.",
    "pruneTitle": "Docker 리소스 정리",
    "pruneDesc": "확인하려면 PRUNE을 입력하세요. 사용하지 않은 데이터는 복원할 수 없습니다.",
    "pruneC1": "선택한 범위에서 사용되지 않은 리소스가 삭제됩니다.",
    "pruneC2": "볼륨 및 시스템 정리는 사용되지 않는 데이터 볼륨을 영구적으로 삭제합니다.",
    "pruneC3": "이 범위에서 중지된 컨테이너 또는 사용되지 않은 이미지는 제거됩니다."
  },
  "email": {
    "title": "이메일",
    "subtitle": "도메인, DNS, 사서함 및 릴레이",
    "externalTodos": "서버 외부에서 처리해야 하는 작업",
    "ptr": "역방향 DNS(PTR)는 VPS/클라우드 공급자가 설정해야 합니다.",
    "port25": "아웃바운드 포트 25가 차단되었을 수 있습니다. 차단 해제를 요청하거나 릴레이를 사용하세요",
    "create": "메일 도메인 생성",
    "createHint": "생성 후 DNS, 사서함 및 상태 확인을 검토하세요.",
    "domains": "등록된 도메인",
    "empty": "아직 이메일 도메인이 없습니다.",
    "emptyHint": "DNS 레코드와 외부 할 일을 가져오려면 도메인을 만드세요.",
    "searchPlaceholder": "도메인 검색…",
    "domain": "도메인",
    "serverIp": "서버 IP",
    "notFound": "이메일 도메인을 찾을 수 없습니다",
    "backToList": "이메일 도메인으로 돌아가기",
    "softwareNeeded": "필수 이메일 소프트웨어가 설치되지 않았습니다.",
    "applyApplied": "적용된",
    "applyWritten": "쓴",
    "applyFailed": "실패한",
    "applyDraft": "초안",
    "queueMsgCount": "대기열 {{count}} 메시지",
    "queueLoadFailed": "대기열을 로드하지 못했습니다.",
    "queueFlushRequested": "대기열 플러시가 요청되었습니다.",
    "queueFlushFailed": "플러시 실패",
    "queueDeleted": "삭제됨 {{id}}",
    "queueDeleteFailed": "삭제 실패",
    "pillDomains": "{{count}} 도메인",
    "pillNoDomain": "도메인 없음",
    "statDomains": "도메인",
    "statHealthy80": "건강 ≥80",
    "statApplied": "적용된",
    "statDraft": "초안",
    "tabDomains": "도메인",
    "tabWebmail": "웹메일",
    "tabQueue": "대기줄",
    "tabStack": "소프트웨어",
    "tabOps": "역할",
    "webmailGlobalDesc": "전체 패널을 위한 하나의 웹메일 앱 — 모든 메일 도메인은 동일한 URL을 통해 로그인합니다.",
    "webmailGlobalHint": "Roundcube/SnappyMail을 다운로드하려면 시스템 변경 권한(YSK_EXECUTE)과 아웃바운드 네트워크가 필요합니다. EXECUTE 없이는 절반 프로젝트가 생성되지 않습니다.",
    "webmailMovedHint": "웹메일은 전역적으로(도메인별로 구성되지 않음) 구성됩니다.",
    "openGlobalWebmailSettings": "웹메일 설정 열기",
    "domainsTitle": "도메인({{filtered}}/{{total}})",
    "domainsListDesc": "이 호스트에 등록된 메일 도메인",
    "emptyFilterHint": "검색과 일치하는 도메인이 없습니다.",
    "emptyCreateHint": "도메인을 등록하려면 도구 모음에서 만들기를 사용하세요.",
    "queueLocalTitle": "메일 대기열",
    "needExecute": "YSK_EXECUTE 필요",
    "viewQueue": "대기열 보기",
    "flushQueue": "대기열 플러시",
    "flushQueueEmpty": "대기열이 비어 있습니다.",
    "flushQueueNeedExecute": "큐를 플러시하려면 YSK_EXECUTE(호스트 실행 권한)가 필요합니다.",
    "queueHint": "로컬 Postfix 큐. 조회는 읽기 탐침이며 비우기는 YSK_EXECUTE가 필요합니다.",
    "deleteThisId": "이 ID 삭제",
    "queueEmpty": "지연된 메일 없음",
    "queueEmptyHint": "지연된 메시지 없음",
    "mtaTitle": "MTA 소프트웨어",
    "mtaBody": "프로브 및 원클릭 설치는 위 배너에 의해 구동됩니다.",
    "mtaSmtp": "SMTP 아웃바운드/인바운드",
    "mtaImap": "IMAP / POP3 사서함",
    "mtaDkim": "아웃바운드 DKIM 서명",
    "mtaMissingHint": "소프트웨어가 누락되면 배너에 설치/재탐색이 표시됩니다.",
    "pathTitle": "도메인 설정 경로",
    "path1": "도메인 등록(오른쪽 상단)",
    "path2": "도메인 상세정보 열기 → 원클릭 메일 설정",
    "path3": "DNS 페이지 또는 외부 체크리스트에 MX/SPF/DKIM/DMARC 추가",
    "path4": "메일/웹메일 호스트 이름용 SSL",
    "viewDomainList": "도메인 목록 보기",
    "opsPanelTitle": "패널 대 외부",
    "opsThisPage": "이 페이지: 도메인 레지스트리, 대기열 보기, 소프트웨어 프로브",
    "opsDetail": "도메인 세부정보: 부트스트랩, 사서함, 별칭, 릴레이, 웹메일",
    "opsHost": "호스트 공급자: PTR, 포트 25 아웃바운드 정책",
    "opsRegistrar": "등록기관: MX / SPF / DKIM / DMARC 게시",
    "statusTitle": "상태",
    "statusDraft": "초안: 패널만",
    "deliverabilityChecks": "체크 무늬",
    "statusWritten": "기록됨: 관리 파일이 기록되었지만 라이브가 아닐 수 있습니다.",
    "statusApplied": "적용됨: 이전에 성공적으로 적용되었습니다(여전히 서비스가 활성 상태인지 확인).",
    "statusReputation": "받은 편지함 평판은 결코 100% 자동화될 수 없습니다.",
    "createModalDesc": "",
    "registerDomain": "만들기",
    "domainApexHint": "메일이 없습니다. 접두사",
    "serverIpv4Hint": "MX/A/SPF",
    "serverIpv4Ph": "공개 IPv4",
    "serverIpv6": "IPv6(선택사항)",
    "serverIpv6Hint": "AAAA/SPF IP6",
    "serverIpv6Ph": "선택 과목",
    "registerNote": "",
    "flushConfirmTitle": "전체 메일 대기열을 비우시겠습니까?",
    "flushConfirmDesc": "대기 중인 메시지가 삭제됩니다. 취소할 수 없습니다.",
    "flushConfirm": "플러시",
    "tabMailbox": "사서함",
    "tabAliases": "별칭 / 전달",
    "tabHealth": "건강",
    "tabRelay": "계전기",
    "tabSieve": "필터/SSO",
    "tabAdvanced": "고급의",
    "pillApplied": "적용된",
    "pillManaged": "관리되는 파일",
    "pillDraft": "초안",
    "statHealth": "건강",
    "statApply": "적용",
    "statDomain": "도메인",
    "pausedFlag": "일시중지됨(플래그)",
    "normal": "정상",
    "statMailboxes": "사서함",
    "statDnsRecords": "DNS 레코드",
    "dnsTodosTitle": "DNS",
    "copyAllRecords": "모든 기록 복사",
    "openDnsPage": "DNS 페이지 열기",
    "healthScore": "건강 점수",
    "healthUnchecked": "아직 확인되지 않음",
    "healthUncheckedHint": "DNS / PTR / 25번 포트는 아직 검사하지 않았습니다.",
    "healthPartialScore": "부분 {{n}}/100(DNS만 해당)",
    "healthPartialHint": "DNS 체크리스트만 — 라이브 및 블랙리스트는 조사되지 않습니다.",
    "deliverabilityScore": "전달성 팩",
    "opendkimNoReload": "OpenDKIM은 다시 로드를 지원하지 않습니다. 키나 테이블 변경 후 재시작하십시오.",
    "opendkimNoReloadTitle": "이 스택에서는 systemctl reload opendkim을 지원하지 않습니다",
    "healthChecklist": "점검표 {{score}}/100",
    "healthChecklistHint": "점검표 점수 — DNS/PTR/포트 25 실측 전",
    "healthLiveHint": "실측 점수",
    "suggestedRecords": "추천 기록",
    "externalTodosCount": "외부 할 일",
    "colType": "유형",
    "colName": "이름",
    "colValue": "값",
    "colNote": "메모",
    "copy": "복사",
    "noDnsRecords": "DNS 레코드 없음",
    "externalTodosHeading": "외부 할 일(패널에서는 수행할 수 없음)",
    "externalTodosBody": "PTR, 포트 25 및 등록자 DNS가 귀하에게 있습니다.",
    "copyExternalTodos": "외부 할일 목록 복사",
    "todoDone": "완료",
    "todoPending": "토도",
    "refreshDnsHint": "DNS 제안을 로드하려면 새로 고침을 클릭하세요.",
    "mailboxListTitle": "우편함({{count}})",
    "createMailbox": "+ 사서함 만들기",
    "writeDovecot": "비둘기장 비밀번호 DB 작성",
    "noMailboxes": "아직 사서함이 없습니다. 사서함 만들기를 클릭하세요.",
    "mailboxOpsResult": "메일함 작업 결과",
    "aliasesTitle": "별칭 / 전달 / 포괄",
    "aliasType": "유형",
    "aliasTypeAria": "별칭 유형",
    "typeForward": "앞으로",
    "typeAlias": "별명",
    "localPart": "지역 부분",
    "localPartHint": "예를 들어 매상",
    "targetMailbox": "대상 사서함",
    "targetMailboxHint": "여러 개일 경우 쉼표로 구분",
    "addAlias": "별칭 추가",
    "noAliases": "아직 별칭/전달이 없습니다.",
    "aliasResult": "별칭 결과",
    "autoreplyTitle": "자동응답/일시중지",
    "autoreplyDesc": "자동응답",
    "autoreplyBodyHint": "선택적으로 시스템에 적용",
    "enableAutoreply": "자동응답 활성화",
    "enableAutoreplyDesc": "휴가.체; 시스템 적용 후 .dovecot.sieve를 마운트합니다.",
    "applyToSystem": "시스템에 적용(Postfix / Dovecot)",
    "applyToSystemDesc": "YSK_EXECUTE=1 + 루트가 필요합니다. 실패는 성공으로 위장되지 않는다",
    "subject": "주제",
    "body": "몸",
    "saveApplyAutoreply": "자동응답 저장 및 적용",
    "saveAutoreplyWritten": "자동응답(작성) 저장",
    "suspendApply": "일시 중지 및 REJECT 적용",
    "suspendWritten": "일시 중지 도메인(작성됨)",
    "resumeApply": "지도 재개 및 업데이트",
    "resumeWritten": "이력서 도메인(작성)",
    "flagsResult": "플래그/시스템 적용 결과",
    "defaultAutoreplySubject": "자동응답",
    "defaultAutoreplyBody": "귀하의 이메일을 받았으며 나중에 답변해 드리겠습니다.",
    "healthLiveTitle": "배달 상태(라이브 DNS/포트 프로브)",
    "healthLiveDesc": "실시간 확인",
    "serverIpLabel": "서버 IP",
    "liveCheck": "라이브체크",
    "liveOk": "대체로 괜찮음",
    "liveBad": "발견된 문제",
    "notTested": "테스트되지 않음",
    "blacklist": "블랙리스트",
    "healthExternalNote": "PTR 및 포트 25는 호스트 공급자에서 설정되어야 합니다.",
    "runLiveCheck": "실시간 확인 실행",
    "dnsblThisIp": "DNSBL(이 IP)",
    "multiIpRbl": "다중 IP RBL",
    "warmupAdvice": "워밍업 팁",
    "probeMatrix": "프로브 결과",
    "colItem": "목",
    "colStatus": "상태",
    "pass": "통과하다",
    "fail": "실패하다",
    "unknown": "알 수 없음",
    "colDetail": "세부 사항",
    "outboundPort25": "아웃바운드 포트 25",
    "noProbeResults": "아직 프로브 결과가 없습니다",
    "noLiveYet": "아직 라이브 체크가 실행되지 않았습니다.",
    "noLiveYetHint": "먼저 실시간 확인을 실행하세요.",
    "mailSslTitle": "인증서 및 TLS",
    "mailSslHint": "실제 문제는 SSL 페이지에 있습니다. 여기에서 메일/웹메일/도메인 호스트 이름으로 이동하세요.",
    "openSslPage": "SSL 페이지 열기",
    "webmailSsoSkeleton": "웹메일 SSO 뼈대",
    "writeRoundcubeSso": "Roundcube SSO 뼈대 작성",
    "ssoSkeletonSymlink": "SSO 스켈레톤 + 시스템 심볼릭 링크",
    "rateLimitTitle": "아웃바운드 비율/스팸 방지",
    "rateLimitDesc": "Postfix anvil 및 Rspamd 설정을 작성합니다(YSK_EXECUTE + 루트에만 적용됨)",
    "hourlyMsgCap": "시간별 메시지 한도",
    "hourlyMsgCapHint": "글로벌은 도메인 전체에서 최소값을 사용합니다.",
    "enableAntispam": "스팸 방지 표시 활성화(Rspamd 멀티맵)",
    "enableAntispamDesc": "꺼짐은 도메인 스팸 방지를 꺼짐으로 표시합니다.",
    "writeControlOnly": "쓰기 패널만",
    "applyToSystemBtn": "시스템에 적용",
    "dnsblResult": "DNSBL 결과",
    "warmupResult": "워밍업 결과",
    "policyResult": "정책 결과",
    "relayTitle": "SMTP 아웃바운드 릴레이",
    "relayHost": "릴레이 호스트",
    "applyRelaySystem": "시스템 Postfix에 적용",
    "applyRelaySystemDesc": "쓰기 시스템 Postfix 릴레이",
    "saveApplyRelay": "저장하고 시스템에 적용",
    "saveOnly": "설정만 저장",
    "relayResult": "릴레이 결과",
    "webmailSsoTitle": "웹메일 싱글 사인온(SSO)",
    "webmailSsoDesc": "일회성 토큰을 발행합니다.",
    "mailboxPasswordOptional": "메일함 비밀번호(선택사항)",
    "mailboxPasswordHint": "선택 과목",
    "mailboxPasswordPh": "비밀번호를 사용하면 토큰이 Roundcube에 자동 로그인될 수 있습니다.",
    "ssoTokenHint": "단기 로그인 토큰 발행",
    "issueSsoToken": "SSO 토큰 발행",
    "sieveTitle": "체 필터",
    "sieveDesc": "필터",
    "sieveTemplateHint": "기본 필터 템플릿",
    "writeDefaultSieve": "기본 체 쓰기",
    "listWrittenFiles": "작성된 파일 나열",
    "result": "결과",
    "domainSslTitle": "이 도메인의 SSL",
    "domainSslDesc": "메일 호스트 SSL",
    "requestCert": "{{domain}}에 대한 인증서 요청",
    "clientAutoTitle": "클라이언트 자동 구성",
    "clientAutoDesc": "클라이언트 자동 구성",
    "clientAutoHint": "자동 검색/자동 구성 생성",
    "generateCopyXml": "구성 XML 생성 및 복사",
    "queueTitle": "메일 대기열",
    "queueDesc": "로컬 대기열",
    "publicAutoconfig": "공개 구성",
    "bootstrapTitle": "원클릭 메일 설정",
    "bootstrapDesc": "원클릭 설정",
    "adminPassword": "관리자 비밀번호",
    "adminPasswordHint": "관리 사서함 비밀번호",
    "adminPasswordPh": "8자 이상",
    "adminPasswordRequired": "관리자 비밀번호를 8자 이상으로 설정하세요.",
    "bootstrapBtn": "원클릭 메일 설정",
    "webmailInstallDesc": "Roundcube 다운로드/적용",
    "webmailHostname": "웹메일 호스트 이름",
    "webmailHostnameHint": "가상 호스트 서버_이름, 예: webmail.example.com",
    "installWebmail": "웹메일 설치/적용",
    "bootstrapResult": "부트스트랩/웹메일 결과",
    "createMailboxTitle": "사서함 만들기",
    "createMailboxDesc": "전체 주소는 {{local}}@{{domain}}입니다.",
    "createMailboxBtn": "사서함 만들기",
    "localPartLabel": "지역 부분",
    "localPartFullHint": "전체 주소는 {{local}}@{{domain}}입니다.",
    "passwordOptionalHint8": "선택 과목; 해시는 8자 이상인 경우에만 작성됩니다.",
    "live": {
      "noMx": "MX 없음",
      "mxLookupFailed": "MX 조회 실패",
      "noSpf": "SPF 없음 TXT",
      "spfLookupFailed": "SPF 조회 실패",
      "noDkim": "DKIM TXT 없음",
      "dkimLookupFailed": "DKIM 조회 실패",
      "noDmarc": "DMARC 없음",
      "dmarcLookupFailed": "DMARC 조회 실패",
      "noPtr": "PTR 없음",
      "ptrLookupFailed": "PTR 조회 실패",
      "port25Open": "아웃바운드 TCP 25가 열려 있는 것으로 나타납니다(gmail-smtp-in.l.google.com에 대한 프로브).",
      "port25Blocked": "아웃바운드 TCP 25 프로브 실패 - 차단되었을 수 있습니다. 차단 해제 요청 또는 릴레이 사용",
      "dnsblListed": "등록됨: {{list}}",
      "dnsblClean": "청소 {{list}}"
    },
    "deliv": {
      "mx": "MX 레코드",
      "mxFix": "메일 호스트를 가리키는 DNS 공급자에 MX 추가",
      "spf": "SPFTXT",
      "spfFix": "이 IP를 포함하여 v=spf1 게시",
      "dkim": "DKIM TXT",
      "dkimFix": "게시 선택기._domainkey 패널의 TXT",
      "dmarc": "DMARC TXT",
      "dmarcFix": "_dmarc 정책 게시(p=none으로 시작)",
      "ptr": "역방향 DNS(PTR)",
      "ptrFix": "메일 호스트 이름과 일치하도록 VPS/클라우드 콘솔에서 PTR을 설정합니다. 패널에서는 이를 설정할 수 없습니다.",
      "port25": "아웃바운드 포트 25",
      "port25Fix": "호스팅 업체에 포트 25 잠금 해제를 요청하거나 SMTP 릴레이를 구성하세요(제출 587).",
      "dnsbl": "DNSBL 평판",
      "dnsblFix": "나열된 서비스에서 목록을 삭제합니다. 깨끗해질 때까지 전송을 중지하세요",
      "relay": "SMTP 릴레이(포트 25가 차단된 경우)",
      "relayOptional": "포트 25 프로브 개방 - 릴레이 옵션",
      "relayPresent": "dataDir 아래에 릴레이 구성이 있습니다(적용하려면 여전히 EXECUTE가 필요할 수 있음).",
      "relayMissing": "릴레이가 구성되지 않음 - 포트 25가 계속 차단된 경우 필수",
      "relayFix": "패널 이메일 → 릴레이 또는 릴레이가 포함된 이메일 부트스트랩을 호스팅하는 ysk-server",
      "warmup": "워밍업 계획",
      "warmupDetail": "{{phases}} 단계 · 최대 1일 {{day1}} 메시지",
      "warmupFix": "단계 제한을 따르십시오. 새 IP에서 콜드 리스트를 폭파하지 마세요",
      "honesty1": "패널은 전 세계 받은 편지함 배달을 보장하지 않습니다(Gmail/Outlook 필터링은 외부입니다).",
      "honesty2": "PTR 및 포트 25는 YSK 제어 평면이 아닌 VPS/네트워크 공급자가 소유합니다.",
      "honesty3": "DNS MX/SPF/DKIM/DMARC는 권한 있는 DNS 공급자에 게시되어야 합니다.",
      "honestyPortBlocked": "포트 25가 차단된 것으로 나타납니다. 볼륨이 커지기 전에 릴레이를 사용하거나 잠금 해제를 요청하세요.",
      "honestyPortOk": "포트 25 프로브 성공 - 여전히 바운스 및 DNSBL을 모니터링합니다."
    },
    "catchall": "포괄",
    "webmailRoundcube": "웹메일",
    "warmup": {
      "p1g1": "거래/알려진 양호한 수신자만 보내기",
      "p1g2": "바운스를 모니터링합니다. 불만율을 0에 가깝게 유지",
      "p1g3": "SPF/DKIM/DMARC/PTR이 볼륨 이전에 활성화되어 있는지 확인하세요.",
      "p2g1": "참여 중인 연락처로만 천천히 확장",
      "p2g2": "매일 DNSBL을 확인하세요. 나열된 경우 일시중지",
      "p2g3": "제한된 경우 포트 25에서 대량 제출보다 587 제출을 선호합니다.",
      "p3g1": "측정항목이 깨끗하게 유지되는 경우에만 볼륨을 두 배로 늘립니다.",
      "p3g2": "세그먼트 목록 하드 바운스를 즉시 제거",
      "p4g1": "블록이 없으면 정상 볼륨에 접근",
      "p4g2": "DMARC 루아를 계속 모니터링하세요.",
      "c1": "PTR은 HELO/EHLO(메일 호스트 이름)와 일치합니다.",
      "c2": "SPF + DKIM + DMARC 게시 및 정렬",
      "c3": "Spamhaus / SpamCop / Barracuda에서 DNSBL 정리",
      "c4": "아웃바운드 포트 25가 열려 있거나 릴레이가 구성됨",
      "c5": "구매한 \"대량 이메일\" IP 범위 없음",
      "c6": "도메인 수명/기록 고려(새 도메인 = 느린 진입)",
      "noteNewIp": "이 IP를 새 IP로 취급합니다. 1~3일차 한도에서 시작하세요.",
      "noteOldIp": "기존 IP는 구성 변경 후에도 점진적인 증가의 이점을 계속 누릴 수 있습니다.",
      "noteProcess": "워밍업은 작업자 프로세스입니다. YSK는 ESP 볼륨 마케팅이 아닌 팁 + DNSBL을 추적합니다."
    },
    "health": {
      "dnsUnconfirmed": "DNS 레코드(MX/SPF/DKIM)가 아직 확인되지 않았습니다.",
      "dmarcMissing": "DMARC 누락 - 적극 권장",
      "dmarcUnpublished": "DMARC가 패널에서 생성되었지만 아직 공개 DNS에 게시되지 않았습니다.",
      "ptrBad": "PTR 역방향 DNS가 없거나 잘못됨 - VPS 공급자에게 요청",
      "port25Blocked": "아웃바운드 포트 25가 차단된 것으로 나타납니다. 차단 해제를 요청하거나 SMTP 릴레이를 사용하세요.",
      "port25Unknown": "포트 25 상태를 알 수 없음 - 연결 확인 실행"
    },
    "stack": {
      "tlsNote": "SMTP/IMAP용 Let's Encrypt를 통한 TLS 인증서",
      "externalNote": "전달을 위해서는 외부 DNS/PTR/Port25가 여전히 필요합니다."
    },
    "test": {
      "defaultSubject": "YSK 서버 메일 테스트",
      "needMta": "로컬 MTA(Postfix) 설치 및 포트 25/릴레이 구성 필요",
      "checkSpam": "전송 후 수신자의 스팸 폴더 및 서버 메일 로그를 확인하세요.",
      "hintDeferred": "연기된 경우: 포트 25 블록 또는 릴레이 자격 증명을 확인하세요.",
      "hintSpam": "승인되었지만 스팸인 경우: SPF/DKIM/DMARC/PTR 및 준비 작업을 개선하세요.",
      "hintLogs": "/var/log/mail.log 또는 Journalctl -u postfix를 검사하십시오."
    },
    "leMailHost": "인증서 요청 · {{host}}",
    "leWebmailHost": "인증서 요청 · {{host}} (웹메일)",
    "leApexHost": "인증서 요청 · {{host}} (apex)",
    "applyMailTls": "메일 TLS 경로 적용",
    "applyMailTlsHint": "인증서가 존재해야 합니다. 메일 서비스 경로를 쓰고 다시 로드합니다.",
    "probeMx": "MX",
    "probeSpf": "SPF",
    "probeDkim": "DKIM",
    "probeDmarc": "DMARC",
    "probePtr": "PTR",
    "probeDnsbl": "DNSBL",
    "dnsAuthRepairTitle": "DNS 인증에 수정이 필요함",
    "dnsAuthRepairHint": "DNS 탭에서 레코드를 복사하고 게시합니다.",
    "fixHintSpf": "SPF 실패: @에 v=spf1 TXT를 게시합니다.",
    "fixHintDkim": "DKIM 실패: selector._domainkey TXT를 게시하세요.",
    "fixHintDmarc": "DMARC 실패: _dmarc TXT를 게시하세요.",
    "fixHintMx": "MX 실패: MX가 메일.<도메인>을 가리키도록 합니다.",
    "mailTls": {
      "needRootExecute": "메일 TLS를 적용하려면 루트와 YSK_EXECUTE가 필요합니다.",
      "certMissing": "{{host}}({{path}})에 대한 인증서 파일이 없습니다.",
      "getCertFirst": "먼저 SSL 페이지에서 {{host}}에 대한 Let’s Encrypt 인증서를 발급하세요.",
      "certFound": "{{host}}에 대한 인증서를 찾았습니다.",
      "postconfFailed": "postconf 실패: {{detail}}",
      "postfixPathsSet": "Postfix TLS 인증서 경로가 설정되었습니다.",
      "postfixReloaded": "Postfix가 다시 로드되었습니다.",
      "postfixReloadFailed": "접미사 다시 로드 실패: {{detail}}",
      "dovecotApplied": "Dovecot TLS 코드 조각을 작성하고 다시 로드를 시도했습니다.",
      "dovecotSkipped": "건너뛴 Dovecot(설치되지 않았거나 doveconf를 사용할 수 없음)",
      "dovecotSslOmitted": "메일 인증서가 누락되었습니다. ssl=no를 작성하여 Dovecot이 LE 파일 없이 시작할 수 있도록 했습니다."
    },
    "policyApplySystemHint": "Postfix/Rspamd 맵을 작성하고 다시 로드하려면 \"시스템에 적용\"을 선택하세요.",
    "rateLimitAppliedNote": "시간당 아웃바운드 비율 및 스팸 방지 플래그가 적용됩니다(시스템 적용이 켜져 있는 경우).",
    "bootstrapHonesty": "원클릭으로 패널 파일을 씁니다. 시스템 요구 권한에 적용됩니다. DNS/PTR/포트 25는 수동입니다.",
    "bootstrapAfterSteps": "다음: ① DNS(MX/SPF/DKIM/DMARC) 게시 ② 메일 SSL 발급 ③ 메일 TLS 경로 적용.",
    "bootstrapThenSsl": "다음: 메일 SSL 발행",
    "bootstrap": {
      "mtaOk": "작성된 MTA 구성({{count}} 파일)",
      "mtaIncomplete": "MTA 미완성: {{detail}}",
      "seeNotes": "메모 보기",
      "mailboxOk": "우편함 {{address}} (상태 {{status}})",
      "mailboxExists": "사서함이 이미 존재합니다(건너뛰었습니다): {{detail}}",
      "passdbOk": "Dovecot passdb 작성됨({{count}} 메일함)",
      "webmailOk": "{{host}}에 대한 웹메일 계획 {{mode}}",
      "mailTlsTodo": "메일 TLS: {{mailHost}}에 대한 인증서를 발급한 다음 상태 탭에서 메일 TLS 경로 적용을 사용하세요.",
      "externalDns": "외부(운영자 소유): DNS에 MX/SPF/DKIM/DMARC를 설정합니다. VPS의 PTR; 포트 25 또는 SMTP 릴레이.",
      "healthScore": "상태 점수 {{score}}/{{max}}(DNS/PTR/Port25는 자동 완성되지 않음)",
      "webmailProjectOk": "웹메일 프로젝트 {{tool}} @ {{host}} ({{status}})",
      "dovecotApplyOk": "Dovecot 가상 인증 적용됨"
    },
    "tabDeliverability": "배달",
    "pendingCount": "보류 중",
    "externalTodosOneLiner": "PTR, 포트 25 및 등록자 DNS는 사용자가 수행해야 합니다.",
    "runDeliverabilityPack": "배송 확인 실행",
    "deliverabilityTitle": "배송 확인",
    "deliverabilityEmpty": "아직 확인되지 않음",
    "deliverabilityEmptyDesc": "DNS, PTR 및 포트 25에 대한 배달 확인을 실행합니다.",
    "panelReady": "패널 확인 가능",
    "gaps": "간격",
    "checkOk": "OK",
    "checkExternal": "외부",
    "checkFail": "실패하다",
    "mailboxListDesc": "비밀번호 DB 생성 후 쓰기",
    "aliasesDesc": "별칭 및 전달",
    "relayDesc": "SMTP 릴레이",
    "deliverabilityDesc": "PTR/DNS/포트 25 확인",
    "dnsTodosDesc": "복사한 후 DNS 호스트에 추가하세요.",
    "deliverabilityHonesty": "PTR을 설정하거나 포트 25를 잠금 해제할 수 없습니다.",
    "warmupSuggest": "워밍업 제안",
    "writeSsoSkeleton": "Roundcube SSO 골격 기록",
    "rateLimitPerHour": "시간당 메시지 상한",
    "rateLimitGlobalHint": "전역은 도메인별 최솟값 사용",
    "savePolicyWritten": "제어면에만 기록",
    "dnsblMultiIp": "다중 IP RBL",
    "webmailTool": "웹메일 소프트웨어",
    "webmailToolRoundcube": "원형큐브(기본값)",
    "webmailToolSnappy": "SnappyMail(경량)",
    "webmailProjectName": "프로젝트 이름",
    "installWebmailProject": "만들기 및 라이브 시작",
    "openWebmail": "웹메일 열기",
    "webmailRisk": "공개 웹메일은 위험합니다. 곧 HTTPS를 활성화하세요.",
    "webmailForceHttps": "강제 HTTPS(Roundcube, SSL 필요)",
    "reinstallWebmail": "재설치/업그레이드",
    "installWebmailTitle": "공유 웹메일 프로젝트 생성(첫 설치)",
    "reinstallWebmailTitle": "기존 웹메일 프로젝트 재구축/업그레이드",
    "reinstallNeedInstall": "먼저 웹메일을 설치하세요",
    "webmailSsoAdvanced": "고급 · SSO 플러그인",
    "tlsRoleMail": "메일(IMAP/SMTP)",
    "tlsRoleMailHint": "메일 서버 호스트 이름",
    "tlsRoleWebmail": "웹메일",
    "tlsRoleWebmailHint": "웹메일 가상 호스트",
    "tlsRoleApex": "Apex 도메인",
    "tlsRoleApexHint": "웹/Apex 인증서",
    "tlsRequestLe": "LE 요청",
    "tlsRequestLeFor": "{{host}}에 대한 LE 요청",
    "advancedToolsTitle": "대기열 및 클라이언트",
    "flushQueueConfirm": "로컬 MTA 대기열을 플러시하시겠습니까? 이 작업은 취소할 수 없습니다.",
    "mailSslTitleShort": "인증서 및 TLS",
    "deleteDomain": "도메인 삭제",
    "deleteDomainConfirmTitle": "이메일 도메인을 삭제하시겠습니까?",
    "deleteDomainConfirm": "{{domain}} 및 해당 사서함, 별칭, 제어 영역 데이터를 삭제합니다. 시스템 Postfix/Dovecot 구성은 여전히 ​​정리가 필요할 수 있습니다.",
    "deleteDomainBtn": "삭제",
    "deleteMailbox": "편지함 삭제",
    "deleteMailboxTitle": "편지함을 삭제하시겠습니까?",
    "deleteMailboxDesc": "{{address}}, 제어 영역 데이터 및 로컬 Maildir이 있는 경우 삭제합니다.",
    "deleteMailboxC1": "사서함 로그인 및 메일 파일",
    "deleteMailboxC2": "도메인 가상 맵 재작성(제어 평면)",
    "deleteMailboxC3": "시스템 Dovecot/Postfix는 여전히 정리가 필요할 수 있습니다.",
    "deleteAliasTitle": "별칭을 삭제/전달하시겠습니까?",
    "deleteAliasDesc": "{{source}}을 삭제합니다.",
    "deleteImpact": "{{mailboxes}} 사서함 · {{records}} DNS 레코드 · {{aliases}} 별칭",
    "deleteDomainC1": "모든 사서함 및 별칭",
    "deleteDomainC2": "제어 영역 DKIM, DNS 제안 및 플래그",
    "deleteDomainC3": "로컬 dataDir/email 디렉터리(있는 경우)",
    "deleteDomainC4": "시스템 MTA 맵은 남아 있을 수 있습니다. 필요한 경우 별도로 청소하십시오.",
    "deleteDialogTitle": "메일 도메인을 영구적으로 삭제",
    "deleteDialogDesc": "{{domain}} 삭제 예정입니다. 이 작업은 취소할 수 없습니다.",
    "deletePermanent": "영구 삭제",
    "deleteRemoveData": "로컬 메일 데이터도 제거",
    "deleteRemoveDataDesc": "패널에서만 제거하려면 선택을 취소합니다. Maildir은 디스크에 남아 있습니다.",
    "deleteTypeName": "확인하려면 도메인을 입력하세요.",
    "deleteTypeNameHint": "정확히 일치해야 합니다: {{name}}",
    "deleteWillData": "로컬 dataDir/email 디렉터리(있는 경우)",
    "deleteKeepData": "로컬 데이터 유지Dir 메일 데이터",
    "deleteSystemWarn": "시스템 Postfix/Dovecot 맵은 자동 정리되지 않습니다. 필요한 경우 별도로 청소하십시오.",
    "hostIpPick": "호스트 IPv4",
    "hostIpPickV6": "호스트 IPv6",
    "editMailboxTitle": "편지함 편집",
    "editMailboxDesc": "{{address}}의 비밀번호 또는 로그인 설정 변경",
    "editMailboxSave": "변경사항 저장",
    "newPassword": "새 비밀번호",
    "newPasswordHint": "현재 비밀번호를 유지하려면 공백으로 남겨두세요. (설정된 경우 최소 8자)",
    "confirmPassword": "비밀번호 확인",
    "mailboxStatus": "상태",
    "mailboxStatusActive": "활성(로그인 허용)",
    "mailboxStatusDisabled": "비활성화됨(로그인 차단됨)",
    "mailboxStatusHint": "* Dovecot passdb로 내보내기가 비활성화되어 로그인이 거부되었습니다.",
    "colAddress": "주소",
    "colLocalPart": "지역 부분",
    "colPassword": "비밀번호",
    "colCreated": "생성됨",
    "hasPassword": "세트",
    "noPassword": "설정되지 않음",
    "mailboxPager": "사서함 페이지",
    "prevPage": "이전",
    "nextPage": "다음",
    "pageOf": "페이지 {{page}} / {{total}} · {{count}}",
    "mailboxEmptyTitle": "아직 편지함 없음",
    "passwordMismatch": "비밀번호가 일치하지 않습니다.",
    "passwordTooShort": "비밀번호는 8자 이상이어야 합니다.",
    "mailboxUpdateNeedField": "새 비밀번호를 설정하거나 상태를 변경하세요.",
    "catchallHint": "정의되지 않은 로컬 부분은 대상 사서함으로 갑니다. 적용 전까지 초안입니다.",
    "queueSearchPh": "ID, 보낸 사람, 받는 사람 검색…",
    "queueId": "큐 ID",
    "queueSender": "보낸 사람",
    "queueRecipients": "받는 사람",
    "queueSize": "크기",
    "queueReason": "이유",
    "queueActive": "전송 중",
    "queueHeld": "보류",
    "queueDeferred": "지연",
    "deleteQueueTitle": "이 큐 메일을 삭제할까요?",
    "deleteQueueDesc": "로컬 MTA 큐에서 {{id}}를 제거합니다. YSK_EXECUTE가 필요합니다.",
    "openQueuePage": "메일 큐 열기",
    "dovecotFailedHint": "Dovecot failed. Open the Software tab for status; if the mail certificate is missing, issue it on the SSL page first.",
    "dovecotFailedStatus": "비둘기장은 {{status}}입니다. 장치 요약을 보려면 소프트웨어 탭을 엽니다.",
    "mailCertMissing": "{{hosts}}에 대한 인증서가 없습니다. SSL 페이지에서 발급하세요.",
    "mailCertPresent": "메일 인증서가 이미 발급되었습니다. 이는 인증서 누락 문제가 아닙니다.",
    "webmailNeedCert": "{{host}}에 대한 인증서가 없습니다. HTTPS를 강제하기 전에 SSL에서 발급하세요.",
    "domainRequired": "도메인을 입력하세요",
    "domainInvalid": "유효한 도메인을 입력하세요.",
    "serverIpRequired": "서버 IP를 입력하세요",
    "serverIpInvalid": "유효한 IP 주소를 입력하세요.",
    "serverIpv6Invalid": "유효한 IPv6 주소를 입력하세요.",
    "localPartRequired": "로컬 부분을 입력하세요",
    "localPartInvalid": "로컬 부분에는 문자, 숫자만 사용할 수 있습니다. _ + -",
    "aliasDestRequired": "목적지 주소를 하나 이상 입력하세요.",
    "mailboxStatusManaged": "관리됨",
    "mailboxStatusActiveShort": "활동적인",
    "mailboxStatusDisabledShort": "사용 안 함",
    "mailboxStatusSystem": "시스템 프로비저닝",
    "mailboxStatusPending": "대기 중인 시스템",
    "mailboxStatusFailed": "시스템 실패",
    "dnsblCleanStatus": "목록에 없음",
    "dnsblListedStatus": "상장됨",
    "deliverabilityDone": "배송확인 완료 ({{score}}/100)",
    "sieveEmpty": "작성된 Sieve 파일 없음",
    "sieveListed": "{{count}} 작성된 파일",
    "webmailHostnameRequired": "웹메일 호스트 이름을 입력하세요.",
    "sieveFilesTitle": "작성된 파일"
  },
  "errors": {
    "YSK_UNAUTHORIZED": "승인되지 않은",
    "YSK_FORBIDDEN": "금지됨",
    "YSK_NOT_FOUND": "찾을 수 없음",
    "YSK_VALIDATION": "잘못된 입력",
    "YSK_ALLOWLIST_DENIED": "허용 목록에 없음",
    "YSK_APPROVAL_REQUIRED": "승인 필요",
    "YSK_APPROVAL_PENDING": "승인 보류 중",
    "YSK_APPROVAL_REJECTED": "승인 거부됨",
    "YSK_SANDBOX_VIOLATION": "샌드박스 위반",
    "YSK_LLM_UNTRUSTED": "신뢰할 수 없는 LLM 출력",
    "YSK_CONFIG_INVALID": "잘못된 구성",
    "YSK_SETUP_INCOMPLETE": "설정이 완료되지 않았습니다.",
    "YSK_UPDATE_FAILED": "업데이트 실패",
    "YSK_INTERNAL": "내부 오류",
    "YSK_NEED_EXECUTE": "호스트 실행 권한이 필요합니다.",
    "YSK_NEED_ROOT": "루트 필요",
    "YSK_RATE_LIMITED": "시도 횟수가 너무 많습니다. 나중에 다시 시도해 보세요",
    "YSK_TOTP_REQUIRED": "인증코드 필요",
    "auth": {
      "needCredentials": "사용자 이름과 비밀번호를 입력하세요",
      "rateLimited": "로그인 시도 횟수가 너무 많습니다. 나중에 다시 시도해 보세요",
      "badCredentials": "잘못된 사용자 이름 또는 비밀번호",
      "accountSuspended": "계정이 정지되었습니다",
      "adminTotpStrict": "관리자는 2FA(엄격)를 활성화해야 합니다. 등록된 계정을 사용하거나 엄격 모드를 비활성화하세요.",
      "totpReplay": "이미 사용된 코드입니다. 다음 기간을 기다려라",
      "totpRequired": "유효한 인증코드가 필요합니다",
      "mustEnrollTotp": "관리자 정책: 지금 2단계 인증 활성화",
      "userNotFound": "사용자를 찾을 수 없습니다",
      "totpSetupNeedReauth": "2FA를 활성화하려면 비밀번호(또는 최근 스텝업 코드)가 필요합니다.",
      "totpBeginFirst": "먼저 2FA 설정을 시작하세요",
      "totpInvalid": "잘못된 인증 코드",
      "stepUpRequired": "이 작업을 수행하려면 새로운 인증 코드가 필요합니다",
      "missingCredential": "자격 증명 누락",
      "apiKeyUserMissing": "API 키 소유자를 찾을 수 없습니다.",
      "apiKeyInvalid": "잘못된 API 키",
      "sessionExpired": "세션이 만료되었습니다. 다시 로그인",
      "sessionIdle": "유휴 시간 초과; 다시 로그인",
      "totpNotEnabled": "2FA가 활성화되지 않았습니다",
      "totpSecretNoDataDir": "TOTP 비밀번호가 암호화되었지만 dataDir이 설정되지 않았습니다.",
      "mustChangePassword": "계속하려면 새 비밀번호를 설정해야 합니다",
      "policyNeedsOwn2fa": "이 계정에 대해 2FA를 활성화하고 다른 사람에게 2FA를 요구하기 전에 TOTP 코드로 확인하세요."
    },
    "http": {
      "notFoundRoute": "찾을 수 없음: {{method}} {{path}}",
      "unauthorized": "로그인되지 않았거나 세션이 만료되었습니다.",
      "forbidden": "이 작업에 대한 권한이 없습니다.",
      "notFound": "리소스를 찾을 수 없습니다.",
      "unprocessable": "서버에서 요청을 거부했습니다.",
      "requestFailed": "요청 실패({{status}})",
      "jsonInvalid": "잘못된 JSON",
      "internal": "내부 오류",
      "payloadTooLarge": "요청 본문이 너무 큽니다"
    },
    "YSK_HOST_BROWSE_SSRF": "보안 정책에 의해 호스트 탐색이 차단되었습니다.",
    "YSK_HOST_BROWSE_SESSION": "호스트 찾아보기 세션을 찾을 수 없거나 만료되었습니다.",
    "YSK_HOST_BROWSE_UPSTREAM": "호스트 찾아보기 업스트림 가져오기에 실패했습니다.",
    "YSK_HOST_BROWSE_NEED_CHROME": "실제 브라우저 엔진에는 호스트에 Chrome/Chromium이 필요합니다."
  },
  "fail2ban": {
    "backToProtection": "보호",
    "statCurrentBan": "현재 금지",
    "statTotal": "총 금지",
    "statBanList": "금지 목록",
    "statBoot": "부팅 시",
    "startedOk": "fail2ban이 시작되었습니다",
    "startService": "서비스 시작",
    "notInstalled": "fail2ban이 설치되어 있지 않습니다",
    "toolHintPrefix": "기본 도구:",
    "toolHintBody": "failure2ban = 로그를 스캔한 후,",
    "toolHintTemp": "일시적인",
    "toolHintBody2": "금지 · 공격 대응 용도",
    "toolHintUfw": "UFW = 포트 / 영구 규칙",
    "tabs": {
      "bans": "금지 목록",
      "whitelist": "화이트리스트",
      "jails": "감옥",
      "policy": "정책",
      "service": "서비스",
      "about": "설명"
    },
    "manualBanTitle": "수동 차단(일시적)",
    "ipPlaceholder": "IPv4 또는 IPv6",
    "banipOk": "반입 완료",
    "manualBanHint": "임시 차단;",
    "currentBans": "현재 금지됨",
    "bannedTableTitle": "금지된 IP(실시간 fail2ban-client)",
    "bannedTableDesc": "클라이언트 액세스가 필요합니다. 금지 해제에는 YSK_EXECUTE가 필요합니다.",
    "unbanOk": "금지 해제됨",
    "unban": "금지 해제",
    "addWhitelistTitle": "Ignoreip 허용 목록에 추가",
    "whitelistAdded": "허용 목록에 추가됨",
    "addWhitelistShort": "+화이트리스트",
    "emptyBansTitle": "금지된 IP 없음",
    "emptyBansDesc": "또는 fail2ban-client를 읽을 권한이 없습니다.",
    "ignoreipTitle": "IP 허용 목록 무시",
    "ignoreipDesc": "IP는 절대 금지되지 않습니다(패널 파일 + 선택적 라이브 fail2ban-client)",
    "whitelistEmptyWarn": "허용 목록이 비어 있습니다. jail이 당신을 차단할 수 있습니다. ignoreip 적용 전에 로그인 IP를 넣으세요.",
    "suggestIgnoreLogin": "내 로그인 IP {{ip}}",
    "applyIgnoreEmptyWarn": "허용 목록이 빈 채로 적용하면 ignoreip가 비워집니다",
    "applyIgnoreNeedConfirm": "jail ignoreip를 다시 쓰고 fail2ban을 다시 불러옵니다",
    "addIp": "IP 추가",
    "addWhitelist": "허용 목록에 추가",
    "applyPolicyIgnoreip": "정책 적용(ignoreip 포함)",
    "applyIgnoreipOk": "Jail.local에ignoreip을 작성하고 적용했습니다.",
    "ignoreipHint": "YSK_EXECUTE가 없으면 패널 파일만 작성됩니다(apply_status=write).",
    "whitelistTitle": "허용 목록({{count}})",
    "whitelistRemoved": "허용 목록에서 삭제됨",
    "remove": "제거하다",
    "emptyWhitelistTitle": "아직 허용 목록 IP가 없습니다.",
    "emptyWhitelistDesc": "차단되지 않도록 관리자 IP를 추가하세요.",
    "activeJails": "활성 감옥",
    "colCurrent": "현재의",
    "colTotal": "총",
    "colDesc": "설명",
    "emptyJailsTitle": "감옥 없음",
    "emptyJailsDesc": "서비스가 실행되지 않거나jail.local이 적용되지 않음",
    "policyTitle": "감옥 정책",
    "policyDesc": "패널jail.local을 작성합니다. 복사본 적용 + 다시 로드(UFW를 통하지 않음)",
    "bantimeHint": "금지 기간",
    "findtimeHint": "계산 창",
    "maxretryHint": "창의 최대 실패",
    "customExample2h": "사용자 정의(예: 2시간",
    "customExample15m": "사용자 정의(예: 15m",
    "customMaxretry": "사용자 정의 1~50",
    "min": "{{n}}분",
    "hour": "{{n}} 시간",
    "week": "{{n}} 주",
    "enableJailsHint": "감옥 활성화(확인 후 적용):",
    "writtenOnlyMsg": "패널 파일 작성(호스트에는 적용되지 않음)",
    "writeOnly": "패널 파일만 쓰기",
    "appliedOk": "fail2ban 적용됨",
    "applyToSystem": "시스템에 적용",
    "systemdTitle": "체계화된 제어",
    "enableAndStart": "활성화 및 시작",
    "serviceHint": "공격 대응용",
    "serviceHintSuffix": "(이 페이지의 감옥 + Nginx 속도 제한을 호출합니다.",
    "actionOk": {
      "enable": "fail2ban 활성화 및 시작됨",
      "start": "fail2ban이 시작되었습니다",
      "reload": "fail2ban이 다시 로드되었습니다.",
      "restart": "fail2ban이 다시 시작되었습니다.",
      "stop": "fail2ban이 중지되었습니다."
    },
    "statWhitelist": "화이트리스트",
    "invalidIp": "유효한 IPv4, IPv6 또는 CIDR을 입력하세요.",
    "whitelistPendingApply": "패널 목록에 저장됩니다. Jail.local을 작성하려면 정책 적용을 누르세요.",
    "ignoreipFile": "dataDir/fail2ban/ignoreip.txt",
    "jailsTabHint": "활성 감옥 상태. 정책 탭에서 감옥을 켜거나 끕니다.",
    "colJail": "교도소",
    "colEnabled": "켜짐",
    "serviceStateLine": "장치 {{unit}} · {{state}} · 부팅 {{boot}}",
    "jail": {
      "sshd": "SSH 무차별 대입",
      "nginxHttpAuth": "Nginx HTTP 인증",
      "nginxBotsearch": "Nginx 스캐너/봇 프로브",
      "nginxBadbots": "Nginx는 알려진 나쁜 봇",
      "nginxLimitReq": "Nginx 속도 제한 감옥",
      "postfix": "접미사 메일 무차별 대입",
      "dovecot": "Dovecot 메일 로그인",
      "recidive": "반복 위반자"
    },
    "cannotBanSelf": "이것은 호스트 또는 로그인 IP입니다. 금지하는 대신 Ignoreip에 추가하세요.",
    "suggestIgnoreHint": "제안된 관리자 IP(정책을 적용할 때까지만 패널 파일):",
    "suggestIgnoreAdd": "{{ip}} 추가"
  },
  "featurePage": {
    "back": "뒤로"
  },
  "files": {
    "pillFiles": "{{count}} 파일",
    "pillTrash": "{{count}} 쓰레기통에",
    "pillSpace": "{{used}} 사용됨",
    "statFiles": "파일",
    "statFolders": "폴더",
    "statUsage": "용법",
    "statSelected": "선택된",
    "statTrash": "쓰레기",
    "statShares": "주식",
    "publicSiteSettings": "공개 사이트 설정",
    "opsResultTitle": "파일 작업 결과",
    "closeResult": "결과 닫기",
    "tabBrowse": "먹다",
    "tabTrash": "쓰레기",
    "tabShares": "주식",
    "spaceLabel": "공간",
    "publicFiles": "공개 파일",
    "viewLabel": "보다",
    "allFiles": "모든 파일",
    "favorites": "즐겨찾기",
    "upload": "업로드",
    "newFolder": "새 폴더",
    "newTextFile": "새 텍스트 파일",
    "download": "다운로드",
    "copy": "복사",
    "move": "이동하다",
    "zip": "지퍼",
    "unzip": "압축을 푼다",
    "unzipDone": "압축이 풀렸습니다 {{path}}",
    "unzipFailed": "압축 해제 실패",
    "delete": "삭제",
    "searchName": "찾다…",
    "sortAria": "종류",
    "sortNameAsc": "이름↑",
    "sortNameDesc": "이름↓",
    "sortSizeAsc": "소↑",
    "sortSizeDesc": "대↓",
    "sortMtimeDesc": "최신",
    "sortMtimeAsc": "가장 오래된",
    "viewList": "목록",
    "viewIcons": "아이콘",
    "viewAria": "보기 모드",
    "toolbarAria": "파일 작업",
    "pathAria": "길",
    "rootPublic": "공공의",
    "rootProject": "프로젝트",
    "emptyFavorites": "아직 즐겨찾기가 없습니다.",
    "emptyFolder": "이 폴더는 비어 있습니다.",
    "emptyFolderHint": "업로드할 파일이나 폴더를 여기에 놓거나 업로드를 클릭하세요.",
    "selectItem": "{{name}} 선택",
    "colName": "이름",
    "colSize": "크기",
    "colMtime": "수정됨",
    "rename": "이름 바꾸기",
    "unfavorite": "즐겨찾기 안함",
    "favorite": "가장 좋아하는",
    "share": "공유하다",
    "versions": "버전",
    "selectAllAria": "모두 선택",
    "selectAll": "모두 선택",
    "folder": "접는 사람",
    "dirNamedLikeFile": "(폴더 잔여물; 이름이 파일처럼 보임)",
    "dropToUpload": "업로드하려면 드롭하세요.",
    "trashTitle": "휴지통({{count}})",
    "trashDesc": "삭제된 파일은 복원하거나 영구적으로 제거할 수 있습니다.",
    "emptyTrash": "휴지통 비우기",
    "emptyTrashTitle": "휴지통을 비우시겠습니까?",
    "emptyTrashDesc": "휴지통에 있는 모든 파일은 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다.",
    "purgeForeverDesc": "이 파일은 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다.",
    "emptyTrashDone": "휴지통 비우기",
    "colOrigPath": "원래 경로",
    "colDeletedAt": "삭제된 날짜",
    "restore": "복원하다",
    "restored": "복원됨",
    "purgeForever": "완전삭제",
    "purged": "영구적으로 삭제됨",
    "trashEmpty": "휴지통이 비어 있습니다.",
    "sharesTitle": "공개 공유 링크({{count}})",
    "colPath": "길",
    "colLink": "링크",
    "colDownloads": "다운로드",
    "unshare": "공유 취소",
    "unshareDone": "공유가 취소되었습니다.",
    "sharesEmpty": "아직 공유가 없습니다.",
    "sharesEmptyHint": "파일 행에서 공유를 클릭하세요.",
    "webdavTitle": "WebDAV 설정",
    "webdavDesc": "Finder, Windows 또는 rclone에서 HTTP Basic을 통해 공용 파일 루트를 마운트합니다. 토큰은 한 번 표시됩니다.",
    "enableIssueToken": "토큰 활성화 및 발급",
    "webdavReissueToken": "토큰 재발행",
    "webdavReissueConfirm": "재발행하면 이전 비밀번호가 즉시 무효화됩니다. 마운트된 클라이언트의 연결이 끊어집니다. 계속하다?",
    "webdavDisableConfirm": "비활성화하면 모든 /webdav 연결이 거부됩니다. 계속하다?",
    "tokenIssued": "토큰 발행",
    "status": "상태",
    "enabledMount": "활성화됨 · {{path}}",
    "notEnabled": "활성화되지 않음",
    "disable": "사용 안 함",
    "webdavAlreadyOff": "WebDAV가 이미 꺼져 있습니다.",
    "webdavDisabled": "WebDAV 비활성화됨",
    "webdavEnabledNoEcho": "활성화됨(비밀번호는 다시 표시되지 않습니다. 필요한 경우 재발급)",
    "webdavDefaultOff": "기본적으로 꺼져 있음 - 활성화를 클릭하고 토큰을 발급하여 시작하세요.",
    "webdavAfterEnable": "WebDAV를 켜고 토큰을 발급한 뒤에 사용할 수 있습니다.",
    "webdavOn": "사용",
    "webdavOff": "사용 안 함",
    "webdavOffNoToken": "비활성화됨(활성 토큰 없음)",
    "webdavTokenId": "토큰 #{{id}}",
    "webdavTokenInactive": "비활성화됨 — 토큰 #{{id}}이 활성화되지 않았습니다.",
    "webdavUpdated": "업데이트됨 {{at}}",
    "webdavTokenOnceTitle": "지금 비밀번호를 복사하세요",
    "webdavTokenOnceHint": "이 비밀번호는 한 번만 표시됩니다. 이 페이지를 떠난 후에는 검색할 수 없습니다.",
    "webdavConnTitle": "연결",
    "webdavConnDesc": "클라이언트에서 HTTP 기본 자격 증명과 함께 이 URL을 사용하세요.",
    "webdavUrl": "서버 URL",
    "webdavUsername": "사용자 이름",
    "webdavPassword": "비밀번호(토큰)",
    "webdavPasswordHidden": "이전에 발급되었으며 다시 표시되지 않음 - 재발급 또는 저장된 비밀번호 사용",
    "webdavPasswordNone": "아직 발급되지 않음",
    "webdavRoot": "마운트 루트",
    "webdavRootValue": "패널 공개 파일 루트",
    "webdavAuth": "입증",
    "webdavAuthValue": "HTTP 기본 · 사용자 ysk · 비밀번호 = 패널 발행 토큰",
    "webdavConnBundle": "연결 세부정보",
    "webdavCopyAll": "모든 연결 세부정보 복사",
    "webdavClientsTitle": "클라이언트 설정",
    "webdavClientsDesc": "일반적인 마운트 레시피(HTTPS 선호, 필요한 경우 클라이언트에서 자체 서명된 인증서 신뢰)",
    "webdavClientFinder": "macOS 파인더",
    "webdavClientFinderHint": "이동 → 서버에 연결… (⌘K), URL, 사용자 ysk, 비밀번호 = 토큰을 붙여넣습니다.",
    "webdavClientWin": "윈도우",
    "webdavClientWinHint": "이 PC → 네트워크 드라이브 매핑 → 다른 자격 증명을 사용합니다. 또는 Cyberduck/WinSCP(WebDAV).",
    "webdavNotesTitle": "메모",
    "webdavNote1": "WebDAV는 전체 호스트 파일 시스템이 아닌 공개 파일 루트만 매핑합니다.",
    "webdavNote2": "역방향 프록시/방화벽을 통해 패널 포트를 노출합니다. HTTPS만 선호합니다.",
    "webdavNote3": "재발행하면 이전 토큰이 즉시 무효화됩니다. 비활성화는 모든 /webdav 요청을 거부합니다.",
    "webdavNote4": "OPTIONS / PROPFIND / GET / PUT을 지원합니다. 전체 LOCK 제품군이 불완전할 수 있습니다.",
    "copiedLabel": "'{{label}}'을 복사했습니다.",
    "newFolderTitle": "새 폴더",
    "willCreateAt": "\"{{path}}\" 아래에 생성됩니다.",
    "nameRequired": "이름을 입력하세요",
    "folderCreated": "폴더가 생성되었습니다.",
    "create": "만들기",
    "folderName": "폴더 이름",
    "noPathSepHint": "경로 구분 기호를 포함하면 안 됩니다.",
    "newTextTitle": "새 텍스트 파일",
    "fileNameRequired": "파일 이름을 입력하세요.",
    "textFileCreated": "텍스트 파일이 생성되었습니다.",
    "fileName": "파일 이름",
    "fileNameHint": "예를 들어 readme.md 또는 Notes.txt",
    "versionsTitle": "버전 기록",
    "versionsDesc": "",
    "noVersions": "아직 버전 기록이 없습니다.",
    "noVersionsHint": "",
    "versionRestored": "복원됨",
    "restoreVersionConfirm": "현재 파일 {{file}}에 대해 {{version}}을 복원하시겠습니까? 이렇게 하면 디스크의 파일을 덮어씁니다.",
    "renameTitle": "이름 바꾸기",
    "renameCurrent": "현재: {{name}}",
    "renamed": "이름이 변경됨",
    "newName": "새 이름",
    "newNameHint": "이름만 바꿉니다. 같은 디렉토리에 남아있습니다",
    "copyTo": "복사 대상…",
    "moveTo": "다음으로 이동…",
    "copyMoveDesc": "{{action}} {{count}} 항목",
    "actionCopy": "복사",
    "actionMove": "이동하다",
    "copied": "복사됨",
    "moved": "움직이는",
    "targetFolderPath": "대상 폴더 경로",
    "targetFolderHint": "루트 기준(예: 문서 또는 문서/a; 비어 있음 = 루트",
    "shareCreateTitle": "파일 공유",
    "shareCreateDesc": "공개 다운로드 링크를 만듭니다. 선택적 비밀번호.",
    "createLink": "링크 만들기",
    "sharePath": "길:",
    "passwordOptional": "비밀번호(선택사항)",
    "passwordOptionalHint": "공개 액세스하려면 비워두세요.",
    "passwordPlaceholder": "선택 과목",
    "linkCreated": "링크가 생성되었습니다:",
    "chmodTitle": "권한 변경(chmod)",
    "chmodDone": "chmod {{mode}} → {{count}} 항목",
    "chmodDoneShort": "chmod {{mode}} 완료",
    "chmodFailed": "chmod 실패",
    "apply": "적용",
    "chmodApplyHint": "{{count}} 선택된 항목에 적용 (8진수, 예: 644 / 755)",
    "chmod644": "644 파일",
    "chmod755": "755 실행 파일",
    "chmod600": "개인 600명",
    "chmod700": "700 개인 디렉토리",
    "chmod775": "775 그룹 쓰기",
    "chmodCustomPh": "커스텀 0644…",
    "mode": "방법",
    "zipTitle": "zip으로 압축",
    "zipCreated": "생성됨 {{path}}",
    "zipDone": "압축 → {{path}}",
    "zipFailed": "압축 실패",
    "compress": "압박 붕대",
    "zipHint": "선택한 항목을 현재 폴더에 {{count}} 압축합니다(호스트에 zip이 필요함).",
    "destFileName": "대상 파일 이름",
    "destPathHint": "경로: {{path}}",
    "movedToTrash": "휴지통으로 이동됨",
    "moveToTrashTitle": "휴지통으로 이동하시겠습니까?",
    "moveToTrashDesc": "{{count}} 항목 삭제(휴지통에서 복원 가능)",
    "deleteMore": "그리고 {{n}} 더보기",
    "unshareTitle": "이 공유를 취소하시겠습니까?",
    "unshareDesc": "{{name}}({{url}}) 링크를 취소합니다. 링크 작동이 즉시 중지됩니다.",
    "preview": "시사",
    "imagePreviewNeedLogin": "이미지 미리보기에는 로그인이 필요합니다. 대신 다운로드를 사용하세요",
    "pdfDownloadHint": "열려면 PDF를 다운로드하세요(인증 헤더 필요)",
    "noEmbedPreview": "이 유형은 포함될 수 없습니다. 다운로드해주세요.",
    "uploadDone": "{{count}} 파일 업로드됨",
    "downloadFailedStatus": "다운로드 실패({{status}})",
    "downloadFailed": "다운로드 실패",
    "uploadFolder": "폴더 업로드",
    "dropFolderOrFile": "업로드할 파일이나 폴더를 삭제하세요.",
    "uploadPanelTitle": "업로드",
    "uploadPanelStats": "{{done}}/{{total}} 완료 · {{err}} 실패",
    "uploadClearDone": "클리어 완료",
    "uploadInFolder": "폴더 {{folder}}",
    "uploadStatusDone": "완료",
    "uploadStatusError": "실패한",
    "uploadStatusQueued": "대기 중",
    "uploadNoFile": "파일 데이터 없음",
    "uploadSomeFailed": "{{count}} 항목이 실패했습니다.",
    "uploadTruncated": "업로드는 {{max}} 항목으로 제한됩니다({{total}} 선택됨, 나머지는 생략)",
    "previewFailed": "미리보기 실패",
    "videoNotSupported": "귀하의 브라우저에서는 이 비디오를 재생할 수 없습니다.",
    "audioNotSupported": "귀하의 브라우저에서는 이 오디오를 재생할 수 없습니다.",
    "edit": "편집",
    "editorTitle": "수정 · {{name}}",
    "editorSave": "저장",
    "editorSavedIdle": "저장됨",
    "editorSaved": "저장되었습니다 {{name}}",
    "editorSaveFailed": "저장 실패",
    "editorDirty": "저장되지 않음",
    "editorClean": "저장됨",
    "editorChars": "{{count}} 문자",
    "editorAria": "{{name}} 편집자",
    "editorDiscardConfirm": "저장되지 않은 변경사항을 삭제하시겠습니까?",
    "shareReadyTitle": "링크 준비됨",
    "shareReadyDesc": "이 링크를 복사하여 보내세요. 그것을 가진 사람은 누구나 다운로드할 수 있습니다.",
    "shareReadyBadge": "생성됨",
    "shareProtected": "비밀번호로 보호됨",
    "shareOpenAccess": "비밀번호 없음",
    "shareLinkLabel": "공개 링크",
    "shareCopyHint": "필드를 선택하거나 복사를 사용하세요.",
    "shareAgain": "새 링크",
    "shareCreatedToast": "공유 링크가 생성되었습니다.",
    "linkCopied": "링크가 복사되었습니다",
    "linkCopyFailed": "복사할 수 없습니다. 수동으로 선택하고 복사하세요.",
    "shareExpireLabel": "링크 만료",
    "shareExpireHint": "이 시간이 지나면 링크 작동이 중지됩니다.",
    "shareExpireNever": "절대",
    "shareExpire1h": "1시간",
    "shareExpire1d": "1일",
    "shareExpire7d": "7일",
    "shareExpire30d": "30일",
    "shareExpireCustom": "관습…",
    "shareExpireAt": "만료 시간:",
    "shareExpireInvalid": "미래의 날짜와 시간을 선택하세요",
    "shareExpiresAt": "만료 {{at}}",
    "colExpires": "만료",
    "pdfInlineHint": "PDF가 표시되지 않으면 다운로드하세요.",
    "publicShareTitle": "누군가 나와 파일을 공유했습니다.",
    "publicShareSub": "이 링크에서 안전하게 다운로드하세요. 계정이 필요하지 않습니다.",
    "publicShareChecking": "링크 확인 중…",
    "publicShareDownloading": "다운로드 중…",
    "publicShareWait": "기다리세요",
    "publicShareNeedPassword": "이 링크를 다운로드하려면 비밀번호가 필요합니다",
    "publicSharePasswordPh": "비밀번호 공유",
    "publicShareDownload": "다운로드",
    "publicShareDownloadAgain": "다시 다운로드",
    "publicShareDone": "다운로드가 시작되었습니다",
    "publicShareDoneHint": "브라우저 다운로드를 확인하세요. 아무것도 나타나지 않으면 다시 탭하세요",
    "publicShareNotFound": "공유를 찾을 수 없거나 만료되었습니다.",
    "publicShareDenied": "이 공유에 액세스할 수 없습니다.",
    "publicShareBadPassword": "잘못된 비밀번호",
    "publicShareMissing": "잘못된 공유 링크",
    "publicShareFailed": "다운로드 실패({{status}})",
    "publicShareFailedGeneric": "다운로드 실패",
    "publicShareDefaultName": "다운로드",
    "publicSharePanelLogin": "패널 로그인",
    "publicShareLang": "언어",
    "publicShareProgress": "{{loaded}} / {{total}} ({{pct}}%)",
    "publicShareProgressIndeterminate": "수신됨 {{loaded}}…",
    "publicShareCancel": "취소",
    "publicShareCancelled": "다운로드가 취소되었습니다.",
    "publicSharePoweredBy": "{{company}} 제공",
    "publicSharePoweredPrefix": "제공:",
    "publicSharePoweredSuffix": "",
    "publicShareHasAccount": "계정이 있나요? 로그인",
    "password": "비밀번호",
    "editorLines": "{{count}} 줄",
    "editorLargeHint": "대용량 파일 - 편집 속도가 느려질 수 있습니다. 다중 MB 파일의 경우 다운로드를 선호합니다(서버 용량 ~2MB).",
    "editorLnCol": "Ln {{line}}, Col {{col}}",
    "editorSpaces": "공백: {{n}}",
    "copyLink": "링크 복사",
    "versionsTitleShort": "버전 기록",
    "versionsCount": "{{count}} / {{max}}",
    "versionN": "v{{n}}",
    "versionLatest": "최신",
    "shareModeLabel": "다운로드 방법",
    "shareModeDirect": "직접 다운로드",
    "shareModeBt": "비트토렌트(웹토렌트)",
    "shareModeBoth": "다이렉트 + 비트토렌트",
    "shareModeHint": "BT에는 실행 중인 추적기가 필요합니다(파일 → BT 추적기). 마그넷 링크는 링크가 있는 사람이라면 누구나 사용할 수 있습니다.",
    "shareModeBtBlocked": "Tracker가 실행되고 있지 않습니다. BT 공유를 생성하기 전에 시작하거나 Direct only를 선택하세요.",
    "shareMagnet": "마그넷 링크",
    "shareTorrentFile": ".torrent 다운로드",
    "shareSeedStatus": "시딩 상태",
    "shareBtStats": "비트토렌트 상태",
    "btSeeds": "씨앗",
    "btLeechers": "거머리",
    "btPeers": "동료",
    "btUploadSpeed": "업로드 속도",
    "btDownloadSpeed": "다운로드 속도",
    "btUploaded": "업로드됨",
    "btDownloaded": "다운로드됨",
    "btRatio": "비율",
    "btUpdatedAt": "업데이트됨",
    "btServerStats": "서버 시더",
    "btClientStats": "귀하의 고객",
    "btSeeding": "시딩 중",
    "btPending": "시딩 준비 중",
    "btStopped": "시드 중지",
    "btError": "시드 오류",
    "publicShareMethod": "어떻게 다운로드하시겠습니까?",
    "publicShareDirect": "직접 다운로드",
    "publicShareBt": "비트토렌트",
    "openBtTracker": "BT 트래커 열기",
    "publicShareBtInBrowser": "브라우저에서 WebTorrent 다운로드",
    "publicShareBtProgress": "다운로드 {{pct}}% · peers {{peers}} · ↓ {{down}} · ↑ {{up}}",
    "publicShareBtStarting": "동료와 연결하는 중…",
    "publicShareBtFailed": "WebTorrent 실패: {{detail}}",
    "publicShareBtNeedMagnet": "이 공유에 대한 마그넷 URI가 없습니다.",
    "publicShareBtUnsupported": "이 브라우저는 WebTorrent를 실행할 수 없습니다. 대신 자석이나 .torrent를 사용하세요.",
    "btNone": "—",
    "uploadStatusSkipped": "건너뜀",
    "uploadStatusCancelled": "취소됨",
    "conflict": {
      "titleFile": "“{{name}}” 항목이 이미 있습니다",
      "titleFolder": "“{{name}}” 폴더가 이미 있습니다",
      "descFile": "처리 방법을 선택하세요. 바꾸기를 고르기 전에는 덮어쓰지 않습니다.",
      "descFolder": "처리 방법을 선택하세요. 병합은 기존 폴더를 유지하고 내용을 이어서 처리합니다.",
      "incoming": "가져올 항목",
      "existing": "이미 있음",
      "kindFile": "파일",
      "kindFolder": "폴더",
      "skip": "건너뛰기",
      "skipHint": "이 항목을 추가하지 않습니다",
      "keepBoth": "둘 다 유지",
      "keepBothHint": "가져올 항목을 {{name}}(으)로 저장",
      "replace": "바꾸기",
      "replaceHint": "기존 파일을 덮어씁니다. 가능하면 버전 스냅샷을 남깁니다.",
      "replaceFolderHint": "이 폴더 안의 같은 이름 파일을 덮어씁니다. 다른 파일은 그대로입니다.",
      "merge": "병합",
      "mergeHint": "기존 폴더를 유지하고 새 파일을 그 안에 추가합니다",
      "applyAll": "남은 이름 충돌 모두에 적용",
      "applyAllHint": "이번 끌어놓기 또는 복사/이동의 나머지에 같은 동작을 사용합니다",
      "cancelRest": "나머지 취소",
      "progress": "{{current}} / {{total}}",
      "typeMismatch": "“{{name}}” {{destKind}}이(가) 이미 있습니다. 가져올 항목은 {{incomingKind}}입니다.",
      "skipped": "건너뜀",
      "cancelled": "취소됨"
    },
    "webdavReissueUnchanged": "재발행 후에도 토큰 ID가 변경되지 않았습니다. 쓰기가 지속되지 않았을 수 있습니다. 다시 시도해 보세요.",
    "webdavDisableFailed": "WebDAV는 비활성화 후에도 여전히 활성화되어 있습니다. 쓰기가 지속되지 않았을 수 있습니다. 다시 시도해 보세요."
  },
  "firewall": {
    "profiles": {
      "web": {
        "label": "웹 호스트",
        "short": "SSH · 80 · 443"
      },
      "mail": {
        "label": "웹 + 메일",
        "short": "또한 25/465/587/993"
      },
      "ftps": {
        "label": "웹 + FTPS",
        "short": "21 + PASV 30000–30100"
      }
    },
    "appliedProfile": "적용된 프로필: {{label}}",
    "backToProtection": "보호",
    "statRules": "규칙",
    "statDenyIps": "영구 거부 IP",
    "statAllow": "허용하다",
    "statDeny": "부인하다",
    "statDefaultIn": "기본 수신",
    "defaultNotApplied": "해당 없음(UFW 꺼짐)",
    "ufwOffHint": "UFW가 꺼진 동안에는 기본 수신이 적용되지 않습니다.",
    "executeOn": "켜짐",
    "executeOff": "꺼짐",
    "ufwDisabled": "UFW 비활성화",
    "ufwEnabled": "UFW 활성화",
    "disableUfw": "UFW 비활성화",
    "enableUfw": "UFW 활성화",
    "notInstalled": "UFW가 설치되지 않았습니다",
    "toolHintPrefix": "기본 도구:",
    "toolHintBody": "UFW = 포트/영구 규칙 · 공격 대응 및 자동 금지 사용",
    "toolHintfail2ban": "failure2ban = 임시 로그 기반 금지",
    "toolHintFail2ban": "failure2ban = 임시 로그 기반 금지",
    "executeOffHint": "시스템 변경 꺼짐 — 상태를 읽을 수 있습니다.",
    "tabs": {
      "rules": "규칙",
      "ports": "열린 포트",
      "deny": "IP 영구 거부",
      "profiles": "프로필",
      "about": "설명",
      "services": "서비스"
    },
    "currentRules": "현재 규칙",
    "rulesSourceHint": "UFW 번호가 매겨진 규칙(ufw 상태 번호가 매겨짐)",
    "colAction": "행동",
    "colTo": "에게",
    "colFrom": "에서",
    "deleteShort": "삭제",
    "denyBadge": "DENY",
    "emptyRulesTitle": "규칙이 없거나 읽을 수 있는 권한이 없습니다.",
    "emptyRulesInstalled": "UFW가 비활성 상태이거나 읽으려면 루트가 필요합니다.",
    "emptyRulesNotInstalled": "UFW를 설치한 후 새로 고침",
    "allowPortTitle": "포트 허용",
    "protocol": "규약",
    "protoBoth": "둘 다",
    "protoBothLabel": "TCP+UDP",
    "port": "포트",
    "portHint": "공통 포트를 선택하거나 아래에서 맞춤 설정하세요.",
    "portHintYsk": "모든 YSK 서비스 포트(패널, 웹, SSH, 메일, FTP, DNS, DB, Redis)",
    "privatePortWarn": "{{service}} 일반적으로 비공개로 유지되어야 합니다. 공개 허용은 위험합니다. 소스 IP/CIDR을 선호하세요.",
    "privatePortWarnWithFrom": "{{service}}는 지정된 소스만 허용합니다. IP/CIDR을 다시 확인하세요.",
    "allowFrom": "소스 IP/CIDR(선택사항)",
    "allowFromHint": "비어 있음 = 어디서나; 이 포트에서 해당 소스만 허용하도록 IP 또는 CIDR을 설정하세요.",
    "allowFromPlaceholder": "예를 들어 203.0.113.10 또는 10.0.0.0/8",
    "customPort": "사용자 정의 포트(예: 8080 또는 30000:30100)",
    "allowedPort": "허용됨 {{proto}}/{{port}}",
    "allowedPortFrom": "{{from}}부터 {{proto}}/{{port}} 허용됨",
    "allowThisPort": "이 포트를 허용하세요",
    "allowPortHint": "웹 호스트의 경우 22/80/443을 유지합니다.",
    "denyTitle": "IP 영구 거부",
    "denySub": "UFW DENY · 일시적인 fail2ban 금지와는 다름",
    "denyPlaceholder": "거부할 IPv4 또는 IPv6",
    "deniedOk": "영구적으로 거부됨",
    "removedDeny": "거부가 삭제되었습니다.",
    "remove": "제거하다",
    "noDenyRules": "영구 거부 IP 규칙 없음",
    "oneClickProfiles": "원클릭 프로필",
    "oneClickDesc": "패널 스크립트 작성 및 UFW 적용(fail2ban을 설치하지 않음 - failure2ban 페이지 사용)",
    "customApply": "맞춤 적용",
    "allowSmtp": "SMTP/IMAP 포트 허용",
    "extraTcp": "추가 TCP 포트",
    "extraTcpHint": "사전 설정을 선택하세요. 또는 사용자 정의 쉼표/범위",
    "noExtra": "추가 없음",
    "mailGroup": "메일세트",
    "customExtraPlaceholder": "사용자 정의: 8080,9000:9010",
    "appliedCustom": "맞춤 규칙이 적용됨",
    "applyToSystem": "시스템에 적용",
    "deletedRule": "#{{n}} 삭제됨",
    "deleteRuleTitle": "규칙 #{{n}}을 삭제하시겠습니까?",
    "deleteRuleDesc": "해당 UFW 규칙 번호를 제거합니다(시스템 변경 권한이 필요함).",
    "servicesTitle": "관리형 서비스",
    "servicesHint": "YSK 서비스에 대한 원하는 네트워크 노출입니다. 서비스를 열면 이러한 규칙이 자동으로 동기화됩니다.",
    "servicesUfwOff": "UFW는 꺼져있습니다. 이 목록은 호스트가 시행하는 규칙이 아니라 원하는 노출입니다.",
    "servicesEmpty": "아직 서비스 노출 데이터가 없습니다.",
    "servicesEmptyDesc": "이 목록을 채우려면 관리형 서비스(웹, FTPS, VPN, DB…)를 시작하세요.",
    "servicesManualHint": "수동 포트 칩은 포트 탭 아래에 있습니다. 규칙이 태그된 상태로 유지되도록 여기에서 액세스를 관리하는 것이 좋습니다(ysk-svc).",
    "portsManualHint": "고급 수동 규칙. 관리되는 소프트웨어의 경우 서비스 탭을 선호합니다.",
    "colService": "서비스",
    "colMode": "방법",
    "colPorts": "포트",
    "colSync": "상태",
    "synced": "동기화됨",
    "syncNow": "동조",
    "disableConfirmTitle": "UFW를 사용 중지할까요?",
    "disableConfirmDesc": "호스트 방화벽이 트래픽을 필터하지 않습니다. 공용 네트워크에서는 SSH와 패널이 노출될 수 있습니다.",
    "disableConfirmConsequence": "기존 허용/거부 규칙은 유지되지만 UFW를 다시 켤 때까지 적용되지 않습니다.",
    "desiredOnlyUfwOff": "원하는: {{mode}} · UFW 꺼짐(적용되지 않음)",
    "syncNotApplied": "UFW 꺼짐 · 적용되지 않음"
  },
  "ftp": {
    "title": "FTPS 계정",
    "accountsCount": "{{count}} 계정",
    "accounts": "계정",
    "applied": "적용된",
    "pendingApply": "신청 대기 중",
    "sftpKeys": "SFTP 키",
    "softwareMissing": "FTPS 서비스 소프트웨어가 설치되지 않았습니다.",
    "ftpAccounts": "FTP 계정",
    "sftpPubkeys": "SFTP 공개 키",
    "homeDir": "홈 디렉토리",
    "domain": "도메인",
    "user": "사용자",
    "keyFingerprint": "키 지문(접두사)",
    "createHint": "먼저 계정 탭에서 FTP 계정을 생성한 다음 여기로 돌아와서 키를 등록하세요.",
    "pubkeyHint": "\"+ 공개 키 추가\"를 사용하고 FTP 사용자를 선택한 다음 전체 ssh-ed25519 또는 ssh-rsa 행을 붙여넣습니다.",
    "sftpKeyInvalid": "ssh-로 시작하는 사용자 이름과 공개 키가 필요합니다.",
    "quickSelect": "빠른 선택 계정",
    "quickSelectHint": "새 키 양식을 작성하려면 사용자 이름을 클릭하세요.",
    "editAccount": "FTP 계정 편집",
    "createAccount": "FTP 계정 만들기",
    "accountModalDesc": "목록에서 도메인과 집을 선택하거나 자유롭게 입력하세요. 저장 후 적용하여 vsftpd 작성",
    "usernameHintCreate": "Alnum, 점, 밑줄, 하이픈; 생성 후 불변",
    "usernameHint": "Alnum, 점, 밑줄, 하이픈",
    "newPasswordOptional": "새 비밀번호(선택사항)",
    "passwordKeepHint": "비어 있으면 현재 상태로 유지됩니다.",
    "passwordMin8": "8자 이상",
    "domainHint": "그룹화 및 경로 힌트를 위한 사이트 또는 메일 도메인",
    "domainPh": "사이트/메일 도메인을 먼저 생성하거나 임시로 입력하세요.",
    "homeHint": "로그인 후 루트(chroot 가시 범위)",
    "addPubkey": "SFTP 공개 키 추가",
    "addPubkeyDesc": "계정, 선택적 메모를 선택하고 전체 공개 키 라인 하나를 붙여넣습니다. 파일을 작성한다고 해서 로그인이 작동한다는 사실이 입증되는 것은 아닙니다.",
    "pubkeyAdded": "공개 키가 추가됨",
    "ftpUsername": "FTP 사용자 이름",
    "ftpUsernameHint": "등록된 FTP 계정과 일치해야 합니다.",
    "ftpUsernamePh": "FTP 계정과 동일",
    "note": "메모",
    "noteHint": "장치 라벨(예: 노트북/사무실",
    "notePh": "노트북/사무실 호스트",
    "sshPubkey": "SSH 공개 키",
    "sshPubkeyHint": "일반적으로 ~/.ssh/id_ed25519.pub에서 전체 줄을 붙여넣습니다.",
    "deleteAccountTitle": "FTP 계정을 삭제하시겠습니까?",
    "deleteAccountNamed": "FTP 계정을 삭제하시겠습니까 {{name}}?",
    "deleteAccountDesc": "삭제 후 다시 적용",
    "deleteKeyTitle": "SFTP 공개 키를 삭제하시겠습니까?",
    "deleteKeyDesc": "관리 파일에서 제거합니다. 시스템 Authorized_keys를 다시 로드해야 할 수도 있습니다.",
    "serviceTitle": "vsftpd 서비스",
    "softwareMissingService": "FTPS 소프트웨어가 설치되지 않았습니다.",
    "lifecycle": "수명주기",
    "overview": "개요",
    "network": "네트워크",
    "security": "보안",
    "installStart": "설치 및 시작",
    "listenPort": "청취 포트",
    "accountCount": "계정",
    "loginBanner": "로그인 배너",
    "sslDomain": "SSL 도메인",
    "plaintextInsecure": "일반 텍스트 FTP(TLS 없음) — 안전하지 않습니다. 포트 21을 노출하기 전에 FTPS를 활성화하십시오.",
    "plaintextPublicLive": "vsftpd는 FTPS 없이 공개 주소를 수신하고 있습니다. 자격 증명은 투명하게 이동합니다. FTPS를 활성화하거나, 이 호스트에만 바인딩하거나, PLAINTEXT를 확인하여 이 상태를 유지하세요.",
    "bindAddress": "청취 범위",
    "bindAddressHint": "새 설치는 이 호스트에만 바인딩됩니다. FTPS가 없는 공개 청취에는 입력된 확인이 필요합니다.",
    "bindLocal": "이 호스트만",
    "bindLocalHint": "127.0.0.1 — 로컬 테스트에 TLS가 없어도 괜찮습니다.",
    "bindPublic": "공공의",
    "bindPublicHint": "모든 인터페이스 - FTPS를 활성화하거나 PLAINTEXT를 확인하세요.",
    "enableFtpsAndStart": "FTPS를 활성화하고 시작하십시오.",
    "publicPlainNeedConfirm": "공개 일반 텍스트 FTP에는 PLAINTEXT 확인이 필요합니다.",
    "plainConfirmTitle": "FTPS 없이 공개 FTP를 시작하시겠습니까?",
    "plainConfirmDesc": "포트 21은 공개 주소의 일반 로그인 및 데이터를 허용합니다.",
    "plainConfirmC1": "사용자 이름과 비밀번호는 네트워크에 표시됩니다.",
    "plainConfirmC2": "PASV는 구성된 공용 IP를 광고합니다.",
    "plainConfirmC3": "호스트 방화벽 및 클라우드 보안 그룹이 열리지 않습니다.",
    "plainConfirmAction": "일반 텍스트 FTP 시작",
    "pasvRange": "PASV 범위",
    "forceTls": "강제 TLS",
    "allowWrite": "쓰기 허용",
    "networkTitle": "네트워크 설정",
    "networkDesc": "포트 및 PASV를 들어보세요.",
    "listenPortHint": "기본값 21; 다른 포트를 사용하는 경우 방화벽을 엽니다",
    "customPort": "사용자 정의 포트",
    "ipStack": "IP 스택",
    "ipStackHint": "대부분의 vsftpd 빌드: Listen 및 Listen_ipv6은 상호 배타적입니다.",
    "listenConflictLive": "Live vsftpd.conf에는 listening={{v4}} 및 listening_ipv6={{v6}}이 있습니다. 두 가지 모두 YES가 시작되지 않습니다.",
    "listenConflictNeedFix": "먼저 Listen / Listen_ipv6을 수정한 다음(둘 다 YES일 수 없음) 적용하세요.",
    "fixListenIpv4": "IPv4만 사용(listen=YES, listening_ipv6=NO)",
    "liveFileValue": "지금 제출하세요: {{value}}",
    "startBlockedFailed": "서비스가 실패했습니다. 시작하기 전에 유효한 구성을 적용하세요.",
    "ftpsNeedCert": "먼저 인증서 도메인을 선택하세요.",
    "ipv4Only": "IPv4 전용",
    "ipv6Mapped": "IPv6(매핑 가능)",
    "bannerHint": "클라이언트가 연결 후 표시되는 환영 문자열",
    "pasvStart": "PASV 시작 포트",
    "pasvStartHint": "패시브 데이터 채널 시작",
    "customStart": "맞춤 시작",
    "pasvEnd": "PASV 종단 포트",
    "pasvEndHint": "≥ 시작이어야 합니다. 방화벽은 범위를 허용해야 합니다",
    "openFirewallPage": "방화벽 페이지 열기",
    "customEnd": "맞춤 끝",
    "pasvPublicIp": "PASV 공용 IP",
    "detectPublicIp": "공개 IP 감지",
    "detectPublicIpTitle": "이 호스트에서 첫 번째 비루프백 IPv4를 채웁니다.",
    "pasvPublicIpHint": "NAT/클라우드: 공용 IP 설정; 로컬은 비워 둘 수 있습니다",
    "pasvIpRequired": "적용 전에 PASV 공인 IP를 지정하세요(NAT/클라우드). 감지하거나 주소를 입력합니다.",
    "optionalEmpty": "(선택 과목)",
    "securityTitle": "보안 설정",
    "securityDesc": "TLS, 쓰기 액세스, chroot; 적용하고 다시 시작하면 적용됩니다.",
    "sslCertDomain": "SSL 인증서 도메인",
    "sslCertDomainHint": "업로드/발급된 인증서 도메인 선택",
    "enableFtps": "FTPS(SSL/TLS) 활성화",
    "enableFtpsDesc": "제어 채널의 TLS; 추천",
    "forceTlsLogin": "강제 TLS 로그인",
    "forceTlsLoginDesc": "일반 FTP를 거부합니다. 클라이언트에는 FTPS가 필요합니다",
    "allowWriteDesc": "꺼짐 = 다운로드/목록만",
    "chrootUsers": "Chroot 사용자",
    "chrootUsersDesc": "로그인 후 집으로 감옥",
    "writableChroot": "쓰기 가능한 chroot 허용",
    "writableChrootDesc": "집에 쓰기 가능한 경우에도 chroot 유지(일반적인 vsftpd 필요)",
    "settingsSaved": "설정이 저장되었습니다.",
    "installIncomplete": "설치를 완료할 수 없습니다.",
    "ftpsReady": "FTPS 준비",
    "settingsApplied": "설정이 적용되었습니다.",
    "opsResult": "작업 결과",
    "saved": "저장됨",
    "accountsList": "계정 목록",
    "accountsListDesc": "생성 후 vsftpd 동기화를 적용합니다. 서비스가 누락된 경우 위에 설치한 다음",
    "startService": "시작.",
    "createAccountPlus": "+ 계정 만들기",
    "noFtpAccounts": "아직 FTP 계정이 없습니다.",
    "noFtpAccountsDesc": "계정 만들기(오른쪽 상단 목록) 집과 도메인을 설정한 후 신청하세요.",
    "applyHint": "참고: 쓰기 관리만 적용하십시오. 청취하려면 vsftpd가 활성화되어 있어야 합니다.",
    "sshdMatchNote": "; 시스템 sshd 일치가 적용되도록 구성되어야 합니다.",
    "addPubkeyPlus": "+ 공개 키 추가",
    "noPubkeys": "등록된 공개 키가 없습니다.",
    "pickDomain": "— 도메인 선택 —",
    "currentDomain": "{{domain}} (현재)",
    "pickHome": "— 집으로 선택 —",
    "currentHome": "{{path}} (현재)",
    "fullPath": "전체 경로:",
    "emptyHomes": "목록이 비어 있으면 홈 옵션에 대한 프로젝트나 사이트를 먼저 생성하세요.",
    "pickAccount": "— 계정 선택 —",
    "installFtpsBanner": "위의 배너를 이용하여 FTPS를 설치한 후 서비스를 시작하세요.",
    "applyRestart": "적용하고 다시 시작하세요",
    "afterInstall": "설치 후 FTPS 계정으로 로그인할 수 있습니다. 설치하려면 관리자 권한이 필요합니다.",
    "saveSettings": "설정 저장",
    "saveApplyHint": "업데이트 패널만 저장합니다. 적용하고 다시 시작하면 vsftpd.conf를 쓰고 다시 로드됩니다.",
    "installAndStart": "설치 및 시작",
    "manageAccounts": "계정",
    "openFirewallPorts": "방화벽 포트 열기",
    "firewallPortsApplied": "방화벽 허용 TCP {{ports}}",
    "sftpTabDesc": "클라이언트가 SFTP 키 로그인을 사용할 수 있도록 FTP 계정에 SSH 공개 키를 등록하세요. 계정을 선택하고 하나의 핵심 라인을 붙여넣은 다음 저장하세요.",
    "sftpNeedAccountTitle": "아직 FTP 계정이 없습니다.",
    "sftpNeedAccount": "먼저 하나 이상의 FTP 계정을 만든 다음 해당 사용자의 공개 키를 등록하세요.",
    "sftpFilterLabel": "계정",
    "sftpFilterAll": "모든 계정",
    "sftpKeyCount": "{{count}} 키",
    "sftpEmptyFiltered": "이 계정에 키가 없습니다",
    "sftpEmptyFilteredDesc": "'{{user}}'에는 아직 등록된 SSH 공개 키가 없습니다.",
    "sftpRegister": "키 등록",
    "sftpAddedAt": "추가됨 {{time}}",
    "sftpTechSummary": "기술 세부정보(고급)",
    "sftpTechNote": "키는 관리 경로 아래에 기록됩니다.",
    "filterProject": "이 프로젝트의 FTP 계정만 표시",
    "clearProjectFilter": "모든 계정 보기",
    "vsftpdFailedHint": "vsftpd가 실패했습니다. 서비스 탭을 엽니다(listen과 ​​listening_ipv6이 둘 다 YES일 수는 없습니다).",
    "vsftpdFailedGeneric": "vsftpd가 실패했습니다. 라이브 설정 및 저널에 대한 서비스 탭을 엽니다.",
    "stateFailed": "시작하지 못했습니다.",
    "tabService": "서비스"
  },
  "geo": {
    "continents": {
      "AS": "아시아",
      "EU": "유럽",
      "NA": "북아메리카",
      "SA": "남아메리카",
      "AF": "아프리카",
      "OC": "오세아니아",
      "AN": "남극 대륙"
    },
    "countries": {
      "CN": "중국",
      "HK": "홍콩",
      "MO": "마카오",
      "TW": "대만",
      "JP": "일본",
      "KR": "대한민국",
      "KP": "북한",
      "SG": "싱가포르",
      "MY": "말레이시아",
      "TH": "태국",
      "VN": "베트남",
      "PH": "필리핀 제도",
      "ID": "인도네시아 공화국",
      "IN": "인도",
      "AU": "호주",
      "NZ": "뉴질랜드",
      "US": "미국",
      "CA": "캐나다",
      "MX": "멕시코",
      "BR": "브라질",
      "AR": "아르헨티나",
      "GB": "영국",
      "IE": "아일랜드",
      "DE": "독일",
      "FR": "프랑스",
      "NL": "네덜란드",
      "BE": "벨기에",
      "CH": "스위스",
      "AT": "오스트리아",
      "SE": "스웨덴",
      "NO": "노르웨이",
      "DK": "덴마크",
      "FI": "핀란드",
      "PL": "폴란드",
      "CZ": "체코",
      "ES": "스페인",
      "PT": "포르투갈",
      "IT": "이탈리아",
      "RU": "러시아 제국",
      "UA": "우크라이나",
      "TR": "칠면조",
      "IL": "이스라엘",
      "AE": "UAE",
      "SA": "사우디아라비아",
      "EG": "이집트",
      "ZA": "남아프리카",
      "NG": "나이지리아",
      "PK": "파키스탄",
      "BD": "방글라데시",
      "IR": "이란",
      "IQ": "이라크",
      "RO": "루마니아",
      "BG": "불가리아",
      "HU": "헝가리",
      "GR": "그리스",
      "LT": "리투아니아",
      "LV": "라트비아",
      "EE": "에스토니아",
      "BY": "벨라루스",
      "KZ": "카자흐스탄",
      "UZ": "우즈베키스탄",
      "CL": "칠레",
      "CO": "콜롬비아",
      "PE": "페루",
      "VE": "베네수엘라",
      "CU": "쿠바",
      "SC": "세이셸",
      "PA": "파나마"
    },
    "regions": {
      "CN-BJ": "베이징",
      "CN-SH": "상하이",
      "CN-TJ": "천진",
      "CN-CQ": "충칭",
      "CN-GD": "광둥",
      "CN-ZJ": "저장성",
      "CN-JS": "장쑤성",
      "CN-SD": "산둥",
      "CN-HN": "허난",
      "CN-HB": "후베이",
      "CN-HU": "후난",
      "CN-SC": "쓰촨성",
      "CN-HE": "허베이",
      "CN-FJ": "푸젠성",
      "CN-AH": "안후이",
      "CN-JX": "장시성",
      "CN-LN": "랴오닝",
      "CN-JL": "길림",
      "CN-HL": "헤이룽장성",
      "CN-SX": "산시성",
      "CN-SN": "산시성",
      "CN-GS": "간쑤성",
      "CN-QH": "칭하이",
      "CN-HA": "하이난",
      "CN-YN": "윈난성",
      "CN-GZ": "구이저우",
      "CN-GX": "광시",
      "CN-NX": "닝샤",
      "CN-XJ": "신장",
      "CN-XZ": "티베트",
      "CN-NM": "내몽골",
      "TW-TPE": "타이페이",
      "TW-TXG": "타이중",
      "TW-KHH": "가오슝",
      "HK-HK": "홍콩",
      "MO-MO": "마카오",
      "US-CA": "CA",
      "US-NY": "NY",
      "US-TX": "TX",
      "US-FL": "FL",
      "US-WA": "WA",
      "US-IL": "IL",
      "US-VA": "VA",
      "US-OR": "OR",
      "US-GA": "GA",
      "US-NJ": "NJ",
      "US-MA": "MA",
      "US-OH": "OH",
      "US-PA": "PA",
      "US-AZ": "AZ",
      "US-CO": "CO",
      "US-NC": "NC",
      "US-MI": "MI",
      "US-NV": "NV",
      "JP-13": "도쿄",
      "JP-27": "오사카",
      "JP-14": "가나가와",
      "JP-23": "아이치",
      "KR-11": "서울",
      "KR-26": "부산",
      "SG-01": "SG",
      "AU-NSW": "NSW",
      "AU-VIC": "VIC",
      "GB-ENG": "ENG",
      "DE-BE": "BE",
      "DE-BY": "BY",
      "RU-MOW": "MOW",
      "RU-SPE": "SPE"
    }
  },
  "hostBrowse": {
    "tabBrowse": "먹다",
    "subtitle": "이 호스트를 통해 인터넷이나 LAN을 탐색하세요. 대상은 귀하의 데스크탑 브라우저 신원을 결코 볼 수 없습니다.",
    "modeInternet": "인터넷",
    "modeIntranet": "인트라넷",
    "modeHint": "인터넷은 개인 IP를 차단합니다. 인트라넷은 LAN 대상을 허용합니다. 둘 다 클라우드 메타데이터를 차단합니다.",
    "urlPlaceholder": "https://example.com 또는 192.168.1.1",
    "go": "가다",
    "back": "뒤로",
    "forward": "앞으로",
    "reload": "새로고침",
    "stop": "멈추다",
    "clearCookies": "쿠키 지우기",
    "clearCookiesConfirm": "그러면 이 탐색 세션에 대해 호스트에 저장된 쿠키가 지워집니다. 로그인한 사이트는 다시 로그인해야 합니다.",
    "closeSession": "세션 닫기",
    "copyUrl": "URL 복사",
    "newSession": "새 세션",
    "privacyOn": "개인정보 보호 사용",
    "viaHost": "호스트를 통해",
    "emptyTitle": "호스트 중재 탐색",
    "emptyBody": "URL을 입력하세요. DNS, TLS 및 송신은 브라우저가 아닌 이 서버를 사용합니다. 쿠키는 서버측 항아리에 보관됩니다.",
    "needUrl": "위에서 URL을 입력해 세션을 시작하세요.",
    "ssrfBlocked": "보안 정책에 의해 차단됨(SSRF/모드)",
    "loadFailed": "호스트에서 가져오기에 실패했습니다.",
    "sessionReady": "세션 준비됨",
    "noSession": "세션 없음",
    "statusLine": "{{status}} · {{ms}}ms · {{type}} · 호스트를 통해",
    "cookies": "쿠키",
    "latency": "숨어 있음",
    "locked": "HTTPS",
    "insecure": "HTTP",
    "loading": "로딩 중…",
    "modeSwitchHint": "모드를 전환하면 새 세션이 열리고 쿠키가 삭제됩니다.",
    "copied": "URL 복사됨",
    "downloadHint": "HTML이 아닌 응답 — 콘텐츠 프레임을 열거나 다시 탐색합니다.",
    "engineLabel": "엔진",
    "engineProxy": "대리",
    "engineBrowser": "실제 브라우저",
    "engineSwitchHint": "스위칭 엔진이 새 세션을 엽니다.",
    "needChrome": "실제 브라우저에는 Chrome/Chromium 시스템(또는 YSK_HOST_BROWSE_CHROME 설정)이 필요합니다. 그렇지 않으면 프록시를 사용하십시오.",
    "engineBrowserNeedChrome": "실제 브라우저(Chrome 미설치)",
    "egressHint": "대상 사이트에는 노트북이 아닌 이 서버의 아웃바운드 주소({{host}})가 표시됩니다. 쿠키는 서버 세션 jar에 유지됩니다.",
    "needChromeFallback": "Chrome을 사용할 수 없음 — 프록시 엔진으로 전환되었습니다.",
    "liveError": "실시간 스트리밍 실패",
    "liveWaiting": "호스트 브라우저 연결 중…",
    "tabSettings": "설정",
    "softwareNeeded": "실제 브라우저 엔진에는 Chromium / Chrome이 필요합니다.",
    "softwareHint": "원클릭으로 apt를 통해 배포판 Chromium을 설치합니다. 이미 존재하는 경우 Google Chrome 바이너리도 감지됩니다. 루트 + YSK_EXECUTE=1이 필요합니다.",
    "closeNoSession": "아직 세션이 없습니다.",
    "goInstallChrome": "소프트웨어 탭 열기",
    "settingsIntro": "이러한 패널 설정은 호스트 찾아보기에 대한 프로세스 환경 변수를 대체합니다.",
    "settingsEngine": "기본 엔진",
    "engineAuto": "자동",
    "settingsChromePath": "Chrome/Chromium 경로",
    "settingsChromePathHint": "비어 있음 = 자동 감지. 예: /usr/bin/google-chrome",
    "settingsLoopback": "인트라넷 모드(127.0.0.1)에서 루프백 허용",
    "settingsNoSandbox": "Chromium --no-sandbox(컨테이너만 해당)",
    "settingsSave": "설정 저장",
    "settingsSaved": "호스트 찾아보기 설정이 저장되었습니다.",
    "envHintsTitle": "프로세스 환경(읽기 전용, 설정 시 패널 설정이 우선 적용됨)",
    "stream": {
      "label": "품질",
      "smooth": "매끄러운",
      "balanced": "균형 잡힌",
      "sharp": "날카로운"
    },
    "zoom": {
      "label": "줌",
      "fit": "맞다",
      "fill": "채우다"
    },
    "retryNav": "탐색 재시도",
    "retryLive": "스트림 다시 연결",
    "tryProxy": "프록시 엔진으로 전환",
    "err": {
      "LIVE_NO_FRAME": "스트림 시간 초과: 수신된 프레임이 없습니다. 내비게이션을 다시 연결하거나 다시 시도하세요.",
      "LIVE_WS_FAIL": "라이브 연결에 실패했습니다. 스트림을 다시 연결하십시오.",
      "SSRF_BLOCKED": "보안 정책에 의해 차단된 대상입니다.",
      "BOT_CHALLENGE": "대상에는 사람의 확인이나 블록 자동화가 필요할 수 있습니다. 화면에 표시되면 도전을 완료하세요.",
      "TIMEOUT": "로드 시간이 초과되었습니다. 다시 시도해 주세요.",
      "DNS_FAIL": "DNS 확인에 실패했습니다.",
      "TLS_FAIL": "TLS/SSL 연결에 실패했습니다.",
      "NAV_FAIL": "탐색에 실패했습니다.",
      "CHROME_LAUNCH": "호스트 Chromium을 시작할 수 없습니다. 설치 및 샌드박스 없음 설정을 확인하세요.",
      "SESSION_GONE": "세션이 만료되었습니다. 다시 탐색하세요.",
      "NEED_CHROME": "크롬/크롬이 필요합니다."
    },
    "home": "집",
    "bookmark": "서표",
    "bookmarkAdd": "북마크 추가 또는 제거",
    "bookmarkList": "북마크 목록",
    "bookmarks": "북마크",
    "history": "역사",
    "bookmarkToggled": "북마크가 업데이트되었습니다.",
    "newTab": "새 탭",
    "fullscreen": "전체 화면",
    "mediaNote": "실제 브라우저: 비디오가 스트리밍됩니다. 오디오가 아직 패널에 연결되지 않았습니다(2단계).",
    "isolationNote": "실제 브라우저는 Chrome용 임시 Linux 사용자를 생성합니다. 페이지를 떠나거나 유휴 시간 초과로 인해 해당 사용자가 삭제됩니다.",
    "resumeHint": "이전 세션 재개({{count}} 탭)",
    "resumeHintDetail": "이전 세션 재개({{count}} 탭) · {{url}} · {{when}}",
    "resumeHintOwned": "{{user}} ({{count}} 탭) · {{url}} · {{when}}에 대한 마지막 탐색 재개",
    "clearSessionData": "세션 데이터 지우기",
    "clearSessionConfirm": "그러면 이전 탐색 세션의 재개 스냅샷이 삭제됩니다. 나중에 해당 탭을 복원할 수 없습니다.",
    "resume": "재개하다",
    "resumeDismiss": "해고하다",
    "resumeDone": "세션이 재개되었습니다.",
    "settingsSafety": "항해 안전",
    "settingsSafetyHint": "엄격한 차단은 더 위험한 호스트를 차단합니다. 완화됨은 더 넓은 인트라넷 대상을 허용합니다. 클라우드 메타데이터에 대한 SSRF 보호를 비활성화하지 않습니다.",
    "safetyStrict": "엄격한",
    "safetyStandard": "기준",
    "safetyRelaxed": "편안한",
    "settingsBlockHosts": "차단된 호스트 접미사",
    "settingsBlockHostsHint": "한 줄에 하나의 호스트 이름 또는 접미사(예: Malware.test). 정확한 일치와 접미사 일치는 차단됩니다.",
    "settingsAllowDangerousDownloads": "위험도가 높은 다운로드 허용(exe/스크립트)",
    "settingsAudioBridge": "페이지 오디오를 패널에 연결",
    "settingsAudioBridgeHint": "호스트 Chrome 오디오를 이 브라우저로 스트리밍합니다. 일부 사이트에서는 재생 잠금을 해제하려면 클릭이 필요합니다.",
    "downloads": "다운로드",
    "downloadsEmpty": "이 세션에는 다운로드가 없습니다.",
    "downloadReady": "준비됨",
    "downloadBlocked": "막힌",
    "downloadPending": "보류 중",
    "downloadFailed": "실패한",
    "downloadSave": "저장",
    "audioUnlock": "소리 활성화",
    "audioUnlockHint": "이 탭에서 오디오 재생을 잠금 해제하려면 클릭하세요.",
    "audioUnlocked": "오디오 잠금 해제됨",
    "audioPlaying": "오디오 재생",
    "audioNeedsUnlock": "오디오 잠금 해제 필요",
    "audioBridgedHint": "페이지 오디오가 호스트 브라우저에서 브리지됩니다.",
    "audioNotBridged": "오디오 꺼짐",
    "audioNotBridgedHint": "페이지를 들으려면 설정에서 오디오 브리지를 켜세요.",
    "mediaPolicyTitle": "실제 브라우저의 미디어",
    "mediaVideoLabel": "동영상",
    "mediaVideoDesc": "호스트에서 렌더링되고 패널에 프레임으로 스트리밍됩니다.",
    "mediaAudioLabel": "오디오",
    "mediaAudioDesc": "호스트 Chrome의 선택적 브리지; 잠금 해제 클릭이 필요할 수 있습니다.",
    "mediaPolicyLabel": "정책",
    "mediaPolicyDesc": "다운로드 및 자동 재생은 위의 안전 및 다운로드 설정을 따릅니다.",
    "frameBlocked": "페이지를 패널 프레임에 표시할 수 없습니다.",
    "historyEmpty": "이 세션에는 기록이 없습니다.",
    "bookmarksEmpty": "아직 북마크가 없습니다.",
    "closeSessionHint": "이 탐색 세션에 대한 쿠키를 지웁니다. 북마크가 유지됩니다.",
    "envUnset": "설정되지 않음",
    "envPanelValue": "패널: {{value}}",
    "envColVar": "변수",
    "envColHost": "호스트 프로세스",
    "envColPanel": "패널 설정",
    "envColEffective": "적용값",
    "settingsNoSandboxWarn": "Chromium 샌드박스를 비활성화합니다. 신뢰할 수 있는 용기 내에서만 사용하세요. 다음 실제 브라우저 세션에 적용됩니다.",
    "settingsDangerDlWarn": "호스트 브라우저를 통해 실행 파일 및 스크립트 다운로드를 허용합니다. 이것이 필요하다는 것을 확인하세요.",
    "settingsDangerConfirmTitle": "위험도가 높은 탐색 설정을 활성화하시겠습니까?"
  },
  "legal": {
    "hubTitle": "법률",
    "hubSub": "YSK Server 이용약관, 개인정보 처리방침, 면책 조항",
    "terms": "이용약관",
    "privacy": "개인정보 처리방침",
    "disclaimer": "면책 조항",
    "updated": "최종 업데이트 {{date}}",
    "englishPrevails": "공식 언어는 영어와 홍콩 서면 중국어입니다. 차이가 있으면 영어가 우선합니다.",
    "notOfficialLocale": "표시 언어는 공식 법률 언어가 아닙니다. 전환하지 않으면 아래 구속력 있는 본문은 영어입니다.",
    "officialLang": "공식 본문",
    "officialEn": "영어",
    "officialZh": "繁體中文(향港)",
    "signIn": "로그인",
    "mitNote": "소스 코드는 MIT 라이선스입니다. 이 페이지는 추가 이용 조건입니다.",
    "backToIndex": "모든 법률 문서"
  },
  "listToolbar": {
    "searchPlaceholder": "찾다…",
    "searchAria": "검색 목록",
    "clearSearch": "검색 지우기",
    "clearAll": "필터 지우기",
    "resultCount": "{{count}} 결과",
    "showingOf": "{{total}} 중 {{shown}} 표시 중",
    "activeFilters": "{{count}} 필터 활성화됨",
    "noResults": "일치하는 항목 없음",
    "noResultsHint": "다른 키워드를 사용하거나 필터를 삭제해 보세요.",
    "searching": "수색…",
    "emptyChip": "이 필터에는 항목이 없습니다."
  },
  "logViewer": {
    "banIpTitle": "보호에서 {{ip}} 금지",
    "filter": "필터",
    "filterPh": "예어",
    "levels": "레벨",
    "wrap": "포장하다",
    "follow": "따르다",
    "download": "다운로드",
    "nextError": "다음 오류",
    "prevError": "이전 오류",
    "lines": "{{n}} 줄",
    "shown": "{{n}} 표시됨",
    "errors": "오류 {{n}}",
    "warnings": "경고 {{n}}",
    "all": "전체",
    "empty": "로그 줄 없음"
  },
  "login": {
    "title": "YSK Server 로그인",
    "subtitle": "서버 콘솔",
    "username": "사용자 이름",
    "password": "비밀번호",
    "submit": "로그인",
    "failed": "로그인에 실패했습니다. 사용자 이름 또는 비밀번호를 확인하세요.",
    "footer": "YSK Limited의 제품",
    "totpRequired": "이 계정은 2FA가 켜져 있습니다. 6자리 코드를 입력하세요.",
    "totpLabel": "인증 코드",
    "totpHint": "인증 앱의 6자리 코드",
    "submitting": "로그인 중…",
    "sessionExpired": "세션이 만료되었습니다. 다시 로그인하세요",
    "newPassword": "새 비밀번호",
    "newPasswordAgain": "새 비밀번호 확인",
    "changePassword": "비밀번호 변경",
    "passwordMismatch": "비밀번호가 일치하지 않습니다",
    "passwordChanged": "비밀번호가 업데이트되었습니다"
  },
  "logs": {
    "catSystem": "시스템 파일",
    "catMail": "우편",
    "catSecurity": "보안",
    "catApp": "앱",
    "catOther": "다른",
    "journalService": "저널 단위",
    "unavailable": "없는",
    "compressed": "· 압축",
    "noLogFileYet": "(아직 로그 파일이 없습니다)",
    "afterDeploy": "배포 후 표시",
    "logsLoaded": "로드된 로그",
    "sseFailed": "SSE가 실패하여 폴링으로 돌아갑니다.",
    "sseInterrupted": "SSE가 중단되었습니다.",
    "settingsSaved": "설정이 저장되었습니다.",
    "exportedJsonl": "내보낸 JSONL",
    "exported": "수출됨",
    "bookmarkSaved": "북마크가 저장되었습니다",
    "title": "로그 센터",
    "fullAccess": "전체 액세스",
    "nonRoot": "비루트",
    "noExecute": "실행 안함",
    "error": "오류",
    "projectLog": "프로젝트 로그",
    "filesCount": "{{count}} 파일",
    "tabExplore": "탐구하다",
    "tabMaint": "유지",
    "tabSettings": "설정",
    "tabAbout": "설명",
    "sources": "로그 소스",
    "filterPlaceholder": "필터 단위/파일…",
    "filterSources": "소스 필터링",
    "noProjectLogs": "프로젝트 로그 없음 - 배포 후 표시",
    "noMatchSources": "일치하는 소스가 없습니다.",
    "projectPrefix": "프로젝트 ·",
    "timeRange": "시간 범위",
    "unlimited": "제한 없는",
    "priority": "우선 사항",
    "all": "전체",
    "keywordIp": "키워드 / IP…",
    "custom": "관습",
    "copied": "복사됨",
    "truncated": "· 잘림",
    "following": "· 팔로잉",
    "followingSse": "· 다음 (SSE)",
    "loadingSources": "소스 로드 중…",
    "pickSource": "왼쪽에서 소스를 선택하거나 바로가기를 선택한 후 쿼리를 선택하세요.",
    "noRowsInWindow": "이 기간에는 기록이 없습니다.",
    "showInactiveUnits": "비활성 장치 표시",
    "sseNeedFollow": "먼저 팔로우를 켭니다. SSE는 라이브 테일에만 사용됩니다.",
    "maintOverview": "유지보수 개요",
    "executable": "실행 가능",
    "restricted": "제한된",
    "needRootExecute": "루트+EXECUTE 필요",
    "retention": "보유",
    "retentionHint": "예를 들어 7일 · 14일 · 30일",
    "defaultLines": "기본 라인",
    "followInterval": "간격을 따르십시오",
    "maxBytes": "최대 바이트",
    "maskSecrets": "마스크 비밀",
    "defaultVacuumDays": "기본 진공 일수",
    "d7": "7일",
    "d14": "14일",
    "d30": "30일",
    "d90": "90일",
    "journalAlerts": "저널 알림",
    "autoVacuum": "자동 진공",
    "deleted": "삭제됨",
    "bookmarkDeleted": "북마크가 삭제되었습니다.",
    "opsResult": "작업 결과",
    "saveBookmark": "북마크 저장",
    "bookmarkNamePrompt": "현재 쿼리의 이름",
    "query": "질문",
    "follow": "따르다",
    "export": "내보내다",
    "vacuum": "진공",
    "loadFailed": "로드하지 못했습니다.",
    "projectLogsLink": "프로젝트 → 로그",
    "projectLogsDesc": "— 사이트별 바로가기 + 딥링크",
    "queryFollow": "쿼리하고 팔로우하세요",
    "queryFollowDesc": "기본 라인, 팔로우 간격, Explore의 응답 한도",
    "retentionAlerts": "보관 및 알림",
    "retentionAlertsDesc": "진공 기본값, 저널 디스크 경고, 자동 청소 창",
    "dailyNeedRoot": "매일(루트 + EXECUTE 필요)",
    "customAllow": "사용자 정의 허용 경로",
    "customAllowDesc": "/var/log 또는 /run/log만 · .ssh, 키, /etc 거부",
    "pathsCount": "{{n}} 경로",
    "noCustomPaths": "아직 맞춤 경로가 없습니다.",
    "bookmarks": "북마크",
    "bookmarksDesc": "공통 탐색 필터; 탐색 스위치를 열고 소스를 적용합니다.",
    "noBookmarks": "북마크 없음 - 탐색에서 쿼리한 후 북마크 저장",
    "settingsWriteNote": "설정은 패널 DB에 기록됩니다. 자동 진공 점검 창은 15분마다 표시됩니다.",
    "saveSettings": "설정 저장",
    "vacuumDaysQ": "진공 시간 {{days}}?",
    "vacuumSizeQ": "진공 크기 500M?",
    "vacuumDesc": "Journalctl Vacuum은 오래된 로그를 영구적으로 삭제합니다.",
    "vacuumRequested": "진공 요청됨",
    "vacuumSizeRequested": "요청된 진공 크기",
    "scLogs": "저널/파일/프로젝트 관찰",
    "scProtection": "사고 대응, 자동 차단(IP 클릭)",
    "shortcuts": "단축키",
    "projectsOnly": "프로젝트만",
    "filesTitle": "{{n}} 파일",
    "bookmarksLabel": "북마크",
    "filter": "필터",
    "followSec": "{{sec}}s 팔로우",
    "wrap": "포장하다",
    "bookmark": "서표",
    "standby": "게으른",
    "partialFail": "부분적/실패함",
    "lines": "{{n}} 줄",
    "followingSseDyn": "· 팔로우{{sse}}",
    "ipBan": "IP → 금지",
    "vacuumNote": "무료 시스템 저널 디스크. EXECUTE 없음 → 차단됨, 가짜 성공 없음.",
    "vacuumTime": "진공 시간",
    "vacuumNeedRetention": "먼저 보존 기간을 입력하세요(예: 14d)",
    "vacuumNeedConfirm": "확인 필요 — 오래된 journal 로그를 삭제합니다",
    "vacuumSizeNeedConfirm": "확인 필요 — journal 디스크 사용을 제한합니다",
    "vacuumHint": "7일 이상 유지하는 것이 좋습니다. 이후에 디스크를 다시 검색하세요.",
    "logrotateStatus": "시스템 로그 회전 상태(읽기 전용 프로브)",
    "logrotateMissing": "상태 파일이 없거나 읽을 수 없습니다. 서비스 매트릭스에서 logrotate 패키지를 확인하세요.",
    "relatedOps": "관련 작전",
    "relatedOpsDesc": "로그 관찰과 사고 대응",
    "scLogsLine": "저널/파일/프로젝트 관찰",
    "scProtLine": "사고 대응, 자동 차단(IP 클릭)",
    "journalVacuumTitle": "저널 진공",
    "journalSection": "신문",
    "sseLabel": "SSE",
    "logrotateLabel": "로그로테이션",
    "srcNginx": "nginx",
    "srcSsh": "SSH",
    "srcfail2ban": "실패2금지",
    "srcFail2ban": "실패2금지",
    "srcAuthLog": "auth.log",
    "srcNginxError": "nginx 오류",
    "srcLetsEncrypt": "암호화하자",
    "groupJournal": "신문",
    "groupVarLog": "/var/log",
    "prioErr": "오류+",
    "prioWarn": "경고+",
    "prioInfo": "정보+",
    "vacuumSize": "500MB로 제한",
    "logrotateNoStatus": "아직 logrotate 상태 파일이 없습니다(실행된 적이 없다면 정상).",
    "autoVacuumOff": "자동 청소가 꺼져 있습니다. 활성화할 때까지 시간은 사용되지 않습니다.",
    "aboutAllowlist": "Explore는 허용 목록에 있는 저널 단위와 /var/log 경로만 읽을 수 있습니다. 임의의 호스트 경로는 제공되지 않습니다.",
    "aboutCustomPath": "설정에 사용자 정의 경로를 추가합니다(/var/log 또는 /run/log만 해당). 그런 다음 탐색에서 엽니다.",
    "vacuumSizeAlreadyBelow": "현재 사용량이 한도보다 낮아 보통 삭제되지 않습니다.",
    "vacuumSizeNoopDesc": "journal이 이미 500 MB 미만입니다. vacuum --size=500M은 실행되지만 보통 삭제하지 않습니다.",
    "journalDiskHint": "현재 systemd-journald 사용량(활성 journal). /var/log 순환 파일은 포함하지 않습니다.",
    "varLogDiskHint": "/var/log 추정(순환 파일 포함).",
    "queryFirst": "먼저 조회하세요",
    "errorsWindowHint": "마지막 개요 프로브의 최근 오류(탭을 전환할 때 실시간 업데이트되지 않음)",
    "sourceCount": "{{shown}} 표시됨",
    "sourceUnavailable": "이 소스는 아직 로그를 생성하지 않았습니다.",
    "sourceNoLog": "아직 로그가 없습니다",
    "projectSourcesTitle": "출처 {{n}}개(파일 + journal)",
    "logrotatePath": "길",
    "logrotateLast": "마지막 회전",
    "exportJsonl": "JSONL 내보내기",
    "sseLive": "(실시간 스트림)",
    "logrotateExpand": "{{n}} 더보기",
    "logrotateCollapse": "간략히 표시",
    "logrotateVersion": "상태 버전 {{v}}"
  },
  "metrics": {
    "alert": {
      "memory_high": "메모리 높음",
      "load_high": "부하가 높음",
      "disk_high": "디스크 높이"
    },
    "loadFailed": "측정항목을 로드하지 못했습니다.",
    "projectUsageFailed": "프로젝트 사용량을 로드하지 못했습니다.",
    "procListFailed": "프로세스 목록 실패",
    "streamEnded": "스트림 종료됨({{reason}})",
    "streamOpenFailed": "스트림을 열 수 없습니다.",
    "signalFailed": "신호 실패",
    "detailFailed": "세부정보를 로드할 수 없습니다.",
    "alertCount": "{{count}} 알림",
    "attention": "주의가 필요함",
    "normal": "OK",
    "disk": "디스크",
    "alerts": "경고",
    "auto5s": "자동 5초",
    "hostSettings": "호스트 설정",
    "loading": "측정항목 로드 중…",
    "tabs": {
      "overview": "개요",
      "live": "라이브 프로세스",
      "disk": "디스크",
      "projectUsage": "프로젝트 사용법",
      "alerts": "경고"
    },
    "load": "짐",
    "load1m": "1m 부하",
    "uptime": "가동 시간",
    "filterCpu5": "≥5% CPU",
    "filterMem5": "≥5% 메모리",
    "signalHint": "프로세스를 선택한 다음 TERM 또는 KILL을 보냅니다.",
    "signalFromRow": "TERM/KILL에 대해 이 프로세스를 선택하세요.",
    "selectForSignal": "선택하다",
    "forceKillTitleNamed": "PID를 죽여라 {{pid}} ({{cmd}})?",
    "sendSigTitleNamed": "TERM을 PID {{pid}}({{cmd}})로 보내시겠습니까?",
    "min1": "1m",
    "min5": "5m",
    "min15": "15m",
    "loadHint": "{{cpus}} CPU 기준; 1.0× 이상이면 대기열에 들어갈 수 있습니다.",
    "memory": "메모리",
    "total": "총",
    "available": "사용 가능",
    "mainDisk": "루트 디스크",
    "path": "길",
    "diskReadFail": "디스크를 읽을 수 없습니다.",
    "viewAllMounts": "{{count}} 탈것 모두 보기 →",
    "nAlerts": "{{count}} 알림",
    "details": "세부",
    "noThresholdAlerts": "메모리/로드/디스크 임계값 경고 없음",
    "projectDisk": "프로젝트 디스크(real du)",
    "viewAllProjectUsage": "모든 프로젝트 사용량 보기 →",
    "loadProjectDisk": "프로젝트 디스크 사용량 로드(real du) →",
    "followSse": "팔로우(SSE)",
    "interval": "간격",
    "sort": "종류",
    "rows": "행",
    "onceQuery": "일회성 쿼리",
    "procSearchPh": "PID / 사용자 / 명령 검색",
    "procSearchAria": "검색 프로세스",
    "filterAll": "전체",
    "filterMine": "비시스템",
    "selectedN": "{{count}} 선택됨",
    "showOf": "· {{shown}}/{{total}} 표시",
    "topLoading": "상위 요약 로드 중… (/proc/stat 이중 샘플)",
    "topAria": "상위 요약",
    "perCore": "코어당",
    "noPerCore": "코어별 데이터 없음",
    "uptimeDays": "{{d}}일, {{h}}:{{m}}",
    "used": "사용된",
    "free": "무료",
    "signal": "신호",
    "kill": "죽이다",
    "send": "보내다",
    "procDetail": "프로세스 세부정보",
    "refreshProc": "새로 고침 프로세스",
    "noProcs": "프로세스 없음",
    "noProcsFilter": "프로세스와 일치하는 필터가 없습니다.",
    "mounts": "마운트",
    "fs": "파일 시스템",
    "mount": "산",
    "size": "크기",
    "usage": "용법",
    "project": "프로젝트",
    "quota": "몫",
    "ratio": "공유하다",
    "unlimited": "제한 없는",
    "noProjects": "아직 프로젝트가 없습니다.",
    "noProjectsDesc": "여기에서 실제 주택 사용량을 보려면 프로젝트를 만드세요.",
    "usageNote": "로컬 du의 사용량(추정되지 않음) 할당량은 제어 영역의 소프트 한도입니다. 하드 설정 할당량에는 호스트에 적용이 필요합니다.",
    "thresholdAlerts": "임계값 경고",
    "alertsBuiltinOnly": "내장 CPU/메모리/디스크 임계값만 해당됩니다. 이메일, 웹훅 또는 Slack 채널이 없습니다.",
    "lastEvaluated": "마지막 확인",
    "alertsOkTitle": "공습 경보 신호",
    "alertsOkDesc": "메모리/로드/디스크 임계값 경고가 없습니다.",
    "cpu": "CPU",
    "command": "명령",
    "user": "사용자",
    "clearSelection": "선택 취소",
    "batchSignal": "배치 신호",
    "liveHint": "라이브 프로세스 목록(SSE 또는 폴링). 신호에는 루트 + YSK_EXECUTE가 필요합니다.",
    "signalTo": "신호 {{sig}} → PID {{pid}}",
    "procAlive": "프로세스가 아직 살아 있음(kill -0 ok)",
    "procGone": "프로세스가 종료되었습니다.",
    "procTable": "프로세스({{count}}{{more}})",
    "procTableDesc": "ps list · TERM/KILL 선택(YSK_EXECUTE 필요)",
    "selectAllAria": "필터링된 항목 모두 선택",
    "selectPidAria": "PID {{pid}} 선택",
    "controlPlane": "제어 영역",
    "controlPlaneNoSignal": "제어 영역 프로세스에 신호를 보낼 수 없습니다.",
    "protectedPid": "PID 1 / init / systemd는 패널에서 신호를 보낼 수 없습니다",
    "sigTermTitle": "SIGTERM 보내기(프로세스 종료 요청)",
    "sigKillTitle": "SIGKILL 보내기(강제 종료 — 잡을 수 없음)",
    "batchTerm": "TERM",
    "batchKill": "KILL",
    "rawTopLabel": "원시 상단 (번역되지 않음)",
    "followSseLabel": "팔로우(실시간 스트림)",
    "alertsReadOnly": "내장 CPU/메모리/디스크 임계값만 해당됩니다. 이메일, 웹훅 또는 Slack 채널이 없습니다.",
    "alertsGoNotifications": "알림 센터 열기",
    "lastCheck": "마지막 확인",
    "rawTopHint": "번역되지 않은 top(1) 출력",
    "detailShort": "정보",
    "procUnavailable": "프로세스를 가져올 수 없습니다.",
    "noProcData": "아직 프로세스 데이터가 없습니다.",
    "noProcFilter": "프로세스와 일치하는 필터가 없습니다.",
    "clickOnceOrFollow": "일회성 쿼리 실행 또는 팔로우 활성화",
    "liveFootnote": "SSH 상단과 유사: %Cpu에 대한 /proc/stat 이중 샘플(코어당 = 상위 \"1\"), Mem/Swap, 작업; ps의 프로세스 테이블. 대화형 PTY가 아닙니다. 죽이려면 YSK_EXECUTE가 필요합니다. PID 1과 제어 평면은 기본적으로 보호됩니다.",
    "forceKillTitle": "PID 강제 종료 {{pid}} (SIGKILL)",
    "sendSigTitle": "SIG{{sig}}를 PID {{pid}}로 보내기",
    "forceKillDesc": "잡을 수 없습니다. 데이터가 손실될 수 있습니다. 명령: {{cmd}}",
    "termDesc": "프로세스가 정리되고 종료될 수 있습니다. 명령: {{cmd}}",
    "forceKillBtn": "강제 킬",
    "sendTermBtn": "학기 보내기",
    "procPidTitle": "프로세스 PID {{pid}}",
    "readingProc": "읽는 중 /프로세스…",
    "applyRenice": "레니스 적용",
    "reniceHint": "-최고 20개 · 최저 19개(EXECUTE 필요)",
    "noData": "데이터 없음",
    "shareOfMeasured": "측정값의 {{pct}}%",
    "mountsTitle": "디스크 마운트({{count}})",
    "mountsDesc": "Real df -P -B1(tmpfs 필터링됨)",
    "noMounts": "마운트 목록 없음",
    "noMountsDesc": "df를 사용할 수 없거나 필터링되었습니다. 루트 디스크가 여전히 개요에 있습니다.",
    "seeProjectUsage": "프로젝트 홈 사용량은 프로젝트 사용량 탭에 있습니다. (real du · {{size}})",
    "measuringDu": "프로젝트 주택 측정(du)…",
    "projectUsageTitle": "프로젝트 디스크 사용량({{count}})",
    "projectUsageDesc": "실제 두 · 합계 {{total}} · {{at}}",
    "projectUsageDescEmpty": "각 프로젝트 home_dir에서 du를 실행합니다.",
    "remeasure": "재측정",
    "usageNoteFull": "로컬 du의 사용량(추정되지 않음) 할당량은 제어 영역의 소프트 한도입니다. 하드 설정 할당량에는 호스트에 적용이 필요합니다.",
    "sseNeedLogin": "로그인되지 않았습니다. SSE를 열 수 없습니다",
    "sseSessionExpired": "로그인되지 않았거나 세션이 만료되었습니다. SSE를 열 수 없습니다",
    "sseHttpError": "HTTP 스트리밍 {{status}}",
    "colFilesystem": "파일 시스템",
    "colMount": "산",
    "colSize": "크기",
    "colUsed": "사용된",
    "colAvail": "사용 가능",
    "colUsePct": "사용된 %",
    "colHome": "집",
    "usageNoteLink": "제어 영역 소프트 할당량. 프로젝트 격리 탭에 엄격한 제한을 적용합니다.",
    "shareNoQuotaHint": "할당량이 없어 비율이 없습니다. 프로젝트 격리 탭에서 설정하세요.",
    "setQuotaLink": "할당량 설정",
    "unusualHome": "비표준 경로",
    "unusualHomeHint": "/home/… 프로젝트 홈이 아닙니다. 정식 격리는 /home/ysk-server-{id}입니다."
  },
  "migrate": {
    "tabInventory": "목록",
    "tabTarget": "목표",
    "tabRun": "달리다",
    "tabDone": "완료",
    "refreshFailed": "새로고침 실패",
    "migrateIncomplete": "마이그레이션이 완료되지 않았습니다.",
    "requestFailed": "마이그레이션 요청이 실패했습니다.",
    "title": "전체 호스트 마이그레이션",
    "subtitle": "소스 제어 평면 → 새 호스트에 전체 복사. 이후에는 공용 IP/DNS만 변경하세요. 계정, 경로 및 프로젝트는 동일하게 유지됩니다.",
    "inventorying": "재고 관리",
    "inventoried": "재고 있음",
    "inventoriedWarn": "목록화됨 · {{n}} 경고",
    "inventoriedOrphans": "재고 있음 · {{n}} 남은 집",
    "inventoriedWarnAndOrphans": "재고 있음 · {{w}} 경고 · {{n}} 남은 음식",
    "inventoryFailed": "인벤토리 실패",
    "pendingInventory": "보류 중인 재고",
    "projects": "프로젝트",
    "mailboxes": "사서함",
    "users": "사용자",
    "software": "소프트웨어",
    "jobs": "채용 정보",
    "notFound": "찾을 수 없음",
    "wizard": "마이그레이션 마법사",
    "jobLog": "직업 이력",
    "about": "설명",
    "steps": "마이그레이션 단계",
    "sourceInventory": "소스 인벤토리",
    "sourceInventoryDesc": "컨트롤 플레인 및 프로젝트 경로에 대한 읽기 전용 스캔; 시스템을 수정하지 않습니다",
    "inventoryRunning": "이 호스트의 인벤토리를 작성하는 중…",
    "host": "주인",
    "projectHome": "프로젝트 / 홈",
    "needSoftware": "설치할 소프트웨어",
    "noInventory": "아직 재고가 없습니다",
    "noInventoryHint": "새로 고침(오른쪽 상단)을 사용하여 호스트 상태 및 작업 검색",
    "targetHost": "대상 호스트",
    "targetHostDesc": "루트 SSH 전용; 비밀번호는 이 요청에만 사용되며 저장되지 않습니다.",
    "sshTarget": "SSH 대상",
    "sshPort": "SSH 포트",
    "targetDataDir": "대상 데이터 디렉터리",
    "authMethod": "인증 방법",
    "rootPassword": "루트 비밀번호",
    "notPersisted": "지속되지 않음",
    "passwordNotStored": "비밀번호는 이 SSH 세션에만 사용되며 디스크에 저장되지 않습니다.",
    "overwriteDanger": "덮어쓰기는 대상의 기존 YSK 데이터를 대체합니다. 이 작업은 패널에서 취소할 수 없습니다.",
    "outboundIdentity": "Vault의 아웃바운드 ID",
    "dryRun": "테스트 실행 사전 확인",
    "startMigrate": "전체 호스트 마이그레이션 시작",
    "needSshTarget": "SSH 대상 입력",
    "needMaintWindow": "유지보수 기간 확인",
    "needRootPassword": "루트 비밀번호를 입력하세요",
    "needRequired": "필수 입력란을 작성하세요.",
    "result": "마이그레이션 결과",
    "blocked": "막힌",
    "failed": "실패한",
    "detail": "세부",
    "jobsTitle": "마이그레이션 작업({{count}})",
    "jobsDesc": "dataDir/마이그레이션/ 아래의 상태;",
    "phase": "단계",
    "jobPhase": "직업 {{id}} · {{phase}}",
    "phaseName": {
      "failed": "실패한",
      "done": "완료",
      "running": "달리기",
      "queued": "대기 중",
      "cancelled": "취소"
    },
    "target": "목표",
    "updated": "업데이트됨",
    "notes": "메모",
    "noJobs": "아직 마이그레이션 작업이 없습니다.",
    "noJobsHint": "작업은 마법사에서 시험 실행 또는 전체 마이그레이션 후에 나타납니다.",
    "confirmTitle": "전체 호스트 마이그레이션 확인",
    "confirmDesc": "재동기화 및 부트스트랩 예정 {{target}}",
    "confirmStart": "시작 확인",
    "cancel": "취소",
    "success": "성공",
    "unfilledTarget": "(대상 없음)",
    "restartApiHint": "방금 새 버전을 배포한 경우 API를 다시 시작하세요(",
    "afterRestart": ") 그런 다음 새로 고칩니다.",
    "inventoryWarnings": "재고 경고({{count}})",
    "orphanHomesHint": "남은 프로젝트 주택(상점에 없음) 사용되지 않은 것을 확인한 후에만 제거하십시오.",
    "orphanHomesTitle": "남은 프로젝트 주택({{count}})",
    "orphanHomesSummary": "{{count}} 디스크의 경로가 저장소에 없습니다. 확실하지 않은 경우 먼저 백업한 다음 사용하지 않는 경로를 제거하십시오.",
    "orphanColHome": "집",
    "orphanColModified": "수정됨",
    "orphanColEntries": "항목",
    "orphanEntries": "{{n}} 디렉토리의 최상위 항목",
    "orphanKpi": "나머지",
    "sourceOs": "OS",
    "sourceDataDir": "데이터디렉터리",
    "sourceDbRedis": "데이터베이스 / Redis",
    "sourceDbRedisValue": "{{db}} 데이터베이스 · {{redis}} Redis",
    "orphanRemove": "남은 집 없애기",
    "orphanRemoveTitle": "남은 프로젝트 홈을 삭제하시겠습니까?",
    "orphanRemoveDesc": "디스크에서 {{path}}를 영구적으로 삭제합니다. 이것은 상점 프로젝트가 아닙니다. YSK_EXECUTE=1이 필요합니다.",
    "orphanRemovePhrase": "확인하려면 DELETE를 입력하세요.",
    "orphanRemoveNeedConfirm": "확인이 필요합니다",
    "orphanBackupFirst": "먼저 백업(백업 열기)",
    "orphanMtime": "최종 수정일 {{at}}",
    "expandAllWarnings": "모든 {{n}} 경고 표시",
    "collapseWarnings": "간략히 표시",
    "moreWarnings": "...그리고 {{n}} 더 보기",
    "authPassword": "루트 비밀번호(임시키 설치 후 키로 전환)",
    "authIdentity": "SSH ID 저장소 IDId",
    "authAgent": "로컬 기본 에이전트/키",
    "confirmMaint": "유지보수 기간 확인",
    "confirmMaintDesc": "· 일관된 덤프를 위해 소스가 잠시 일시 중지됩니다(실제 마이그레이션에 필요).",
    "allowOverwrite": "대상의 기존 YSK 데이터 덮어쓰기 허용",
    "allowOverwriteDesc": "· 대상에 이미 ysk.json이 있는 경우 필수",
    "dryRunOnly": "드라이런만 가능",
    "dryRunOnlyDesc": "· 재고 + 사전 확인만; rsync 또는 대상 쓰기 없음",
    "executeNote": "호스트에는 YSK_EXECUTE=1 및 루트 API가 필요합니다. 마이그레이션 후 DNS A/AAAA를 업데이트하고 클라우드 방화벽 + 메일 PTR을 확인하세요.",
    "dnsCutover": "DNS 컷오버(수동)",
    "dnsCutoverDesc": "이러한 이름에 대한 A/AAAA를 새 공용 IP로 지정합니다."
  },
  "multiCheck": {
    "customPlaceholder": "맞춤 코드",
    "searchPlaceholder": "찾다…",
    "emptyText": "일치하는 항목이 없습니다.",
    "removeTitle": "제거하려면 클릭하세요.",
    "noneSelected": "선택한 항목이 없습니다.",
    "optionsAria": "옵션",
    "showingCapped": "{{total}} 중 {{shown}} 먼저 표시 — 검색을 사용하여 범위를 좁히세요",
    "add": "추가하다",
    "bulkAria": "대량 선택",
    "selectAll": "모두 선택",
    "selectAllTitle": "{{n}} 항목 모두 선택",
    "selectFiltered": "필터링됨({{n}}) 선택",
    "selectFilteredTitle": "{{n}} 검색결과 모두 선택",
    "clearAll": "모두 지우기",
    "clearFiltered": "필터링된 내용 지우기",
    "selectedCount": "{{n}} / {{total}} 선택됨",
    "chipsCollapsed": "{{n}} 선택됨 — 펼치기",
    "chipsCollapse": "무너지다"
  },
  "nav": {
    "dashboard": "대시보드",
    "ai": "AI 작업",
    "projects": "프로젝트",
    "security": "계정 보안",
    "email": "이메일",
    "files": "파일",
    "system": "시스템 적용",
    "updates": "업데이트",
    "agents": "AI 에이전트(특급)",
    "login": "로그인",
    "logout": "로그아웃",
    "publicFiles": "공개 파일",
    "ftp": "FTPS",
    "ftpService": "FTPS",
    "mysql": "MySQL",
    "mysqlService": "MySQL 서비스",
    "mariadb": "MariaDB",
    "mariadbService": "마리아DB 서비스",
    "postgres": "PostgreSQL",
    "postgresService": "PostgreSQL 서비스",
    "redis": "Redis",
    "redisService": "레디스 서비스",
    "cluster": "클러스터",
    "dns": "DNS",
    "ssl": "SSL 인증서",
    "nginx": "Nginx",
    "node": "Node.js",
    "php": "PHP",
    "python": "Python",
    "go": "Go",
    "rust": "Rust",
    "protection": "방어센터",
    "firewall": "방화벽",
    "fail2ban": "fail2ban",
    "users": "사용자 및 패키지",
    "services": "서비스",
    "metrics": "측정항목",
    "network": "네트워크",
    "logs": "로그 센터",
    "cron": "Cron",
    "backups": "백업",
    "migrate": "호스트 마이그레이션",
    "systemd": "systemd",
    "readiness": "준비",
    "systemIndex": "시스템 도구",
    "sections": {
      "overview": "개요",
      "sites": "계정 및 사이트",
      "mail": "이메일",
      "files": "파일 및 FTP",
      "databases": "데이터베이스",
      "dnsSsl": "DNS 및 SSL",
      "runtimes": "런타임",
      "security": "보안",
      "system": "시스템",
      "ai": "AI",
      "validators": "검증자",
      "containers": "컨테이너"
    },
    "java": "Java",
    "kotlin": "Kotlin",
    "bun": "Bun",
    "software": "소프트웨어",
    "terminal": "터미널",
    "hostBrowse": "호스트 찾아보기",
    "cdn": "CDN",
    "vpn": "VPN",
    "vnc": "VNC",
    "apache": "Apache",
    "bookmarkedProjects": "북마크된 프로젝트",
    "bookmarkedEmailDomains": "북마크된 도메인",
    "bookmark": "사이드바에 고정",
    "unbookmark": "사이드바에서 고정 해제",
    "bookmarkPinned": "고정됨",
    "bookmarkAdded": "사이드바에 고정됨",
    "bookmarkRemoved": "사이드바에서 삭제됨",
    "btTracker": "BT Tracker",
    "support": "지원하다",
    "noAccessTitle": "접근 권한 없음",
    "noAccessDesc": "현재 역할로는 이 페이지를 열 수 없습니다. 필요하면 관리자에게 요청하세요.",
    "backToDashboard": "대시보드로 돌아가기",
    "validators": "검증자 (Beta)",
    "docker": "도커"
  },
  "network": {
    "title": "네트워크 인터페이스",
    "canMutate": "변하기 쉬운",
    "readOnlyBlocked": "읽기 전용/차단됨",
    "statIfaces": "인터페이스",
    "statUp": "위로",
    "oper": {
      "up": "위로",
      "down": "아래에",
      "unknown": "알 수 없음",
      "loopback": "항상 켜짐",
      "loopbackHint": "루프백은 항상 사용 가능하며 변경할 수 없습니다.",
      "other": "다른"
    },
    "statGateway": "게이트웨이",
    "pageActions": "페이지 작업",
    "loadingSnap": "네트워크 스냅샷 로드 중…",
    "mutateHint": "변경 사항은 실시간으로 적용됩니다. 재부팅 시 재설정될 수 있습니다.",
    "cannotMutate": "변경할 수 없습니다. EXECUTE 및 루트가 필요합니다.",
    "tabs": {
      "ifaces": "인터페이스",
      "routes": "노선",
      "dns": "DNS",
      "advanced": "고급의",
      "about": "설명",
      "realip": "실제 IP / CDN"
    },
    "ifaceSummary": "{{count}} 인터페이스 · {{up}} UP",
    "noIfaces": "인터페이스 없음",
    "noIfacesDesc": "IP를 사용할 수 없거나 권한이 없습니다",
    "colName": "이름",
    "colStatus": "상태",
    "ifaceOps": "{{name}} 작업",
    "routeTable": "경로 테이블",
    "defaultGw": "기본 게이트웨이 {{gw}}",
    "liveIpRoute": "라이브 IP 경로",
    "noRoutes": "경로 없음",
    "colDest": "목적지",
    "addRoute": "경로 추가",
    "persistNm": "NetworkManager 연결에 저장(재부팅 후에도 유지)",
    "ephemeralRoute": "라이브 IP 경로만(재부팅 시 사라질 수 있음)",
    "destPlaceholder": "기본값 또는 10.0.0.0/8",
    "devOptional": "개발(선택사항)",
    "defaultDev": "기본 송신: {{dev}}",
    "saveNm": "저장(NetworkManager, 재부팅 후에도 유지됨)",
    "ephemeralHint": "선택하지 않음 = 라이브 IP 경로만 추가",
    "nmUnavailable": "NetworkManager가 실행되고 있지 않습니다. 실시간 경로만 추가할 수 있습니다.",
    "defaultRouteDownNeedName": "이는 기본 경로 송신입니다. 확인하려면 인터페이스 이름을 입력하세요. 패널 연결이 끊어질 수 있습니다.",
    "saveRoute": "경로 저장",
    "dnsSettings": "DNS 설정",
    "dnsNmHint": "NM 연결 “{{conn}}”을 쓰고 다시 연결합니다(영구).",
    "dnsCannotApply": "적용할 수 없음: 활성 NM 연결 + EXECUTE + 루트 필요",
    "mode": "방법",
    "connection": "연결",
    "source": "원천",
    "ignoreAutoDns": "현재 자동 DNS 무시",
    "ignoreYes": "예(DHCP DNS 무시)",
    "ignoreNo": "아니요(DHCP를 따릅니다)",
    "nameserverEditHint": "서버 추가/제거 Apply는 NetworkManager를 작성하고 다시 연결합니다.",
    "routerDns": "라우터 {{dns}}",
    "current": "현재의",
    "serverList": "서버 목록",
    "emptyDnsTitle": "아직 DNS 서버가 없습니다",
    "emptyDnsDesc": "시작하려면 \"서버 추가\"를 클릭하세요.",
    "keepOneRow": "하나 이상의 행 유지(지운 후 삭제)",
    "removeServer": "이 서버 제거",
    "searchDomainsPlaceholder": "선택사항, 공백으로 구분",
    "ignoreDhcpDns": "DHCP 자동 DNS 무시(ipv4.ignore-auto-dns=yes)",
    "restoreDhcpHint": "\"DHCP DNS 복원\"이 라우터로 다시 전달됩니다.",
    "noNmConnection": "NM 연결 없음 - /etc/resolv.conf를 맹목적으로 편집하지 않습니다(거짓 성공 없음).",
    "needExecuteRoot": "실제 쓰기에는 YSK_EXECUTE=1 및 루트가 필요합니다.",
    "resolveTest": "테스트 해결",
    "resolveTestDesc": "getent ahosts (실제 로컬 해상도)",
    "hostname": "호스트 이름",
    "testFailed": "테스트 실패",
    "stackDetect": "로컬 네트워크 스택 감지",
    "available": "사용 가능",
    "unavailable": "없는",
    "persistNmCap": "지속 가능(NM)",
    "ifaceDetail": "인터페이스 {{name}}",
    "type": "유형",
    "addresses": "구애",
    "noAddresses": "주소 없음",
    "ifaceAdjust": "인터페이스 조정",
    "addIpTitle": "IP 추가 · {{name}}",
    "saveIp": "IP 저장",
    "add": "추가하다",
    "cidrPlaceholder": "예를 들어 10.0.0.5/24 또는 2001:db8::5/64",
    "saveIpHint": "연결 +ipv4/ipv6.addresses 및 연결 쓰기 쓰기",
    "confirmIfaceName": "확인하려면 인터페이스 이름 “{{name}}”을 입력하세요.",
    "deleteRouteTitle": "경로를 삭제하시겠습니까?",
    "deleteRouteNamed": "경로 {{dst}}를 삭제하시겠습니까?",
    "deleteRouteBody": "라이브 라우팅 테이블에서 {{dst}}{{via}}{{dev}}를 제거합니다.",
    "viaGw": "{{gw}}를 통해",
    "onDev": "{{dev}}에",
    "deleteDefaultWarn": "— 기본값을 삭제하면 연결이 끊어질 수 있습니다.",
    "alsoRemoveNm": "NetworkManager 연결에서도 제거(재부팅 후 사라짐)",
    "loadFailed": "로드 실패",
    "loadNetworkFailed": "네트워크를 로드하지 못했습니다.",
    "on": "켜짐",
    "off": "꺼짐",
    "addServer": "서버 추가",
    "applyDns": "DNS 적용",
    "restoreDhcpDns": "DHCP DNS 복원",
    "test": "시험",
    "refresh": "새로고침",
    "hostSettings": "호스트 설정",
    "protection": "보호",
    "defaultEgressBadge": "기본",
    "opsAria": "{{name}} 작업",
    "details": "세부",
    "addIp": "IP 추가",
    "reset": "다시 놓기",
    "ephemeralOnly": "라이브 전용",
    "saveRouteHint": "저장은 NM 연결 + 연결 시작을 기록합니다.",
    "deleteShort": "델",
    "resetForm": "양식 재설정",
    "applyDnsNotes": "Apply는 nmcli 연결 수정 + up을 실행합니다. 짧은 연결 끊김은 정상입니다. 스텁 127.0.0.53은 기록되지 않습니다(로컬 확인).",
    "testResolve": "테스트 해결",
    "loadRaw": "원시 출력 로드",
    "hideRaw": "원시 출력 숨기기",
    "rawLoadedAt": "로드됨 {{time}}",
    "confirmDown": "아래로 확인",
    "linkDownTitle": "{{name}} 오프라인으로 전환",
    "linkDownNeedConfirm": "확인하려면 인터페이스 이름을 입력하세요.",
    "defaultRouteDownWarn": "이 인터페이스는 기본 경로 송신입니다. 아래로 내리면 패널 액세스가 차단될 수 있습니다.",
    "deleteDefaultMayDrop": "— 기본값을 삭제하면 연결이 끊어질 수 있습니다.",
    "deleteDefaultPanelWarn": "기본 경로를 삭제하면 이 패널 세션이 중단될 수 있습니다. 확인하려면 DEFAULT를 입력하세요.",
    "deleteDefaultNeedConfirm": "확인 필요 — DEFAULT 입력(이 패널 연결이 끊길 수 있음)",
    "deleteRouteNeedConfirm": "확인이 필요합니다",
    "typeDefaultToConfirm": "확인하려면 DEFAULT를 입력하세요.",
    "gateway": "게이트웨이",
    "nameservers": "네임서버",
    "searchDomains": "도메인 검색",
    "backend": "백엔드",
    "cidr": "CIDR",
    "realip": {
      "title": "CDN / 실제 클라이언트 IP",
      "desc": "CDN 뒤에 방문자 IP를 복원합니다. 에지 CIDR만 신뢰하세요.",
      "provider": "기본 공급자",
      "providerHint": "없음 = 직접 출처; 가장자리 뒤에 있을 때 CDN을 선택하세요.",
      "mode": "신뢰 모드",
      "modeSingle": "단일 공급자 헤더(권장)",
      "modeXff": "X-Forwarded-For + 병합된 CDN CIDR",
      "customCidrs": "더욱 신뢰할 수 있는 CIDR",
      "customCidrsHint": "한 줄에 하나의 CIDR입니다.",
      "lastRefresh": "마지막 CIDR 새로 고침",
      "active": "활성 기본값",
      "republishHint": "저장 후 프로젝트 Nginx를 다시 게시하세요.",
      "refresh": "CDN IP 목록 새로 고침",
      "refreshOk": "CIDR 목록이 새로 고쳐졌습니다.",
      "providers": {
        "none": "없음(직접 출처)",
        "cloudflare": "클라우드플레어",
        "fastly": "빠르게",
        "bunny": "토끼 CDN",
        "cloudfront": "AWS 클라우드프론트",
        "azure_frontdoor": "푸른 정문",
        "gcore": "G코어 CDN",
        "custom": "맞춤형 프록시"
      },
      "needProvider": "IP 목록을 가져오기 전에 CDN 제공업체를 선택하세요.",
      "spoofWarn": "잘못된 CIDR을 신뢰하면 클라이언트가 X-Forwarded-For/CDN 헤더를 IP로 스푸핑할 수 있습니다."
    },
    "linkUp": "위로",
    "linkDown": "아래에",
    "linkDownDefault": "다운 기본 경로",
    "loopbackImmutable": "루프백을 변경할 수 없습니다.",
    "operUnknownHint": "커널은 UP/DOWN을 보고하지 않았습니다(lo의 경우 공통). 인터페이스는 계속 사용할 수 있습니다.",
    "persistNmHint": "지속 가능이란 변경 사항이 NetworkManager를 통해 재부팅 후에도 유지될 수 있음을 의미합니다."
  },
  "nginx": {
    "pillSites": "{{count}} 사이트",
    "statSites": "사이트",
    "statSslFlag": "SSL 플래그",
    "purgeOk": "제거됨",
    "projectSitesHint": "프로젝트 사이트(관리되는 conf)와 독립 실행형 사이트는 별도로 나열됩니다. 프로젝트 → 네트워크에서 프로젝트 Nginx를 편집합니다.",
    "purgeCache": "캐시 제거 + 다시 로드",
    "purgeCacheTitle": "Nginx 캐시를 제거하고 다시 로드하시겠습니까?",
    "purgeCacheDesc": "온디스크 캐시를 지우고 Nginx를 다시 로드합니다. 라이브 사이트는 계속 작동합니다.",
    "notInstalled": "Nginx가 설치되지 않았습니다",
    "listTitle": "사이트({{count}})",
    "listDesc": "생성 후 적용을 클릭하여 시스템에 동기화하세요.",
    "createSite": "+ 사이트 만들기",
    "colServerName": "서버 이름",
    "colKind": "유형",
    "kindProxy": "역방향 프록시",
    "kindStatic": "공전",
    "kindPhp": "PHP-FPM",
    "colTarget": "업스트림/루트",
    "colStatus": "상태",
    "emptyTitle": "사이트 없음",
    "emptyDesc": "목록 도구 모음에서 \"사이트 만들기\"를 사용하세요. 그런 다음 적용",
    "applyTitle": "패널 데이터를 쓰고 sync + nginx -t + reload를 시도해 보세요.",
    "applyToSystem": "시스템에 동기화",
    "createTitle": "Nginx 사이트 만들기",
    "createDesc": "생성 후 적용 필수",
    "editTitle": "Nginx 사이트 편집",
    "editDesc": "저장 후 적용 필수",
    "deleteTitle": "사이트를 삭제하시겠습니까?",
    "deleteDesc": "이 사이트를 삭제하시겠습니까?",
    "deleteTitleNamed": "사이트 {{name}}를 삭제하시겠습니까?",
    "deleteDescNamed": "패널에서 {{name}}를 제거하세요. 적용된 사이트는 관리되는 nginx conf도 삭제합니다.",
    "invalidServerName": "유효한 호스트 이름(예: app.example.com)을 입력하세요.",
    "needUpstream": "역방향 프록시 사이트에는 업스트림이 필요합니다.",
    "needRoot": "정적 및 PHP 사이트에는 문서 루트가 필요합니다.",
    "serverNameHint": "서버_이름(예: app.example.com",
    "kindLabel": "사이트 유형",
    "upstreamLabel": "업스트림",
    "upstreamHint": "예를 들어 127.0.0.1:3000 또는 http://backend:8080",
    "rootLabel": "문서 루트",
    "rootHintPhp": "PHP 프로젝트 문서 루트, 예: /var/www/app/public",
    "rootHintStatic": "정적 파일의 절대 경로",
    "sslLabel": "SSL 차단 활성화",
    "sslDesc": "443 SSL을 수신합니다. 준비되면 SSL 페이지에서 인증서 바인딩",
    "saveThenApply": "저장 후 적용을 클릭하여 nginx 구성을 작성합니다.",
    "statProjectSites": "프로젝트",
    "projectListTitle": "프로젝트 사이트({{count}})",
    "projectListDesc": "프로젝트 게시/goLive의 패널 관리 conf — 변경하려면 프로젝트 네트워크 탭을 엽니다.",
    "colProject": "프로젝트",
    "colRuntime": "실행 시간",
    "colConf": "회의",
    "confWritten": "쓴",
    "confMissing": "경로 없음",
    "projectEmptyTitle": "아직 프로젝트 Nginx가 없습니다.",
    "projectEmptyDesc": "배포 후 프로젝트 네트워크 탭에서 Nginx 게시",
    "preview": "시사",
    "openProject": "프로젝트 열기",
    "projectPager": "프로젝트 사이트 페이지",
    "prevPage": "이전",
    "nextPage": "다음",
    "pageOf": "페이지 {{page}} / {{total}} · {{count}}",
    "projectConfEmpty": "(빈 conf 파일)",
    "projectConfReadFail": "프로젝트 구성을 읽지 못했습니다.",
    "projectPreviewPath": "{{path}}",
    "pageDesc": "Nginx 사이트",
    "filterSource": "원천",
    "sourceAll": "전체",
    "sourceProject": "프로젝트",
    "sourceStandalone": "독립형",
    "colSource": "원천",
    "filterProject": "프로젝트별로 필터링됨",
    "globalSettings": "전역 설정",
    "siteSettings": "사이트 설정",
    "saveApply": "저장 및 적용",
    "settingsSaved": "저장됨",
    "setGzip": "Gzip",
    "setShowVersion": "서버 버전 표시",
    "setShowVersionDesc": "꺼짐 = server_tokens 꺼짐",
    "setHttp2": "HTTP/2(SSL)",
    "setBody": "최대 본체",
    "setKeepalive": "Keepalive",
    "setAccessLog": "액세스 로그",
    "logOn": "켜짐",
    "logBuffered": "버퍼링됨",
    "logOff": "꺼짐",
    "setForceHttps": "강제 HTTPS",
    "setHsts": "HSTS",
    "setCfRealIp": "Cloudflare 실제 IP",
    "setIndexes": "디렉토리 목록",
    "bodyInherit": "글로벌",
    "stopSites": "{{n}} 사이트가 HTTP 응답을 중단합니다."
  },
  "notFound": {
    "title": "페이지를 찾을 수 없습니다",
    "body": "{{path}}에 패널 페이지가 없습니다.",
    "hint": "알 수 없는 URL은 더 이상 대시보드로 보내지 않습니다.",
    "home": "대시보드"
  },
  "notes": {
    "agents": {
      "sessionNotFound": "세션을 찾을 수 없습니다: {{sessionId}}"
    },
    "notFound": "찾을 수 없음",
    "needPath": "경로 지정",
    "needName": "이름을 입력하세요",
    "needHost": "호스트를 입력하세요",
    "needDomain": "도메인을 입력하세요",
    "needProjectName": "프로젝트 이름을 입력하세요.",
    "needServerIp": "서버 IP 지정",
    "passwordMin8": "비밀번호는 8자 이상이어야 합니다.",
    "invalidPath": "잘못된 경로",
    "invalidIp": "잘못된 IP",
    "invalidIp46": "잘못된 IPv4/IPv6",
    "invalidPackageName": "잘못된 패키지 이름",
    "fileMissing": "파일이 존재하지 않습니다",
    "notRegularFile": "일반 파일이 아님",
    "readFailed": "읽기 실패",
    "pathResolveFailed": "경로를 확인하지 못했습니다.",
    "fieldInvalid": "잘못된 필드 {{field}}: {{value}}",
    "apt": {
      "updateIndex": "패키지 색인 업데이트"
    },
    "state": {
      "closed": "닫은",
      "active": "활동적인"
    },
    "cat": {
      "security": "보안",
      "mail": "우편",
      "database": "데이터 베이스",
      "runtime": "런타임"
    },
    "ssh": {
      "identityNotFound": "신원을 찾을 수 없습니다",
      "registrationNotFound": "등록을 찾을 수 없습니다",
      "keyOkNologin": "Key accepted. Account has no login shell (nologin) — use SFTP. Treated as PASS.",
      "keyOkSftp": "SSH 쉘이 거부된 후 SFTP 비밀번호가 성공했습니다."
    },
    "cdn": {
      "siteNotFound": "CDN 사이트를 찾을 수 없습니다",
      "nodeMissing": "노드가 존재하지 않습니다",
      "loopbackOriginRemote": "원본은 127.0.0.1입니다. 즉, 원격 에지가 아닌 이 호스트입니다. 연결 가능한 원본 IP 또는 바인딩_ip를 설정합니다.",
      "originRemoteRewrite": "원격 에지는 루프백 대신 도달 가능한 원점 {{url}}을 사용합니다.",
      "originRemoteUnknown": "오리진은 루프백이고 공개/LAN IP 또는 바인딩_ip가 알려져 있지 않습니다. Apply는 원격 에지가 설정될 때까지 거부합니다.",
      "needSshOrFleet": "원격 엣지에는 아웃바운드 SSH ID(또는 사용자 이름) 또는 /agents 플릿 세션이 필요합니다. 상태 URL만으로는 전송이 적용되지 않습니다.",
      "probe": {
        "timeout": "{{ms}}ms({{detail}}) 후 연결 시간이 초과되었습니다. 피어에 방화벽이 있을 수 있습니다.",
        "dns": "DNS 조회에 실패했습니다({{detail}}).",
        "refused": "{{ms}}ms({{detail}}) 후에 연결이 거부되었습니다. 포트 폐쇄 또는 단방향 차단.",
        "tls": "TLS 확인에 실패했습니다({{detail}}).",
        "unreach": "{{ms}}ms({{detail}}) 후에 호스트에 연결할 수 없습니다.",
        "http": "{{ms}}ms({{detail}}) 후에 HTTP 프로브가 실패했습니다."
      }
    },
    "backup": {
      "testUnsaved": "저장되지 않은 양식 값 테스트(설정에 기록되지 않음)",
      "testIdentity": "ssh (identity) to {{spec}} ok",
      "sshAuthFailed": "SSH 키 또는 비밀번호가 거부되었습니다(공개 키). 아웃바운드 ID를 선택하거나 sshpass를 설치하세요.",
      "remotePathIsFile": "원격 경로 {{path}}는 파일입니다. 디렉토리를 사용하십시오.",
      "remoteMkdirFailed": "원격 디렉터리를 생성할 수 없습니다: {{detail}}",
      "sidecarPushed": "SQL 사이드카도 푸시됨 {{name}}",
      "fileNotFound": "백업 파일을 찾을 수 없습니다",
      "resticNoPassword": "Restic이 활성화되었지만 비밀번호가 설정되지 않았습니다",
      "resticNotInPath": "PATH에 있지 않음",
      "dbEnvUnreadable": ".db.env를 읽을 수 없습니다. SQL 덤프를 건너뛰었습니다.",
      "dbEnvNoName": ".db.env에는 데이터베이스 이름이 없습니다. SQL 덤프를 건너뛰었습니다.",
      "targetOutside": "복원 대상은 프로젝트 홈 또는 공용 파일 루트 내부에 있어야 합니다.",
      "controlPlaneDryRun": "미리보기만 가능 - 작성된 내용이 없습니다. 패널에서 복원을 사용하고 작성할 문구를 확인하세요.",
      "controlPlaneNeedConfirm": "전체 제어 영역 복원에는 RESTORE-Control-PLANE 확인 문구가 필요합니다.",
      "controlPlaneRestartAfter": "복원에 성공한 후 API를 다시 시작하세요.",
      "movedToTrash": "{{name}}를 휴지통으로 옮겼습니다. {{days}}일 후 영구 삭제됩니다.",
      "restoreNameExists": "복원할 수 없습니다 {{name}} — 해당 이름을 가진 라이브 아카이브가 이미 존재합니다.",
      "restoredFromTrash": "휴지통에서 {{name}}를 복원했습니다.",
      "trashEmptied": "휴지통에서 {{n}} 아카이브를 영구적으로 삭제했습니다.",
      "partialOk": "부분적 성공 — {{n}} 프로젝트 건너뛰기"
    },
    "health": {
      "portListening": "포트 {{port}}가 수신 중입니다.",
      "portNotListening": "포트 {{port}}가 수신 대기 중이 아닙니다.",
      "httpOk": "HTTP 확인 {{status}}",
      "httpFail": "HTTP 실패: {{detail}}"
    },
    "redis": {
      "cliMissing": "redis-cli가 설치되지 않았습니다",
      "requirepassAlreadySet": "Redis에는 이미 requirepass가 있으므로 덮어쓰지 않았습니다.",
      "requirepassApplied": "런타임에 requirepass 적용",
      "requirepassApplyFailed": "CONFIG SET requirepass를 설정할 수 없습니다(다시 시작 + conf에 의존함).",
      "generatedRequirepass": "생성된 Redis 비밀번호(한 번 표시됨): {{password}}"
    },
    "nginx": {
      "reloaded": "nginx가 다시 로드됨",
      "configOk": "Nginx 구성 확인을 통과했습니다.",
      "reloadExit": "Nginx 재로드 종료 코드={{code}}",
      "managedDir": "관리 구성 디렉토리: {{path}}",
      "includeHint": "nginx에서: {{path}}/*.conf를 포함합니다.",
      "removedOrphan": "고아 nginx conf {{path}}를 제거했습니다.",
      "keptLiveSsl": "{{path}}에 실시간 HTTPS 블록 유지(관리형 템플릿에는 수신 대기 443이 없음)",
      "orphanCleanupFailed": "고아 nginx 정리 실패: {{detail}}",
      "settingsWritten": "Nginx 전역 스니펫이 작성되었습니다.",
      "settingsNeedExecute": "적용에는 YSK_EXECUTE가 필요합니다.",
      "reloadFailed": "nginx 재로드 실패"
    },
    "ssl": {
      "requestCert": "인증서 요청"
    },
    "ftp": {
      "startVsftpd": "vsftpd 시작",
      "writeVsftpd": "vsftpd 구성 작성",
      "vsftpdStarted": "vsftpd가 시작되었습니다",
      "openPortsStep": "방화벽 포트(수동)",
      "openPortsReminder": "호스트 방화벽 및 클라우드 보안 그룹에서 TCP 포트 열기: {{ports}}. FTPS 적용은 포트를 열지 않습니다.",
      "openPortsPasvHint": "로그인은 작동하지만 디렉터리 LIST 시간이 초과되면 PASV 데이터 범위가 차단됩니다. 전체 파일을 엽니다.",
      "publicPlaintextBlocked": "FTPS 없이 공개 FTP 시작을 거부합니다. 이 호스트에만 바인딩하거나, 인증서로 FTPS를 활성화하거나, PLAINTEXT를 확인하여 공개 주소에 일반 텍스트를 노출하세요."
    },
    "deploy": {
      "nodeMissingIsolated": "격리된 배포를 위한 노드 바이너리 누락: {{path}} — Node {{version}} 툴체인을 설치한 후 다시 배포합니다. 203/EXEC가 되는 유닛 작성을 거부합니다.",
      "nodeMissing": "노드 바이너리 누락: {{path}} — 툴체인(노드 {{version}})을 설치한 후 재배포",
      "nodeRejectedPath": "프로젝트 사용자에 대해 거부된 노드 바이너리: {{path}} — {{planned}} 사용",
      "unitUnhealthy": "시스템 장치가 건강하지 않습니다({{detail}}). Journalctl -u {{unit}} — 203/EXEC는 종종 프로젝트 사용자가 실행할 수 없는 바이너리를 의미합니다.",
      "skippedPanelNode": "{{path}}에서 건너뛴 패널 노드(프로젝트 사용자가 실행할 수 없으며 systemd 203/EXEC가 발생함)",
      "usingFallback": "노드 바이너리: {{path}} 사용(계획된 {{planned}}을 찾을 수 없음)",
      "usingPanelExec": "노드 바이너리: 패널 execPath {{path}}로 대체",
      "usingPanelDegraded": "노드 바이너리: 패널 {{path}}를 사용하여 배포 수준이 저하됨(systemd User=ysks_*의 경우 아님)",
      "nodeNotFoundPlanned": "호스트에서 노드 {{version}} 바이너리를 찾을 수 없습니다. 장치는 {{planned}}를 사용합니다. 툴체인을 설치한 후 재배포"
    },
    "files": {
      "needSrcDst": "소스 및 대상 경로 지정",
      "pathOutsideSandbox": "샌드박스 외부 경로: {{target}}",
      "notFoundRel": "찾을 수 없음: {{relPath}}",
      "fileNotFoundRel": "파일을 찾을 수 없습니다: {{relPath}}",
      "notFoundFrom": "찾을 수 없음: {{fromPath}}",
      "alreadyExists": "같은 이름이 이미 있습니다: {{name}}"
    },
    "dns": {
      "needZoneServerIp": "영역 및 서버 IP 입력",
      "noClusterPeer": "등록된 클러스터 피어가 없습니다.",
      "planOnly": "계획 전용 — Apply=true(root + YSK_EXECUTE)를 설정하여 /etc/powerdns에 설치하고 재발견합니다.",
      "needRootNamed": "/etc/powerdns/named.conf를 업데이트하고 영역을 재발견하려면 루트 + EXECUTE가 필요합니다.",
      "noManagedZonesClear": "dataDir/dns/zones 아래에 관리형 영역 파일이 없습니다. PowerDNS YSK 포함이 지워집니다.",
      "bindRegistered": "PowerDNS BIND: 등록된 {{count}} 영역(목록 영역 확인됨)",
      "listZonesIncomplete": "명명된.conf/runtime 영역이 업데이트되었지만 list-zones가 모든 영역을 확인하지 않았습니다. 로드된 것으로 표시되지 않았습니다(pdns 로그/bind-config 확인).",
      "noLaunchDefaultBind": "실행 없음= 찾을 수 없음 — 기본적으로 경로 바인딩으로 설정됨",
      "writeNotAnswerDig": "영역 파일 쓰기만으로는 dig에 응답하지 않습니다. PowerDNS에 로드합니다(bind names.conf + rediscover).",
      "bindDigFailed": "영역이 나열되었지만 발굴 SOA가 실패함 - 로드된 것을 주장하지 않음",
      "bindLoadedOk": "PowerDNS BINDnamed.conf를 통해 등록된 영역 {{zone}} + dig OK",
      "bindSyncFailed": "BIND 명명된.conf 동기화가 실패했거나 발굴이 응답하지 않습니다.",
      "bindSkipPdnsutil": "BIND 경로 건너뛰기(백엔드는 pdnsutil을 선호함)",
      "pdnsCtlNoConfirm": "pdns_control이 있지만 영역이 확인되지 않았습니다. /etc/powerdns/named.conf를 확인하거나 pdnsutil 백엔드를 사용하세요.",
      "usingExistingZone": "기존 영역 파일 사용: {{path}}",
      "healNeedRoot": "pdns 로컬 주소를 다시 작성하려면 루트 + EXECUTE가 필요합니다.",
      "pdnsUnitActive": "pdns 단위: 활성",
      "pdnsUnitInactive": "pdns 유닛: 활성화되지 않음",
      "udp53Listening": "UDP/53: 청취",
      "udp53NotListening": "UDP/53: 아직 수신 중이 아닙니다.",
      "healResyncOk": "치료된 수신기 + 관리형 영역을 PowerDNS BIND로 다시 동기화함",
      "healResyncPartial": "리스너는 치료되었지만 영역 재동기화가 완료되지 않았습니다. 쓰기 및 로드 영역 / powerdns 로드를 클릭합니다.",
      "installAfterLoad": "설치 후 DNS 영역 적용(named.conf 쓰기 + 재발견) 또는 POST powerdns/load",
      "bindFileNotEnough": "BIND 백엔드: 명명된.conf에 해당 파일이 포함될 때까지 영역 파일만으로는 dig에 응답하지 않습니다.",
      "zeroDomainsHint": "PowerDNS list-zones: 0 — 디스크의 영역 파일이 로드되지 않습니다(이름이 지정됨).",
      "localAFailed": "{{zone}} 아래의 www/ftp/@에 대한 로컬 A 프로브가 실패했습니다.",
      "publicNsCloudflare": "공용 NS는 타사 DNS/CDN(예: Cloudflare)입니다. 공용 발굴에서는 이 호스트 영역을 사용하지 않습니다.",
      "publicNsOther": "공용 NS는 이 호스트가 아닙니다. 전세계 검사에서는 등록자 NS가 변경될 때까지 로컬 PowerDNS를 무시합니다.",
      "publicNsHere": "공용 NS는 영역 내 네임서버(ns1/ns2.zone)처럼 보입니다. 전 세계가 사용자에게 쿼리할 수 있습니다.",
      "firewall53Hint": "UDP/53은 ss에서 수신하지 않습니다. 외부 발굴이 실패하면 방화벽 53을 둘 다(TCP+UDP) 엽니다.",
      "applyDigOk": "PowerDNS BIND: 목록 영역 + 발굴 확인",
      "applyDigFail": "conf에 영역이 등록되었지만 여전히 비어 있음/REFUSED — 표시가 적용되지 않음",
      "applySyncIncomplete": "PowerDNS 바인드 동기화 미완료 — 디스크에만 영역 파일이 있습니다(적용되지 않음). EXECUTE/root 또는 pdns 로그를 수정합니다.",
      "writeOnlyHint": "영역 파일 쓰기 전용 - PowerDNS는 다음 이름의 레지스터를 로드/적용할 때까지 응답하지 않습니다.",
      "noActiveUnit": "활성 명명된/bind9/pdns 장치가 없습니다.",
      "pdnsUnitRestarts": "pdns 장치 상태/다시 시작: {{detail}}",
      "port53LoopbackOnly": "포트 53은 루프백(systemd-resolved 127.0.0.53)에만 있으며 제품 권한 이름 서버가 아닙니다.",
      "port53Closed": "포트 53이 수신 대기 중이 아닙니다(UDP/TCP).",
      "udp53NotPublic": "UDP/53이 공개 주소를 수신하지 않습니다.",
      "tcp53NotPublic": "TCP/53이 공개 주소를 수신하지 않습니다.",
      "noManagedZones": "dataDir/dns/zones 아래에 관리형 영역 파일이 없습니다.",
      "pdnsListZones": "PowerDNS 목록 영역: {{n}}",
      "lookupIgnoredAt": "발굴을 사용할 수 없습니다. @{{server}}가 무시되었습니다. 해당 서버의 응답으로 시스템 확인자를 사용하지 않습니다.",
      "digNotInstalled": "발굴이 설치되지 않았습니다",
      "digEmpty": "발굴 : 대답 없음",
      "localAOk": "지역 A {{name}} → {{ip}}"
    },
    "db": {
      "needExecuteCreate": "호스트 실행이 꺼져 있습니다. 패널에서 데이터베이스를 생성할 수 없습니다.",
      "dryRunMysql": "테스트 실행: 데이터베이스가 생성되지 않았습니다. YSK_EXECUTE=1과 함께 --execute를 사용하여 프로비저닝",
      "remoteNoCreds": "사용자 이름/비밀번호가 저장되지 않음 — TCP 전용(등록은 로그인이 아님)",
      "remoteReachable": "TCP {{host}}:{{port}} 개방({{ms}}ms).",
      "remoteUnreachable": "TCP {{host}}:{{port}} 폐쇄 또는 필터링됨({{ms}}ms)."
    },
    "net": {
      "invalidIface": "잘못된 인터페이스 이름",
      "invalidDev": "잘못된 장치 이름",
      "needNmActive": "지속할 수 없음: 활성 NetworkManager 연결이 필요합니다."
    },
    "project": {
      "notFound": "프로젝트를 찾을 수 없습니다: {{id}}",
      "docRootMustBeRelative": "문서 루트는 프로젝트 홈에 상대적이어야 합니다(절대 경로가 아님).",
      "docRootInvalid": "잘못된 문서 루트입니다(.. 또는 잘못된 문자 없음).",
      "domainInvalid": "잘못된 도메인 이름: {{domain}}",
      "domainInUse": "도메인 {{domain}}은(는) 프로젝트 '{{other}}'에서 이미 사용 중입니다."
    },
    "email": {
      "domainNotFound": "메일 도메인을 찾을 수 없습니다: {{id}}",
      "wroteNginx": "Nginx 구성을 작성했습니다: {{nginxPath}}",
      "wrotePath": "{{path}}를 썼습니다",
      "domainDeleted": "삭제된 도메인 {{domain}}({{mailboxes}} 편지함, {{aliases}} 별칭)",
      "domainDataDirRemoved": "로컬 데이터 디렉토리 제거됨 {{path}}",
      "domainDataDirRemoveFailed": "데이터 디렉터리를 제거할 수 없습니다. {{path}}: {{detail}}",
      "domainDeleteSystemHint": "제어 영역이 제거되었습니다. 필요한 경우 나머지 도메인을 다시 적용하거나 시스템 MTA 맵을 정리합니다.",
      "mailboxDeleted": "삭제된 편지함 {{address}}",
      "mailboxNotFound": "사서함을 찾을 수 없습니다",
      "mailboxDataRemoved": "로컬 경로 제거됨 {{path}}",
      "domainDeleteConfirmMismatch": "이름이 도메인과 일치하지 않는지 확인하세요. 삭제 거부됨",
      "domainDataKept": "로컬 데이터Dir 메일 데이터 유지(removeData=false)",
      "mailboxPasswordUpdated": "{{address}}의 비밀번호가 업데이트되었습니다.",
      "mailboxStatusUpdated": "{{address}} 상태가 {{status}}로 설정됨",
      "mailboxUpdateEmpty": "업데이트할 내용 없음 - 비밀번호 및/또는 상태 제공",
      "mailboxStatusInvalid": "잘못된 사서함 상태",
      "mailboxNoChanges": "적용된 변경사항 없음",
      "dovecotApplyNeedRoot": "Dovecot 가상 인증 적용에는 루트 + YSK_EXECUTE가 필요합니다.",
      "dovecotNotInstalled": "이 호스트에는 Dovecot이 설치되어 있지 않습니다.",
      "dovecotNoPassdbSnippets": "dataDir/email에서 도메인 암호 조각을 찾을 수 없습니다.",
      "dovecotApplyFailed": "Dovecot 가상 인증 적용 실패: {{detail}}",
      "dovecotApplyOk": "Dovecot 가상 인증 설치됨({{conf}}, {{count}} 도메인 스니펫)",
      "dovecotPassdbWrittenNeedApply": "dataDir 아래에 작성된 Passwd 파일 — Dovecot이 이를 로드하도록 적용(EXECUTE+root)을 실행합니다.",
      "postqueueSetgidBroken": "Postfix 대기열 도구가 실패했습니다. setgid_group이 main.cf에서 비어 있습니다. setgid_group=postdrop을 설정합니다(YSK_EXECUTE가 켜져 있을 때 패널이 수정을 시도함).",
      "postqueueMailDown": "Postfix가 실행되고 있지 않습니다(showq를 사용할 수 없음). YSK_EXECUTE가 켜져 있을 때 패널을 시작하려고 했습니다. 소프트웨어 탭/systemctl 상태 접미사를 확인하세요.",
      "postqueueSpoolMissing": "Postfix 대기열 디렉터리가 누락되었습니다(예: Hold/). 패널은 YSK_EXECUTE가 켜져 있을 때 스풀 트리를 만들고 Postfix를 시작하려고 했습니다.",
      "invalidDomain": "유효한 메일 도메인을 입력하세요.",
      "invalidServerIp": "유효한 서버 IP를 입력하세요.",
      "mailboxLocalPartInvalid": "메일박스 로컬 부분에는 문자, 숫자만 사용할 수 있습니다. _ + -",
      "passwordTooShort": "비밀번호는 8자 이상이어야 합니다."
    },
    "software": {
      "startUnit": "시작 {{u}}",
      "installedSpec": "설치됨 {{title}}",
      "installPkg": "설치 {{p}}",
      "npmGlobal": "npm 설치 -g {{pkgs}}",
      "needNodeForNpm": "node/npm을 찾을 수 없음 — {{title}} 이전에 Node.js를 설치하세요.",
      "uninstallNoTargets": "제거할 소프트웨어를 선택하지 않았습니다.",
      "uninstallNothingInstalled": "선택한 범위에 대해 설치된 것이 없습니다.",
      "uninstallProtected": "보호된 구성요소 건너뛰기: {{ids}}",
      "uninstallConfirmMismatch": "확인 문구가 일치하지 않습니다.",
      "uninstallOk": "제거된 {{n}} 구성요소",
      "uninstallPartial": "제거가 완료되었지만 오류가 발생했습니다. 단계를 확인하세요."
    },
    "php": {
      "aptPackages": "{{count}} 패키지를 설치합니다: {{list}}"
    },
    "runtime": {
      "plugins": "동반 도구: {{list}}",
      "pluginsOk": "동반 도구가 설치됨",
      "pluginsFailed": "일부 도구가 실패했거나 건너뛰었습니다: {{list}}",
      "pluginsUninstall": "제거 도구: {{list}}",
      "pluginsUninstallOk": "동반 도구가 제거되었습니다.",
      "pluginsUninstallFailed": "일부 도구가 제거되지 않았거나 건너뛰었습니다: {{list}}",
      "pluginsNoneToUninstall": "제거할 도구 없음(이미 사라졌거나 필요함)"
    },
    "approval": {
      "notFound": "승인을 찾을 수 없음: {{id}}"
    },
    "readiness": {
      "core": "제어 영역",
      "security": "권한 및 보안",
      "binaries": "바이너리/패키지",
      "hosting": "호스팅",
      "dns": "DNS",
      "email": "이메일",
      "isolation": "프로젝트 격리",
      "ops": "운영",
      "runtimesNode": "Node.js",
      "runtimesPhp": "PHP",
      "runtimesPython": "파이썬",
      "runtimesGo": "Go",
      "pm2": "PM2",
      "runtimesNodeFix": "/runtimes/node에서 노드 설치",
      "runtimesPhpFix": "/runtimes/php에서 PHP 설치",
      "runtimesPythonFix": "/runtimes/python에서 Python 설치",
      "runtimesGoFix": "/runtimes/go에서 Go 설치",
      "pm2Fix": "노드 런타임 페이지에서 PM2 설치"
    },
    "needAdmin": "관리자 권한이 필요합니다",
    "notInstalled": "미설치",
    "unknown": "알 수 없음",
    "failed": "실패한",
    "running": "달리기",
    "stopped": "중지됨",
    "probe": "조사",
    "install": "설치",
    "port": "포트",
    "git": {
      "missingBin": "자식이 PATH에 없습니다",
      "auth": "인증에 실패했습니다. 배포 키 또는 HTTPS 토큰을 추가합니다.",
      "hostkey": "SSH 호스트 키 확인에 실패했습니다. 호스트 키를 확인하고 고정하세요.",
      "dirty": "작업 트리에는 {{count}} 로컬 변경 사항이 있습니다. 당기기가 차단되었습니다.",
      "diverged": "빨리감기를 할 수 없습니다. 로컬 Git 기록을 삭제하려면 원격 참조로 재설정하세요.",
      "missingRef": "해당 분기, 태그 또는 커밋이 원격에 없습니다.",
      "shallow": "이 클론은 얕습니다. 이전 커밋을 고정하기 전에 전체 기록을 가져오세요.",
      "notRepo": "app/은 아직 Git 저장소가 아닙니다.",
      "diffEmpty": "단계적이지 않은 diff가 없습니다(보호된 .env는 제외됨).",
      "unrelated": "관련 없는 역사. 확인 후에만 다시 복제하십시오. 사용자 정의 파일은 손실됩니다.",
      "lock": "Git index.lock이 존재합니다. git 프로세스가 실행되고 있지 않은 경우에만 제거하십시오.",
      "disk": "디스크가 가득 찼거나 할당량이 초과되었습니다.",
      "timeout": "힘내 시간이 초과되었습니다.",
      "network": "리모컨과 통신 중 네트워크 오류가 발생했습니다.",
      "lfs": "이 저장소는 Git LFS를 사용하며 git-lfs는 사용할 수 없습니다.",
      "submodule": "하위 모듈 업데이트에 실패했습니다.",
      "unknown": "Git이 실패했습니다. 명령 출력을 참조하세요.",
      "fetchOk": "원본에서 가져왔습니다.",
      "checkoutOk": "{{ref}}를 확인했습니다.",
      "resetOk": "{{ref}}로 하드 재설정하세요.",
      "envRestored": "제어 영역에서 app/.env를 복원했습니다.",
      "needPinHost": "SSH 호스트 키가 고정되지 않았습니다. 복제하거나 가져오기 전에 스캔하고 고정하세요.",
      "tokenSaved": "HTTPS 토큰이 저장되었습니다(다시 표시되지 않음).",
      "tokenCleared": "HTTPS 토큰이 제거되었습니다.",
      "tokenInvalid": "토큰은 8자 이상이어야 합니다.",
      "deployKeyCreated": "배포 키가 생성되었습니다. Git 호스트에 공개 키를 추가합니다.",
      "deployKeyCleared": "이 프로젝트에서 분리된 키를 배포합니다.",
      "hostPinned": "{{host}}에 대한 SSH 호스트 키가 고정되었습니다.",
      "hostUnpinned": "고정된 SSH 호스트 키를 삭제했습니다.",
      "hostScanFailed": "ssh-keyscan은 해당 호스트에 대해 키를 반환하지 않았습니다.",
      "hookEnabled": "인바운드 Git 후크가 켜져 있습니다. URL을 GitHub, Gitea 또는 GitLab에 직접 붙여넣으세요.",
      "hookDisabled": "인바운드 Git 후크가 꺼져 있습니다. URL은 동기화되지 않습니다.",
      "hookSecretOnce": "지금 이 후크 비밀을 복사하세요. 다시 표시되지 않습니다.",
      "refsNeedUrl": "먼저 Git URL을 입력하세요.",
      "refsOk": "{{branches}} 브랜치 및 {{tags}} 태그가 로드되었습니다.",
      "refsEmpty": "원격에 분기나 태그가 없음을 알렸습니다."
    },
    "auto": {
      "n0001": "상태: 적용됨",
      "n0002": "사용자를 찾을 수 없습니다",
      "n0003": "차단됨: YSK_EXECUTE=1 필요",
      "n0004": "리소스를 찾을 수 없습니다.",
      "n0005": "호스트에 적용할 수 없습니다. YSK_EXECUTE + 루트가 필요합니다.",
      "n0006": "호스트 실행 필요",
      "n0007": "상태: 작성됨",
      "n0008": "이 작업을 완료하려면 루트 권한이 필요합니다.",
      "n0009": "데이터베이스 생성",
      "n0010": "완료",
      "n0011": "찾을 수 없음",
      "n0012": "상태: 실패",
      "n0013": "실행되지 않음",
      "n0014": "시작",
      "n0015": "MySQL이 설치되지 않았습니다.",
      "n0016": "psql이 설치되지 않았습니다.",
      "n0017": "UFW 방화벽",
      "n0018": "런타임",
      "n0019": "크론을 찾을 수 없습니다",
      "n0020": "",
      "n0021": "정책이 시행되지 않음: 0/1 관리자가 2FA를 활성화했습니다.",
      "n0022": "관리자 2단계 인증",
      "n0023": "바이너리 로그(복제)",
      "n0024": "찾을 수 없음",
      "n0025": "시스템 변경이 비활성화되었습니다.",
      "n0026": "자동 금지 회로 차단기가 작동했습니다.",
      "n0027": "에이전트 ID를 지정하세요.",
      "n0028": "프로젝트를 찾을 수 없습니다",
      "n0029": "이름이 필요합니다",
      "n0030": "비상",
      "n0031": "금지 활성화 안 함",
      "n0032": "테스트 실행: 이 시스템이 아님",
      "n0033": "테스트 실행: 시스템 아님",
      "n0034": "복제본 1개",
      "n0035": "노드 프로브 성공",
      "n0036": "serverHost 실행이 활성화되지 않아 rsync할 수 없습니다.",
      "n0037": "주요 단계를 다시 적용하지 못했습니다.",
      "n0038": "부트스트랩할 수 없습니다. YSK_EXECUTE를 활성화하지 마세요.",
      "n0039": "부트스트랩에는 YSK_EXECUTE=1이 필요합니다.",
      "n0040": "최대 연결",
      "n0041": "바인딩 주소",
      "n0042": "도메인",
      "n0043": "배수",
      "n0044": "CDN 노드를 찾을 수 없습니다.",
      "n0045": "(GitHub 최신 릴리스)",
      "n0046": "실행(YSK_EXECUTE 시스템 디렉터리)",
      "n0047": "테스트 실행: 시스템 nginx에 --execute를 먼저 추가합니다.",
      "n0048": "필요관리자",
      "n0049": "프로젝트 ID 및 이름",
      "n0050": "^.*계정 또는 비밀번호.*$",
      "n0051": "^.*확인이 필요합니다.*$",
      "n0052": "echo \"pdnsutil을 찾을 수 없음: \" >&2",
      "n0053": ": ''}(재부팅 후에도 지속되지 않을 수 있습니다. 지속하려면 저장을 사용하세요.)",
      "n0054": "# rsa_cert_file= (인증서 아님)",
      "n0055": "$_GET / $_POST / $_COOKIE",
      "n0056": "--password 또는 YSK_MIGRATE_SSH_PASSWORD",
      "n0057": "-1 비활성화; 0",
      "n0058": "/proc/meminfo는 가능합니다",
      "n0059": "/proc/stat 가능 — CPU% 불가능",
      "n0060": "0 = 한계; 256MB 가능",
      "n0061": "0 = 모든 CPU 사용",
      "n0062": "0(꺼짐)",
      "n0063": "1분 로드가 CPU × 2를 초과함",
      "n0064": "1. MySQL 데이터베이스 패널 생성",
      "n0065": "1 = 가장 안전함; 2 = 더 나은 성능",
      "n0066": "2. WordPress에서 앱/공개로",
      "n0067": "3. wp-config.php 설정",
      "n0068": "4. PHP + Nginx/SSL",
      "n0069": "IPv4",
      "n0070": "IPv4",
      "n0071": "AAAA IPv6",
      "n0072": "AAAA IPv6",
      "n0073": "AOF 지속",
      "n0074": "관리자 파일이 존재하지 않습니다. 다운로드하세요:사실",
      "n0075": "상담원이 쓸 수 없습니다",
      "n0076": "에이전트 실행 중",
      "n0077": "허용 목록",
      "n0078": "악숨 + 토키오; 화물 제작 상자()",
      "n0079": "Axum: 화물 빌드 --release crates.io",
      "n0080": "이름 확인 건너뛰기",
      "n0081": "대조 서버",
      "n0082": "문자셋 서버",
      "n0083": "부트스트랩 노드()",
      "n0084": "봇 스캔",
      "n0085": "CLI OP캐시",
      "n0086": "CONFIG SET 데이터베이스가 성공하지 못했습니다(다시 시작할 수 있음).",
      "n0087": "1~10000용 CPU",
      "n0088": "Cloudflare UA가 성공하지 못함",
      "n0089": "Cloudflare Under Attack을 이용해 주세요.",
      "n0090": "쿠키 보안(HTTPS)",
      "n0091": "0~15에 대한 DB 인덱스",
      "n0092": "이 프로젝트에 대해 시스템 사용자가 생성되지 않았습니다.",
      "n0093": "DB ID 사용자를 찾을 수 없습니다. systemuser를 생성해주세요.",
      "n0094": "DB_PASSWORD - 페이지에서 MySQL 또는 WP_DB_*를 생성하세요.",
      "n0095": "DDoS",
      "n0096": "DKIM",
      "n0097": "DMARC",
      "n0098": "작성된 DNS ≠ 확인자( TTL/)",
      "n0099": "DS 등록을 부탁드립니다.",
      "n0100": "Django: pip 설치 django/gunicorn",
      "n0101": "다운 확인이름 등인터페이스",
      "n0102": "EmailService dataDir — 데이터베이스( dataDir Maildir)",
      "n0103": "FPM 다시 로드 실패",
      "n0104": "FTPS에는 도메인이 필요합니다.",
      "n0105": "FastAPI + 유비콘; 요구사항.txt; / 그리고 /건강",
      "n0106": "플라스크 app.py; 요구사항.txt; / 그리고 /건강",
      "n0107": "GTID: conf gtid_mode=ON",
      "n0108": "Galera는 mariadb를 지원합니다.",
      "n0109": "Git URL이 잘못되었습니다.",
      "n0110": "GitHub package.json 버전 누락",
      "n0111": "GitHub 릴리스 태그 누락",
      "n0112": "런타임 이동",
      "n0113": "인증봇",
      "n0114": "ACME 웹루트를 사용한 HTTP conf(TLS 아님)",
      "n0115": "HTTP 실패",
      "n0116": "HTTPS 활성화",
      "n0117": "IMAP/POP 실패",
      "n0118": "IP 없음(/enrich)",
      "n0119": "IP가 유효하지 않음",
      "n0120": "IPv4 0~32",
      "n0121": "IPv6 0~128",
      "n0122": "trx 커밋 시 InnoDB 플러시 로그",
      "n0123": "InnoDB 로그 파일 크기",
      "n0124": "InnoDB 버퍼 풀 크기",
      "n0125": "관리자 패널(웹메일 설치)을 통해 설치 및 게시합니다.",
      "n0126": "L7 침수/비정상 교통",
      "n0127": "LLM 비정상(누락)",
      "n0128": "Let’s Encrypt HTTP-01에는 80개의 캔이 필요합니다. DNS-01 API 토큰.",
      "n0129": "64~10000000에 대한 한도NOFILE",
      "n0130": "MTU 68–65535",
      "n0131": "MX 메일호스트",
      "n0132": "MX: 첫 번째 호스트( 10 mail.example.com.)",
      "n0133": "마리아DB 서버",
      "n0134": "클라이언트가 TLS를 사용하도록 요구",
      "n0135": "MySQL 서버",
      "n0136": "MySQL/MariaDB 클라이언트",
      "n0137": "NetworkManager를 사용할 수 없습니다. DNS를 쓸 수 없습니다.",
      "n0138": "Nginx 더 엄격한 속도 제한(~8req/s)",
      "n0139": "Nginx 엄격한 속도 제한(~3 요청/초)",
      "n0140": "Nginx 부드러운 속도 제한(~20req/s)",
      "n0141": "실패2금지",
      "n0142": "노드 설치 실패",
      "n0143": "Node.js",
      "n0144": "OP캐시(MB)",
      "n0145": "PHP docroot + wp-config()",
      "n0146": "방화벽(UFW)",
      "n0147": "PHP 프로세스시작프로세스가 아님",
      "n0148": "PHP 성능 저하 — 프로젝트 Linux 사용자가 아님(root + createsystemuser 필요)",
      "n0149": "PID",
      "n0150": "PID가 유효하지 않음",
      "n0151": "핑 성공",
      "n0152": "PM2 시작 실패 — pidfile 시작",
      "n0153": "접미사",
      "n0154": "POST",
      "n0155": "발신자별: 봉투 발신자 도메인 메시지/시간; DEFER_IF_PERMIT",
      "n0156": "Postfix 정지 맵 적용됨 (check_recipient_access REJECT)",
      "n0157": "PostgreSQL 서버",
      "n0158": "PostgreSQL 서버가 설치되지 않음",
      "n0159": "PostgreSQL 클라이언트",
      "n0160": "PostgreSQL 서비스가 실행되고 있지 않습니다.",
      "n0161": "PowerDNS 도구",
      "n0162": "기본: 복제 사용자 생성(SQL)",
      "n0163": "파이썬 장고 ()",
      "n0164": "redis 서버",
      "n0165": "파이썬 동작",
      "n0166": "RDB 규칙",
      "n0167": "RDB",
      "n0168": "RUSTFLAGS(빌드)",
      "n0169": "0~15에 대한 Redis dbIndex",
      "n0170": "Redis 덤프에는 YSK_EXECUTE=1이 필요합니다.",
      "n0171": "레디스 서버",
      "n0172": "Redis 서버가 설치되지 않았거나 연결할 수 없습니다.",
      "n0173": "Redis를 시작할 수 없습니다. PING할 수 없습니다.",
      "n0174": "레디스 클라이언트",
      "n0175": "Redis 시작",
      "n0176": "Redis 복원에는 YSK_EXECUTE가 필요합니다.",
      "n0177": "certbot.timer(dns-01)를 통한 갱신",
      "n0178": "Rust 빌드/실행",
      "n0179": "S3 버킷/경로가 설정되지 않음",
      "n0180": "SFTP.ssh chown 루트 + YSK_EXECUTE 필요",
      "n0181": "SIGKILL verifyKill: true",
      "n0182": "SMTP /",
      "n0183": "SPF",
      "n0184": "SRV: 우선 가중치 포트 대상",
      "n0185": "SSH",
      "n0186": "SSH 연결 실패",
      "n0187": "SSH에는 YSK_EXECUTE=1이 필요합니다.",
      "n0188": "SSO 확인()·비밀번호",
      "n0189": "SSO 확인()·비밀번호",
      "n0190": "SST=mariabackup: 노드 mariadb-backup",
      "n0191": "세션",
      "n0192": "세션",
      "n0193": "세션",
      "n0194": "TCP(사용중)",
      "n0195": "TOTP 성공",
      "n0196": "TasksMax(1~1000000)",
      "n0197": "UFW가 설치되지 않음",
      "n0198": "UFW 상태 읽기 실패",
      "n0199": "VACUUM",
      "n0200": "월 등",
      "n0201": "웹 + 메일",
      "n0202": "웹 UI: 찾을 수 없음: (앱/웹 빌드 또는 YSK_WEB_ROOT 설정)\\n",
      "n0203": "웹 호스트",
      "n0204": "웹 인터페이스",
      "n0205": "웹인증 확인 실패",
      "n0206": "WebDAV 아님",
      "n0207": "웹메일 잘못된 도메인",
      "n0208": "와일드카드/dns-01: certbot TXT; 패널이 시작됩니다. DS/TXT DNS 완료",
      "n0209": "워드프레스(PHP)",
      "n0210": "YSK PHP OK — WordPress가 설치되지 않았습니다\\\\n",
      "n0211": "YSK_EXECUTE가 켜져 있지만 프로세스가 루트가 아닙니다. 일부 systemctl/nginx 다시 로드가 차단됩니다.",
      "n0212": "YSK_EXECUTE 활성화",
      "n0213": "YSK_EXECUTE가 꺼짐 - 기록됨 ≠ 적용됨",
      "n0214": "YSK_EXECUTE가 꺼져 있습니다. 호스트 변이는 YSK_EXECUTE=1로 설정할 때까지 기록/초안 상태로 유지됩니다.",
      "n0215": "액세스 로그 실패",
      "n0216": "access=fleet에는 FleetAgentId가 필요합니다.",
      "n0217": "재부팅을 위한 조치 | 전원 끄기 | 취소",
      "n0218": "정점 + www(가장자리)+ CDN 호스트",
      "n0219": "apex CNAME 서버/",
      "n0220": "app.py — 건너뛰었습니다.",
      "n0221": "적용됨 ≠ 정상 — wsrep를 조사해 보세요.",
      "n0222": "sshd 다시 로드를 적용합니다. 오류 일치 가능 — 첫 번째 테스트 실행",
      "n0223": "ApplySystem 일시 중지/자동 회신 변경",
      "n0224": "apply_status=write (성공 ≠ 시스템 MTA; applySystem:true firstapply 추가)",
      "n0225": "앱/웹/dist가 존재합니다.",
      "n0226": "apt list --upgradable: (업데이트할 수 있거나 준비되지 않았음)",
      "n0227": "적절한 설치 실패",
      "n0228": "apt-get 사용 가능",
      "n0229": "자동 진공 비활성화",
      "n0230": "차단됨: HostExecutor + YSK_EXECUTE=1 필요",
      "n0231": "부트스트랩: 노드 실패",
      "n0232": "부트스트랩: 적절한 실패",
      "n0233": "부트스트랩 주요 단계실패",
      "n0234": "후보 버전이 아님",
      "n0235": "화물 / 녹슨",
      "n0236": "certbot 종료 0 — /etc/letsencrypt/live/를 확인하세요.",
      "n0237": "chown에는 YSK_EXECUTE + 루트가 필요합니다.",
      "n0238": "클론(YSK 스캐폴드/스텁)",
      "n0239": "Cluster_size 알 수 없음 또는 0",
      "n0240": "명령 ysk-server / ysk-server",
      "n0241": "제어 영역 파일완료",
      "n0242": "cwd는 할 수 있다",
      "n0243": "데이터디렉터리",
      "n0244": "dataDir ysk.json — 상태완료",
      "n0245": "dataDir/이메일이 존재합니다",
      "n0246": "dataDir/웹이 존재합니다.",
      "n0247": "데이터베이스를 찾을 수 없습니다:",
      "n0248": "db-util(FTP 사용자 데이터베이스)",
      "n0249": "배포노드 노드 프로젝트",
      "n0250": "df 사용 가능한 마운트( 또는 )",
      "n0251": "발굴할 수 없습니다. 노드 DNS",
      "n0252": "발굴: 답변 없음(NXDOMAIN 또는 비어 있음)",
      "n0253": "dns-01: 패널 TXT — 완료\" SSL\"",
      "n0254": "DS가 아닌 dnssec-dsfromkey",
      "n0255": "dnssec-keygen PATH(바인드9-dnsutils 설치에 적합)",
      "n0256": "dnssec-keygen 실패",
      "n0257": "dnssec-signzone을 사용할 수 없음 — Keepkey/DS",
      "n0258": "dnssec-signzone not.signed",
      "n0259": "도메인",
      "n0260": "도메인을 찾을 수 없음:",
      "n0261": "dovecot 다시 로드 실패 또는 servicenot(시브 쓰기, 다시 로드 성공)",
      "n0262": "플릿 디스패치 미리보기(대기열에 넣지 않음)",
      "n0263": "테스트 실행 피어 푸시(SCP 아님)",
      "n0264": "테스트 실행 원격 설치(Ssh 아님)",
      "n0265": "테스트 실행 전송 완료(전체 부트스트랩)",
      "n0266": "테스트 실행 — 패스 적용/실행 홈",
      "n0267": "테스트 실행 — 실제로 ssh 적용/실행을 통과합니다.",
      "n0268": "테스트 실행 — /etc를 쓰지 않음",
      "n0269": "테스트 실행: add --execute firstapply ufw",
      "n0270": "테스트 실행: 인벤토리 + 프리플라이트 통과, 패키지/이송 아님",
      "n0271": "테스트 실행: 프로브/계획 전용. 실제로 프로비저닝하려면 YSK_EXECUTE=1로 --execute를 전달하세요.",
      "n0272": "Dry-run: 관리 파일(dataDir)을 작성했습니다. --execute를 YSK_EXECUTE=1로 전달하여 시스템 드롭인을 설치합니다.",
      "n0273": "드라이런(Dry-run): 금지되지 않음. 실제로 금지하려면 --execute를 YSK_EXECUTE=1로 전달하세요.",
      "n0274": "테스트 실행: 금지가 해제되지 않았습니다. 실제로 금지를 해제하려면 YSK_EXECUTE=1로 --execute를 전달하세요.",
      "n0275": "dryRun=true — API 변경",
      "n0276": "dryRun: 쓰지 않음",
      "n0277": "dump write dataDir, 전송하지 않음",
      "n0278": "활성화 실패",
      "n0279": "실행( YSK_EXECUTE=1 + 루트)",
      "n0280": "실행하려면 대기열에 추가해야 합니다.",
      "n0281": "내보내기 관리자",
      "n0282": "fail2ban 적용 실패",
      "n0283": "fail2ban 서비스",
      "n0284": "fail2ban이 활성화되지 않았습니다.",
      "n0285": "fail2ban 아님",
      "n0286": "실패2금지",
      "n0287": "fail2ban 상태 읽기 실패",
      "n0288": "fall2ban: sshd, nginx-http-auth 및 표준 감옥",
      "n0289": "fd를 사용할 수 없음",
      "n0290": "파일(파일)",
      "n0291": "플릿 제거 차단됨 - 대기열에 추가 또는 SSH",
      "n0292": "플릿을 사용해 주세요. db-cluster 플릿 --op 프로브 --실행",
      "n0293": "fromPanel 관리자",
      "n0294": "fromPanel에는 스텝업이 필요합니다: POST /api/v1/auth/totp/step-up",
      "n0295": "풀체인 PEM 인증서",
      "n0296": "IP용 게이트웨이",
      "n0297": "geo apex: EDNS 쓰기 geo edge multi-A (·사용자 Anycast)",
      "n0298": "geoMap 가장자리 — 가장자리",
      "n0299": "geo: geoMap을 설정하지 않음 — 등 multi_a(edge). dns.geoMap 지역→nodeIds를 사용하세요.",
      "n0300": "git 바이너리를 찾을 수 없음: PATH에 있음",
      "n0301": "자식 바이너리",
      "n0302": "바이너리로 가다",
      "n0303": "healthUrl http(s) URL",
      "n0304": "http-01 webroot — 80개는 ACME conf 팬아웃 가능",
      "n0305": "linuxUser/project가 아닌 신원 - authenticate_keys를 사용할 수 없음",
      "n0306": "IP 무시: dataDir/fail2ban/ignoreip.txt",
      "n0307": "index.html + CSS, Nginx 루트 또는",
      "n0308": "conf 설치 → systemctl restart mariadb (부트스트랩 노드 아님)",
      "n0309": "ip -j 주소 인터페이스",
      "n0310": "직업 매니페스트",
      "n0311": "신문; 허가할 수 있다",
      "n0312": "Journalctl에는 루트 또는 사용자 systemd-journal/adm이 필요할 수 있습니다.",
      "n0313": "열쇠",
      "n0314": "키가 누락되었거나 삭제되지 않았습니다.",
      "n0315": "kill -0 성공: 좀비 또는 허가를 위해 할 수 있습니다.",
      "n0316": "kill -0 실패",
      "n0317": "호스트에 적용하지 못했습니다.",
      "n0318": "호스트에서 차단된 적용",
      "n0319": "로컬 캐시 디렉토리/",
      "n0320": "로컬호스트 또는 *",
      "n0321": "논리적 DB 0... N-1; 다시 시작하다",
      "n0322": "로그회전 설치됨",
      "n0323": "logrotate가 설치되지 않았거나 PATH",
      "n0324": "main.py — 건너뛰었습니다",
      "n0325": "manage.py + 최소 설정/urls/wsgi; pip 설치 장고",
      "n0326": "매니페스트 dumpRelPath — 아님?",
      "n0327": "매니페스트 rdbRelPath",
      "n0328": "메모리최대 512M 또는 1G",
      "n0329": "호스트 마이그레이션 --execute + YSK_EXECUTE=1 또는 --dry-run ( Inventory+preflight)",
      "n0330": "게시물 마이그레이션 --execute YSK_EXECUTE=1(대상)",
      "n0331": "게시물 마이그레이션 YSK_EXECUTE=1 필요",
      "n0332": "게시물 마이그레이션 YSK_EXECUTE=1 필요(대상)",
      "n0333": "최소 부트스트랩 실패",
      "n0334": "mysql/mariadb 클라이언트",
      "n0335": "mysql-replica는 mysql을 지원합니다",
      "n0336": "mysql_databases 이름",
      "n0337": "명명된-checkzone PATH — 작성되었으나 확인되지 않음",
      "n0338": "nginx -t 또는 다시 로드 실패",
      "n0339": "nginx -t가 통과되지 않았으며 다시 로드되지 않았습니다.",
      "n0340": "nginx 다시 로드 확인 · 상태: 적용됨",
      "n0341": "nginx 재로드 실패",
      "n0342": "nginx 바이너리",
      "n0343": "nginx를 찾을 수 없습니다",
      "n0344": "nginx 서비스",
      "n0345": "PATH에 바이너리가 없습니다. 서비스가 준비될 수 없습니다",
      "n0346": "노드는 할 수 있다",
      "n0347": "npm 최신 누락 버전",
      "n0348": "npm 종료 0 바이너리를 찾을 수 없음 - 패키지가 CLI 또는 PATH를 업데이트할 수 없음",
      "n0349": "사용자가 아닌 nullok",
      "n0350": "nullok:.google_authenticator userAvailable 키",
      "n0351": "open_basedir 경로",
      "n0352": "openssl을 사용할 수 없습니다. YSK-SCRYPT 해시",
      "n0353": "openssl 바이너리",
      "n0354": "optionEtc 전송 실패(인증서를 대상으로 할 수 있음)",
      "n0355": "원본 쉴드: 쉴드용 노드, 원본",
      "n0356": "Origin.kind 프로젝트 또는 URL",
      "n0357": "Origin.project에는 projectId가 필요합니다.",
      "n0358": "Origin.url http(들) URL",
      "n0359": "OriginShieldNodeId edgeNodeIds",
      "n0360": "패키지 덤프 불완전 — 전송",
      "n0361": "패키지 실패 — 전송",
      "n0362": "패키지에는 YSK_EXECUTE=1이 필요합니다.",
      "n0363": "pam.d/sshd가 pam_google_authenticator가 아님(시행하지 않음)",
      "n0364": "패널이 2FA 또는 비밀 설정이 아닙니다. 먼저 \"\" TOTP를 입력하세요.",
      "n0365": "panel TOTP 비밀 — 첫 번째 웹 2FA 또는 --from-panel",
      "n0366": "패널 로그인 실패쓰기 실패2ban 로그(저널 또는 )",
      "n0367": "곁쇠",
      "n0368": "패스키 실패",
      "n0369": "패스키 성공",
      "n0370": "pdnsutil 찾을 수 없음: — PowerDNS 도구를 설치하거나 설치 후 루트로 도우미 스크립트를 실행합니다.",
      "n0371": "피어 SSH 프로브 YSK_EXECUTE=1(로컬)",
      "n0372": "피어 프로브되지 않음(로컬 프로브)",
      "n0373": "피어 노드적용 conf 및 조인",
      "n0374": "php 바이너리를 찾을 수 없음: — php-cli 설치",
      "n0375": "PHP 바이너리",
      "n0376": "PHP는 PATH가 아닙니다",
      "n0377": "userstart가 포함된 pidfile(저하됨)",
      "n0378": "pidfile 시작 pid 아님",
      "n0379": "pm2 PATH(사용 가능한 pidfile/systemd)",
      "n0380": "pm2 찾을 ​​수 없음: PATH — 설치: npm i -g pm2",
      "n0381": "이적 후 재신청",
      "n0382": "전송 후 복원",
      "n0383": "postconf가 message_rate_limit가 아님(완전 적용됨)",
      "n0384": "postgres-replica postgres를 지원합니다.",
      "n0385": "postgres_databases 이름",
      "n0386": "postqueue를 사용할 수 없거나 메일이 설치되지 않았습니다.",
      "n0387": "호스트에 nginx를 설치하거나 패널 소프트웨어/런타임 설치를 사용하십시오.",
      "n0388": "시스템에 nginx를 설치하거나 패널 소프트웨어/런타임 설치를 사용하십시오.",
      "n0389": "개인 키 PEM",
      "n0390": "생산준비 안됨(datacan)",
      "n0391": "추신",
      "n0392": "ps 성능 저하: --sort/",
      "n0393": "ps 성능 저하: pri/vsz/stat 등",
      "n0394": "psql 클라이언트",
      "n0395": "제거 실패 또는 대상",
      "n0396": "python3 바이너리",
      "n0397": "대기열 ≠ 에지 퍼지",
      "n0398": "대기열 ≠ 에지 재로드 — 에이전트 및 cdn.edge.apply",
      "n0399": "queued ≠ edge — 에이전트 종료/JSON",
      "n0400": "실제 경로",
      "n0401": "실제 경로",
      "n0402": "재적용 YSK_EXECUTE=1 필요",
      "n0403": "redis 클러스터redis 지원",
      "n0404": "sha256이 아닌 레지스트리 shasum(npm sha1) — npm 무결성 포함",
      "n0405": "다시 로드/다시 시작 실패",
      "n0406": "원격 게시 실패 — 마이그레이션 게시를 대상으로 할 수 있음",
      "n0407": "Restic backupdone(쓰기/적용 Restic 종료)",
      "n0408": "Restic이 활성화되어 있지만 비밀번호가 설정되지 않았습니다. - defenpassword(설정을 백업해 주세요)",
      "n0409": "안절부절 못함",
      "n0410": "Restic not — 스냅샷을 찍을 수 없습니다",
      "n0411": "Restic이 아닙니다 — 먼저 \"/\"를 활성화하고 비밀번호를 설정하세요",
      "n0412": "Restic 비활성화됨(tar만 해당)",
      "n0413": "나머지는 아님(건너뛰기)",
      "n0414": "Restic 설치되지 않았습니다( PATH). Restic을 시스템에 설치하십시오.",
      "n0415": "복원 알았어; 재신청/확인",
      "n0416": "복원 완료",
      "n0417": "복원 실패",
      "n0418": "복원이 성공하지 못함",
      "n0419": "복원하려면 YSK_EXECUTE=1이 필요합니다.",
      "n0420": "복원+재적용 ok; 확인하다",
      "n0421": "rsync dataDir 실패",
      "n0422": "rsync에는 YSK_EXECUTE=1이 필요합니다.",
      "n0423": "scp Wrote다시 로드할 수 없습니다: rndc/named/bind9/pdns",
      "n0424": "scp 성공 ≠ 피어 재시작/가입",
      "n0425": "비밀 키 사용 가능",
      "n0426": "비밀 마스터 키",
      "n0427": "센티넬이 아니라 센티넬",
      "n0428": "센티넬: INFO 복제; 센티넬 마스터 부탁드립니다",
      "n0429": "서버 IP IPv4",
      "n0430": "서버 IPv6 유효하지 않음",
      "n0431": "setquota PATH — ( 배포 du )",
      "n0432": "쉘 경로가 유효하지 않음",
      "n0433": "학기에 대한 신호 | 죽여라 | 헙 | USR1",
      "n0434": "ssh true 성공 → 확인됨",
      "n0435": "sshd 키보드 대화형/챌린지-응답 활성화",
      "n0436": "sshd는 KbdInteractiveAuthentication을 사용할 수 없습니다. — TOTP는 SSH를 사용할 수 없습니다.",
      "n0437": "sshpass 사용 가능(비밀번호)",
      "n0438": "엄격한 일치 작성자 사용자(비밀번호 꺼짐)",
      "n0439": "심볼릭 링크 경로",
      "n0440": "심볼릭 링크 로그 디렉토리",
      "n0441": "심볼릭 링크 프로젝트 홈",
      "n0442": "systemctl 실패",
      "n0443": "systemd 실패 — PM2/pidfile",
      "n0444": "systemd not: 호스트 실행 권한이 필요하며 관리자입니다.",
      "n0445": "대상: user@host 또는 user@host:port",
      "n0446": "토큰",
      "n0447": "토큰",
      "n0448": "top -b 사용할 수 없음( ps 사용)",
      "n0449": "전송: dataDir rsync 실패",
      "n0450": "전송: 디렉토리를 생성할 수 없습니다.",
      "n0451": "전송 완료(전체 부트스트랩)",
      "n0452": "전송 완료, 대상 복원/재적용/확인 실패",
      "n0453": "전송 실패",
      "n0454": "전송 실패",
      "n0455": "전송하려면 YSK_EXECUTE=1이 필요합니다.",
      "n0456": "전송/부트스트랩 실패",
      "n0457": "ufw 실패",
      "n0458": "유닛과 액션",
      "n0459": "useradd에는 YSK_EXECUTE + 루트가 필요합니다.",
      "n0460": "값( 256KB)",
      "n0461": "확인하다",
      "n0462": "통과되지 않았는지 확인 - 완료됨",
      "n0463": "통과 확인 — 작업=완료",
      "n0464": "vsftpd 시작 실패",
      "n0465": "vsftpd가 성공하지 못했습니다",
      "n0466": "가중치: 가장자리",
      "n0467": "wp-config.php — 생략됨",
      "n0468": "작성 ≠ Dovecot Pigeonhole — ManageSieve 또는 사용자 체에 대한 심볼릭 링크",
      "n0469": "작성 ≠ Roundcube — 활성화 시스템 또는 심볼릭 링크",
      "n0470": "작성 ≠ 적용: 시스템 conf.d에 동기화하고 nginx -t를 실행한 후 다시 로드",
      "n0471": "작성 ≠ 가능 — 패널 /webdav에 대한 역방향 프록시",
      "n0472": "작성됨 ≠ 프로세스 다시 로드",
      "n0473": "ysk-server CLI 설치 실패 - npm i -g ysk-server 가능",
      "n0474": "ysk-web Nginx/www-data (전 세계에서 읽을 수 없음)",
      "n0475": "ysk-web YSK_EXECUTE + 루트(Nginx는 750 홈을 사용할 수 없음)",
      "n0476": "ysk.json 지문 (재적용 가능)local≠source",
      "n0477": "ysk.json 지문 및",
      "n0478": "ysk.json 지문 및 (bind_ip)",
      "n0479": "ysk.json",
      "n0480": "ysk.json 실패",
      "n0481": "영역 적용이 차단됨(EXECUTE) - 업데이트",
      "n0482": "영역 수정 완료",
      "n0483": "유효하지 않은 구역",
      "n0484": "영역을 찾을 수 없음:",
      "n0485": "영역 실패",
      "n0486": "Binlog 형식",
      "n0487": "설치하다",
      "n0488": "createone(초안은 \"신청\" 페이지로 이동하세요)",
      "n0489": "그리고 POST",
      "n0490": "마지막 전체 백업에 오류가 발생했습니다.",
      "n0491": ": conf 쓰기 → 엣지 적용 → DNS(SSL 가능)",
      "n0492": ": PAM /etc/pam.d/sshd (nullok)",
      "n0493": ": 시스템 설치 libpam-google-authenticator + PAM ()",
      "n0494": "디렉토리를 삭제할 수 있습니다",
      "n0495": "디렉터리 또는 경로를 삭제할 수 있습니다.",
      "n0496": "",
      "n0497": "이 작업",
      "n0498": "지원(TERM / KILL / HUP / USR1 허용)",
      "n0499": "데이터",
      "n0500": "관리자 삭제",
      "n0501": "포트가 유효하지 않음",
      "n0502": "시스템에 적용",
      "n0503": "settingsWrote dataDir(systemenablesystemchange에 적용)",
      "n0504": "호스트 메모리 사용량이 90%를 초과합니다.",
      "n0505": "호스트 측정항목",
      "n0506": "주요 InnoDB 데이터 캐시",
      "n0507": "바이너리가 PATH에 없습니다. 서비스가 준비될 수 없습니다",
      "n0508": "Binlog 만료(초)",
      "n0509": "대화형 시간 초과",
      "n0510": ": 방화벽, 메일 PTR/rDNS, 유지",
      "n0511": "진공",
      "n0512": "Cron 페이지로 \"시스템 crontab에 설치\"하면 실제로",
      "n0513": "Nginx 루트 또는 \"\" public/",
      "n0514": "ysk-server 서비스를 루트(systemctl / control-plane 장치)로 시작합니다.",
      "n0515": "루트로 시작하고 YSK_EXECUTE=1로 설정합니다(호스트 설정/배포 문서 참조).",
      "n0516": "사용자 포함(저하됨 — 프로젝트 Linux 사용자 아님)",
      "n0517": "껍질 - 거부",
      "n0518": "느린 쿼리 로그",
      "n0519": "서버가 설치되지 않았습니다(명령 -v )",
      "n0520": "긴 쿼리 시간(초)",
      "n0521": "서버MySQL이 설치되지 않았습니다.",
      "n0522": "서버가 설치되지 않았습니다. PostgreSQL",
      "n0523": "서버가 설치되지 않았습니다. Redis",
      "n0524": "서버가 설치되지 않았습니다. 관리 패널에서 이 작업을 완료할 수 없습니다.",
      "n0525": "서버가 YSK_EXECUTE를 활성화하지 않습니다.",
      "n0526": "serverHost 실행이 활성화되지 않았거나 루트가 누락되어 paneldoneinstall을 설치할 수 없습니다.",
      "n0527": "serverHost 실행이 활성화되지 않아 Redis를 실행할 수 없습니다.",
      "n0528": "serverHost 실행이 활성화되지 않아 panelinstall을 설치할 수 없습니다.",
      "n0529": "serverHost 실행이 활성화되지 않았습니다. 완료할 수 없습니다.",
      "n0530": "serverHost 실행이 활성화되지 않아 SSH 연결을 생성할 수 없습니다.",
      "n0531": "serverHost 실행이 활성화되지 않아 덤프할 수 없습니다.",
      "n0532": "호스트 실행이 꺼져 있습니다. 패널이 시스템 수준 작업을 완료할 수 없습니다.",
      "n0533": "serverHost 실행이 활성화되지 않았습니다. 관리되는 파일을 썼고, 명명된 checkzone/다시 로드를 할 수 없습니다.",
      "n0534": "서버가 수신 대기하는 TCP 포트",
      "n0535": "~을 위한",
      "n0536": "",
      "n0537": "YSK-SCRYPT 해시(openssl 해시용)",
      "n0538": "YSK_SECRETS_KEY",
      "n0539": "baseUrl/.ysk-cdn-health 경로(C2 캔 상태 위치)",
      "n0540": "버전(최신 재정의)",
      "n0541": "YSK_LATEST_VERSION(/)",
      "n0542": "없는",
      "n0543": "mysqldump — 패키지는 MySQL을 사용할 수 없습니다.",
      "n0544": "pg_dump — 패키지는 Postgres를 사용할 수 없습니다.",
      "n0545": "redis-cli — 패키지는 Redis RDB를 사용할 수 없습니다.",
      "n0546": "SSH패스",
      "n0547": "rsync 필요(설치되지 않음)",
      "n0548": "통과되지 않음",
      "n0549": "합격",
      "n0550": "128M, 256M, 512M, -1 ()",
      "n0551": "예를 들어 512MiB; 설정하지 않으려면 비워 두세요.",
      "n0552": "900 1 300 10; 장애를 입히다",
      "n0553": ": --member 10.0.0.3=replica:fleet:SESSION_UUID",
      "n0554": "= ASN(시스템), 아님",
      "n0555": "443년 22월 80일; 포트를 끌 수 없습니다.",
      "n0556": "보관 : 10",
      "n0557": "ysk-서버 process.pid",
      "n0558": "",
      "n0559": "pam_google_authenticator로 감지",
      "n0560": "백업 tar가 성공했지만 원격/restic에 문제가 있음",
      "n0561": "관리자",
      "n0562": "관리자 가장",
      "n0563": "관리자는 작업을 할 수 있습니다",
      "n0564": "정점 A",
      "n0565": "나열된 관리 conf(시스템에 기록되지 않음)",
      "n0566": "시작하지 않고 PM2 설정 쓰기",
      "n0567": "쓰기 관리 파일(다시 로드하지 않음)",
      "n0568": "writemanagesettings — 준비 및 다시 로드",
      "n0569": "쓰기(활성화하지 않음)",
      "n0570": "(적용:거짓); 비밀번호",
      "n0571": "postgres + postgres-replica 지원",
      "n0572": "redis + redis-replica|redis-sentinel 지원",
      "n0573": ", 때리다",
      "n0574": "스텁 해결(127.0.0.53); DNS를 해결해주세요.",
      "n0575": "경고, 할 수 있습니다",
      "n0576": "을 위한; / CDN 엣지 접속 로그 캐시 상태",
      "n0577": "willwrite systemd 환경 / 프로세스 환경",
      "n0578": "URL 포함 허용",
      "n0579": "URL 파일 허용",
      "n0580": "허용 파일",
      "n0581": ": + / + (풍부하게)+ ASN; 도시 정책 꺼짐",
      "n0582": "엣지 팬아웃 적용됨",
      "n0583": "엣지 팬아웃 실패",
      "n0584": "에지 퍼지 성공",
      "n0585": "피어 네임서버 다시 로드",
      "n0586": "피어 다시 로드 실패 — 파일을 읽을 수 없습니다.",
      "n0587": "피어 실패",
      "n0588": "피어: 영역 및 원격 다시 로드 성공",
      "n0589": "모두 성공했습니다",
      "n0590": "모두 건너뛰었습니다(백업 가능한 홈 없음) - 실패로 처리되지 않음",
      "n0591": "",
      "n0592": "RDB, 복원",
      "n0593": "기타 런타임 변수",
      "n0594": "",
      "n0595": "또는",
      "n0596": "— 수동 적용\"\" (자동이 아님)",
      "n0597": "점수가 매우 높음 - 비상 사전 설정에는 수동 확인이 필요합니다(자동이 아님).",
      "n0598": "예배 규칙서",
      "n0599": "프로세스",
      "n0600": "기본값 삭제 verifyDefault: true",
      "n0601": "파일 또는 디렉토리 삭제",
      "n0602": "deletesystemuser — 거부",
      "n0603": "삭제: 호스트 실행이 활성화되지 않았습니다. 경로 관리 데이터 디렉터리",
      "n0604": "fail2ban을 적용하고 서비스를 활성화하려면",
      "n0605": "페이지 활성화(소프트/일반)",
      "n0606": "강화",
      "n0607": "또는",
      "n0608": "공격을 받고 있다",
      "n0609": "21 및 PASV",
      "n0610": "패널 파일만 쓰기",
      "n0611": "시스템에 적용 가능",
      "n0612": "dataDir/clusters/<id>/할 수 있습니다.",
      "n0613": "설정을 볼 수 있습니다. 설치, 다시 시작 및 시스템 설정 쓰기에는 호스트 실행 권한이 필요합니다.",
      "n0614": "\"\" 또는 \"추가\"할 수 있습니다",
      "n0615": "이메일에서 Postfix 설치 및 구성",
      "n0616": "가능: SSL, WP-CLI,",
      "n0617": "",
      "n0618": ".restic-restore-* 디렉토리로 복원 허용",
      "n0619": "시작, 중지, 다시 시작, 부팅 시 활성화",
      "n0620": "시작프로세스프로세스가 아님",
      "n0621": "OP캐시",
      "n0622": "SSL",
      "n0623": "활성",
      "n0624": "파일",
      "n0625": "파일",
      "n0626": "노드 wsrep, HA ≥2 노드",
      "n0627": "\"\"MySQL(또는 DB) 및 WP_DB_* 생성",
      "n0628": "도메인 — 도메인 수준 휴가 유지",
      "n0629": "잘못된 도메인",
      "n0630": "도메인상태: 활성()",
      "n0631": "domainStatus: 일시 중지됨(; 등 Postfix )",
      "n0632": "포트, 바인드 주소, 연결 제한",
      "n0633": "포트체크비정상",
      "n0634": "실행 시간",
      "n0635": "보안 전송(TLS) 필요",
      "n0636": "(.gz 등)",
      "n0637": "봇",
      "n0638": "조사",
      "n0639": "통제 불가능할 때 최후의 수단",
      "n0640": "패키지",
      "n0641": "packageinstallnot: 호스트 실행 권한이 필요합니다.",
      "n0642": "패키지업데이트에는시스템관리자권한이필요합니다.",
      "n0643": "vsftpd에 적용",
      "n0644": "시스템에 적용",
      "n0645": "적용하면 관리 파일이 됩니다. YSK_EXECUTE=1 + 루트 적용됨",
      "n0646": "",
      "n0647": "인턴 (MB)",
      "n0648": "비밀번호",
      "n0649": "오류가 발생했습니다. 신청하세요.",
      "n0650": "보안 → 내 보안 → 2FA 활성화; 정책은 requireAdminTotp를 설정할 수 있습니다.",
      "n0651": "그리고 경로",
      "n0652": "PAM 설치",
      "n0653": "vsftpd 설치",
      "n0654": "설치 실패",
      "n0655": "설치패키지",
      "n0656": "설치 완료",
      "n0657": "설치하다",
      "n0658": "설치시스템설정",
      "n0659": "",
      "n0660": "",
      "n0661": "비밀번호",
      "n0662": "비밀번호 SQL CHANGE_ME",
      "n0663": "암호 해시로 저장된 비밀번호(일반 텍스트 아님)",
      "n0664": "비밀번호",
      "n0665": "비밀번호는 sshpass가 필요합니다",
      "n0666": "비밀번호필요로컬설치 sshpass",
      "n0667": "비밀번호는 8이 필요합니다",
      "n0668": "비밀번호 ( 8 ) - writehash 생성 아님",
      "n0669": "비밀번호 설정",
      "n0670": "등",
      "n0671": "그리고 제발",
      "n0672": "부인하다",
      "n0673": "NODE_OPTIONS=--max-old-space-size=N을 씁니다.",
      "n0674": "Nginx 드롭인 작성",
      "n0675": "집에 편지 쓰기 ≠ PAM",
      "n0676": "쓰기 실패",
      "n0677": "쓰다",
      "n0678": "쓰기 파일",
      "n0679": "",
      "n0680": "sshd_config에 포함하거나 POST /api/v1/sftp/sshd-snippet/apply install",
      "n0681": "프로젝트 Linux 사용자 격리",
      "n0682": "프로젝트 ID",
      "n0683": "프로젝트 ID가 잘못되었습니다. 집으로 돌아갈 수 없습니다.",
      "n0684": "프로젝트 ID, cansystemuser",
      "n0685": "프로젝트 내부-sftp 사용자 대화형 셸 일치 — TOTP SSH 셸/scp",
      "n0686": "프로젝트 관리 로그가 잘못되었습니다.",
      "n0687": "프로젝트",
      "n0688": "프로젝트 여부 설정 홈",
      "n0689": "프로젝트할 수 없음시스템사용자",
      "n0690": "프로젝트",
      "n0691": "프로젝트 (503)",
      "n0692": "프로젝트생성 실패,",
      "n0693": "프로젝트 도메인 — 먼저settingsdomain을 사용하세요.",
      "n0694": "프로젝트 linux_user",
      "n0695": "프로젝트 제거 호스트 nginx 캐시 디렉터리(가상 호스트별 영역 아님)",
      "n0696": "프로젝트Missing linuxUser — FTP를 생성할 수 없습니다.",
      "n0697": "프로젝트Missing linux_user",
      "n0698": "프로젝트; =",
      "n0699": "프로젝트 세부정보 → 리소스 → 시스템 사용자 생성 / /home/ysk-server-{id}로 마이그레이션(YSK_EXECUTE + 루트 필요)",
      "n0700": "교도소",
      "n0701": "홈 디렉토리가 없거나 프로젝트 격리 레이아웃에 없음",
      "n0702": "GeoIP가 아닙니다. \"IP\"를 업데이트하세요.",
      "n0703": "포팅하지 마세요. 먼저 프로젝트를 진행하세요.",
      "n0704": "시스템 Nginx(관리 파일)가 아님",
      "n0705": "servercreate Redis가 아닙니다. redis-cli, TCP 및 YSK_EXECUTE=1을 사용하세요.",
      "n0706": "vsftpd 서비스에 적용되지 않음 — \"적용\" 또는 vsftpd servicepage donestart를 수행하세요.",
      "n0707": "메일도메인이 적용되지 않음",
      "n0708": "웹 인터페이스가 아님 — API",
      "n0709": "GeoIP가 아닙니다 — 업데이트해주세요",
      "n0710": "DNSSEC 키가 아님",
      "n0711": "CDN 노드가 아님",
      "n0712": "패스키 아님",
      "n0713": "아닙니다 (패키지는 그럴 것입니다)",
      "n0714": "LLM 연결을 설정하지 않음",
      "n0715": "영역 아님: 패널을 사용해 주세요",
      "n0716": "CDN",
      "n0717": "아직 관리되는 Nginx conf가 없습니다.",
      "n0718": "사용 가능한 HIT/MISS - 전체 적중률 알 수 없음",
      "n0719": "아직 프로젝트가 없습니다.",
      "n0720": "— 먼저 계획을 세워주세요",
      "n0721": "준비됨",
      "n0722": "그리고 쿠키",
      "n0723": "활성화 --이제 실패2반",
      "n0724": "galera_new_cluster(부트스트랩)",
      "n0725": "fail2ban을 다시 로드했습니다.",
      "n0726": "nginx를 다시 로드하세요",
      "n0727": "fail2ban을 다시 시작했습니다.",
      "n0728": "scp 영역(다시 로드된 피어 ≠ 명명됨)에 기록됨",
      "n0729": "scp에서 피어/tmp로(피어에 기록됨 ≠ 서비스가 다시 시작됨)",
      "n0730": "systemctl reload nginx",
      "n0731": "그리고 라운드큐브",
      "n0732": "UFW 비활성화(경고: 호스트 포트)",
      "n0733": "프로젝트 php.ini; FPM 적용/",
      "n0734": "관리 설정(시스템 서비스에는 적용되지 않음)",
      "n0735": "설정(적용 시스템 아님)",
      "n0736": "삭제됨",
      "n0737": "삭제된 키 · Authorized_keys",
      "n0738": "삭제된클러스터; 시스템 구성 매뉴얼(v1)",
      "n0739": "삭제된 로컬 키",
      "n0740": "IP 주소 추가(설정작성, 재부팅)",
      "n0741": "데이터베이스 적용(다시 시작)",
      "n0742": "끄기/다시 시작",
      "n0743": "시스템에 다시 로드",
      "n0744": "시작",
      "n0745": "HSTS 활성화",
      "n0746": "NTP 동기화 활성화됨",
      "n0747": "UFW 활성화",
      "n0748": "WebDAV 활성화 · 기본 사용자 ysk · 토큰 비밀번호 ()",
      "n0749": "활성화된 시스템 서비스",
      "n0750": "Redis 중지",
      "n0751": "nginx 캐시 디렉토리 및 다시 로드(hostnot Proxy_cache는 가능)",
      "n0752": "서버완료인증서제발",
      "n0753": "CF 전용 UFW 적용 (origin CF + Keepport)",
      "n0754": "fail2ban 적용",
      "n0755": "시스템 Postfix에 적용된 설정",
      "n0756": "시스템 Nginx에 적용",
      "n0757": "적용된 방화벽 규칙",
      "n0758": "설치 및 ysk-server.service",
      "n0759": "사용자 시스템 crontab에 설치됨",
      "n0760": "Wrote.google_authenticator(스크래치 코드 5개)",
      "n0761": "rspamd multimap + postfix 스니펫을 작성했습니다.",
      "n0762": "작성설치",
      "n0763": "썼다; \"OS에 제한을 적용\"하거나 쓰기 단위를 배포하세요.",
      "n0764": "Jail.local 관리 작성(시스템에는 적용되지 않음)",
      "n0765": "관리되는 파일에 기록됩니다. 아직 시스템 conf.d에 적용되지 않았습니다.",
      "n0766": "설정 작성(패키지 아님)",
      "n0767": "썼다; 프로젝트는 프로세스를 진행합니다",
      "n0768": "관리되는 파일을 썼으나 적용되지 않음system conf: YSK_EXECUTE=1",
      "n0769": "관리되는 파일 작성, 적용되지 않음system conf: 루트 필요",
      "n0770": "블록: CandidateVersion",
      "n0771": "블록: 업데이트",
      "n0772": "차단: 관리자 권한이 필요합니다",
      "n0773": "DNSSEC 디렉터리 생성()",
      "n0774": "~에서",
      "n0775": "from (디스크 설치 아님, 제거 --purge)",
      "n0776": "에서; systemaccount DROP USER (: 삭제하지 않음)",
      "n0777": "연결에서",
      "n0778": "부인하다",
      "n0779": "허용 목록으로 거부",
      "n0780": "거부: raisetarget",
      "n0781": "nginx 액세스 로그 스캔",
      "n0782": "MySQL/MariaDB 생성 사용자",
      "n0783": "PostgreSQL 생성",
      "n0784": "버전 ()",
      "n0785": "",
      "n0786": "",
      "n0787": "만능",
      "n0788": "DS(등록해주세요 - 패널윌)",
      "n0789": "addbackup( dataDir 마스터 키 가능)",
      "n0790": "SHA512-CRYPT 해시 비밀번호(Dovecot)",
      "n0791": "Nginx 설정 확인을 건너뛰었습니다(설치되지 않았거나 시스템 변경 권한이 아님).",
      "n0792": "인증서 경로(파일 /etc/ysk-server/certs)",
      "n0793": "UA",
      "n0794": "",
      "n0795": "",
      "n0796": "제거됨",
      "n0797": "제거됨",
      "n0798": ",",
      "n0799": "버전 = 적절한 후보, Availableraise",
      "n0800": "/etc/fail2ban/jail.local에 복사됨",
      "n0801": "(filenot; 제거 가능)",
      "n0802": "다시 시작하다",
      "n0803": "끄다",
      "n0804": "postgresql을 다시 시작",
      "n0805": "redis 서버 다시 시작",
      "n0806": "applyrestart로 redis-server 다시 시작",
      "n0807": "다시 시작(다시 로드)",
      "n0808": "연결이 다시 활성화되었습니다(재부팅 후에도 지속됨).",
      "n0809": "TLS 에지 구성()",
      "n0810": "Nginx가 다시 로드됨(DNS가 여기를 가리키는 경우 정적 사이트가 활성화됨)",
      "n0811": "Nginx가 다시 로드되었습니다.",
      "n0812": "시스템 변경 권한이 켜져 있습니다(YSK_EXECUTE).",
      "n0813": "비밀번호 — Roundcube는 로그인할 수 있습니다",
      "n0814": "관리하다; 시스템 권한 FTP 서비스",
      "n0815": "계정(usermod -U)",
      "n0816": "계정(usermod -L)",
      "n0817": "경로 스캔",
      "n0818": "이 IP",
      "n0819": "생성시스템사용자요구시스템관리자 권한",
      "n0820": "createmaildomain 및 페이지 적용",
      "n0821": "완료",
      "n0822": "\"\"",
      "n0823": "SSH 및 필수적이지 않은 포트 검토",
      "n0824": "",
      "n0825": "복제본 1개; 기본 구성 가능",
      "n0826": "노드 2개(3); ~할 수 있다",
      "n0827": "CDN Under Attack 모드를 고려하십시오.",
      "n0828": "금지 활성화",
      "n0829": "HTTPS(HTTP→301)",
      "n0830": "기본 인증 플러그인",
      "n0831": "",
      "n0832": ": 상태=활성",
      "n0833": "오류 로그 경로",
      "n0834": "(밀리초)",
      "n0835": "일반 로그",
      "n0836": "인증서를 주세요. 실패했습니다.",
      "n0837": "≥ 파일",
      "n0838": "설정유지백업",
      "n0839": "성공은 이 대상이 BatchMode SSH(비대화형)를 허용한다는 것을 의미합니다. 이는 전역 액세스 권한을 부여하는 것이 아닙니다.",
      "n0840": "또는 32767",
      "n0841": "소프트웨어가 설치됨",
      "n0842": "허가/",
      "n0843": "",
      "n0844": "CLI 바이너리를 찾을 수 없음 - systemd가 자동 자리 표시자를 활성화합니다.",
      "n0845": "DNS 영역을 찾을 수 없습니다. dns.zoneId 또는 먼저 도메인 영역을 생성하세요.",
      "n0846": "PowerDNS를 찾을 수 없습니다. pdns-server / pdns-tools를 설치하십시오.",
      "n0847": "Roundcube 플러그인 디렉토리를 찾을 수 없습니다. — 작성했습니다. Roundcube 또는 roundcubePluginsDir을 설치하십시오.",
      "n0848": "찾을 수 없는 SQL",
      "n0849": "찾을 수 없음 체",
      "n0850": "config.inc.php를 찾을 수 없습니다. — 다음을 참고하세요: $config[\\'plugins\\'][] = \\'ysk_sso\\';",
      "n0851": "edge.conf를 찾을 수 없습니다 — 먼저",
      "n0852": "찾을 수 없음: 키",
      "n0853": "찾을 수 없음: 작업 마이그레이션",
      "n0854": "pm2를 찾을 수 없음 - PM2 중지로는 찾을 수 없음",
      "n0855": "찾을 수 없음",
      "n0856": "클러스터를 찾을 수 없습니다.",
      "n0857": "찾을 수 없음로컬 네임서버(rndc/named/bind9/pdns)를 다시 로드할 수 있습니다.",
      "n0858": "찾을 수 없음Availablecertificate — 먼저 SSL 페이지 또는 LE를 확인하세요.",
      "n0859": "찾을 수 없음사용 가능한 NetworkManager 연결",
      "n0860": "찾을 수 없음",
      "n0861": "찾을 수 없음",
      "n0862": "프로젝트를 찾을 수 없음 액세스 로그 - nginx access_log 경로 또는 로그를 입력하세요.",
      "n0863": "찾을 수 없음",
      "n0864": "찾을 수 없음",
      "n0865": "찾을 수 없음버전",
      "n0866": "찾을 수 없음노드",
      "n0867": "찾을 수 없음데이터베이스",
      "n0868": "부인하다",
      "n0869": "루프백 거부",
      "n0870": "레니스를 부인하다",
      "n0871": "거부 systemctl 활성화: 에이전트 CLI가 설치되지 않음(자리 표시자 실행 중)",
      "n0872": "루프백 거부()",
      "n0873": "루프백 삭제 거부",
      "n0874": "거부 homeDir - Home + verifyPhrase 또는 targetdirectory를 덮어쓰세요.",
      "n0875": "PID 1 거부(init/systemd)",
      "n0876": "거부하다 ysk; ControlPlane을 강제할 수 있음",
      "n0877": "거부(ysk-server); 필요합니다. 강제로 셀프하세요.",
      "n0878": "거부읽기 경로",
      "n0879": "거부 여부",
      "n0880": "지속 기본값에는 게이트웨이가 필요합니다.",
      "n0881": "고집",
      "n0882": "~을 위한",
      "n0883": "차단된 명령: 호스트 변경에는 시스템 변경 권한(YSK_EXECUTE)이 필요합니다.",
      "n0884": "주사",
      "n0885": "스캔 경로",
      "n0886": "프로브 INFO 복제",
      "n0887": "프로브 쇼 마스터/레플리카 상태",
      "n0888": "pg_is_in_recovery / pg_stat_replication 프로브",
      "n0889": "wsrep 프로브('wsrep%'와 같은 상태 표시)",
      "n0890": "제어 영역이 구성을 작성했지만 호스트에 적용되지 않았습니다. 각 기능 페이지에서 적용을 사용하세요.",
      "n0891": "제어 영역이 일반 모드로 유지됨",
      "n0892": "제어 플레인 긴급 성능 저하(로컬 운영)",
      "n0893": "제어 영역 데이터 디렉터리",
      "n0894": "제어 영역이 DDOS 보호 힌트로 들어갑니다.",
      "n0895": "완료(부분/실패)",
      "n0896": "클라이언트가 IP만 사용할 때 더 빠른 인증",
      "n0897": ": Cloudflare 영역 + CF_API_TOKEN firstcan Under Attack API",
      "n0898": "할 수 없다",
      "n0899": "Nginx와 fail2ban",
      "n0900": "성능 및 리소스",
      "n0901": "IP/도메인. Spamhaus 등을 확인해 보시기 바랍니다.",
      "n0902": "A/AAAA(정점 및 www)",
      "n0903": "DMARC TXT",
      "n0904": "MX/SPF/DKIM DNS",
      "n0905": "_dmarc TXT 및 및.",
      "n0906": "방법 + 임계값",
      "n0907": "DNS MX, SPF(TXT) 및 DKIM(TXT). Cloudflare: 메일을 끄세요. DNS()를 사용하세요.",
      "n0908": "DNS 페이지에서 PowerDNS 도구 설치",
      "n0909": "SSL 페이지에서 certbot 설치",
      "n0910": "Defense Center 또는 소프트웨어 배너에서 fall2ban 설치",
      "n0911": "방어 센터에서 UFW 설치 및 활성화",
      "n0912": "Redis 페이지에서 Redis 설치",
      "n0913": "이 검사에 필요한 패키지를 설치하십시오.",
      "n0914": "일일",
      "n0915": "로그",
      "n0916": "logwriteproject 로그 디렉터리",
      "n0917": "통나무",
      "n0918": "통나무",
      "n0919": "로그 경로 허용",
      "n0920": "로그 등",
      "n0921": "잘못된 로그 경로",
      "n0922": "",
      "n0923": "그리고",
      "n0924": "테이블 오픈 캐시",
      "n0925": "PHP 버전",
      "n0926": "더 많은 fail2ban 감옥, 더 빠른 금지",
      "n0927": "Redis를 부탁드립니다",
      "n0928": "fail2ban 감옥 업데이트(관리 파일)",
      "n0929": "업데이트미완료",
      "n0930": "가장 엄격한 Nginx 제한(~1req/s)",
      "n0931": "12 디렉토리",
      "n0932": "8 네임서버",
      "n0933": "파일",
      "n0934": "",
      "n0935": "WAL",
      "n0936": "",
      "n0937": "",
      "n0938": "최대 연결 오류",
      "n0939": "",
      "n0940": "HTTP 서버(/health)+ 공용 디렉터리",
      "n0941": "",
      "n0942": "",
      "n0943": "레이즈 가능",
      "n0944": "스캔/무차별 공격이 나타날 때",
      "n0945": "",
      "n0946": "데이터베이스/Redis 덤프 실패, (전송 예정)",
      "n0947": "서비스가 유효하지 않음",
      "n0948": "WordPress(/) 아님— WORDPRESS_INSTALL.txt",
      "n0949": "시스템 장치 시작이 아님(루트 + 필요) — pidfile",
      "n0950": "pam_google_authenticator가 아님 - libpam-google-authenticator를 적절하게 설치",
      "n0951": "2FA 아님",
      "n0952": "제어 영역 요약만 내보냄(Nginx는 동기화되지 않음)",
      "n0953": "시스템 nginx(YSK_EXECUTE + 루트)에는 적용되지 않음 — 상태: 기록됨",
      "n0954": "시스템에 적용되지 않음: YSK_EXECUTE + 루트",
      "n0955": "redis-cli가 설치되지 않았습니다",
      "n0956": "쓰기 파일이 아님",
      "n0957": "시스템에서는 변경 사항을 확인할 수 없습니다 — 괜찮습니다",
      "n0958": "postgresql conf.d가 아님 — conf dataDir; willAppliedsystem",
      "n0959": "secrets/ssh/.master.key YSK_SECRETS_KEY — targetcan은 Vault/2FA를 할 수 없습니다.",
      "n0960": "~ 아니다",
      "n0961": "프로브되지 않음",
      "n0962": "certbot/LE cron이 아님(사용 가능한 시스템 certbot.timer)",
      "n0963": "nginx conf가 아님",
      "n0964": "알 수 없는 비밀번호",
      "n0965": "알 수 없는 소스(저널:... / 파일:... / 프로젝트:...)",
      "n0966": "알 수 없음",
      "n0967": "알 수 없는 소프트웨어",
      "n0968": "알 수 없는 소프트웨어 ID",
      "n0969": "알 수 없는 소프트웨어",
      "n0970": "알 수 없음",
      "n0971": "아니, 부정하다(덤프)",
      "n0972": "프로젝트 홈이 아닌 경우 — ftps/ssh를 작성하세요. SSHD 일치",
      "n0973": "업데이트를 적용하지 마세요: YSK_SOURCE_ROOT git 디렉터리를 사용하거나 npm 패키지 YSK_NPM_PACKAGE를 게시하세요.",
      "n0974": "아니다 — 그럴 것이다\"\"",
      "n0975": "아니다 — 그럴 것이다",
      "n0976": "City Lite 아님 — /ASN; 업데이트캔 DB-IP(CC BY)",
      "n0977": "City Lite가 아님 — /; (DB-IP)를 업데이트해주세요",
      "n0978": "/etc/nginx가 아님(루트가 아니거나 EXECUTE가 아님) - 관리되는 conf dataDir",
      "n0979": "CF_API_TOKEN 설정이 아님 - Cloudflare API를 사용할 수 없음",
      "n0980": "Cloudflare API 토큰을 설정하지 않음 - 테스트 실행",
      "n0981": "설정 아님(비활성화)",
      "n0982": "완료",
      "n0983": "시스템에 설치하지 마십시오(installSystem=false).",
      "n0984": "YSK_EXECUTE가 활성화되지 않았습니다.",
      "n0985": "시스템 변경이 사용 중지됨(제어 영역은 설정만 쓸 수 있음)",
      "n0986": "시스템 변경을 활성화하지 않음: dnssec-keygen을 생성할 수 없습니다.",
      "n0987": "비밀번호 아님 — 이메일 확인 ()",
      "n0988": "확인/다시 로드 안 됨: serverHost 실행이 활성화되지 않았습니다(쓰기 관리 파일).",
      "n0989": "conf, 먼저 계획을 세워주세요",
      "n0990": "지원",
      "n0991": "존",
      "n0992": "인증서(또는 아님)",
      "n0993": "유효하지 않은",
      "n0994": "금지율 한도에 도달했습니다. 방어 센터를 확인하세요.",
      "n0995": "로컬 IP는 -j를 지원할 수 있습니다. iproute2를 올려주세요(참고)",
      "n0996": "local nginx -t OK (관리형 conf, ≠ edge 적용)",
      "n0997": "로컬 wsrep은 노드가 아닌 크기일 수 있습니다.",
      "n0998": "로컬 ysk.json을 읽을 수 없음/지문",
      "n0999": "로컬 노드는 괜찮습니다. 완전한 정상 상태에는 피어 프로브가 필요합니다(완료되지 않음).",
      "n1000": "local nginx — conf 작성했지만 다시 로드하지 않음",
      "n1001": "localAvailable NM 연결; 성공할 것입니다. \"\" 또는 NetworkManager를 사용할 수 있습니다.",
      "n1002": "localAvailable ps - 할 수 없음 ()",
      "n1003": "로컬 NM 연결; 성공할 것입니다. \"\" 또는 NetworkManager를 사용할 수 있습니다.",
      "n1004": "금지할 수 있다",
      "n1005": "유효하지 않은",
      "n1006": "서비스상태",
      "n1007": "루트 파일 시스템 사용량이 90% 이상입니다.",
      "n1008": "디렉터리가 잘못되었습니다.",
      "n1009": "루트 디스크 공간",
      "n1010": "개요",
      "n1011": "TcpListener(상자); Cargo.toml",
      "n1012": "넷/http; go.mod; / 그리고 /건강",
      "n1013": "모드: 생산 준비",
      "modeProductionCapable": "생산 준비 완료",
      "modeDegraded": "타락한",
      "n1014": ": 아니다",
      "n1015": "테스트 실행 완료 — 복사되거나 다시 로드되지 않음(실제 동기화를 위해 테스트 실행을 끕니다)",
      "n1016": "테스트 실행 완료 — 실제 동기화에는 루트 및 YSK_EXECUTE가 필요합니다.",
      "n1017": "with.conf",
      "n1018": "with.sieve",
      "n1019": "파일",
      "n1020": "파일 및 POST",
      "n1021": "파일이 존재하지 않거나 파일이 존재하지 않습니다.",
      "n1022": "파일이 존재하지 않거나 삭제되었습니다.",
      "n1023": "체크프로세스; 주인",
      "n1024": "체크파일",
      "n1025": "확인하다 ()",
      "n1026": "확인하다",
      "n1027": "for, 쓸 수 없음",
      "n1028": "3~4명에 대한 허가",
      "n1029": "허가와",
      "n1030": "OK",
      "n1031": "일상적인 운영",
      "n1032": "SECRET_KEY/DEBUG 및 configdatabase를 입력하세요.",
      "n1033": "플래너는 mariadb + mariadb-galera를 지원합니다.",
      "n1034": "플래너는 mysql + mysql-replica를 지원합니다.",
      "n1035": "이 호스트 시스템 서비스 관리",
      "n1036": "이 프로젝트 노드 런타임, 노드를 사용해 주세요",
      "n1037": "이 프로젝트 노드 런타임, 노드(또는 정적 런타임)를 사용하세요.",
      "n1038": "이 업데이트(/). 신청해주세요.",
      "n1039": "이는 (DNS /IP )에 대한 것입니다. PTR/ 25를 할 수 없습니다",
      "n1040": "이것은 시스템에 적용됩니다",
      "n1041": "이 소프트웨어 적절한 패키지",
      "n1042": "설정;,, 제한",
      "n1043": "Linux 사용자/활성 프로젝트",
      "n1044": "시간별 자동 차단 한도",
      "n1045": "(IP정보 라이트)",
      "n1046": "영구 금지",
      "n1047": "엣지 노드 — 먼저 CDN 페이지 엣지를 사용해 주세요.",
      "n1048": "인상 적용 가능(후보 또는 버전)",
      "n1049": "프로젝트캔 레스틱",
      "n1050": "projectcan 백업 (0 ) - 실패의 경우",
      "n1051": "할 수 있다",
      "n1052": "로그/백업; 호스트 설정",
      "n1053": "방화벽 규칙 - 거부",
      "n1054": "요구하고",
      "n1055": "시스템사용자 생성...",
      "n1056": "browserenabledone WP 설치",
      "n1057": ".zone은",
      "n1058": "HostExecutor — 파일을 chown하십시오",
      "n1059": "HostExecutor — chown(chown)",
      "n1060": "IP 쓰기 DNS",
      "n1061": "NM 연결 가능;",
      "n1062": "NM 연결 가능;",
      "n1063": "Redis 덤프",
      "n1064": "SQL 데이터베이스 덤프",
      "n1065": "SSH 대상",
      "n1066": "SSH/차량 대상",
      "n1067": "액세스 로그 캐시 상태, 캐시 디렉터리 — 적중률 알 수 없음(log_format 또는 먼저 Edge를 적용하세요)",
      "n1068": "access=함대 함대AgentId",
      "n1069": "access=ssh — 생성하십시오:ssh 또는 구성원",
      "n1070": "제어 평면에 작성됩니다. 호스트에 적용되지 않음",
      "n1071": "적절한",
      "n1072": "인증 문제",
      "n1073": "바인딩_IP",
      "n1074": "dataDir — 업데이트데이터베이스",
      "n1075": "domain vacation.sieve — 사서함별로 건너뛰었습니다.",
      "n1076": "에지 적용 가능(건너뛰기/드레이닝) - conf 작성",
      "n1077": "galera_new_cluster; mariadb를 다시 시작하세요",
      "n1078": "home_dir",
      "n1079": "설치 — 저장된 상태",
      "n1080": "리눅스사용자",
      "n1081": "마스터 키 / YSK_SECRETS_KEY",
      "n1082": "네임서버(구성할 수 없음)",
      "n1083": "rdbRelPath",
      "n1084": "등록 문제",
      "n1085": "SSH 피어",
      "n1086": "SSH 피어는 할 수 있습니다",
      "n1087": "sshpass(키/에이전트)",
      "n1088": "휴가.체 캔",
      "n1089": "vhost requireupdate (또는 conf 서버)",
      "n1090": "wsrep 상태(Galera 또는 servicenot 불가)",
      "n1091": "활성 감옥 또는 fail2ban이 실행되지 않음",
      "n1092": "통나무",
      "n1093": "캔 시스템 (작성)",
      "n1094": "타겟팅 가능(healthUrl / baseUrl / publicIpv4)",
      "n1095": "사용 가능한 접속 로그( 또는 )",
      "n1096": "접근 가능 로그(사용 가능/차단)",
      "n1097": "사용 가능한 접속/인증 로그",
      "n1098": "사용 가능한 엣지 IP - DNS(관리형 유지)",
      "n1099": "엄격한 사용자 사용 가능(또는 아님)",
      "n1100": "잘못된 구성",
      "n1101": "잘못된 내보내기 ID",
      "n1102": "잘못된 수출",
      "n1103": "잘못된 linux_user",
      "n1104": "잘못된 공개 키",
      "n1105": "잘못된 스냅샷 ID",
      "n1106": "잘못된 토큰",
      "n1107": "잘못된 단위",
      "n1108": "유효하지 않은 단위",
      "n1109": "잘못된 진공 크기(: 500M)",
      "n1110": "잘못된 진공 시간(: 7d)",
      "n1111": "잘못된 백업",
      "n1112": "잘못된 백업",
      "n1113": "무효 포트",
      "n1114": "잘못된 키",
      "n1115": "잘못된 프로젝트 ID",
      "n1116": "잘못된 백업",
      "n1117": "잘못된 패턴",
      "n1118": "잘못된 규칙",
      "n1119": "잘못된 데이터베이스",
      "n1120": "도메인 — (systemapplywill postmap )에 대한 맵",
      "n1121": "IP",
      "n1122": "사용 가능한 자동 금지 강화",
      "n1123": "시스템을 금지할 수 없습니다: YSK_EXECUTE; 패널 금지",
      "n1124": "Redis를 덤프할 수 없습니다: redis-cli",
      "n1125": "덤프할 수 없습니다: serverHost 실행이 활성화되어 있지 않습니다.",
      "n1126": "팬아웃할 수 없음: 호스트 실행이 활성화되지 않았습니다.",
      "n1127": "가져올 수 없습니다. serverHost 실행이 활성화되어 있지 않습니다.",
      "n1128": "나열할 수 없음: 호스트 실행이 활성화되지 않았습니다.",
      "n1129": "DNS 클러스터를 검색할 수 없습니다. 호스트 실행이 활성화되어 있지 않습니다.",
      "n1130": "프로브할 수 없음: 호스트 실행이 활성화되지 않았습니다(SSH EXECUTE).",
      "n1131": "캐시를 제거할 수 없습니다. 호스트 실행이 활성화되지 않았습니다(YSK_EXECUTE).",
      "n1132": "제거할 수 없음: 호스트 실행이 활성화되지 않았습니다.",
      "n1133": "원격으로 다시 로드할 수 없습니다. 호스트 실행이 활성화되어 있지 않습니다.",
      "n1134": "정지할 수 없음: 호스트 실행이 활성화되지 않았습니다.",
      "n1135": "복원할 수 없습니다. 호스트 실행이 활성화되지 않았습니다.",
      "n1136": "scp할 수 없습니다: YSK_EXECUTE=1",
      "n1137": "집에 통계를 낼 수 없다",
      "n1138": "심볼릭 링크할 수 없습니다: 호스트 실행이 활성화되어 있지 않습니다.",
      "n1139": "금지 해제할 수 없음: 호스트 실행이 활성화되어 있지 않습니다.",
      "n1140": "차단을 해제할 수 없습니다: YSK_EXECUTE",
      "n1141": "관리자가 할 수 없습니다: 호스트 실행이 활성화되어 있지 않습니다.",
      "n1142": "WordPress를 사용할 수 없습니다: serverHost 실행이 활성화되어 있지 않습니다.",
      "n1143": "PM2, localprocessmanage를 사용할 수 없습니다.",
      "n1144": "할 수 없음: YSK_EXECUTE를 활성화할 수 없습니다.",
      "n1145": "PM2를 중지할 수 없습니다: serverHost 실행이 활성화되어 있지 않습니다.",
      "n1146": "SSL을 사용할 수 없습니다. 호스트 실행이 활성화되어 있지 않습니다.",
      "n1147": "동기화가 차단되었습니다. YSK_EXECUTE가 필요합니다.",
      "n1148": "시스템 Nginx에 연결할 수 없습니다. 호스트 실행 권한이 필요합니다.",
      "n1149": "PM2를 시작할 수 없습니다: serverHost 실행이 활성화되어 있지 않습니다.",
      "n1150": "Apache를 사용할 수 없습니다. 호스트 실행 권한이 필요합니다.",
      "n1151": "NTP할 수 없음: 호스트 실행 권한이 필요하며 루트",
      "n1152": "PHP-FPM을 사용할 수 없습니다: 시스템 관리자 권한이 필요합니다.",
      "n1153": "서비스를 시스템화할 수 없습니다(허가해 주세요)",
      "n1154": "시스템 서비스를 사용할 수 없습니다: 시스템 관리자 권한이 필요합니다.",
      "n1155": "서비스할 수 없음: 시스템 관리자 권한이 필요합니다.",
      "n1156": "rsync를 대상으로 설치할 수 없습니다. rsync를 대상으로 합니다.",
      "n1157": "systemcreateaccount를 사용할 수 없습니다: YSK_EXECUTE + 루트가 필요합니다. (작성/차단)",
      "n1158": "certbot을 사용할 수 없습니다: 호스트 실행이 활성화되어 있지 않습니다.",
      "n1159": "canOperation: 호스트 실행 권한이 필요함(YSK_EXECUTE) 및 루트",
      "n1160": "시스템에 적용할 수 없습니다: YSK_EXECUTE + 루트가 필요합니다.",
      "n1161": "canapplysystemsettings: 호스트 실행 권한이 필요합니다.",
      "n1162": "적용할 수 없음: 실패",
      "n1163": "PowerDNS를 설치할 수 없습니다: 시스템 관리자 권한이 필요합니다.",
      "n1164": "/etc/ssh에 설치할 수 없습니다: YSK_EXECUTE + 루트가 필요합니다.",
      "n1165": "시스템에 설치할 수 없습니다: serverHost 실행이 활성화되지 않았습니다(관리 파일 쓰기).",
      "n1166": "할 수 없음: serverHost 실행이 활성화되지 않았거나 메일 서비스가 설치되지 않았습니다.",
      "n1167": "가상 사용자 데이터베이스(db_load)를 생성할 수 없습니다.",
      "n1168": "데이터베이스를 생성할 수 없습니다. 실패할 수 있습니다.",
      "n1169": "시스템 메일을 생성할 수 없습니다. 사용자: 시스템 관리자 권한이 필요합니다.",
      "n1170": "npm 또는 GitHub 버전에서는 사용할 수 없습니다( )",
      "n1171": "systemctl을 조사할 수 없습니다.",
      "n1172": "DNS 클러스터를 사용할 수 없습니다. 호스트 실행이 활성화되어 있지 않습니다.",
      "n1173": "할 수 없음: 호스트 실행이 활성화되지 않았습니다(backupSuccess).",
      "n1174": "측정항목을 사용할 수 없음",
      "n1175": "할 수 없음: serverHost 실행이 활성화되어 있지 않습니다.",
      "n1176": "ACME 불가능: 호스트 실행이 활성화되지 않았습니다.",
      "n1177": "비밀번호 해시를 암호화할 수 없습니다(openssl 비밀번호 필요)",
      "n1178": "할 수 없음: serverHost 실행이 활성화되어 있지 않습니다.",
      "n1179": "작업을 수행할 수 없습니다(ps 상태 실패).",
      "n1180": "dnssec 디렉터리에 영역을 지정할 수 없습니다.",
      "n1181": "ysk.json 지문을 사용할 수 없습니다.",
      "n1182": "/etc/resolv.conf를 사용할 수 없습니다.",
      "n1183": "cmdline을 읽을 수 없습니다(can 또는 허가).",
      "n1184": "번호 매기기 규칙을 읽을 수 없습니다.",
      "n1185": "상태를 읽을 수 없습니다",
      "n1186": "읽을 수 없음: serverHost 실행이 활성화되어 있지 않습니다.",
      "n1187": "2FA 확인을 통해 사용자를 읽을 수 없습니다.",
      "n1188": "대상을 읽을 수 없습니다",
      "n1189": "UFW를 변경할 수 없습니다: YSK_EXECUTE=1",
      "n1190": "canchangehost/: 호스트 실행 권한이 필요하며 루트",
      "n1191": "canchange: 호스트 실행 권한 필요(YSK_EXECUTE) 및 루트",
      "n1192": "PowerDNS 영역을 사용할 수 없습니다. serverHost 실행이 활성화되지 않았습니다.",
      "n1193": "IPv4/IPv6을 사용할 수 없습니다.",
      "n1194": "연결할 수 없음 127.0.0.1:6379",
      "n1195": "연결할 수 없음대상",
      "n1196": "",
      "n1197": "이 프로브에는 하드 차단제가 없습니다.",
      "n1198": "키디렉토리",
      "n1199": "사용자",
      "n1200": "— 시스템 체",
      "n1201": "디렉토리 생성",
      "n1202": "회로 차단기",
      "n1203": "dataDir/security/fail2ban을 작성했습니다(/etc에는 작성하지 않음).",
      "n1204": "; 새로고침해 주세요",
      "n1205": "상태 초안 - FTP 서비스 페이지에 \"적용\"하면 vsftpd가 작성됩니다.",
      "n1206": "상태 및 버전",
      "n1207": "상태:",
      "n1208": "상태: 적용됨(앤빌 + 발신자별 정책 + 지도)",
      "n1209": "상태: 적용됨(symlink + 구성 플러그인[] 활성화됨)",
      "n1210": "상태: 적용됨(디렉터리)",
      "n1211": "상태: 적용됨( homeDir)",
      "n1212": "상태: 적용됨(systemSuccess)",
      "n1213": "상태: 적용됨(키+ 영역, 등록자가 아님)",
      "n1214": "상태: 차단됨 - 관리되는 파일쓰기; 접미사/비둘기장 아님",
      "n1215": "상태: 차단됨(자리 표시자 작성됨)",
      "n1216": "상태: 차단됨(정책 데몬, systemapply EXECUTE+root)",
      "n1217": "상태: 실행됨 ≠, certbot이 다시 로드됨",
      "n1218": "상태: 실패(nginx -t 또는 다시 로드 실패)",
      "n1219": "상태: 부분 — 적용됩니다(성공)",
      "n1220": "상태: 부분 — 시스템 실패",
      "n1221": "상태: 부분(symlink 성공, 구성 추가 플러그인) - 적용 완료 예정",
      "n1222": "상태: 미리보기 전용",
      "n1223": "상태: 작성됨/부분적(시스템/다시 로드/확인 실패)",
      "n1224": "상태: 작성/부분(주요 단계 실패 - 적용됨)",
      "n1225": "상태: 작성됨(적용=false; 시스템에 적용되지 않음)",
      "n1226": "상태 : 작성됨 (차단시스템 적용)",
      "n1227": "상태: 작성됨(conf 작성됨, 다시 로드 차단됨)",
      "n1228": "상태: 작성됨() - 가장자리 적용되지 않음; PR-C3 팬아웃 + nginx -t/reload",
      "n1229": "상태: 작성됨(시스템 Postfix/Rspamd에는 적용되지 않음)",
      "n1230": "상태: 기록됨(시스템 Nginx가 아님, ApplySystem이 다시 로드를 시도함)",
      "n1231": "상태: 작성됨(관리; 라이브 fail2ban-client YSK_EXECUTE 또는 \"→시스템에 적용\" Jail.local)",
      "n1232": "상태: 기록됨(키/DS, 영역이 아니거나 영역이 아님)",
      "n1233": "상태: 작성됨(SSO 아님)",
      "n1234": "상태: 기록됨( /not 아님) - 성공",
      "n1235": "상태 : 작성됨(/관리파일)",
      "n1236": "상태: 작성 및 성공 네임서버 다시 로드",
      "n1237": "상태: Writemanage 영역(DNS용 아님, 이름 서버 다시 로드 안 됨)",
      "n1238": "상태 : 관리파일 작성 (시스템에는 적용되지 않음)",
      "n1239": "상태: 데이터( 아님)",
      "n1240": "TOTP (및 패널 운영자 2FA)",
      "n1241": "패널 오퍼레이터 2FA",
      "n1242": "수명주기",
      "n1243": "끄고 다시 로드할 수 있음",
      "n1244": "비활성화해 주세요",
      "n1245": "생산 게이트: 완전히 충족되지 않음 - 아래 항목을 검토하세요.",
      "n1246": "프로덕션 게이트: 통과(권한, Nginx, 노드 준비)",
      "n1247": "프로덕션 격리: 프로젝트 리소스 탭을 열어 Linux 사용자 및 홈을 만듭니다.",
      "n1248": "사용자 2–32 [a-z0-9._-]",
      "n1249": "SSL에 도메인이 필요하고",
      "n1250": "제한; 길:",
      "n1251": "체계; 경로를 지정할 수 있습니다.",
      "n1252": "",
      "n1253": "DNS 이름 확인 건너뛰기",
      "n1254": "chown을 건너뛰었습니다(root가 아님).",
      "n1255": "건너뛴 chown( YSK_EXECUTE + 루트) - 사용자용 filecan",
      "n1256": "배수 노드",
      "n1257": "다시 로드를 건너뛰었습니다: 영역 확인 실패",
      "n1258": "원격 다시 로드(다시 로드=false) - 기록 ≠ 적용",
      "n1259": "usermod(os_provisioned 아님)",
      "n1260": "건너뛴 영역 적용(applyZone=false) - 레코드 업데이트",
      "n1261": "잘못된 사용자 이름을 건너뛰었습니다.",
      "n1262": "DDoS — 성능 저하활성",
      "n1263": "IP: 거부",
      "n1264": ": 건너뛰었습니다",
      "n1265": "IP/도메인 및",
      "n1266": "바인딩할 주소(0.0.0.0 = 모두)",
      "n1267": "",
      "n1268": "로컬 프로세스를 사용하여",
      "n1269": "PHP로",
      "n1270": "FirewallStatus에 대한 권한( 아님)",
      "n1271": "루트로 실행되지 않습니다. 일부 시스템 설정을 적용할 수 없습니다",
      "n1272": "대상 ysk.json 실패",
      "n1273": "대상 ysk-server CLI — 부트스트랩 또는 npm i -g ysk-server를 사용하세요.",
      "n1274": "대상 YSK 데이터, forceWipeTarget",
      "n1275": "대상 rsync",
      "n1276": "루트용",
      "n1277": "대상사용자",
      "n1278": "대상 rsync(부트스트랩 설치)",
      "n1279": "targetrequires sshpass(설치되지 않음)",
      "n1280": "목표 실패",
      "n1281": "목표가 통과되지 않았습니다",
      "n1282": "목표 통과",
      "n1283": "with.zip",
      "n1284": "실제로 실행 + YSK_EXECUTE=1",
      "n1285": "<?",
      "n1286": "건너뛰었습니다: os_provisioned가 아닙니다.",
      "n1287": "게스트 사용자",
      "n1288": "80/443은 ~(LE HTTP-01)까지 가능합니다.",
      "n1289": "PHP 런타임 및 FPM 지원",
      "n1290": "포트 25",
      "n1291": "디스크, 백업, AOF/WAL",
      "n1292": "디스크 공간 부족",
      "n1293": "",
      "n1294": "/local, 지역 적용",
      "n1295": "",
      "n1296": "; 0 = (CLI)",
      "n1297": "; 제발",
      "n1298": "패키지",
      "n1299": "바이너리 로그를 보관하는 기간",
      "n1300": "유효하지 않은",
      "n1301": "엣지 노드",
      "n1302": "호스트 버전",
      "n1303": "노드 호스트가 잘못되었습니다.",
      "n1304": "노드가 유효하지 않음",
      "n1305": "노드 드레이닝 —, 상태 드레이닝",
      "n1306": "시스템 적용 YSK_EXECUTE + 루트",
      "n1307": "systemuser (프로비저닝 또는 아님)",
      "n1308": "시스템 관리자(루트)",
      "n1309": "루트 아님 — useradd / systemd / nginx 시스템 경로가 제한됩니다.",
      "n1310": "시스템 변경 권한",
      "n1311": "시스템 부하",
      "n1312": "시스템 소프트웨어",
      "n1313": "",
      "n1314": "",
      "n1315": "",
      "n1316": "(포트 확인 불가)",
      "n1317": "연결할 수 없음",
      "n1318": "편물",
      "n1319": "재동기화",
      "n1320": "SSH",
      "n1321": "ysk.json",
      "n1322": "conf가 없습니다. 먼저 계획을 세워주세요.",
      "n1323": "dataDir이 누락되어 런타임을 설치할 수 없습니다.",
      "n1324": "linuxUser/homeDir 누락",
      "n1325": "임시 금지",
      "n1326": "키 실패",
      "n1327": "키설치 실패",
      "n1328": "VACUUM",
      "n1329": "금지 → 끄기 ()",
      "n1330": "금지: 시스템 변경을 활성화하지 않음(YSK_EXECUTE)",
      "n1331": "반",
      "n1332": "자동 스위치 또는 수동",
      "n1333": "비활성화",
      "n1334": "IP: 거부",
      "n1335": "",
      "n1336": ": 기록된 상태 - Dovecot/Pigeonhole(ManageSieve 또는 심볼릭 링크)이 아님",
      "n1337": "자동 에스컬레이션됨",
      "n1338": "경로 허용",
      "n1339": "목표",
      "n1340": "엣지 노드",
      "n1341": "도메인 필요",
      "n1342": "요구노드",
      "n1343": "(제어/원본/가장자리/DNS) 필요",
      "n1344": "및 패널 운영자 2FA",
      "n1345": "원격 Authorized_keys, 업데이트 또는 자체 인증",
      "n1346": "잘못된 도메인",
      "n1347": "Tmp 테이블 크기",
      "n1348": "필터/감옥 systemctl 다시 로드 실패2반",
      "n1349": "Jail.local 실패",
      "n1350": "감사 로그 보기",
      "n1351": "성공(비밀)",
      "n1352": "한도_요구량",
      "n1353": "유효하지 않은",
      "n1354": "신호 합계 0~100 → 위협 수준",
      "n1355": "메모리, 버퍼, 동시성",
      "n1356": "",
      "n1357": "높은 메모리 사용",
      "n1358": "메모리 압박",
      "n1359": "",
      "n1360": "메모리 및 V8",
      "n1361": "최대 힙 테이블 크기",
      "n1362": "할 수 있다",
      "n1363": "",
      "n1364": "로그 오류",
      "n1365": "",
      "n1366": "설정 DNS(PTR)",
      "n1367": "설정관리; 시스템 구성/재시작 권한",
      "n1368": "설정쓰기적용 실패",
      "n1369": "settingsWroteconnectionRestart가 실패했습니다. nmcli 연결을 시작해 주세요",
      "n1370": "settingsWroteconnection실패했습니다. nmcli 연결을 시작하세요.",
      "n1371": "설정 제품 ysk-server",
      "n1372": "settingsError(에 대한)",
      "n1373": "settingsMissing dataDir",
      "n1374": "TCP 25를 차단하세요. 또는 SMTP를 사용하세요.",
      "n1375": "점수",
      "n1376": ": 생성 등 CDN",
      "n1377": ": 리졸버는 A —; 에지 IP 또는 애니캐스트",
      "n1378": "CIDR, 192.168.1.10/24를 이용해 주세요.",
      "n1379": "POST /api/v1/ssl/upload 또는 POST /api/v1/ssl/letsencrypt를 이용해 주세요.",
      "n1380": "첫 번째 CDN 노드(PR-C1)를 사용하세요.",
      "n1381": "먼저 유지 관리를 수행하십시오.수락",
      "n1382": "백업 작업을 열고 sideResults를 확인하세요.",
      "n1383": "자세한 내용을 보려면 백업 페이지를 여세요.",
      "n1384": "공개 알림 → 적용 상태 감사",
      "n1385": "방어 센터를 열어 신호를 검토하고 보호 사전 설정을 전환하세요.",
      "n1386": "피어 설치 conf를 설치하고 다시 시작/참여하세요.",
      "n1387": "서버 이름을 입력하세요.",
      "n1388": "serverName 및 업스트림을 확인하세요.",
      "n1389": "서버 이름과 디렉터리를 입력하세요.",
      "n1390": "serverName, 디렉터리 및 FPM 소켓을 입력하세요.",
      "n1391": "구역을 입력해주세요",
      "n1392": "구역을 지정해 주세요",
      "n1393": "호스트해주세요",
      "n1394": "클러스터링하십시오(≤64).",
      "n1395": "제발",
      "n1396": "사용자 여러분, 그리고",
      "n1397": "노드를 만들어주세요(사용할 수 없는 IP)",
      "n1398": "DNS A/AAAA IP를 입력하세요. 방화벽 및 메일 PTR을 확인하세요.",
      "n1399": "호스트 이름이나 DNS 호스트에 XML을 보내주세요",
      "n1400": "IP를 지정하십시오",
      "n1401": "조치를 취하거나 MTU를 수행하십시오.",
      "n1402": "dataDir을 지정하십시오",
      "n1403": "ListenHost를 지정하십시오.",
      "n1404": "압축 경로를 알려주세요",
      "n1405": "백업해주세요",
      "n1406": "상태(/)를 주세요",
      "n1407": "제발",
      "n1408": "제발",
      "n1409": "설정 경로를 알려주세요",
      "n1410": "경로 및 권한 지정",
      "n1411": "경로 및 버전 지정",
      "n1412": "경로를 지정하고",
      "n1413": "DKIM 부탁드려요",
      "n1414": "Git URL(또는 첫 번째 프로젝트 설정)을 입력하세요.",
      "n1415": "IP 주세요",
      "n1416": "포장해주세요",
      "n1417": "패키지와 버전 부탁드립니다",
      "n1418": "비밀번호를 알려주세요 ( 8 )",
      "n1419": "제발",
      "n1420": "제발",
      "n1421": "제발 - 활성화",
      "n1422": "\"시스템에 적용\"하거나 PHP 프로젝트(풀 php_admin_*)를 사용하세요.",
      "n1423": "/etc/default/ufw IPV6=예로 설정해 주세요.",
      "n1424": "dataDir이 존재하고 프로세스가 여기에 쓸 수 있는지 확인하세요.",
      "n1425": "네임서버를 사용하거나 \"DHCP DNS를 복원\"하세요.",
      "n1426": "publicIpv4 / publicIpv6 / healthUrl / baseUrl을 사용해 주세요.",
      "n1427": "제발",
      "n1428": "파일을 제출해주세요",
      "n1429": "IP 또는 HTTP 인증을 제한해 주세요",
      "n1430": "경고: 매니페스트 packagedAt — DB를 먼저 패키지하세요.",
      "n1431": "경고: 활성 찾을 수 없는 CLI 바이너리용 장치(자리 표시자 장치 가능)",
      "n1432": "경고: YSK 데이터를 대상으로 합니다.",
      "n1433": "경고: 이 인터페이스는 다운 캔 패널용입니다.",
      "n1434": "경고: secrets/ssh/.master.key YSK_SECRETS_KEY(vault/2FA는 불가능)",
      "n1435": "경고: config.json (설정 가능)",
      "n1436": "읽기 금지 실패",
      "n1437": "금지된 권한을 읽을 수 있습니다. 금지 해제/금지 YSK_EXECUTE",
      "n1438": "읽기 금지 실패(권한 또는 서비스)",
      "n1439": "fail2ban 금지 읽기 실패",
      "n1440": "읽지 못했습니다.",
      "n1441": "읽기 로그 실패",
      "n1442": "읽기 파일",
      "n1443": "판독 시스템",
      "n1444": "기본값 변경 verifyDefault: true",
      "n1445": "변경은 관리 파일을 작성합니다; \"시스템에 적용\"은 /etc/php/.../conf.d를 수행하고 FPM을 다시 로드합니다.",
      "n1446": "고부하",
      "n1447": "데이터캔; 설치/재시작serviceHost 실행 권한 필요",
      "n1448": "데이터베이스 캔 (>7 ) — 업데이트",
      "n1449": "데이터베이스가 생성되지 않습니다. mysql 및 YSK_EXECUTE=1을 사용하세요.",
      "n1450": "데이터베이스가 생성되지 않습니다. psql, TCP 및 YSK_EXECUTE=1을 사용하세요.",
      "n1451": "데이터 베이스",
      "n1452": "데이터베이스 이름",
      "n1453": "데이터 베이스",
      "n1454": "데이터 디렉토리",
      "n1455": "프로젝트 리소스 탭을 열어 시스템 사용자를 생성합니다.",
      "n1456": "제한",
      "n1457": "",
      "n1458": "통로",
      "n1459": "경로 허용 로그 디렉터리",
      "n1460": "길을 잃은",
      "n1461": "",
      "n1462": "홈: 대상 정식 완료",
      "n1463": "; 할당량을 설정하세요. \"OS에 제한을 적용하세요\"",
      "n1464": "",
      "n1465": "데이터가 유효하지 않음",
      "n1466": "; 포장할 수 있다",
      "n1467": "RAM 25%의 경우",
      "n1468": "연결 및 네트워크",
      "n1469": "(죽일 수 있음)",
      "n1470": "(kill -0 실패)",
      "n1471": "고급의",
      "n1472": ": 비밀 패널 (및 운영자 2FA — )",
      "n1473": "운영",
      "n1474": "SFTP 설정 완료(호스트/사용자 이름/경로)",
      "n1475": "적용됨 ≠ 클러스터 정상 — --peers를 조사해 보세요.",
      "n1476": "게시물 마이그레이션 실패",
      "n1477": "mkdir 실패",
      "n1478": "게시 확인=거짓",
      "n1479": "백업하지 않음(건너뛰기)",
      "n1480": "YSK_EXECUTE=1 설치",
      "n1481": "찾을 수 없음 rndc / 활성 이름|bind9|pdns",
      "n1482": "원격 푸시 또는 Restic 실패 — 로컬 tar가 성공했을 수 있습니다. sideResult 참조",
      "n1483": "파일,,",
      "n1484": "활성 이름/bind9/pdns(scp 파일 가능)",
      "n1485": "nginx — conf scp (피어에 기록됨)",
      "n1486": "원격/불안정 단계 처리됨",
      "n1487": "YSK_EXECUTE + 루트가 필요합니다.",
      "n1488": "복원하지 않음 chown(루트 + YSK_EXECUTE 필요)",
      "n1489": "DNSBL이 완료되지 않았습니다. IPv6을 지원합니다.",
      "n1490": "피어가 적용되었습니다. 작성 또는 실패 — 클러스터 다시 로드",
      "n1491": "피어 다시 로드 성공(일부)",
      "n1492": "일부 또는 전체 백업 실패 - 결과 보기",
      "n1493": "또는 시스템에 적용되지 않음( YSK_EXECUTE)",
      "n1494": "실패 - SSH 키/방화벽 확인",
      "n1495": "실패 — 단계",
      "n1496": "시스템 실패",
      "n1497": "",
      "n1498": "PHP + Nginx(앱/공개)",
      "n1499": "배포 시 재정의 가능",
      "n1500": "-o app을 빌드하겠습니다.; 호스트설치된 Go 툴체인",
      "n1501": "venv + pip가 됩니다. ExecStart uvicorn 메인:앱",
      "n1502": "venv + pip가 됩니다. 항목 app.py(ASGI 아님)",
      "n1503": "/FPM 풀 적용 php_admin_value 쓰기",
      "n1504": ": 패널\"\"server.js를 시작합니다; 작성 ≠",
      "n1505": "메일호스트 A",
      "n1506": "메일호스트 AAAA(IPv6)",
      "n1507": "메일 관리 설정 디렉터리",
      "n1508": "신분증이 유효하지 않음",
      "n1509": "유효하지 않은",
      "n1510": "1~1000000MiB의 경우",
      "n1511": "1MiB",
      "n1512": "재시작 시스템 서비스",
      "n1513": "추가 금지",
      "n1514": "vsftpd를 다시 로드하세요",
      "n1515": "재장전 서비스",
      "n1516": "오류 등",
      "n1517": "오류 로그, 느린 쿼리 로그",
      "n1518": "오류 및 로그",
      "n1519": "임계값",
      "n1520": "복제에는 ROW가 권장됩니다.",
      "n1521": "대기 시간 초과",
      "n1522": "꺼짐",
      "n1523": "방화벽(UFW는 적용되지 않음)",
      "n1524": "방화벽(): TCP 3306, 4567, 4444, 4568",
      "n1525": "사전 설정은 nginxlimit_req를 씁니다.",
      "n1526": "(유지), 낮추다",
      "n1527": "방어: 중요",
      "n1528": "방어: 비상 사전 설정 제안",
      "n1529": "방어: 공격 가능",
      "n1530": "한계썼다; OS YSK_EXECUTE + 루트에 적용",
      "n1531": "비율 제한",
      "n1532": "",
      "n1533": "/DB; Postfix/Rspamd를 \"시스템에 적용\"하세요.",
      "n1534": ": 성능 저하 — 사용자가 빌드/프로세스할 수 있습니다. 시스템사용자를 생성해주세요",
      "n1535": ": 성능 저하 — 사용자와 함께 프로세스를 수행할 수 있습니다. 루트 + YSK_EXECUTE 및 createsystemuser를 사용하세요.",
      "n1536": "구하다; TOTP 비밀. 인증자는 할 수 있습니다.",
      "n1537": "EXECUTE + 루트 Firstcan 진공 청소기",
      "n1538": "NetworkManager 활성 지속 DNS(/etc/resolv.conf)",
      "n1539": "YSK_EXECUTE 먼저 ufw 적용 가능",
      "n1540": "YSK_EXECUTE는 실제로 자동 차단됩니다.",
      "n1541": "YSK_EXECUTE 바닙",
      "n1542": "YSK_EXECUTE fail2ban 서비스",
      "n1543": "YSK_EXECUTE=1 firstcan 진공 저널",
      "n1544": "실행:true 또는 dryRun:true",
      "n1545": "nginx log_format $upstream_cache_status(또는 X-YSK-캐시)첫 번째 HIT/MISS",
      "n1546": "루트 + YSK_EXECUTE가 필요합니다. 실제로 useradd; 성공할 것이다",
      "n1547": "루트 저널ctl --vacuum 필요",
      "n1548": "루트 Firstcan UFW가 필요합니다",
      "n1549": "호스트설치된 화물/rustc",
      "n1550": "Python 및 pip 호스팅",
      "n1551": "호스트 Python 및 pip(installwillFailed)",
      "n1552": "bind9-dnsutils를 설치하고 systemchangepermission을 활성화하면 실제로 dnssec-keygen을 사용할 수 있습니다.",
      "n1553": "확인 문자열 EMERGENCY가 필요합니다. 자신을 가두는 것을 피하십시오",
      "n1554": "시스템 sshd 일치/사용자 설정은 실제로 이루어집니다.",
      "n1555": "--target 또는 이력서 --job 필요",
      "n1556": "MySQL/MariaDB 관리자 권한이 필요합니다.",
      "n1557": "YSK_EXECUTE가 필요합니다.",
      "n1558": "YSK_EXECUTE 관리자가 필요합니다",
      "n1559": "관리자가 필요합니다",
      "n1560": "aws CLI(또는 Restic s3 repo)가 필요합니다.",
      "n1561": "ID 또는 모두가 필요합니다",
      "n1562": "IP가 필요합니다",
      "n1563": "작업 ID가 필요합니다.",
      "n1564": "linuxUser 또는 projectId가 필요합니다.",
      "n1565": "마스터 노드가 필요합니다",
      "n1566": "nginx geoip2(libnginx-mod-http-geoip2)가 필요합니다.먼저 HTTP가 됩니다.",
      "n1567": "기본 노드가 필요합니다",
      "n1568": "개인키가 필요합니다",
      "n1569": "프로젝트 ID가 필요합니다.",
      "n1570": "루트가 필요합니다",
      "n1571": "소스가 필요합니다",
      "n1572": "sshpass, YSK 키(identityId) 또는 로컬 SSH 키가 필요합니다.",
      "n1573": "이력서에는 대상(root@host) 또는 jobId가 필요합니다.",
      "n1574": "대상 또는 대상 jobId가 필요합니다.",
      "n1575": "사용자 이름과 SSH가 필요합니다.",
      "n1576": "영역 도메인이 필요합니다",
      "n1577": "비밀번호가 필요합니다",
      "n1578": "이메일이 필요합니다",
      "n1579": "이메일과 도메인이 필요합니다",
      "n1580": "버전 및 버전이 필요합니다.",
      "n1581": "CandidateVersion 필요(현재 또는 등 가능)",
      "n1582": "시스템관리자권한완료설치필요",
      "n1583": "수명 주기 및 시스템 쓰기에는 루트가 필요합니다.",
      "n1584": "호스트 실행 권한 필요/다시 로드",
      "n1585": "Nginx를 시스템하고 다시 로드하는 데 필요한 호스트 실행 권한",
      "n1586": "호스트 실행 권한이 필요합니다. check_policy_service",
      "n1587": "호스트 실행 권한에는 nginx conf 및 다시 로드가 필요합니다.",
      "n1588": "동기화가 차단되었습니다. 루트가 필요합니다.",
      "n1589": "기본 노드가 필요합니다",
      "n1590": "",
      "n1591": "루트 아님 — useradd / systemd / nginx 시스템 경로가 제한됩니다.",
      "n1592": "seccomp가 아닌 경우 runAsUser가 필요합니다.",
      "n1593": "공개 요청 / 분",
      "n1594": "패널연결; 사용 가능\"\" ( )",
      "n1595": "패널이 루트로 실행되고 있지 않습니다.",
      "n1596": "사용 가능 적용:거짓",
      "n1597": "— 쓰기 파일이 아님",
      "n1598": "기본 uvicorn 작업자",
      "n1599": "레디스 DB와 함께",
      "n1600": "",
      "n1601": "로컬 인파일",
      "n1602": "잘못된 로그 경로",
      "n1603": "시작 오류",
      "n1604": "오류 등",
      "n1605": "오류()",
      "n1606": "빌드 캔; 실패한 메모/로그",
      "n1607": "",
      "n1608": "유효하지 않음 확인",
      "n1609": "합격",
      "n1610": "패키지 인덱스가 새로 고쳐지지 않음(YSK_EXECUTE 꺼짐) — 적절한 목록만 표시됩니다. apt-get update를 실행하려면 실행을 활성화하세요.",
      "n1611": "UFW가 비활성 상태입니다. {{n}} 영구 거부 규칙이 user.rules에 저장되어 있지만 커널이 이를 시행하지 않습니다.",
      "n1612": "UFW는 비활성 상태입니다. 거부 규칙은 user.rules에만 기록되며 커널은 패킷을 삭제하지 않습니다. 먼저 UFW를 활성화하세요. 자동으로 활성화되지 않습니다.",
      "t0001": "ListenPort가 잘못되었습니다: {{v0}}",
      "t0002": "복원버전 {{v0}}",
      "t0003": "파일(>{{v0}}바이트)",
      "t0004": ": {{v0}}",
      "t0005": "대상: {{v0}}",
      "t0006": "찾을 수 없음: {{v0}}",
      "t0007": "실패: {{v0}}",
      "t0008": "{{v0}} → {{v1}}",
      "t0009": "찾을 수 없음: {{v0}}",
      "t0010": "실패: {{v0}}",
      "t0011": "{{v0}} → {{v1}}",
      "t0012": "상태 {{v0}}에서 다음을 수행할 수 없습니다.",
      "t0013": "이 작업에는 다음이 필요합니다: {{v0}}",
      "t0014": "잘못된 상태: {{v0}}",
      "t0015": "{{v0}}",
      "t0016": "알 수 없음: {{v0}}",
      "t0017": "{{v0}}는 할 수 없습니다 {{v1}} ( {{v2}})",
      "t0018": "{{v0}} 읽지 않음 작업에는 ID가 필요합니다.",
      "t0019": "호스트: {{v0}}",
      "t0020": "허용: {{v0}}",
      "t0021": "거부: {{v0}}",
      "t0022": "플레이북을 찾을 수 없습니다: {{v0}}",
      "t0023": "ip -j 주소 실패: {{v0}}",
      "t0024": "ip -j 경로 실패: {{v0}}",
      "t0025": "nmcli 쓰기 실패: {{v0}}",
      "t0026": "{{v0}} → 연결\"{{v1}}\"",
      "t0027": "연결 경고: {{v0}}",
      "t0028": "연결이 다시 활성화되었습니다(재부팅 후에도 지속됨).",
      "t0029": "{{v0}} → {{v1}} (; 재부팅하면 사라짐)",
      "t0030": "연결에서\"{{v0}}\" {{v1}}",
      "t0031": "뉴멕시코: {{v0}}",
      "t0032": "삭제됨 {{v0}} ← {{v1}}",
      "t0033": "링크 다운 실패: {{v0}}",
      "t0034": "정말 {{v0}}",
      "t0035": "연결 실패: {{v0}}",
      "t0036": "해냈어 {{v0}}",
      "t0037": "MTU 실패: {{v0}}",
      "t0038": "nmcli 쓰기 게이트웨이 실패: {{v0}}",
      "t0039": "기본 게이트웨이 저장 {{v0}} → 연결\"{{v1}}\" (재부팅)",
      "t0040": "nmcli 쓰기 경로 실패: {{v0}}",
      "t0041": "저장 {{v0}} →\"{{v1}}\" (재부팅)",
      "t0042": "IP 경로 추가 실패: {{v0}}",
      "t0043": "추가 {{v0}}${gw?",
      "t0044": ": ''}(재부팅 후에도 지속되지 않을 수 있습니다. 지속하려면 저장을 사용하세요.)",
      "t0045": "연결 \"{{v0}}\" ipv4.gateway에서",
      "t0046": "NM 게이트웨이: {{v0}}",
      "t0047": "\"{{v0}}\" {{v1}}에서",
      "t0048": "NM 노선: {{v0}}",
      "t0049": "IP 경로 삭제 실패: {{v0}}",
      "t0050": "{{v0}}",
      "t0051": "{{v0}}",
      "t0052": "잘못된 DNS: {{v0}}",
      "t0053": "DNS IP: {{v0}}",
      "t0054": "nmcli 수정 실패: {{v0}}",
      "t0055": "복원 {{v0}} DHCP DNS (ignore-auto-dns=no)",
      "t0056": "nmcli 수정 실패: {{v0}}",
      "t0057": "{{v0}}를 썼습니다: DNS {{v1}}${search.length?",
      "t0058": "실패: {{v0}}",
      "t0059": "{{v0}} → {{v1}}",
      "t0060": "{{v0}}",
      "t0061": "SSO 토큰({{v0}} )",
      "t0062": "웹메일 설치 실패: {{v0}}",
      "t0063": "{{v0}}",
      "t0064": "시스템 실패: {{v0}}",
      "t0065": "{{v0}} 체 디렉토리로 휴가 (작성)",
      "t0066": "체 +.dovecot.sieve → {{v0}}@{{v1}}",
      "t0067": "활성 체 링크 비활성화 → {{v0}}@{{v1}}",
      "t0068": "{{v0}}@{{v1}} 체 실패: {{v2}}",
      "t0069": "발신자별 정책 데몬 작성({{v0}} 도메인)",
      "t0070": "{{v0}} 실패(종료 {{v1}}): {{v2}}",
      "t0071": "플러그인 작성 {{v0}}",
      "t0072": "심볼릭 링크 실패: {{v0}}",
      "t0073": "심볼릭 링크를 했습니다 {{v0}} → {{v1}}",
      "t0074": "구성 실패: {{v0}}",
      "t0075": "구성 플러그인 {{v0}}: {{v1}}",
      "t0076": "{{v0}} 작성: {{v1}}",
      "t0077": "{{v0}} 및 www.{{v1}}를 서버 IP에 연결합니다. CDN(Cloudflare)은 또는.",
      "t0078": "PTR VPS/IP 설정 및 HELO/EHLO({{v0}}). (AWS/GCP)해 주세요.",
      "t0079": "{{v0}}",
      "t0080": "postsuper 실패: {{v0}}",
      "t0081": "도메인: {{v0}}",
      "t0082": ": {{v0}}",
      "t0083": "Maildir 만들기: {{v0}}",
      "t0084": "createsystemuser {{v0}}",
      "t0085": "createsystemuser실패: {{v0}}",
      "t0086": ": {{v0}}",
      "t0087": "passdb 쓰기 실패: {{v0}}",
      "t0088": ": {{v0}}",
      "t0089": "{{v0}} 생성: {{v1}} → {{v2}}",
      "t0090": "메일 도메인을 찾을 수 없습니다: {{v0}}",
      "t0091": "휴가를 썼습니다 {{v0}}",
      "t0092": "{{v0}}를 썼습니다",
      "t0093": "virtual_alias: {{v0}} ({{v1}} )",
      "t0094": "Postfix 앤빌: smtpd_client_message_rate_limit={{v0}} / 3600s (; 도메인 비율 )",
      "t0095": "사후 설정: {{v0}}",
      "t0096": "rspamd ratelimit.conf 작성(~{{v0}}/h)",
      "t0097": "지도({{v0}} 도메인)",
      "t0098": "{{v0}}: 차단(allowlocal LLM)",
      "t0099": "LLM 부탁드립니다. 실패: {{v0}}",
      "t0100": "{{v0}}–{{v1}} 찾을 수 없음사용 가능한 포트",
      "t0101": "확인해 주세요: {{v0}}",
      "t0102": "{{v0}}s는 1을 사용합니다( 종료 +N 사용).",
      "t0103": "다시 시작 ( {{v0}} )",
      "t0104": "꺼짐 ( {{v0}} )",
      "t0105": "읽기 실패: {{v0}}",
      "t0106": "실패: {{v0}}",
      "t0107": "서비스가 유효하지 않음: {{v0}}",
      "t0108": "경로 허용 쓰기: {{v0}}",
      "t0109": "제거/다시 로드 실패: {{v0}}",
      "t0110": "DB {{v0}}: {{v1}} 키",
      "t0111": "({{v0}} 입력 — )",
      "t0112": "{{v0}}를 썼습니다",
      "t0113": "쓰기 실패: {{v0}}",
      "t0114": "키가 누락되었거나 삭제되지 않았습니다.",
      "t0115": "집: {{v0}}",
      "t0116": "JSON을 스냅샷할 수 없습니다: {{v0}}",
      "t0117": "{{v0}} 레스틱",
      "t0118": "홈 verifyPhrase=\"{{v0}}\" ()",
      "t0119": "테스트 실행: 스냅샷 {{v0}} {{v1}} 경로( 100)",
      "t0120": "테스트 실행 실패: {{v0}}",
      "t0121": "스냅샷 복원 {{v0}} → {{v1}}",
      "t0122": "복원 실패 종료={{v0}}",
      "t0123": "관리 쓰기: {{v0}}",
      "t0124": "프로젝트 Linux 사용자 {{v0}} (사용자 일치 ysks_*,ysk_*)",
      "t0125": "제발: cp {{v0}} /etc/ssh/sshd_config.d/ && systemctl reload sshd",
      "t0126": "sshd -t 실패, 다시 로드하지 않음: {{v0}}",
      "t0127": "{{v0}}를 설치하고 sshd를 다시 로드하세요.",
      "t0128": "설치된 새로고침 실패: {{v0}}",
      "t0129": "{{v0}}({{v1}}바이트)를 썼습니다.",
      "t0130": "관리되는 Nginx conf: {{v0}} (패널 dataDir nginx/conf.d)",
      "t0131": "알 수 없음: {{v0}}",
      "t0132": "{{v0}}: {{v1}}",
      "t0133": "{{v0}} — 건너뛰었습니다(강제 가능)",
      "t0134": "WordPress 설치 — {{v0}}",
      "t0135": "도메인: {{v0}}",
      "t0136": "항목 {{v0}}.wsgi:application (gunicorn)",
      "t0137": "화물 빌드 --release;./target/release/{{v0}}",
      "t0138": "Axum: 화물 빌드 --release crates.io",
      "t0139": "./target/release/{{v0}}",
      "t0140": "생성 {{v0}}, {{v1}}, 오류 {{v2}}",
      "t0141": "{{v0}}doneproject Linux 사용자(페이지 → createsystemuser).",
      "t0142": "집: /home/ysk-server-{{v0}} · 사용자: {{v1}}",
      "t0143": "chown을 했어요 {{v0}}:{{v1}} → {{v2}}",
      "t0144": "프로젝트사용자 {{v0}}와 함께",
      "t0145": "runuser -u {{v0}} start를 사용한 pidfile",
      "t0146": "FPM 풀 작성: {{v0}}",
      "t0147": "활성화된 풀: {{v0}}",
      "t0148": "/etc/php/{{v0}}/fpm을 찾을 수 없음 — php{{v1}}-fpm 설치",
      "t0149": "{{v0}} 설치됨",
      "t0150": "설치 {{v0}}",
      "t0151": "설치하지 않음 {{v0}}",
      "t0152": "SSH 프로브 실패: {{v0}}",
      "t0153": "네임서버: {{v0}}",
      "t0154": "영역 디렉터리({{v0}}.zone)",
      "t0155": "영역 디렉터리: {{v0}}",
      "t0156": "원격 새로고침 실패: {{v0}}",
      "t0157": "{{v0}}: scp 실패 {{v1}}",
      "t0158": "scp {{v0}} 확인 → {{v1}}",
      "t0159": "scp /실패(확인={{v0}} 실패={{v1}})",
      "t0160": "활성화 실패: {{v0}}",
      "t0161": "비활성화 실패: {{v0}}",
      "t0162": "{{v0}}에서 UFW 거부(규칙, )",
      "t0163": "거부 실패: {{v0}}",
      "t0164": "UFW 거부 {{v0}}",
      "t0165": "삭제 실패: {{v0}}",
      "t0166": "규칙 #{{v0}}",
      "t0167": "#{{v0}} 실패: {{v1}}",
      "t0168": "{{v0}}/{{v1}} 허용",
      "t0169": "허용 실패: {{v0}}",
      "t0170": "새로고침 실패({{v0}}): {{v1}}",
      "t0171": ": 프로젝트 사용자 {{v0}} 활성 상태",
      "t0172": "노드: {{v0}}",
      "t0173": "포트: {{v0}}",
      "t0174": "적용된 패널 노드({{v0}})",
      "t0175": "신청찾을 수 없음: {{v0}}",
      "t0176": "시스템 단위 포함: {{v0}}",
      "t0177": "PM2: {{v0}}",
      "t0178": "시작 프로세스 실패: {{v0}}",
      "t0179": "시작 pid={{v0}}, pidfile={{v1}}",
      "t0180": "Nginx 설정(관리 파일): {{v0}}",
      "t0181": "페이지 생성: {{v0}}",
      "t0182": ": {{v0}}",
      "t0183": "Nginx 설정: {{v0}}",
      "t0184": "디렉토리: {{v0}}",
      "t0185": "HTTP: {{v0}} ({{v1}})",
      "t0186": ": {{v0}}",
      "t0187": "→ {{v0}}",
      "t0188": "인증서: {{v0}}",
      "t0189": "SSL 활성화(Let's Encrypt 경로 또는 SSL 페이지 {{v0}} 인증서)",
      "t0190": "Nginx 다시 로드 실패: {{v0}}",
      "t0191": "작성자: {{v0}}",
      "t0192": "런타임 {{v0}} — Git, 재시작 프로세스",
      "t0193": "{{v0}} ({{v1}} )를 썼습니다.",
      "t0194": "PHP-FPM 풀 사용자: {{v0}}(프로젝트)",
      "t0195": "런타임 버전 → {{v0}}",
      "t0196": "패널 php.ini ({{v0}} php_admin_*)",
      "t0197": "PHP-FPM Nginx 설정: {{v0}}",
      "t0198": "Nginx 다시 로드 ={{v0}}: {{v1}}",
      "t0199": "PHP 서버 pid={{v0}} @ 127.0.0.1:{{v1}}",
      "t0200": "기호 {{v0}}",
      "t0201": "시그킬 {{v0}}",
      "t0202": "pid {{v0}}",
      "t0203": "배포 프로세스 런타임\"{{v0}}\"",
      "t0204": ": 프로젝트 사용자 {{v0}}로 시작",
      "t0205": "런타임: {{v0}} · 포트 {{v1}} · 항목 {{v2}}",
      "t0206": ": {{v0}}",
      "t0207": "실패: {{v0}}",
      "t0208": "적용패널 {{v0}} ({{v1}})",
      "t0209": "systemd 작성: {{v0}}",
      "t0210": "활성화 --현재 프로젝트 단위(사용자={{v0}})",
      "t0211": "systemctl 시작 실패: {{v0}}",
      "t0212": "쓰기 시스템 장치 실패: {{v0}}",
      "t0213": "pidfile 시작 pid={{v0}}${mode === '격리'?",
      "t0214": "pidfile 시작 실패: {{v0}}",
      "t0215": "체크 실패({{v0}}ms): {{v1}}",
      "t0216": "확인 통과({{v0}}ms)",
      "t0217": "Nginx를 작성했습니다: {{v0}}",
      "t0218": "{{v0}} 금지된 IP",
      "t0219": "차단을 해제했어요 {{v0}} @ {{v1}}",
      "t0220": "금지 해제 실패: {{v0}}",
      "t0221": "관리하다: {{v0}} ({{v1}} )",
      "t0222": "sshdignoreip {{v0}} {{v1}} · 상태: 적용됨",
      "t0223": "실패2ban-clientignoreip 실패: {{v0}} (관리되는 파일 쓰기; 적용됨)",
      "t0224": "fail2ban 감옥: {{v0}}",
      "t0225": "쓴 단위 {{v0}}",
      "t0226": "상태는 여전히 {{v0}} (적용되지 않음)",
      "t0227": "예상치 못한 Apply_status: {{v0}}",
      "t0228": "데이터베이스: {{v0}} ( 0–{{v1}})",
      "t0229": "{{v0}}까지",
      "t0230": "시스템 conf 디렉토리에 연결할 수 없습니다: {{v0}}",
      "t0231": "conf 실패: {{v0}}",
      "t0232": "다시 시작 {{v0}}",
      "t0233": "{{v0}}에 실패: {{v1}}",
      "t0234": "거부 디렉터리: {{v0}}",
      "t0235": "디렉토리: {{v0}}",
      "t0236": "건너뛴 디렉터리(스캔): {{v0}}",
      "t0237": "{{v0}} (아님)",
      "t0238": "저널 php{{v0}}-fpm (풀 로그 아님)",
      "t0239": "grep\"{{v0}}\": {{v1}} ({{v2}} 바이트 스캔)",
      "t0240": "{{v0}} (파일 {{v1}} 바이트, )",
      "t0241": "{{v0}} (파일 {{v1}} 바이트)",
      "t0242": "{{v0}} 로그로(꺼지지 않음)",
      "t0243": "읽을 수 없습니다: {{v0}}",
      "t0244": "\"{{v0}}\": {{v1}}, {{v2}} ()",
      "t0245": "{{v0}} 서버가 설치되지 않음",
      "t0246": "{{v0}} 서비스가 실행되지 않음",
      "t0247": "{{v0}} 설치되지 않음",
      "t0248": ": {{v0}}",
      "t0249": "서버: {{v0}}",
      "t0250": "{{v0}} 준비됨",
      "t0251": "{{v0}} 설치가 완료되지 않았습니다.",
      "t0252": "{{v0}} 서비스 시작",
      "t0253": "시작 실패: {{v0}}",
      "t0254": "Node.js 버전 {{v0}} 지원; 사용 가능 버전: {{v1}}",
      "t0255": "PHP 버전 {{v0}} 지원; 사용 가능 시간: {{v1}}",
      "t0256": "Python 버전 {{v0}} 지원; 사용 가능 시간: {{v1}}",
      "t0257": "Go 버전 {{v0}} 지원; 사용 가능 시간: {{v1}}",
      "t0258": "알 수 없는 런타임: {{v0}}",
      "t0259": "발굴: 답변 없음(NXDOMAIN 또는 비어 있음)",
      "t0260": "{{v0}}",
      "t0261": "PostgreSQL 실패: {{v0}}",
      "t0262": "MySQL 실패: {{v0}}",
      "t0263": "{{v0}}: 삭제할 수 없음 — EXECUTE+루트(만료됨)",
      "t0264": "{{v0}}: DROP 실패 {{v1}}",
      "t0265": "{{v0}}: DROP 실패 {{v1}}",
      "t0266": "{{v0}}: 만료됨(DROP 시스템 계정 아님)",
      "t0267": "FTP 사용자: {{v0}}",
      "t0268": "FTP 생성 {{v0}}",
      "t0269": "감옥 경로: {{v0}}",
      "t0270": "암호 해시로 저장된 비밀번호(일반 텍스트 아님)",
      "t0271": "프로젝트 Linux 사용자: {{v0}} ( vsftpd 적용)",
      "t0272": "잘못된 사용자 이름을 건너뛰었습니다.",
      "t0273": "{{v0}}: 비밀번호 → 암호화 해시",
      "t0274": "{{v0}} hashnot crypt (openssl을 사용할 수 없음) — 실패할 수 있음",
      "t0275": "{{v0}} 비밀번호 해시, 불가능",
      "t0276": "{{v0}} 프로젝트 linuxUser — guest\"{{v1}}\" (FTP를 이용해 주세요)",
      "t0277": "{{v0}} 설정을 작성했습니다.",
      "t0278": "{{v0}}",
      "t0279": "{{v0}} 적용됨, vsftpd 실행 중",
      "t0280": "chown 건너뛰기 {{v0}}: systemuser\"{{v1}}\" (먼저 프로젝트systemuser를 생성해 주세요)",
      "t0281": "chown 실패 {{v0}}: {{v1}}",
      "t0282": "FTP 디렉터리({{v0}})",
      "t0283": "프로젝트 {{v0}} 디렉토리",
      "t0284": "프로젝트 {{v0}} 공개",
      "t0285": "메일 {{v0}}",
      "t0286": "시스템 사용자를 생성하지 마세요(시스템 관리자 권한 필요). 집: {{v0}}; 예배 규칙서.",
      "t0287": "{{v0}}; 집 {{v1}}",
      "t0288": "그만 {{v0}}",
      "t0289": "삭제된 집: {{v0}}",
      "t0290": "집이 아님 (할 수 있음): {{v0}} — {{v1}}",
      "t0291": "거부삭제 홈 경로: {{v0}}",
      "t0292": "OS 홈이 아님(루트 필요): {{v0}}; systemuser {{v1}} 가능",
      "t0293": "pdnsutil 로드 영역 실패: {{v0}}",
      "t0294": "pdnsutil 영역 {{v0}}",
      "t0295": "systemctl {{v0}} fall2ban 알았어",
      "t0296": "{{v0}} 실패: {{v1}}",
      "t0297": "fail2ban 금지 {{v0}} @ {{v1}} (, 금지 시간 제한)",
      "t0298": "Banip 실패: {{v0}}",
      "t0299": "감옥: {{v0}}",
      "t0300": "IP 무시: dataDir/fail2ban/ignoreip.txt",
      "t0301": "설치 확인: {{v0}}",
      "t0302": "프로젝트 {{v0}} (패키지: {{v1}})",
      "t0303": "{{v0}} (패키지: {{v1}})",
      "t0304": "데이터베이스 {{v0}} (패키지: {{v1}})",
      "t0305": "{{v0}} 작성 (DB {{v1}}@{{v2}}; 가능)",
      "t0306": "pm2 시작 실패: {{v0}}",
      "t0307": "pm2 시작 {{v0}}",
      "t0308": "{{v0}}이 설치되지 않았습니다",
      "t0309": "{{v0}}",
      "t0310": "적용됨 {{v0}}",
      "t0311": "다시 시작할 수 있음: {{v0}}",
      "t0312": "신청 {{v0}}",
      "t0313": "다시 시작하세요 (다시 시작해주세요): {{v0}}",
      "t0314": "ALTER SYSTEM {{v0}} 및 새로고침",
      "t0315": "다시 시작: {{v0}}",
      "t0316": "그랬어요 {{v0}} {{v1}}",
      "t0317": "이니: {{v0}}",
      "t0318": "/etc/php/{{v0}}/fpm — 먼저 php{{v1}}-fpm을 설치하세요.",
      "t0319": "{{v0}}를 적용하고 php{{v1}}-fpm을 다시 로드합니다.",
      "t0320": "이니; 새로고침 실패: {{v0}}",
      "t0321": "DNS 영역 초안 {{v0}} (DNS 쓰기/적용)",
      "t0322": "IPv6 {{v0}}",
      "t0323": "메일도메인 {{v0}}",
      "t0324": "MySQL DB 초안 {{v0}} (데이터베이스 적용)",
      "t0325": "건너뛰었습니다: 디렉토리 {{v0}}",
      "t0326": "{{v0}}/{{v1}} 프로젝트 백업됨",
      "t0327": "(홈 디렉토리가 없으면 {{v0}} 건너뛰었습니다)",
      "t0328": "프로젝트 디렉토리: {{v0}}",
      "t0329": "타르 실패: {{v0}}",
      "t0330": "백업을 작성함 {{v0}}",
      "t0331": "테스트 실행: 파일 {{v0}}+ ( {{v1}})",
      "t0332": "할 수 없음: {{v0}}",
      "t0333": "(웹)을 {{v0}}로 복원",
      "t0334": "웹 복원 실패: {{v0}}",
      "t0335": "복원 실패: {{v0}}",
      "t0336": "{{v0}}에서 프로젝트 디렉토리로 복원",
      "t0337": "chown을 했어요 {{v0}}:{{v1}} → {{v2}}",
      "t0338": ": {{v0}}",
      "t0339": "crontab 관리: {{v0}}",
      "t0340": "crontab 실패: {{v0}}",
      "t0341": "pg_dump 실패: {{v0}}",
      "t0342": "덤프 실패: {{v0}}",
      "t0343": "psql 실패: {{v0}}",
      "t0344": "가져오기 실패: {{v0}}",
      "t0345": "git이 아닌 target {{v0}} — 데이터가 있는 복제 거부(.ysk-scaffold )",
      "t0346": "복제를 수행했습니다 {{v0}} → {{v1}}",
      "t0347": "업데이트 가져오기: {{v0}}",
      "t0348": "linuxUser 유효하지 않음: {{v0}}",
      "t0349": "적용됨 {{v0}}: {{v1}} + www-data/nginx; 홈 750, 공용 g+rX",
      "t0350": "ysk-web 적용 실패: {{v0}}",
      "t0351": "경로 {{v0}}",
      "t0352": "nginx 설정: {{v0}}",
      "t0353": "다운로드 실패: {{v0}}",
      "t0354": "관리자 → {{v0}}",
      "t0355": "{{v0}}",
      "t0356": "nginx 설정: {{v0}}",
      "t0357": "→ {{v0}}",
      "t0358": "포트가 유효하지 않음: {{v0}}",
      "t0359": "사용자 {{v0}}로 crontab 설치",
      "t0360": "열쇠 {{v0}}",
      "t0361": "영역 → {{v0}}(DNS 다시 로드, DS 수동 등록자)",
      "t0362": "관리형 영역이 아님( dns/zones/{{v0}}.zone) —",
      "t0363": "{{v1}} 아래의 {{v0}} 파일",
      "t0364": "TCP {{v0}}:{{v1}} 확인({{v2}}ms)",
      "t0365": "TCP {{v0}}:{{v1}} 실패: {{v2}}",
      "t0366": "PING 실패: {{v0}}",
      "t0367": ": {{v0}}MB > {{v1}}MB",
      "t0368": "({{v0}} / {{v1}}MiB),{{v2}}할 수 없습니다.",
      "t0369": "홈 경로가 준비되지 않았습니다({{v0}})",
      "t0370": "Linux 사용자 {{v0}}가 프로비저닝되지 않음",
      "t0371": "준비됨 {{v0}} / 저하됨 {{v1}} / 분리되지 않음 {{v2}} ({{v3}} 총계)",
      "t0372": "· 보류 중: {{v0}}{{v1}}",
      "t0373": "프로젝트 \"{{v0}}\" 격리",
      "t0374": "로컬 경로로 {{v0}}",
      "t0375": "신원 {{v0}}: {{v1}}",
      "t0376": "sftp(identity)로 {{v0}}에 성공",
      "t0377": "sftp(identity) 실패: {{v0}}",
      "t0378": "sftp로 {{v0}}에 성공",
      "t0379": "sftp 실패: {{v0}}",
      "t0380": "sftp로 {{v0}}에 성공",
      "t0381": "sftp 실패: {{v0}} (백업 remote identityId를 설정할 수 있음)",
      "t0382": "시즌3 {{v0}}",
      "t0383": "S3 실패: {{v0}}",
      "t0384": ": {{v0}}/{{v1}} 관리자 2FA 활성화",
      "t0385": "정책이 시행되지 않음: {{v0}}/{{v1}} 관리자가 2FA를 활성화했습니다.",
      "t0386": "{{v0}} 경로",
      "t0387": "{{v0}} 찾을 수 없음",
      "t0388": "{{v0}}를 설치하거나 PATH에 추가하세요.",
      "t0389": "사용 가능 버전: {{v0}}",
      "t0390": "{{v0}}%( {{v1}}MB)",
      "t0391": "{{v0}}% ({{v1}})",
      "t0392": "서비스 시작 {{v0}}",
      "t0393": "모드: {{v0}}",
      "t0394": "준비 {{v0}} / 성능 저하 {{v1}} / 누락 {{v2}} (총 {{v3}})",
      "t0395": "찾을 수 없음( {{v0}})",
      "t0396": "호스트 노드: {{v0}}",
      "t0397": "호스트 PHP: {{v0}}",
      "t0398": "호스트 파이썬: {{v0}}",
      "t0399": "진행자 이동: {{v0}}",
      "t0400": "호스트 화물: {{v0}}",
      "t0401": "사용 가능한 노드: {{v0}}",
      "t0402": "PHP 사용 가능: {{v0}}",
      "t0403": "사용 가능한 Python: {{v0}}",
      "t0404": "이용 가능: {{v0}}",
      "t0405": "러스트 사용 가능: {{v0}}",
      "t0406": "노드 설치 {{v0}}",
      "t0407": "PHP 설치 {{v0}}",
      "t0408": "Python 설치 {{v0}}",
      "t0409": "/usr/local/ysk/go에 Go {{v0}}를 설치하세요.",
      "t0410": "Rust({{v0}})를 /usr/local/ysk/rust에 설치합니다.",
      "t0411": "설치 실패: {{v0}}",
      "t0412": "OpenJDK {{v0}} 설치 스크립트 준비",
      "t0413": "Kotlin {{v0}} 설치 스크립트 준비(JDK 필요)",
      "t0414": "준비된 Bun({{v0}}) 설치 스크립트",
      "t0415": "프로젝트 홈: {{v0}}",
      "t0416": "targetuser {{v0}} (프로젝트 홈); please.ssh chown (API는)",
      "t0417": "chown {{v0}} → {{v1}} 했나요?",
      "t0418": "chown.ssh 실패: {{v0}}",
      "t0419": "삭제된 키 · Authorized_keys",
      "t0420": "지원: {{v0}}",
      "t0421": "TTL {{v0}} 30–604800",
      "t0422": "{{v0}} CNAME 및 ()",
      "t0423": "{{v0}} CNAME 타겟",
      "t0424": "설정 실패: {{v0}}",
      "t0425": "{{v0}} 관리설정을 작성했습니다.",
      "t0426": "파일을 만들 수 없습니다: {{v0}}",
      "t0427": "{{v0}} 시스템 디렉토리에 대한 설정",
      "t0428": "{{v0}} 유효하지 않음",
      "t0429": "집이 아닌 길 ( {{v0}})",
      "t0430": "usermod -s 실패: {{v0}}",
      "t0431": "실패: {{v0}}",
      "t0432": "실패: {{v0}}",
      "t0433": "set-property 실패: {{v0}} (willwrite 유닛 배포)",
      "t0434": "유닛 {{v0}} 비활성 — DB 제한, 쓰기 유닛 배포",
      "t0435": "setquota가 성공하지 못했습니다(파일 시스템에서 user_xattr/quota를 사용할 수 없음): {{v0}}",
      "t0436": "집: {{v0}}",
      "t0437": "chown {{v0}} → {{v1}} 했나요?",
      "t0438": "상단 헤더 실패: {{v0}}",
      "t0439": "ps 완료 실패: {{v0}}",
      "t0440": "NI={{v0}}",
      "t0441": "PID {{v0}} (process.pid)",
      "t0442": "또는 조사(kill -0 종료 {{v0}})",
      "t0443": "kill -s {{v0}} 실패: ${err ||",
      "t0444": "{{v0}} → PID {{v1}}",
      "t0445": "{{v0}} 프로젝트가 정지되었습니다.",
      "t0446": "{{v0}} 프로젝트의 시스템 사용자가 누락되었습니다.",
      "t0447": "{{v0}} 승인 대기 중",
      "t0448": "인증서 만료: {{v0}}",
      "t0449": "인증서가 {{v0}}일 후에 만료됩니다: {{v1}}",
      "t0450": "시간: {{v0}}",
      "t0451": "DNSBL 목록: {{v0}}",
      "t0452": "{{v0}} 적용 실패/차단",
      "t0453": "{{v0}} 항목이 아직 작성/초안 상태입니다.",
      "t0454": "자동 방어 사전 설정: {{v0}}",
      "t0455": "작업 실패: {{v0}}",
      "t0456": "저널 디스크 사용량 높음: {{v0}}MB",
      "t0457": "임계값 {{v0}}MB — 로그 센터를 비우거나 보존 조정",
      "t0458": "df 실패: {{v0}}",
      "t0459": "{{v0}} 프로젝트( {{v1}})",
      "t0460": "버전 {{v0}} → {{v1}}",
      "t0461": "올리기 {{v0}}",
      "t0462": "종료 실패={{v0}}",
      "t0463": "apt list --upgradable: {{v0}} 인상 가능",
      "t0464": "apt list --업그레이드 불가(종료 {{v0}}); 적절한 캐시 정책",
      "t0465": "dpkg+apt-cache 정책: {{v0}} 패키지",
      "t0466": "dpkg/apt-cache 정책 실패 또는 (종료 {{v0}}) — apt 또는 권한 가능",
      "t0467": "Node {{v0}} (적절하지 않은 nodejs 패키지를 올릴 수 있음)",
      "t0468": "인상할 수 있음(후보자 ≠ 현재): {{v0}}",
      "t0469": "npm 레지스트리 HTTP {{v0}}",
      "t0470": "GitHub, HTTP {{v0}} 출시",
      "t0471": "GitHub 패키지.json HTTP {{v0}}",
      "t0472": "npm: {{v0}}@{{v1}}",
      "t0473": "npm {{v0}} 사용할 수 없음: {{v1}}",
      "t0474": "GitHub 릴리스를 사용할 수 없음: {{v0}}",
      "t0475": "GitHub package.json({{v0}}): {{v1}}",
      "t0476": "GitHub package.json을 사용할 수 없음: {{v0}}",
      "t0477": "업데이트: {{v0}} → {{v1}}",
      "t0478": "디렉토리 {{v0}} git repo — YSK_SOURCE_ROOT 또는 npm(YSK_NPM_PACKAGE) 가능",
      "t0479": "GitHub tarball 다운로드 실패: {{v0}}",
      "t0480": "{{v0}}(스테이징 전용) — 실행 중 설치 아님; /git 디렉토리를 완료해주세요",
      "t0481": "자식: {{v0}}",
      "t0482": "git 적용 {{v0}} 실패(종료 {{v1}}): {{v2}}",
      "t0483": "updatetarget {{v0}} 및 빌드 — ysk-server 버전을 다시 시작하세요",
      "t0484": "설치됨 {{v0}}",
      "t0485": "npm 업데이트 실패: {{v0}}",
      "t0486": "YSK_NPM_PACKAGE 설치 {{v0}}",
      "t0487": "YSK_NPM_PACKAGE 설치 실패: {{v0}}",
      "t0488": "{{v0}} → {{v1}}를 올릴 수 있습니다 (CRITICAL CVE, )",
      "t0489": "{{v0}} → {{v1}} (높은 CVE, )를 올릴 수 있습니다.",
      "t0490": "{{v0}} → {{v1}} (할 수 있다, ) 올릴 수 있다",
      "t0491": "{{v0}} → {{v1}} () 키울 수 있습니다.",
      "t0492": "{{v0}} → {{v1}}(적합 후보자)를 올릴 수 있습니다.",
      "t0493": "사용 가능 레이즈, OSV {{v0}}",
      "t0494": "서비스상태: {{v0}}",
      "t0495": "캔 감지: {{v0}}",
      "t0496": "알 수 없는 에이전트 실행 중: {{v0}}",
      "t0497": "지원 에이전트: {{v0}}",
      "t0498": "설치 실패(willSuccess): {{v0}}",
      "t0499": "에이전트를 찾을 수 없음 세션: {{v0}}",
      "t0500": "찾을 수 없음: {{v0}}",
      "t0501": "사용자: {{v0}}",
      "t0502": "사용자: {{v0}}",
      "t0503": "프로젝트 SFTP 사용자(ysks_/ysk_, 내부-sftp kbd-interactive): {{v0}}",
      "t0504": "엄격한 사용자로부터: {{v0}}",
      "t0505": "{{v0}} 사용자 publickey+TOTP, 비밀번호 비활성화",
      "t0506": "관리되는 파일: {{v0}}",
      "t0507": "{{v0}}를 설치하고 sshd를 다시 로드하세요.",
      "t0508": "설치/sshd -t 실패: {{v0}}",
      "t0509": "PAM이 관리하는 파일: {{v0}}",
      "t0510": "chown 실패: {{v0}}",
      "t0511": "경고: 모드 400(상태: {{v0}})",
      "t0512": "PAM(관리 파일): {{v0}}",
      "t0513": "sshd(관리 파일): {{v0}}",
      "t0514": "스크래치 (이것): {{v0}} — 저장해주세요",
      "t0515": "pam.d/sshd: {{v0}}",
      "t0516": "사용자 {{v0}} SSH 2FA({{v1}}). 비활성화 / 은퇴.",
      "t0517": "비밀 마스터 키: {{v0}}",
      "t0518": "chown 실패: {{v0}}",
      "t0519": "SSH 실패: {{v0}}",
      "t0520": "마스터 키: {{v0}} (백업해 주세요)",
      "t0521": "마스터 키: {{v0}}",
      "t0522": "지문: {{v0}} ({{v1}})",
      "t0523": "CF 전용 UFW 작성: {{v0}}",
      "t0524": "포트: {{v0}}",
      "t0525": "CF IPv4: {{v0}}",
      "t0526": "CF IPv6: {{v0}}",
      "t0527": "ufw 실패: {{v0}}",
      "t0528": "인증 실패 IP: {{v0}}",
      "t0529": "상위 IP {{v0}}",
      "t0530": "{{v0}} · {{v1}}",
      "t0531": "자동 전환 방어 프리셋 → {{v0}}{{v1}}",
      "t0532": "자동 전환 방어 사전 설정: {{v0}}",
      "t0533": "SSH 실패×{{v0}}",
      "t0534": "인증 실패 {{v0}} IP",
      "t0535": "×{{v0}} 주세요",
      "t0536": "스캔×{{v0}}",
      "t0537": "{{v0}}/{{v1}}",
      "t0538": "완료 {{v0}} IP: 성공 {{v1}}",
      "t0539": ": 자동 차단 {{v0}}",
      "t0540": ": {{v0}}",
      "t0541": "{{v0}} IP 차단",
      "t0542": "영역 {{v0}}(HTTP {{v1}})을 사용할 수 없습니다.",
      "t0543": ": {{v0}} 보안_수준 → {{v1}}",
      "t0544": ": {{v0}} → security_level={{v1}}",
      "t0545": "({{v0}})",
      "t0546": "{{v0}}",
      "t0547": "확인=\"{{v0}}\"",
      "t0548": "Nginx 속도 제한을 작성했습니다: {{v0}}",
      "t0549": "{{v0}} 가상 호스트에 속도 제한 마커를 주입했습니다.",
      "t0550": "액티브 디펜스 프리셋 → {{v0}}",
      "t0551": "금지 → {{v0}} ({{v1}} / {{v2}})",
      "t0552": "적용된 방어 프리셋: {{v0}}",
      "t0553": "fail2ban 실패: {{v0}}",
      "t0554": "ufw 실패: {{v0}}",
      "t0555": "{{v0}}",
      "t0556": "ufw 삭제 실패: {{v0}}",
      "t0557": "{{v0}}",
      "t0558": "{{v0}}: {{v1}}",
      "t0559": "{{v0}} 가상 호스트에게",
      "t0560": "Cluster_size={{v0}} < 노드 {{v1}}",
      "t0561": "{{v0}} 노드 클러스터",
      "t0562": "프로브 지원 {{v0}}",
      "t0563": "mysql/mariadb 실패: {{v0}}",
      "t0564": "REPLICA/SLAVE 표시 실패: {{v0}}",
      "t0565": "SHOW MASTER 실패: {{v0}}",
      "t0566": "복구용 복제본, ={{v0}}",
      "t0567": "1차 회복, ={{v0}}",
      "t0568": "복제본 비정상역할={{v0}}",
      "t0569": "마스터, 역할={{v0}}",
      "t0570": "{{v0}} · {{v1}}",
      "t0571": "타르 실패: {{v0}}",
      "t0572": "{{v0}} ({{v1}} 바이트)",
      "t0573": "{{v0}} 동료 타겟",
      "t0574": "{{v0}}: 신원 {{v1}} 사용할 수 없음 — 키",
      "t0575": "{{v0}}: SSH mkdir 실패 {{v1}}",
      "t0576": "{{v0}}: {{v1}}",
      "t0577": "{{v0}}/{{v1}}: scp 실패 {{v2}}",
      "t0578": "{{v0}} 요원 · op={{v1}}",
      "t0579": "{{v0}}: 대기열에 추가하지 못했습니다. {{v1}}",
      "t0580": "알 수 없음 {{v0}}",
      "t0581": "갈레라 설정 ({{v0}})",
      "t0582": "{{v0}} conf 설치 및 참여( / SSH / 함대)",
      "t0583": "conf 설치 → systemctl restart mariadb (부트스트랩 노드 아님)",
      "t0584": "찾을 수 없는 설정: {{v0}}",
      "t0585": "현지 신청 지원 {{v0}}",
      "t0586": "설치된 시스템 드롭인: {{v0}}",
      "t0587": "writesystem conf 실패: {{v0}}",
      "t0588": "galera_new_cluster 실패: {{v0}}",
      "t0589": "systemctl restart {{v0}} (/slot/sentinel scripts/에서)",
      "t0590": "systemctl을 다시 시작했나요 {{v0}}",
      "t0591": "SSH 조사 실패: {{v0}}",
      "t0592": "복제 프로브 실패: {{v0}}",
      "t0593": "기본 프로브 실패: {{v0}}",
      "t0594": "{{v0}} 노드 프로브 OK · 크기={{v1}}",
      "t0595": "{{v0}} 노드 프로브 OK",
      "t0596": "{{v0}} 및 {{v1}}에 설치",
      "t0597": "scp 실패 {{v0}}",
      "t0598": "conf 설치 실패: {{v0}}",
      "t0599": "conf 재시작 쓰기 {{v0}} 실패",
      "t0600": "{{v0}}${다시 시작하시겠습니까?라고 썼습니다.",
      "t0601": "지원: {{v0}}",
      "t0602": "클러스터 지원: {{v0}}",
      "t0603": "중지 {{v0}} 프로젝트 단위 (괜찮아 {{v1}})",
      "t0604": "종료하지 말고 중지하세요( {{v0}})— 덤프",
      "t0605": "및 {{v0}} RDB(덤프 건너뛰기)",
      "t0606": "완료 → {{v0}}",
      "t0607": "사용자 생성 {{v0}} uid={{v1}}",
      "t0608": "사용자 {{v0}}",
      "t0609": "사용자 추가 실패: {{v0}}",
      "t0610": "chown 실패: {{v0}}",
      "t0611": "집, chown 건너뛰기: {{v0}}",
      "t0612": "덤프 또는: {{v0}}",
      "t0613": "RDB: {{v0}}",
      "t0614": "RDB 복원 → {{v0}}",
      "t0615": "RDB 실패: {{v0}}",
      "t0616": "redis 시작/핑: {{v0}}",
      "t0617": ": {{v0}} — (dumpRelPath)에 dataDir rsync 덤프",
      "t0618": "sha256을 타겟팅할 수 없습니다: {{v0}}",
      "t0619": "ysk.json sha256 {{v0}}...",
      "t0620": "ysk.json 로컬={{v0}} 원격={{v1}}",
      "t0621": "로컬 데이터Dir: {{v0}}",
      "t0622": "데이터디렉터리: {{v0}}",
      "t0623": "집으로 건너뛰었습니다: {{v0}}",
      "t0624": "홈 dataDir, dataDir: {{v0}}",
      "t0625": "rsync 홈 실패 {{v0}}",
      "t0626": "전송: 홈 재동기화 실패 {{v0}}",
      "t0627": "건너뛰었습니다: {{v0}}",
      "t0628": "전송 완료 → {{v0}}:{{v1}}",
      "t0629": "프로젝트 {{v0}} 집: {{v1}}",
      "t0630": "프로젝트 {{v0}} bind_ip={{v1}} — 가능 ( IP )",
      "t0631": "프로젝트 {{v0}} 집이 아닌 경로: {{v1}}",
      "t0632": "디스크에 있는 고아 집(일치하는 상점 프로젝트 없음): {{v0}}",
      "t0633": "메일주소: {{v0}}",
      "t0634": "{{v0}} — 타겟팅할 수 없음",
      "t0635": "조사할 수 없습니다 {{v0}}",
      "t0636": "{{v0}} · {{v1}}",
      "t0637": "프로젝트 {{v0}} · {{v1}} · DB {{v2}} · Redis {{v3}}",
      "t0638": "설치할 소프트웨어 {{v0}} · homes {{v1}}",
      "t0639": "컷오버 호스트 {{v0}}",
      "t0640": "{{v0}} 경고 — 컷오버 전에 검토하세요.",
      "t0641": "열쇠 {{v0}}",
      "t0642": "키를 사용할 수 없습니다: {{v0}}",
      "t0643": "targetnot writeauthorized_keys: {{v0}}",
      "t0644": "{{v0}} 설치 ( 키 )",
      "t0645": "deletekey실패: {{v0}}",
      "t0646": "{{v0}} 이용 가능",
      "t0647": "데이터디렉터리: {{v0}}",
      "t0648": "~{{v0}}",
      "t0649": "사용 가능 {{v0}} (덤프)",
      "t0650": ": 가능 {{v0}}, ≥ {{v1}}",
      "t0651": "경고 {{v0}} (아님)",
      "t0652": "SSH 연결 {{v0}}",
      "t0653": "사용자 {{v0}} 루트가 아님(MVP에는 루트가 필요함)",
      "t0654": "OS 지원({{v0}}); 데비안/우분투가 필요합니다",
      "t0655": "대상 사용 가능 {{v0}} ≥ {{v1}}",
      "t0656": "대상: 사용 가능 {{v0}}, {{v1}} 필요",
      "t0657": "대상 {{v0}}/ysk.json — 거부( forceWipeTarget)",
      "t0658": "대상 디렉토리 ysk.json: {{v0}}",
      "t0659": "대상디렉토리생성: {{v0}}",
      "t0660": "{{v0}}초",
      "t0661": "{{v0}}초 ≥ 120초(TLS/TOTP)",
      "t0662": "프로젝트 {{v0}} bind_ip={{v1}} — for (인터페이스)",
      "t0663": "{{v0}} 프로젝트.bind_ip",
      "t0664": "bind_ip를 유지할 수 없습니다: {{v0}}",
      "t0665": "nginx 동기화: {{v0}}",
      "t0666": ": {{v0}}",
      "t0667": "신원 {{v0}} 사용 불가",
      "t0668": "SSH 실패 종료={{v0}}: {{v1}}",
      "t0669": "경로: {{v0}}",
      "t0670": "rsync 종료 실패={{v0}}: {{v1}}",
      "t0671": "Redis RDB 작성 {{v0}} (--rdb)",
      "t0672": "--rdb 실패: {{v0}}",
      "t0673": "BGSAVE 실패: {{v0}}",
      "t0674": "Redis RDB {{v0}} → {{v1}} (BGSAVE)",
      "t0675": "Redis RDB를 사용할 수 없습니다(src={{v0}}).",
      "t0676": "{{v0}} {{v1}} {{v2}}",
      "t0677": "집, 건너뛰기: {{v0}}",
      "t0678": "집 {{v0}}",
      "t0679": "메일주소: {{v0}}",
      "t0680": "메일디렉토리 {{v0}}",
      "t0681": "ysk.json 지문 (재적용 가능)local≠source",
      "t0682": "준비 오류: {{v0}}",
      "t0683": "DNS 컷오버: A/AAAA IP 사용 → {{v0}}{{v1}}",
      "t0684": "확인 실패: {{v0}} 불일치",
      "t0685": "확인 통과(불일치={{v0}})",
      "t0686": "잘못된 대상: {{v0}} (root@host 또는 호스트 필요)",
      "t0687": "일자리를 찾을 수 없습니다 {{v0}}",
      "t0688": ": 대상 YSK_EXECUTE=1 ysk-server migration post --job {{v0}} --data-dir {{v1}}",
      "t0689": "완료 → {{v0}}",
      "t0690": "컷오버 호스트: {{v0}}",
      "t0691": "게시물 완료 @ {{v0}}",
      "t0692": "일자리를 찾을 수 없습니다 {{v0}} ( dataDir rsync)",
      "t0693": "성공하지 못함 ({{v0}})",
      "t0694": "부트스트랩 완료 → {{v0}}",
      "t0695": "실패하지 않음: {{v0}}",
      "t0696": "지원 모드: {{v0}}",
      "t0697": "에지 노드를 찾을 수 없습니다: {{v0}}",
      "t0698": "노드 {{v0}} 가장자리(또는 원점)",
      "t0699": "DNS 지원: {{v0}}",
      "t0700": "SSL 모드 지원: {{v0}}",
      "t0701": "CDN {{v0}}",
      "t0702": "원본 쉴드 노드가 존재하지 않습니다: {{v0}}",
      "t0703": "가장자리: {{v0}}",
      "t0704": "원본 URL(프로젝트 바인딩에서): {{v0}}",
      "t0705": "CDN 업데이트 {{v0}}",
      "t0706": "CDN 생성 {{v0}}",
      "t0707": "원점 방패: 가장자리 방패 {{v0}} → {{v1}}",
      "t0708": "Origin.kind=프로젝트가 아님 projectOriginUrl — {{v0}}",
      "t0709": "edge {{v0}} ({{v1}}): 계획됨 (팬아웃 아님 — PR-C3)",
      "t0710": "가장자리 {{v0}}: 노드",
      "t0711": "관리되는 nginx를 작성했습니다: {{v0}}",
      "t0712": "쓴 가장자리: {{v0}}",
      "t0713": "로컬 nginx -t 실패(proxy_cache_path는 http{} 가능): {{v0}}",
      "t0714": "certId={{v0}} 도메인={{v1}}",
      "t0715": "certId={{v0}} 파일이 존재하지 않습니다: {{v1}}",
      "t0716": "찾을 수 없음 certId={{v0}}",
      "t0717": "dataDir 인증서 {{v0}}",
      "t0718": "로컬 Let’s Encrypt {{v0}}",
      "t0719": "scp 실패 {{v0}}",
      "t0720": "mkdir 실패 {{v0}}",
      "t0721": "certbot 실패: {{v0}}",
      "t0722": "OriginShieldNodeId={{v0}} — 방패",
      "t0723": "{{v0}}: SSH 대상 — SSH 적용(플릿 건너뛰기)",
      "t0724": "플릿은 할 수 없습니다(차단됨={{v0}})— 대기열에 추가 또는 SSH",
      "t0725": "플릿 {{v0}} 에지 — 대기열 ≠ 에이전트 nginx 재로드; 자치령 대표",
      "t0726": "FleetAgentId={{v0}} — 플릿 인큐가 필요합니다(API). 또는 SSH 적용",
      "t0727": "conf를 찾을 수 없습니다: {{v0}}",
      "t0728": "conf 실패: {{v0}}",
      "t0729": "함대 대기열에 넣지 못했습니다: {{v0}}",
      "t0730": "nginx -t 실패: {{v0}}",
      "t0731": "SSH mkdir 실패: {{v0}}",
      "t0732": "scp 실패: {{v0}}",
      "t0733": "원격 새로고침 실패: {{v0}}",
      "t0734": "FleetAgentId={{v0}} — 플릿 대기열 제거 또는 SSH",
      "t0735": "대기열에 추가하지 못했습니다: {{v0}}",
      "t0736": "제거 실패: {{v0}}",
      "t0737": "원격 제거 실패: {{v0}}",
      "t0738": "플릿 퍼지 {{v0}} — 대기열 ≠ 에지 퍼지",
      "t0739": "지역 {{v0}}: 알 수 없는 노드 {{v1}}",
      "t0740": "가중 maxRr={{v0}} ( {{v1}})",
      "t0741": "minHealthyEdges={{v0}} {{v1}} edge —: IP 에지(오프라인)",
      "t0742": "가장자리 {{v0}} — 생략됨",
      "t0743": "프로브 {{v0}}: {{v1}}",
      "t0744": "zoneId={{v0}} ({{v1}})",
      "t0745": "{{v0}} 사용자 관리 {{v1}} — CDN 쓰기 ManagedBy=cdn(할 수 있고 영역을 확인하세요)",
      "t0746": "geo 하위 도메인 {{v0}}: IP — 생략됨",
      "t0747": "access_log {{v0}} ({{v1}} 캐시 상태 토큰)",
      "t0748": "로그 읽기 {{v0}}",
      "t0749": "캐시 디렉터리 {{v0}} {{v1}} 바이트 (아님)",
      "t0750": "캐시 {{v0}}/{{v1}}",
      "t0751": "IPv4가 유효하지 않음: {{v0}}",
      "t0752": "IPv6 유효하지 않음: {{v0}}",
      "t0753": "CDN 노드 {{v0}}",
      "t0754": "HTTP {{v0}} (용){{v1}}",
      "t0755": "HTTP 실패: {{v0}}",
      "t0756": "TCP {{v0}}:443/80은 연결할 수 없습니다.",
      "t0757": "{{v0}}/{{v1}}",
      "t0758": "목록 단위 실패: {{v0}}",
      "t0759": "{{v0}} 서비스 단위",
      "t0760": "단위 {{v0}}",
      "t0761": "{{v0}}바이트",
      "t0762": "저널ctl · {{v0}}",
      "t0763": "진공청소기를 했어요: {{v0}}",
      "t0764": "진공청소 실패: {{v0}}",
      "t0765": "필터: {{v0}}",
      "t0766": "파일 {{v0}} · {{v1}} 바이트 · {{v2}}",
      "t0767": "경로 허용 목록: {{v0}}",
      "t0768": "저널: {{v0}}MB( {{v1}}MB)",
      "t0769": "프로젝트 {{v0}} · {{v1}} 로그(디렉토리)",
      "t0770": "내보냈습니다 {{v0}} ({{v1}})",
      "t0771": "{{v0}} 말고",
      "t0772": "(DB-IP City Lite {{v0}}; 실패)",
      "t0773": "대체 {{v0}}",
      "t0774": ": {{v0}} · {{v1}} · {{v2}} · {{v3}}{{v4}} · ASN {{v5}}",
      "t0775": "파일({{v0}} B), 다운로드 실패",
      "t0776": "{{v0}} 대체(성공)",
      "t0777": "업데이트 {{v0}} ({{v1}} B)",
      "t0778": "업데이트 실패 {{v0}}: {{v1}}{{v2}}",
      "t0779": "발견되지 않은 설정: {{v0}}",
      "t0780": "설정할 수 없음: {{v0}}",
      "t0781": "찾을 수 없음인증서: {{v0}}",
      "t0782": "테스트 실행: systemctl {{v0}}이 아닙니다. add --execute YSK_EXECUTE=1 + 루트를 먼저 실행하세요.",
      "t0783": "일자리를 찾을 수 없습니다 {{v0}}",
      "t0784": "웹 UI: 찾을 수 없음(앱/웹 빌드 또는 YSK_WEB_ROOT 설정)\\n",
      "t0785": "DNS 영역 생성(초안): {{v0}}",
      "t0786": "DNS 영역 생성 실패: {{v0}}",
      "t0787": "메일도메인: {{v0}}",
      "t0788": "maildomainCreate 실패: {{v0}}",
      "t0789": "{{v0}} 크론을 끌 수 있음",
      "t0790": "휴식 {{v0}}/{{v1}} 알았어",
      "t0791": ": {{v0}} {{v1}}",
      "t0792": "설정 {{v0}}. --힘.",
      "t0793": "설정 {{v0}}",
      "t0794": "찾을 수 없음인터페이스 {{v0}}",
      "t0795": "호스트 이름 실패: {{v0}}",
      "t0796": "예쁜 호스트 이름 실패: {{v0}}",
      "t0797": "시간대 실패: {{v0}}",
      "tScoreFrom": "점수={{score}} from={{from}}",
      "appliedTag": "(적용된)",
      "writtenTag": "(작성만 가능)",
      "selfDestMissing": "실행 중인 설치 디렉터리를 찾을 수 없습니다(systemd ExecStart 또는 cli.js)",
      "selfDestUnwritable": "실행 중인 설치 디렉터리에 쓸 수 없습니다 {{v0}}",
      "selfApplied": "{{v0}}을(를) {{v1}}에 적용했습니다",
      "selfVerifyFail": "적용 후 버전 파일에 {{v0}}이(가) 없습니다",
      "selfDownloadFail": "공식 패키지 {{v0}}을(를) 다운로드하거나 압축을 풀 수 없습니다: {{v1}}",
      "selfOverlayFail": "공식 패키지를 실행 중인 디렉터리에 적용하지 못했습니다: {{v0}}",
      "selfUpgradeHint": "패널 적용에 실패했습니다. root로 실행: curl -fsSL https://raw.githubusercontent.com/yanshekki/ysk-server/main/install.sh | bash -s -- --upgrade"
    },
    "tpl": {
      "deleted": "삭제됨 {{name}}",
      "removed": "삭제됨 {{name}}",
      "failedDetail": "실패: {{detail}}",
      "failedColon": "실패: {{detail}}",
      "actionFailed": "{{action}} 실패: {{detail}}",
      "restartFailed": "다시 시작 실패: {{detail}}",
      "chownFailed": "chown 실패: {{detail}}",
      "available": "사용 가능 시간: {{detail}}",
      "supportedNotProbed": "{{name}} 지원 — 아직 조사되지 않음",
      "wrote": "{{path}}를 썼습니다",
      "wroteSettings": "설정 작성 {{path}}",
      "wroteManaged": "관리파일을 작성함 {{path}}",
      "copyFailed": "복사 실패: {{detail}}",
      "copyFailed2": "복사 실패: {{detail}}",
      "reloadFailed": "새로고침 실패: {{detail}}",
      "reloadFailed2": "새로고침 실패: {{detail}}",
      "nginxReloadFailed": "nginx 다시 로드 실패: {{detail}}",
      "nginxTestFailed": "nginx -t 실패: {{detail}}",
      "nginxConfigFailed": "Nginx 구성 확인 실패: {{detail}}",
      "psqlFailed": "psql 실패: {{detail}}",
      "redisCliFailed": "redis-cli 실패: {{detail}}",
      "restartFailed2": "재시작 실패: {{detail}}",
      "missing": "누락됨 {{name}}",
      "project": "프로젝트 {{name}}",
      "logNotFound": "로그를 찾을 수 없음: {{path}}",
      "clusterNotFound": "클러스터를 찾을 수 없음: {{id}}",
      "domainInvalid": "잘못된 도메인: {{domain}}",
      "exported": "내보냈습니다 {{path}}",
      "reenabledLink": "연결이 다시 활성화되었습니다 {{name}}",
      "installed": "설치됨",
      "missingDataDir": "누락된 데이터Dir",
      "installIncomplete": "설치가 완료되지 않았습니다.",
      "noPackages": "패키지 없음",
      "recentlyUpdated": "최근 업데이트됨",
      "needRootRead": "읽으려면 루트가 필요합니다",
      "reenabledPersist": "연결이 다시 활성화됨(재부팅 후에도 유지됨)",
      "runtimeOnlyHint": "(재부팅 후에도 지속되지 않을 수 있습니다. 지속하려면 저장을 사용하세요.)",
      "statusWrittenPartial": "상태: 작성/일부",
      "keyMissingOrNotDeleted": "키가 누락되었거나 삭제되지 않았습니다.",
      "passwordCryptStored": "암호 해시로 저장된 비밀번호(일반 텍스트 아님)",
      "skipInvalidUsername": "잘못된 사용자 이름을 건너뛰었습니다.",
      "digNoAnswer": "발굴: 답변 없음(NXDOMAIN 또는 비어 있음)",
      "ipAddrAddFailed": "IP 주소 추가 실패: {{detail}}",
      "ipAddrDelFailed": "IP 주소 삭제 실패: {{detail}}",
      "connUpWarn": "연결 경고: {{detail}}",
      "ntpEnableFailed": "NTP 활성화 실패: {{detail}}",
      "cancelFailed": "취소 실패: {{detail}}",
      "powerCmdFailed": "전원 명령 실패: {{detail}}",
      "reniceFailed": "레니스가 실패했습니다: {{detail}}",
      "pgIncludeHint": "이 파일을 postgresql.conf에 포함하거나 적용 시 복사하세요.",
      "none": "없음",
      "success": "성공",
      "on": "~에",
      "off": "끄다",
      "continueOp": "계속하다",
      "unavailable": "없는",
      "unknownError": "알 수 없는 오류",
      "noParen": "(없음)",
      "keepOldDb": "(오래된 DB를 유지)",
      "ufwNotDetected": "이 호스트에서는 UFW가 감지되지 않습니다.",
      "fail2banStartHint": "fail2ban 페이지에서 시작하세요",
      "hasExecuteNotRoot": "EXECUTE가 켜져 있지만 프로세스가 루트가 아닙니다.",
      "notRootTarget": "루트가 아님(대상 사용자add/apt가 차단됨)",
      "reapplyDone": "주요 단계 재적용 완료",
      "someFailed": "일부 실패 - 결과 보기",
      "securityDesc": "비밀번호, TLS, 로컬 제한",
      "yskControlPlane": "YSK 제어 평면",
      "sslDistributeNote": "SSL 배포: 에지의 인증서 ≠ 전체 브라우저 신뢰 체인; dig/curl -vI https://로 확인하세요.",
      "autoNever": "자동으로 사용하지 않음",
      "autoManualEmergency": "수동 비상에만 해당",
      "probeMech": "공용 TCP, 패널 요청/분, TCP 사용 중, fall2ban, UFW",
      "probeTunable": "임계값 높이기/낮추기",
      "priorityBlockers": "{{count}} 차단기 주소 먼저: {{list}}",
      "readinessNotProduction": "준비 상태가 프로덕션 준비 상태가 아닙니다: {{list}}",
      "noRestart": "다시 시작하지 않음",
      "cityPolicyOff": "(도시 정책 꺼짐)",
      "pidStarted": "프로세스 시작 pid={{pid}} {{extra}}",
      "pidUser": "(사용자={{user}})",
      "pidDegraded": "(타락한)",
      "killFailed": "kill -s {{sig}} 실패: {{detail}}",
      "routeAdded": "경로 추가 {{dst}}{{via}}{{dev}}",
      "dnsWritten": "{{conn}} 작성: DNS {{dns}}{{search}}",
      "peerInstalled": "{{dest}}{{restart}}에 설치됨"
    },
    "installedTool": "설치됨(도구)",
    "cron": {
      "preserveHostLines": "{{count}} YSK가 아닌 호스트 crontab 라인이 보존됩니다(전체 삭제 아님).",
      "noHostLinesOrEmpty": "추가 비YSK 호스트 crontab 행이 없습니다(또는 비어 있음).",
      "installReplacesYskOnly": "YSK 표시 작업만 업데이트를 설치하십시오. 다른 호스트 작업은 병합되어 유지되었습니다.",
      "hostScanNeedRoot": "다른 사용자의 crontab을 읽으려면 제어 평면이 루트로 필요합니다. 프로세스 사용자의 crontab만 나열됩니다.",
      "hostScanSkipUser": "건너뛴 사용자 {{user}} (권한 없음)",
      "hostUserInvalid": "잘못된 crontab 사용자입니다.",
      "hostScheduleInvalid": "호스트 크론 일정이 잘못되었습니다.",
      "hostLineNotJob": "그 crontab 라인은 직업이 아닙니다.",
      "hostLineMissing": "일치하는 crontab 행이 없습니다(호스트 crontab이 변경되었을 수 있음).",
      "hostLineDuplicate": "해당 직업 라인은 {{count}}번 나타납니다. 먼저 하나의 고유한 줄을 편집하세요.",
      "hostReadFailed": "crontab을 읽을 수 없습니다: {{detail}}",
      "hostWriteFailed": "crontab 쓰기 실패: {{detail}}",
      "hostRewriteNeedExecute": "호스트 crontab 줄을 작성하려면 루트와 YSK_EXECUTE=1이 필요합니다. 미리보기만 가능합니다.",
      "hostRewriteNeedRoot": "다른 사용자의 crontab을 편집하려면 제어 평면이 루트로 필요합니다.",
      "hostPreview": "다음 줄: {{line}}",
      "hostPreviewDelete": "다음: 해당 줄을 제거합니다.",
      "hostRewritten": "{{user}}에 대한 crontab을 작성했습니다.",
      "hostRunNeedExecute": "호스트 cron 명령을 실행하려면 YSK_EXECUTE=1이 필요합니다.",
      "hostRan": "호스트 cron 명령을 {{user}}로 실행했습니다.",
      "hostAdoptNeedExecute": "패널에 호스트 라인을 채택하려면 YSK_EXECUTE=1이 필요합니다(그렇지 않으면 설치가 중복됩니다).",
      "hostAdopted": "# ysk:{{id}} 태그가 붙은 호스트 라인이 패널에 등록되었습니다.",
      "hostConfirmMismatch": "확인은 명령과 일치해야 합니다.",
      "hostAdoptOnlyInstallUser": "crontab 설치 쓰기(루트/이 프로세스 사용자)에 대해서만 패널에 들어가십시오. 설치 시 다른 사용자가 중복됩니다.",
      "hostAdoptEnableFirst": "패널에 넣기 전에 호스트 라인을 활성화하십시오.",
      "hostPercentNewline": "crontab은 이스케이프되지 않은 %를 개행 문자로 처리합니다. 날짜 형식을 \\%Y로 작성합니다(또는 %를 사용하지 않음)."
    },
    "dbBrowser": {
      "pmaInstalled": "phpMyAdmin이 {{path}}에 설치됨",
      "pmaConfigWritten": "phpMyAdmin 구성 및 tmp 작성(쿠키 인증, HTTPS 권장)",
      "pmaExtractFailed": "phpMyAdmin 다운로드/추출 실패: {{detail}}",
      "projectCreated": "프로젝트 생성됨 {{id}} ({{name}})"
    },
    "firewallAllow": {
      "already": "{{port}}/{{proto}}{{from}}: 이미 허용됨",
      "partial": "부분: {{ok}} 확인, {{fail}} 실패",
      "fromLabel": "{{from}}부터"
    },
    "firewallDeleteByComment": {
      "removed": "{{n}} 방화벽 규칙 일치 {{prefix}} 삭제됨",
      "none": "일치하는 방화벽 규칙이 없습니다 {{prefix}}"
    },
    "serviceExposure": {
      "needsDecision": "{{service}}: 이 서비스를 네트워크에 노출할지 확인",
      "private": "{{service}}: 비공개로 유지됨(공용 방화벽은 허용되지 않음)",
      "restrictedEmpty": "제한 모드에는 허용된 IP/CIDR이 하나 이상 필요합니다.",
      "badCountry": "잘못된 국가 코드: {{cc}}",
      "zoneDownloadFail": "{{cc}}에 대한 국가 영역 다운로드 실패: {{detail}}",
      "zoneEmpty": "{{cc}}의 국가 영역이 비어 있습니다.",
      "zoneDownloaded": "{{cc}}에 대한 {{n}} CIDR 다운로드됨",
      "zoneMissing": "{{cc}}에 대한 영역 파일 없음 — geoip/country-zones 아래에 배치하거나 다운로드 허용",
      "zoneCidrCap": "국가 CIDR 목록은 {{n}} 항목으로 제한됩니다.",
      "geoNeedExecute": "국가 허용 목록에는 YSK_EXECUTE가 필요합니다.",
      "geoNeedRoot": "국가 허용 목록에는 루트가 필요합니다.",
      "geoNoCidrs": "로드된 국가 CIDR이 없습니다. 지역 허용 목록을 적용할 수 없습니다.",
      "ipsetMissing": "ipset이 설치되지 않음 - 국가 허용 목록을 건너뛰었습니다.",
      "ipsetApplyFail": "ipset/iptables 적용 실패: {{detail}}",
      "ipsetApplied": "국가 허용 목록 세트 {{set}}({{countries}}, {{n}} CIDR)",
      "ipsetCleared": "국가 IP셋 삭제됨 {{set}}",
      "geoBestEffort": "국가 필터링은 최선의 노력(ipset)입니다. 클라우드 보안 그룹은 별개입니다."
    },
    "goLive": {
      "deployIncomplete": "goLive: 배포가 완료되지 않았습니다",
      "deployFailed": "goLive 배포 실패: {{detail}}",
      "publishIncomplete": "goLive: 게시가 완료되지 않았습니다",
      "publishFailed": "goLive 게시 실패: {{detail}}"
    },
    "ops": {
      "projectNameExists": "프로젝트 이름이 이미 존재합니다: {{name}}",
      "sslNotReady": "SSL이 준비되지 않았습니다. {{domain}}에 대한 인증서가 없습니다.",
      "sslNotReadyDetail": "SSL이 준비되지 않음: {{domain}}(패널 SSL 또는 Let's Encrypt 라이브 경로)에 대한 인증서가 없습니다.",
      "sslGoToPage": "SSL에서 인증서를 발급하거나 업로드한 다음 + SSL을 게시하세요.",
      "sslRejectWrite": "nginx -t 실패를 방지하기 위해 SSL nginx conf 쓰기를 거부했습니다.",
      "installAborted": "설치가 중단되었습니다(클라이언트 연결이 끊겼거나 취소되었습니다).",
      "phpPackagesPartialFail": "일부 PHP 패키지가 실패했습니다: {{list}} (핵심 CLI는 계속 작동할 수 있음)",
      "pdnsBindConflict": "PowerDNS는 0.0.0.0:53(사용 중)을 바인딩할 수 없습니다. 종종 systemd-resolved와 충돌합니다. 공용 IP를 바인딩합니다(패널: PowerDNS 수정)."
    },
    "webmail": {
      "notInstalled": "웹메일이 설치되지 않았습니다. 다운로드를 활성화하고 다시 실행하세요.",
      "needExecute": "웹메일을 다운로드하려면 시스템 변경 권한(YSK_EXECUTE)과 아웃바운드 네트워크가 필요합니다.",
      "needExecuteBeforeCreate": "EXECUTE가 활성화될 때까지 절반 프로젝트를 생성하지 않습니다.",
      "notRoundcubeTree": "문서 루트는 전체 Roundcube 트리가 아닙니다(여전히 php-hello일 수 있음).",
      "notSnappyTree": "문서 루트가 전체 SnappyMail 트리가 아닙니다.",
      "installIncompleteHint": "프로젝트는 존재하지만 웹메일이 불완전합니다. EXECUTE를 활성화한 다음 재설치/업그레이드하세요.",
      "extractFailed": "{{tool}} 다운로드 또는 추출 실패: {{detail}}",
      "roundcubeInstalled": "라운드큐브 설치 {{version}} → {{path}}",
      "roundcubeReuse": "설치된 Roundcube 재사용 → {{path}}",
      "roundcubeConfigWritten": "Roundcube 구성 작성(SQLite, IMAP 993, SMTP 587)",
      "snappyInstalled": "SnappyMail 설치 {{version}} → {{path}}",
      "snappyReuse": "설치된 SnappyMail 재사용 → {{path}}",
      "snappyAdminHint": "처음 열 때 SnappyMail 관리자 설정을 완료하고 로컬 IMAP 도메인을 추가하세요.",
      "imapSmtpHint": "IMAP {{imap}}:993 · SMTP {{smtp}}:587 (전체 메일함 주소와 비밀번호로 로그인)",
      "projectCreated": "PHP 프로젝트 {{name}} ({{tool}}, {{id}}) 생성",
      "domainRequired": "웹메일 호스트 이름은 필수 항목입니다.",
      "openHint": "사서함 주소와 비밀번호로 로그인하세요. 가동 후 프로젝트 또는 이 페이지에서 URL을 엽니다.",
      "sslHint": "{{domain}}에 Let’s Encrypt 권장(SSL 페이지)",
      "bootstrapLegacyHint": "Bootstrap에는 프로젝트 서비스가 없었습니다. dataDir 뼈대를 작성했습니다. PHP 프로젝트 경로에 대한 패널에서 만들기 및 라이브 이동을 사용하세요.",
      "ssoPluginInstalled": "SSO 플러그인 설치됨 → {{path}}",
      "forceHttpsOn": "Roundcube force_https 활성화됨(HTTPS 필요)",
      "forceHttpsOff": "force_https off — SSL 이후 강제 HTTPS를 선택한 상태로 다시 설치",
      "reinstallHint": "프로젝트가 존재합니다. 재설치/업그레이드 또는 재설치:true를 사용하세요.",
      "reinstalling": "프로젝트에 웹메일 재설치 {{name}} ({{id}})",
      "reinstallStart": "재설치/업그레이드 시작(버전 핀 {{version}}, 프로젝트 {{id}})",
      "projectNotFound": "웹메일 프로젝트를 찾을 수 없습니다.",
      "snappyAdminOnce": "SnappyMail 관리자 {{user}} — 비밀번호가 한 번 표시됨(결과/ONCE 파일 참조)",
      "snappyAdminPassword": "SnappyMail 관리자 비밀번호(지금 복사): {{password}}",
      "publicHtmlStub": "문서 루트에는 여전히 SnappyMail/RainLoop 패키지 스텁이 있습니다. HTTP는 public_html 앱 트리를 제공해야 합니다. 이 수정 후 웹메일을 다시 설치하세요.",
      "goLiveFailed": "웹메일 파일이 설치되었지만 프로젝트 가동/배포 상태에 실패했습니다. 세부정보를 확장하세요.",
      "forceHttpsNeedsSsl": "Roundcube force_https가 켜져 있습니다. 공개 HTTPS를 사용하기 전에 이 호스트 이름에 대해 SSL을 바인딩하거나 그때까지 강제 HTTPS를 선택 취소하세요.",
      "roundcubePublicHtmlDocRoot": "Roundcube public_html로 설정된 HTTP 문서 루트({{path}})",
      "docRootUpdated": "프로젝트 문서 루트가 {{path}}로 업데이트되었습니다.",
      "docRootUpdateFailed": "프로젝트 문서 루트를 업데이트할 수 없습니다: {{detail}}",
      "sqliteSchemaReady": "Roundcube SQLite 스키마가 초기화되었습니다.",
      "sqliteSchemaFailed": "Roundcube SQLite 스키마 초기화 실패: {{detail}}",
      "snappyFullEmailLogin": "사서함 로그인은 전체 이메일(user@domain)을 사용해야 합니다. 짧은 로컬 부분이 비활성화되었습니다",
      "removedBogusPublicHtml": "웹메일이 잘못된 트리에서 제공되지 않도록 남은 public_html(php-hello)을 제거했습니다.",
      "snappyDocRoot": "SnappyMail HTTP 문서 루트: {{path}}",
      "phpHelloStillPresent": "사이트 루트로 왼쪽 php-hello(YSK PHP OK)를 설치합니다. 웹메일 추출이 이를 대체하지 않았습니다."
    },
    "vpn": {
      "needInstall": "설치 {{engine}}",
      "openvpnComing": "OpenVPN 전체 경로는 다음 릴리스를 위해 준비되었습니다.",
      "outlineComing": "개요/Shadowsocks는 이후 릴리스를 위해 준비되었습니다.",
      "needExecuteServer": "VPN 서버 설정에는 루트 및 YSK_EXECUTE=1이 필요합니다.",
      "serverStopped": "{{engine}} 서버가 중지되었습니다.",
      "serverStopFailed": "중지할 수 없습니다. {{engine}} 서버: {{detail}}",
      "needExecuteClient": "VPN 클라이언트 연결에는 루트 및 YSK_EXECUTE=1이 필요합니다.",
      "keygenFailed": "WireGuard 키 생성에 실패했습니다(wg가 설치되어 있습니까?).",
      "serverKeysCreated": "WireGuard 서버 키가 생성되었습니다.",
      "applyFailed": "WireGuard 구성을 적용하지 못했습니다: {{detail}}",
      "serverActive": "WireGuard 서버 적용(UDP {{port}}).",
      "serverMissing": "WireGuard 서버가 초기화되지 않았습니다. 먼저 서버 시작을 실행하세요.",
      "peerCreated": "«{{name}}» 클라이언트가 생성되었습니다.",
      "peerNotFound": "클라이언트를 찾을 수 없습니다.",
      "peerRemoved": "클라이언트가 제거되었습니다.",
      "peersSynced": "실행 중인 WireGuard 인터페이스에 피어 목록이 다시 로드되었습니다.",
      "setEndpointHint": "모바일 클라이언트가 이 서버에 연결할 수 있도록 공용 끝점(호스트:포트)을 설정합니다.",
      "invalidConf": "Conf에는 [Interface] 및 PrivateKey가 포함되어야 합니다.",
      "clientImported": "프로필 «{{name}}»을 가져왔습니다.",
      "profileNotFound": "클라이언트 프로필을 찾을 수 없습니다.",
      "clientUpFailed": "연결 실패: {{detail}}",
      "clientUp": "연결됨: {{name}}",
      "clientDown": "연결 끊김: {{name}}",
      "clientDeleted": "삭제된 프로필: {{name}}",
      "autostartOn": "자동 시작 날짜: {{name}}",
      "autostartOff": "자동 시작 꺼짐: {{name}}",
      "ovpnPkiStart": "OpenVPN PKI 생성 중(DH 매개변수의 경우 1분 정도 걸릴 수 있음)…",
      "ovpnPkiDone": "OpenVPN PKI가 준비되었습니다.",
      "ovpnServerActive": "OpenVPN 서버가 적용되었습니다({{proto}} {{port}}).",
      "invalidOvpn": "OpenVPN conf에는 클라이언트/원격 지시문이 포함되어야 합니다.",
      "ssHonest": "전체 개요 관리자가 아닌 Shadowsocks-libev ss-server를 사용합니다.",
      "ssKeysCreated": "Shadowsocks 서버 비밀번호가 생성되었습니다.",
      "ssServerActive": "Shadowsocks 서버가 적용되었습니다(포트 {{port}}).",
      "ssSharedPassword": "모든 ss:// 레이블은 하나의 서버 비밀번호를 공유합니다(서버를 다시 확인하여 교체).",
      "ssPackageYielded": "YSK가 이 호스트에서 공개 {{port}}를 바인딩할 수 있도록 Debian Shadowsocks-libev 기본 장치를 중지/마스킹했습니다.",
      "ssEndpointAutofilled": "공개 엔드포인트가 {{endpoint}}로 설정되었습니다.",
      "ssClientsRewritten": "현재 엔드포인트/비밀번호에 대한 {{n}} 클라이언트 ss:// URI를 다시 생성했습니다.",
      "ssUfwOpened": "Shadowsocks용 UFW {{port}}/tcp+udp를 열었습니다(ufw가 설치된 경우).",
      "endpointAutofilled": "공개 엔드포인트가 {{endpoint}}로 설정되었습니다.",
      "ovpnClientsRewritten": "다운로드/QR을 위해 {{n}} OpenVPN 클라이언트 프로필에서 원격을 업데이트했습니다.",
      "accessFullNat": "전체 인터넷 사용 가능(IP 전달 + NAT)",
      "accessLanOnly": "LAN 전용 모드(인터넷 NAT 없음)",
      "accessReconnectHint": "이미 연결된 클라이언트는 새 경로를 선택하려면 다시 연결해야 합니다.",
      "ovpnNatDurable": "재부팅을 위해 OpenVPN NAT/forward가 설치되었습니다(systemd ExecStartPost).",
      "clientFullTunnelProtect": "전체 터널 클라이언트가 감지되었습니다(AllowedIPs 0.0.0.0/0). 패널/SSH 응답이 LAN NIC에 유지되도록 호스트 보호를 적용했습니다.",
      "clientFullTunnelHint": "팁: 분할 액세스의 경우에만 conf에서 AllowedIP를 VPN/LAN CIDR(0.0.0.0/0 아님)로 설정한 다음 다시 연결하세요."
    },
    "vnc": {
      "needInstall": "설치 {{stack}}",
      "needExecute": "YSK_EXECUTE가 비활성화되었습니다. 패키지를 설치하거나 Linux 사용자를 프로비저닝할 수 없습니다.",
      "needRoot": "루트로 실행되지 않음 — 시스템 useradd 및 vncserver 적용이 차단됩니다.",
      "hostnameResolves": "호스트 이름 {{hostname}}이 해결됩니다.",
      "hostnameUnresolvable": "이 호스트는 자체 호스트 이름({{hostname}})을 확인할 수 없습니다. /etc/hosts가 수정될 때까지 VNC 세션 시작이 실패합니다.",
      "hostnameAlreadyResolves": "호스트 이름 {{hostname}}은 이미 확인되었습니다 — /etc/hosts는 변경되지 않았습니다.",
      "hostnameWouldAppend": "/etc/hosts에 추가합니다: {{line}}",
      "hostnameAppended": "/etc/hosts에 추가됨: {{line}}",
      "hostnameAppendFailed": "/etc/hosts에 쓸 수 없습니다: {{detail}}",
      "hostnameAliasPresent": "호스트 이름 {{hostname}}은 이미 정확한 /etc/hosts 별칭이므로 다시 추가되지 않습니다.",
      "hostnameStillUnresolvable": "/etc/hosts를 작성했지만 {{hostname}}가 여전히 해결되지 않습니다. nsswitch 호스트에 파일이 포함되어 있는지 확인하세요.",
      "skipStartHostname": "디스플레이가 시작되지 않았습니다. 먼저 호스트 이름 확인을 수정하세요.",
      "novncAssetsOnly": "noVNC 웹 자산이 발견되었습니다. websockify 바이너리가 아직 없습니다.",
      "viewerNeedExecute": "브라우저 보기를 위해 로컬 VNC 데스크탑을 시작하려면 루트 + YSK_EXECUTE가 필요합니다.",
      "browserSessionReady": "브라우저 VNC 세션 준비됨: {{name}}",
      "clientPathUserReachable": "경로: 사용자가 접근할 수 있는 엔드포인트 — {{name}} → {{target}}(패널을 통한 브라우저)",
      "clientPathServerProxy": "경로: 서버 프록시 — {{name}} → {{target}} (이 서버를 통해 송신)",
      "clientOpenInBrowserHint": "내장된 VNC 클라이언트의 클라이언트 목록에서 \"브라우저에서 열기\"를 사용하십시오.",
      "probeOk": "도달 가능성 정상: 제어 평면이 TCP를 {{target}}로 열 수 있습니다.",
      "probeRefused": "{{target}}에서는 아무것도 듣고 있지 않습니다(연결이 거부됨). 해당 호스트에서 VNC가 실행되고 있습니까?",
      "probeTimeout": "이 서버에서 {{target}} 연결 시간이 초과되었습니다. 방화벽/라우팅을 확인하세요.",
      "probeDns": "호스트 이름 «{{host}}»을 확인할 수 없습니다.",
      "probeNet": "이 서버에서 {{target}}에 대한 네트워크에 연결할 수 없습니다.",
      "probeFailed": "{{target}}에 연결할 수 없음: {{detail}}",
      "probeInvalid": "잘못된 VNC 대상 {{host}}:{{port}}",
      "probeHintUserReachable": "경로는 \"사용자가 접근 가능\"합니다. 이 패널은 공개 호스트에 대해 여전히 TCP를 열어야 합니다(브라우저는 RFB 단독으로 말할 수 없습니다).",
      "probeHintServerProxy": "경로는 \"서버 프록시\"입니다. 이 제어 영역 호스트의 네트워크에서 대상에 연결할 수 있어야 합니다.",
      "connectHostOverride": "서버 프록시: 디스플레이 호스트 {{display}}, TCP는 {{connect}}에 연결",
      "probeConnectHostHint": "표시 대상 {{display}}, 프로브/연결 주소 {{connect}}(연결-호스트 재정의).",
      "accountNotFound": "VNC 계정을 찾을 수 없습니다",
      "accountExists": "이 이름 또는 Linux 사용자를 가진 VNC 계정이 이미 존재합니다.",
      "accountCreated": "VNC 계정 생성 {{name}} ({{user}}, 디스플레이 :{{display}})",
      "accountUpdated": "업데이트된 VNC 계정 {{name}}",
      "accountDeleted": "삭제된 VNC 계정 {{name}}",
      "invalidName": "잘못된 계정 이름",
      "invalidGeometry": "잘못된 해상도(예: 1920x1080 사용)",
      "displayBusy": "디스플레이 번호가 유효하지 않거나 이미 사용 중입니다.",
      "displayExhausted": "범위에 남은 무료 VNC 디스플레이 번호가 없습니다.",
      "userWrittenOnly": "Linux 사용자 {{user}}는 제어 플레인에만 기록됩니다(useradd하려면 루트 + YSK_EXECUTE 필요)",
      "userExists": "Linux 사용자 {{user}}가 이미 존재합니다.",
      "userCreated": "Linux 사용자 생성 {{user}}",
      "useraddFailed": "{{user}}에 대한 사용자 추가 실패: {{detail}}",
      "userdelBlocked": "루트 + YSK_EXECUTE 없이 Linux 사용자 {{user}}를 제거할 수 없습니다.",
      "userAlreadyGone": "Linux 사용자 {{user}} 이미 부재 중",
      "userdelFailed": "{{user}}에 대한 userdel 실패: {{detail}}",
      "userdelLeftover": "패널 계정이 제거되었지만 Linux 사용자 {{user}}는 여전히 호스트에 있습니다. 사용자 또는 호스트에서 제거하십시오.",
      "userDeleted": "Linux 사용자를 제거했습니다 {{user}}",
      "passwordTooShort": "VNC 비밀번호는 6자 이상이어야 합니다.",
      "passwordWrittenOnly": "제어 플레인에만 표시된 비밀번호(vncpasswd의 경우 루트 + YSK_EXECUTE 필요)",
      "passwordFailed": "VNC 비밀번호 쓰기 실패: {{detail}}",
      "passwordNeedTiger": "vncpasswd를 찾을 수 없습니다. 비밀번호를 설정하기 전에 TigerVNC(tigervnc-standalone-server)를 설치하세요.",
      "passwordSet": "{{user}}에 대한 VNC 비밀번호 설정",
      "passwordUpdated": "{{name}}의 비밀번호가 업데이트되었습니다.",
      "passwordMetaOnly": "비밀번호는 시스템 적용 전까지 메타로만 저장됩니다.",
      "xstartupWrittenOnly": "xstartup이 홈에 기록되지 않음(루트 + YSK_EXECUTE 필요)",
      "xstartupWriteFailed": "~/.vnc/xstartup({{detail}})을 쓰지 못했습니다. 루트 + YSK_EXECUTE가 필요합니다.",
      "xstartupFailed": "디스플레이에서 VNC xstartup/desktop이 실패했습니다 :{{display}} ({{detail}}). XFCE 프로필을 선호하거나 터미널을 설치하세요.",
      "xstartupWritten": "{{path}}를 썼습니다",
      "sessionStartBlocked": "루트 + YSK_EXECUTE 없이 VNC 세션을 시작할 수 없습니다.",
      "sessionStartFailed": "디스플레이를 시작하지 못했습니다 :{{display}}: {{detail}}",
      "sessionStartHostname": "표시 시작 실패:{{display}}: 이 호스트는 자체 호스트 이름을 확인할 수 없습니다. /etc/hosts에 호스트 이름을 추가하거나 DNS를 수정한 다음 세션을 다시 시작합니다.",
      "sessionStarted": ":{{display}}(포트 {{port}})에서 {{user}}에 대한 VNC를 시작했습니다.",
      "sessionStartUnverified": "시작 명령이 OK를 반환했지만 RFB 포트가 아직 수신 중이 아닙니다.",
      "sessionAlreadyRunning": "VNC는 이미 :{{display}}(포트 {{port}})에서 {{user}}에 대해 실행 중입니다.",
      "vncserverMissing": "TigerVNC 서버 래퍼(tigervncserver/vncserver)가 설치되지 않았습니다. 설치 탭을 사용하세요.",
      "vncserverWrapperMissing": "{{found}}을 찾았지만 Tigervncserver/vncserver 래퍼가 없습니다. Tigervnc-standalone-server를 다시 설치하세요.",
      "vncPackageWithoutBin": "Tigervnc-standalone-server 패키지가 설치되었지만 시작 스크립트가 누락되었습니다. 패키지를 다시 설치하세요.",
      "needPasswordBeforeStart": "시작하기 전에 VNC 비밀번호(≥6자)를 설정하세요.",
      "displayPortBusy": "디스플레이 :{{display}} → 포트 {{port}}가 이미 사용 중입니다. 다른 세션을 중지하거나 다른 디스플레이를 선택하세요.",
      "sessionStartPermission": "표시 시작 권한이 거부되었습니다 :{{display}}",
      "staleLockCleared": "표시용 오래된 잠금을 지웠습니다 :{{display}}, 재시도 중",
      "sessionStopBlocked": "루트 + YSK_EXECUTE 없이 VNC 세션을 중지할 수 없습니다.",
      "sessionStopped": "{{user}} 디스플레이에 대한 VNC가 중지되었습니다 :{{display}}",
      "linuxUserKept": "시스템에 Linux 사용자 {{user}} 유지",
      "novncStartBlocked": "루트 + YSK_EXECUTE 없이 noVNC를 시작할 수 없습니다.",
      "novncAlreadyRunning": "noVNC는 이미 포트 {{port}}에서 실행 중입니다.",
      "novncStartFailed": "websockify를 시작하지 못했습니다: {{detail}}",
      "novncStarted": "127.0.0.1에서 수신 중인 noVNC:{{httpPort}} → RFB {{rfbPort}}",
      "novncNotRunning": "noVNC가 실행되고 있지 않았습니다.",
      "novncStopBlocked": "루트 + YSK_EXECUTE 없이 noVNC를 중지할 수 없습니다.",
      "novncStopped": "포트 {{httpPort}}에서 noVNC를 중지했습니다.",
      "directNeedsAllBind": "RFB 바인딩은 localhost입니다. 직접 클라이언트는 터널 없이 외부에서 연결할 수 없습니다.",
      "directOpenFirewall": "다이렉트 클라이언트를 위해 방화벽에서 TCP {{port}} 열기",
      "viaServerReady": "noVNC가 작동 중입니다. 로컬 URL을 열거나 SSH 터널을 사용하세요.",
      "viaServerStartFirst": "서버를 통해 브라우저 액세스를 활성화하려면 noVNC를 시작하세요.",
      "viewTicketIssued": "단기 관람권을 발행했습니다",
      "invalidPort": "잘못된 포트 번호",
      "firewallNeedExecute": "UFW 포트를 열려면 YSK_EXECUTE가 필요합니다.",
      "firewallNeedRoot": "UFW 포트를 열려면 루트가 필요합니다.",
      "firewallFailed": "ufw 허용 실패: {{detail}}",
      "firewallOpened": "UFW는 TCP {{port}}를 허용했습니다.",
      "clientInvalid": "클라이언트 이름과 호스트는 필수 항목입니다.",
      "clientNotFound": "클라이언트 프로필을 찾을 수 없습니다.",
      "clientUpBlocked": "루트 + YSK_EXECUTE 없이 VNC 클라이언트에 연결할 수 없습니다.",
      "clientUpFailed": "클라이언트 연결 실패: {{detail}}",
      "clientViaServerUp": "클라이언트 {{name}} 패널을 통해 브라우저 VNC를 사용할 수 있습니다(기존 websockify 메모는 폐기됨). 브라우저에서 열기를 통해 대상에 계속 접근할 수 있습니다.",
      "clientDirectUp": "클라이언트 {{name}}는 브라우저 내 VNC만 사용합니다(호스트 vncviewer 경로가 제거됨). 브라우저에서 열기 → {{target}}.",
      "clientNeedViewer": "데스크톱 vncviewer는 선택 사항입니다. 내장된 VNC 클라이언트에는 브라우저에서 열기를 사용하세요.",
      "clientDownBlocked": "루트 + YSK_EXECUTE 없이 연결을 끊을 수 없습니다.",
      "clientDown": "연결이 끊긴 클라이언트 {{name}}",
      "clientDeleted": "고객 프로필이 삭제되었습니다.",
      "sessionStartCwd": "VNC 시작 실패: 세션 사용자가 작업 디렉터리에 액세스할 수 없습니다(표시 :{{display}}). HOME에서 시작하여 수정되었습니다.",
      "desktopRestarted": "데스크톱 프로필이 적용되고 세션이 다시 시작되었습니다({{desktop}}). VNC/noVNC를 다시 연결합니다.",
      "desktopNeedsStart": "데스크탑 프로필 {{desktop}}가 xstartup에 기록되었습니다. 신청하려면 세션을 시작하세요.",
      "linuxUserRolledBack": "VNC 비밀번호 실패 후 남은 Linux 사용자 {{user}}를 제거했습니다.",
      "linuxUserOrphan": "VNC 비밀번호 실패 후 남은 Linux 사용자 {{user}}를 제거할 수 없습니다."
    },
    "apache": {
      "needServerName": "서버 이름이 필요합니다",
      "siteExists": "사이트가 이미 존재합니다.",
      "siteNotFound": "사이트를 찾을 수 없습니다",
      "wroteConf": "{{path}}를 썼습니다",
      "needExecute": "YSK_EXECUTE 필요",
      "settingsWritten": "Apache 기본값이 기록됨",
      "managedDir": "관리 디렉토리 {{path}}",
      "dryRun": "드라이런",
      "copyFailed": "복사 실패: {{file}}",
      "configOk": "구성테스트 확인",
      "configFailed": "구성 테스트 실패: {{detail}}",
      "reloaded": "Apache가 다시 로드됨",
      "reloadFailed": "새로고침 실패",
      "skippedOrphans": "건너뛴 {{count}} 고아 구성(소유되지 않음)",
      "artifactInvalid": "잘못된 아티팩트 구성 이름",
      "artifactOwned": "Conf {{file}}는 프로젝트 또는 독립 실행형 사이트에서 소유합니다.",
      "artifactNotFound": "아티팩트 구성을 찾을 수 없습니다: {{file}}",
      "artifactRemoveFailed": "{{file}} 제거 실패: {{detail}}",
      "artifactRemoved": "고아 conf 제거 {{file}}",
      "artifactSystemPending": "DataDir이 청소되었습니다. 시스템 Apache 쌍을 비활성화하려면 YSK_EXECUTE/root가 필요합니다.",
      "artifactSystemDisabled": "비활성화된 시스템 사이트 {{site}}",
      "artifactSystemFailed": "시스템 비활성화 실패: {{detail}}",
      "conflictProjectsOnly": "도메인 {{name}}이(가) 여러 프로젝트에서 소유권을 주장하고 있습니다. 프로젝트 도메인을 변경하세요.",
      "cleanupNothing": "제거할 충돌하는 아티팩트 구성이 없습니다.",
      "conflictOwnedKeep": "소유한 conf {{file}} (또한 ServerName {{domain}})",
      "retiredOrphan": "은퇴한 고아 conf {{file}}(ServerName이 {{domain}}와 충돌함)"
    },
    "btTracker": {
      "needExecute": "YSK_EXECUTE가 꺼져 있습니다. 트래커 설치/시작 및 공용 포트에는 시스템 변경 권한이 필요합니다.",
      "startWithoutExecute": "YSK_EXECUTE 없이 추적기 시작 — 듣기가 작동할 수 있습니다. 호스트 방화벽은 열리지 않습니다.",
      "alreadyRunning": "BitTorrent 추적기는 이 프로세스에서 이미 실행 중입니다.",
      "notRunning": "BitTorrent 추적기가 실행되고 있지 않습니다.",
      "started": "포트 {{port}}에서 수신 대기하는 BitTorrent 추적기.",
      "startFailed": "추적기 시작 실패: {{detail}}",
      "stopped": "BitTorrent 추적기가 중지되었습니다.",
      "maxSeeds": "최대 동시 시드에 도달했습니다({{n}}).",
      "seedStarted": "파종 공유 {{id}}.",
      "seedStopped": "시드 공유를 중지했습니다.",
      "seedPending": "시드가 아직 준비되지 않았습니다. 추적기를 시작하고 필요한 경우 YSK_EXECUTE를 확인하세요.",
      "notSeeding": "이 공유는 현재 제어 영역에 의해 시드되지 않습니다.",
      "btNeedsTracker": "BT 공유에는 실행 중인 추적기가 필요합니다. 파일 → BT Tracker를 열고 시작하세요.",
      "restoreTrackerFailed": "부팅 복원 중에 BT 추적기를 시작하지 못했습니다.",
      "restoreDone": "BT 복원: 시드됨 {{seeded}}/{{attempted}} (실패 {{failed}})",
      "workerMissing": "분리된 작업자 스크립트가 누락되었습니다. 프로세스 중 시작됨(이 프로세스와 함께 종료됨)",
      "startedDetached": "BT 추적기 분리 작업자 시작됨(pid {{pid}}, 포트 {{port}})",
      "runningDetached": "분리된 작업자로 실행되는 추적기(pid {{pid}})",
      "jobQueued": "BT 토렌트 생성 대기 중(큰 공유)",
      "jobRunning": "BT 토렌트 생성 실행 중",
      "libraryAdded": "WebTorrent 라이브러리에 {{name}}를 추가했습니다.",
      "libraryInspectFailed": "해당 .torrent 또는 자석을 읽을 수 없습니다.",
      "libraryDup": "해당 토렌트는 이미 라이브러리에 있습니다.",
      "libraryDestBad": "저장 폴더는 유효한 파일 경로가 아닙니다.",
      "libraryTorrentTooBig": ".torrent 파일이 8MiB보다 큽니다.",
      "libraryNotFound": "라이브러리 항목을 찾을 수 없습니다.",
      "libraryPaused": "일시중지됨",
      "libraryResumed": "재개됨",
      "libraryRemoved": "라이브러리에서 삭제됨",
      "libraryFilesRemoved": "다운로드한 파일을 삭제했습니다.",
      "libraryRestoreDone": "라이브러리 복원: 시작됨 {{started}}/{{attempted}}(실패함 {{failed}})",
      "applyTrackersDone": "{{n}} 실시간 발표 슬롯에 추가 추적기를 적용했습니다.",
      "libraryNeedServe": "저장되었습니다. WebTorrent가 다운로드하거나 시드할 수 있도록 패널(ysk-serverserv)을 엽니다.",
      "libraryDestIsFile": "{{name}}이라는 폴더를 만들 수 없습니다. 해당 이름의 파일이 이미 존재합니다.",
      "librarySeedMissing": "해당 폴더에 시드할 일치하는 파일이 없습니다.",
      "libraryWaitingPeers": "동료를 기다리고 있습니다. 파일이 이미 이 호스트에 있는 경우 다시 추가하고 시드-기존을 선택합니다."
    },
    "migrate": {
      "orphanConfirm": "삭제를 확인하려면 남은 홈 경로를 정확하게 입력하세요.",
      "orphanStillInStore": "그 집은 여전히 ​​상점의 프로젝트에 속해 있습니다.",
      "orphanMissing": "디스크에 없는 경로: {{path}}",
      "orphanNeedExecute": "남은 {{path}}을 제거하겠습니다. YSK_EXECUTE=1이 필요합니다.",
      "orphanRmFailed": "남은 집을 제거할 수 없습니다: {{detail}}",
      "orphanRemoved": "남은 프로젝트 홈 {{path}}을 제거했습니다."
    },
    "publicFiles": {
      "liveConf": "적용 중인 Nginx 설정: {{path}}",
      "publicRoot": "공개 루트: {{path}}",
      "confNameStale": "설정 파일 {{file}}이(가) 현재 server_name {{serverName}}과(와) 일치하지 않습니다. 공개 파일을 다시 적용해 이름을 바꾸세요."
    },
    "leftover": {
      "staleCliTitle": "오래된 남은 CLI",
      "staleCli": "남은 CLI가 여전히 존재합니다: {{path}}(실행 중인 제품 {{version}}). PATH가 이를 선호할 수도 있습니다. 제거 방법: rm -f {{path}}",
      "apacheDefaultTitle": "Apache 남은 기본 사이트",
      "apacheDefault": "Apache 000-default는 여전히 활성화되어 있습니다. 이는 스톡 사이트 파일입니다. 이는 Apache가 공개 :80(YSK Apache는 127.0.0.1:8080에서 예상됨)을 수신한다는 의미는 아닙니다. 오버레이는 이를 비활성화하지 않습니다. 패널에서 Apache를 적용하거나 Apache를 호스팅하여 --execute를 적용합니다.",
      "nginxCatchAllTitle": "Nginx 포괄 기능이 누락되었습니다.",
      "nginxCatchAll": "ysk-000-default.conf가 /etc/nginx/conf.d에 없습니다. 알 수 없는 SNI가 실패할 수 있습니다. 프로젝트 nginx-sync --execute를 실행합니다.",
      "vsftpdTitle": "vsftpd 장치 실패",
      "vsftpd": "vsftpd가 실패했습니다. 오버레이는 Listen/listen_ipv6을 다시 작성하지 않습니다. 패널에서 FTP를 적용합니다.",
      "dovecotTitle": "누락된 인증서를 가리키는 Dovecot TLS",
      "dovecot": "Dovecot ssl_cert가 {{path}} 누락을 가리킵니다. 오버레이는 ssl=no를 다시 쓰지 않습니다. 인증서 발급 후 메일 TLS를 적용하거나 이메일 스택을 적용하세요.",
      "overlayDoesNotHeal": "제품 오버레이는 nginx, Apache, vsftpd 또는 Dovecot을 다시 작성하지 않습니다. 나열된 적용 명령(root + YSK_EXECUTE=1)을 사용합니다.",
      "executeStaleCli": "오래된 CLI 저장소를 제거하려면 --execute(root + YSK_EXECUTE=1)를 전달합니다.",
      "executeMissingTls": "--execute(root + YSK_EXECUTE=1)를 전달하여 누락된 인증서 TLS를 비활성화하면 vsftpd/Dovecot을 시작할 수 있습니다.",
      "executeGeneric": "위 결과에 대해 남은 정리를 적용하려면 --execute(root + YSK_EXECUTE=1)를 전달합니다.",
      "staleCliRemoved": "잔여 CLI {{path}}을(를) 제거했습니다.",
      "staleCliRemoveFailed": "잔여 CLI {{path}}을(를) 제거하지 못했습니다: {{detail}}",
      "vsftpdSslOff": "FTPS 인증서 파일이 없어 vsftpd를 ssl_enable=NO로 설정한 뒤 다시 시작했습니다.",
      "dovecotSslOff": "{{path}}이(가) 없어 Dovecot을 ssl=no로 설정한 뒤 다시 시작했습니다.",
      "readinessTitle": "오버레이 후 호스트 남은 부분",
      "readinessClean": "남은 Apache 기본값이 없거나 nginx catch-all이 누락되었거나 vsftpd가 실패했거나 오래된 CLI가 감지되었습니다.",
      "nginxRemoved": "남은 nginx conf {{path}}를 제거했습니다.",
      "nginxNotLeftover": "남은 공개 파일 conf가 아닙니다. 삭제를 거부합니다.",
      "nginxUnusedKeep": "000-기본값은 사용되지 않고 남은 것이 아니며 삭제되지 않습니다.",
      "nginxSystemCopy": "시스템 사본이 아직 존재함: {{path}}. 제거하려면 YSK_EXECUTE + 루트가 필요합니다.",
      "nginxReloadFailed": "{{path}}를 제거한 후 nginx -t 또는 다시 로드에 실패했습니다."
    },
    "defense": {
      "panelReqLabel": "패널 요청/분",
      "panelReqExcluded": "인증된 패널 트래픽 - 여기에 표시되지만 위협 점수에는 포함되지 않습니다.",
      "tcpOk": "TCP {{target}} 도달 가능",
      "tcpFail": "TCP {{target}} 실패",
      "dnsDegraded": "DNS 경로 성능 저하",
      "reqRateHigh": "공개 요청 비율 {{reqs}}/분 ≥ {{threshold}}",
      "ddosHeuristic": "높은 공개 요청률과 에지 프로브 실패"
    }
  },
  "ops": {
    "blocked": {
      "needExecute": "호스트 실행이 꺼져 있습니다. 이 작업은 패널에서 완료할 수 없습니다.",
      "needExecuteShort": "호스트 실행이 활성화되지 않았습니다.",
      "needExecuteBlocked": "차단됨: 호스트 실행이 꺼져 있습니다.",
      "needRoot": "루트 권한이 필요합니다",
      "needExecuteRoot": "YSK_EXECUTE=1 및 루트가 필요합니다.",
      "needExecuteYsk": "YSK_EXECUTE=1 필요",
      "writeOutsideDataDir": "쓰기 차단됨: 호스트 실행이 꺼져 있고 경로가 패널 데이터 디렉터리 외부에 있습니다.",
      "nginxReload": "Nginx를 다시 로드할 수 없습니다: 호스트 실행이 필요합니다.",
      "signal": "신호를 보낼 수 없습니다: 호스트 실행이 필요합니다(YSK_EXECUTE).",
      "signalNote": "실제 킬을 위해서는 YSK_EXECUTE=1이 필요합니다.",
      "renice": "거부할 수 없음: 호스트 실행이 필요함(YSK_EXECUTE)",
      "install": "호스트 실행이 꺼져 있습니다. 패널에서 설치를 완료할 수 없습니다.",
      "update": "호스트 실행이 꺼져 있습니다. 패널에서 업데이트를 완료할 수 없습니다.",
      "panel": "관리 패널에서 이 작업을 완료할 수 없습니다."
    },
    "honesty": {
      "blockedNotOk": "정직한 수정: 차단할 수 없음=true",
      "blockedNotApplied": "정직한 수정: 차단할 수 없습니다. apply_status=적용",
      "okFalseNotApplied": "정직성 수정: ok=false는 apply_status=적용될 수 없습니다."
    },
    "status": {
      "applied": "상태: 적용됨",
      "failed": "상태: 실패",
      "written": "상태: 작성됨",
      "blocked": "상태: 차단됨"
    },
    "notes": {
      "writtenSettings": "기록된 설정",
      "completed": "완전한",
      "partialSuccess": "작업이 부분적으로만 성공함",
      "notInstalled": "미설치",
      "running": "달리기",
      "stopped": "중지됨",
      "unknown": "알 수 없음"
    }
  },
  "opsResult": {
    "title": "결과",
    "status": "상태",
    "port": "포트",
    "url": "URL",
    "pid": "PID",
    "blocked": "실행할 수 없습니다",
    "success": "성공",
    "failed": "실패한",
    "retry": "다시 해 보다",
    "showDetails": "세부정보({{count}})",
    "hideDetails": "세부정보 숨기기",
    "stepBuildOk": "빌드 완료",
    "stepHealthOk": "건강검진 통과",
    "stepProcessStarted": "프로세스가 시작되었습니다.",
    "stepSystemdFallback": "시스템 장치가 준비되지 않음 - pidfile을 통해 프로세스가 시작됨",
    "stepNginxWritten": "Nginx 구성이 작성되었습니다.",
    "stepConfigsSynced": "시스템에 동기화된 구성",
    "stepStoppedOld": "이전 프로세스를 중지했습니다.",
    "stepTuningApplied": "런타임 튜닝 적용됨",
    "stepUnitWritten": "작성된 서비스 단위",
    "stepSystemdStartFailed": "시스템 시작 실패 — 프로세스 대체 사용",
    "portListening": "포트 {{port}}가 수신 중입니다.",
    "portNotListening": "포트 {{port}}가 수신 대기 중이 아닙니다.",
    "httpOk": "HTTP 확인 {{status}}",
    "httpFail": "HTTP 실패: {{detail}}"
  },
  "pageGuide": {
    "missing": "이 페이지에는 아직 도움말 콘텐츠가 없습니다.",
    "missingTitle": "가이드 없음",
    "eyebrow": "설명",
    "canDoTitle": "당신이 할 수 있는 일",
    "workflowTitle": "제안된 흐름",
    "notesTitle": "메모",
    "cliTitle": "CLI 빠른 참조",
    "cliFoot": "전체 플래그를 보려면 ysk-server <command> --help를 실행하거나 문서를 참조하세요.",
    "relatedTitle": "관련된"
  },
  "playbooks": {
    "discover-host": {
      "name": "호스트 검색",
      "description": "읽기 전용 호스트 인벤토리"
    },
    "nginx-health": {
      "name": "Nginx 상태 확인",
      "description": "nginx 서비스 상태 확인"
    },
    "nginx-restart": {
      "name": "Nginx 다시 시작(위험 높음)",
      "description": "승인 후 nginx 다시 시작"
    },
    "local-llm-ops-only": {
      "name": "로컬 LLM 작업만 해당",
      "description": "보호 모드에서 긴급 검색"
    },
    "disk-pressure": {
      "name": "디스크 압력 점검",
      "description": "df를 통한 읽기 전용 디스크 사용량"
    },
    "mail-stack-status": {
      "name": "메일 스택 상태",
      "description": "접미사 + 비둘기장 단위 확인"
    },
    "security-units": {
      "name": "보안 유닛",
      "description": "fail2ban + sshd 상태(읽기 전용)"
    },
    "web-stack-status": {
      "name": "웹 스택 상태",
      "description": "nginx + php-fpm 프로브"
    },
    "emergency-read-only": {
      "name": "긴급 읽기 전용 스윕",
      "description": "보호에 안전한 사실만"
    },
    "backup-health": {
      "name": "백업 준비",
      "description": "백업 창 전에 디스크 확인 + 프로세스 나열"
    },
    "db-stack-status": {
      "name": "데이터베이스 스택 상태",
      "description": "mysql/mariadb/redis/postgres 단위"
    },
    "ssl-nginx-check": {
      "name": "SSL + Nginx 확인",
      "description": "인증서 작업 전 nginx 상태"
    }
  },
  "presetChips": {
    "customPlaceholder": "관습…"
  },
  "projects": {
    "title": "프로젝트",
    "subtitle": "",
    "create": "프로젝트 생성",
    "createHint": "생성 후 세부정보를 열어 리소스를 배포, 게시, 조정하세요.",
    "empty": "아직 프로젝트가 없습니다.",
    "emptyHint": "첫 번째 프로젝트를 만든 후 Nginx 배포 및 게시",
    "emptyFilter": "일치하는 프로젝트가 없습니다.",
    "emptyFilterHint": "검색 지우기 또는 런타임 필터 변경",
    "name": "이름",
    "domain": "도메인(선택사항)",
    "detail": "프로젝트 세부정보",
    "deploy": "배포",
    "deployPhp": "PHP 배포",
    "stop": "멈추다",
    "health": "건강검진",
    "publishNginx": "Nginx 게시",
    "publishNginxSsl": "Nginx + SSL 게시",
    "opsResult": "작업 결과",
    "runtime": "실행 시간",
    "template": "템플릿(선택사항)",
    "templateNone": "- 없음 -",
    "searchPlaceholder": "이름, 도메인, ID 검색…",
    "listDesc": "이 호스트에서 사이트를 관리하세요.",
    "filterAll": "모든 런타임",
    "statTotal": "총",
    "statRunning": "달리기",
    "statDegraded": "타락한",
    "statUnhealthy": "위험한",
    "statStopped": "중지됨/준비됨",
    "statStoppedOnly": "중지됨",
    "statReadyOnly": "준비됨",
    "statPendingOs": "보류 중인 OS",
    "status": {
      "failed": "실패한",
      "failedHint": "배포 또는 상태 확인 실패 - 로그 확인",
      "unhealthy": "위험한",
      "unhealthyHint": "프로세스가 실행되었지만 상태 확인에 실패했습니다.",
      "pendingOs": "OS 사용자 보류 중",
      "pendingOsHint": "시스템 사용자가 프로비저닝되지 않았습니다.",
      "degraded": "실행 중(성능 저하)",
      "degradedHint": "프로세스가 작동 중이지만 전체 프로덕션 모드가 아닙니다(예: 비루트/pidfile)",
      "deploying": "배포 중",
      "published": "게시됨",
      "publishedHint": "Nginx 구성이 작성되었습니다. 프로세스가 별개일 수 있음",
      "running": "달리기",
      "stopped": "중지됨",
      "ready": "준비됨",
      "readyHint": "생성됨 — 시작하려면 배포하세요",
      "unknown": "알 수 없음"
    },
    "checklist": {
      "title": "발사 경로",
      "desc": "트래픽을 처리하려면 다음 단계를 완료하세요.",
      "created": "생성됨",
      "os": "OS 사용자",
      "deploy": "배포",
      "nginx": "엔진엑스",
      "health": "건강"
    },
    "next": {
      "pendingOsTitle": "시스템 사용자가 프로비저닝되지 않았습니다.",
      "provisionOsAction": "시스템 사용자 생성",
      "pendingOsBody": "이 프로젝트에는 아직 격리된 시스템 사용자가 없습니다.",
      "pendingOsActions": "여전히 배포할 수 있습니다. 전체 격리에는 호스트에 대한 관리자 권한이 필요합니다.",
      "deployTitle": "다음: 배포",
      "deployBody": "헤더의 배포를 사용하거나 Git의 배포 탭을 사용하세요.",
      "nginxTitle": "다음: Nginx 게시",
      "nginxBody": "네트워크 탭을 열어 Nginx(SSL 옵션)를 게시하세요."
    },
    "healthDetail": {
      "none": "아직 건강검진이 없습니다",
      "overall": "결과",
      "nginxStatus": "Nginx 상태",
      "nginxReloaded": "Nginx 리로드",
      "httpStatus": "HTTP",
      "latency": "숨어 있음",
      "error": "오류",
      "at": "확인 시간",
      "deployMode": "배포 모드",
      "edgeKind": "가장자리",
      "goLiveOk": "라이브 시작",
      "goLiveAt": "라이브 시작:",
      "degraded": "타락한"
    },
    "railPhp": "PHP / 사이트",
    "railStatic": "정적 사이트",
    "sectionPhpDeploy": "PHP 배포",
    "sectionPhpDeployDesc": "PHP 사이트/풀 작성 및 허용 시 적용",
    "sectionStaticDeploy": "정적 콘텐츠",
    "sectionStaticDeployDesc": "정적 사이트는 파일 + Nginx를 사용합니다. 노드 프로세스가 없습니다.",
    "staticDeployHint": "Git을 통해 콘텐츠를 가져온 다음 네트워크 아래에 Nginx를 게시하세요.",
    "noDomain": "도메인 없음",
    "lastDeploy": "마지막 배포",
    "neverDeployed": "배포되지 않음",
    "created": "생성됨 {{name}}",
    "backToList": "프로젝트로 돌아가기",
    "openUrl": "URL 열기",
    "openUrlNeedDomain": "먼저 도메인을 설정하세요. 브라우저에서 127.0.0.1을 열지 마세요.",
    "needOsUser": "먼저 격리 탭에서 시스템 사용자를 생성합니다.",
    "goIsolation": "격리 탭 열기",
    "homeMissing": "홈 디렉토리가 존재하지 않습니다",
    "homeMissingHint": "인벤토리 마이그레이션과 동일한 라이브 프로브 — 격리에서 시스템 사용자 생성",
    "stopTitle": "이 프로젝트를 중지하십시오(시스템 장치 및 공개 사이트).",
    "deployTitle": "이 프로젝트 배포",
    "httpStatsHint": "이 프로젝트의 액세스 로그에서(마지막 샘플)",
    "httpStatsNone": "아직 프로젝트 액세스 로그가 없습니다.",
    "notFound": "프로젝트를 찾을 수 없습니다",
    "home": "홈 디렉토리",
    "env": "환경",
    "backup": "지원",
    "resources": "자원",
    "quotaUnlimited": "할당량 없음",
    "lastHealth": "마지막 건강",
    "tabOverview": "개요",
    "tabDeploy": "배포",
    "tabApp": "앱",
    "tabNetwork": "네트워크",
    "tabResources": "자원",
    "tabIsolation": "격리",
    "tabLogs": "로그",
    "tabAdvanced": "고급의",
    "tabMore": "더",
    "createGoLive": "생성 후 Nginx 배포 및 게시",
    "createPreferredPort": "고정 포트(옵션)",
    "goLiveOk": "배포 및 게시됨",
    "goLivePartial": "생성됨 배포/게시 미완료",
    "nginxLive": "살다",
    "nginxWritten": "쓴",
    "nginxNeedsDeploy": "배포 필요",
    "nginxFailed": "게시 실패",
    "netEdgeStatus": "엣지 상태",
    "netUpstream": "업스트림",
    "netPortTitle": "프로세스 포트",
    "netCurrentPort": "현재 포트",
    "netPublishTitle": "게시",
    "netConfPreview": "회의",
    "savePublishSsl": "저장 및 게시 + SSL",
    "retryLiveTitle": "라이브 시작이 완료되지 않았습니다.",
    "retryLiveBody": "배포 또는 Nginx 게시가 완료되지 않았습니다. 아래에서 다시 시도해 보세요.",
    "retryDeploy": "배포 재시도",
    "retryPublish": "Nginx 게시 다시 시도",
    "preferredPortRedeployHint": "프로세스가 이 포트를 사용하도록 저장한 후 다시 배포하세요.",
    "railProcess": "프로세스",
    "railNginx": "엔진스",
    "railOs": "OS 사용자",
    "railHealth": "건강",
    "nginxPublished": "구성이 게시되었습니다.",
    "nginxNone": "게시되지 않음",
    "osProvisioned": "시스템 사용자 프로비저닝",
    "osPending": "OS 격리 보류 중",
    "healthOk": "건강한",
    "healthBad": "실패한",
    "healthUnknown": "체크하지 않음",
    "sectionRuntimeDeploy": "런타임 배포",
    "sectionRuntimeDeployDesc": "이 프로젝트 런타임(노드/PHP)에 대한 프로세스를 시작합니다.",
    "sectionGit": "Git 배포",
    "sectionGitDesc": "Git에서 끌어와 재배포",
    "sectionEnv": "환경 변수",
    "sectionEnvDesc": "프로젝트 .env에 KEY=value 행을 작성합니다.",
    "gitUrl": "힘내 URL",
    "gitDeploy": "Git 배포",
    "envFile": "환경(.env)",
    "saveEnv": "환경 저장",
    "sectionNginx": "Nginx 및 SSL",
    "sectionNginxDesc": "사이트 구성 작성 및 적용",
    "domainHint": "더 깔끔한 게시를 위해 생성 시 도메인을 설정하세요.",
    "sectionQuota": "디스크 할당량",
    "sectionQuotaDesc": "홈 디렉터리 크기(MiB) 제한",
    "sectionLimits": "CPU / 메모리",
    "sectionLimitsDesc": "체계화된 한계; 유닛을 적용하기 위해 재배치",
    "quotaMb": "할당량(MiB)",
    "memoryMax": "메모리맥스",
    "cpuQuota": "CPU 할당량 %",
    "setQuota": "할당량 설정",
    "setResources": "자원 한도 저장",
    "sectionLogs": "애플리케이션 로그",
    "sectionLogsDesc": "프로젝트 홈 아래의 최근 로그 파일 추적",
    "viewLogs": "로그 로드",
    "logsEmpty": "아직 로드된 로그가 없습니다.",
    "logsNoFiles": "(아직 로그 파일이 없습니다. 먼저 배포하세요)",
    "sectionAdvanced": "기타 작업",
    "sectionAdvancedDesc": "백업 및 템플릿 콘텐츠",
    "downloadWp": "워드프레스 다운로드",
    "dangerZone": "위험지대",
    "dangerZoneDesc": "삭제는 프로젝트 기록 및 관련 리소스를 제거합니다.",
    "delete": "프로젝트 삭제",
    "confirmStopTitle": "이 프로젝트를 중단하시겠습니까?",
    "confirmStopDesc": "그러면 “{{name}}”에 대한 실행 프로세스가 중지됩니다.",
    "confirmDeleteTitle": "이 프로젝트를 삭제하시겠습니까?",
    "confirmDeleteDesc": "'{{name}}'을 삭제하시겠습니까? 이 작업은 UI에서 취소할 수 없습니다.",
    "close": "닫기",
    "statProjects": "{{count}} 프로젝트",
    "noProjectsShort": "아직 프로젝트가 없습니다.",
    "runtimeStatic": "공전",
    "logsLoadFailed": "로그를 로드하지 못했습니다.",
    "deleteFailed": "삭제 실패",
    "tabAbout": "설명",
    "statusLabel": "상태",
    "userLabel": "사용자",
    "nginxValuePublished": "게시됨",
    "nginxValueNone": "게시되지 않음",
    "osValueReady": "준비됨",
    "osValuePending": "보류 중",
    "openFiles": "파일",
    "enableCdn": "CDN 활성화",
    "openLogs": "로그",
    "osUserReadyMsg": "시스템 사용자가 준비되었습니다. {{detail}}",
    "osUserNeedRoot": "시스템 사용자를 생성할 수 없습니다. YSK_EXECUTE + 루트가 필요합니다. {{detail}}",
    "osUserIncomplete": "시스템 사용자 프로비저닝이 완료되지 않았습니다.",
    "saveLogDirsFailed": "로그 디렉터리를 저장하지 못했습니다.",
    "createName": "프로젝트 이름",
    "noPathSepHint": "이름에는 / 또는 \\가 포함될 수 없습니다.",
    "createRuntime": "실행 시간",
    "createRuntimeHint": "나중에 세부적으로 배포 옵션을 변경할 수 있습니다.",
    "createVersion": "버전",
    "createVersionHint": "Runtime_version으로 저장됩니다. 배포/FPM에 사용됨",
    "createVersionAria": "런타임 버전",
    "createPrimaryDomain": "기본 도메인",
    "createPrimaryDomainHint": "지금은 선택사항",
    "createAliases": "별칭",
    "createAliasesHint": "쉼표 또는 개행으로 구분됨",
    "createTemplate": "주형",
    "createTemplateHint": "하나의 헬로 월드! 런타임별 데모; 템플릿을 선택하면 해당 런타임이 설정됩니다.",
    "createTemplateNote": "템플릿은 뼈대만 작성합니다. 빌드/시작을 위해 배포합니다.",
    "createRuntimeNow": "현재 런타임:",
    "createTemplateFooter": ". 더 빠르게 시작하거나 비워두는 선택적 템플릿입니다.",
    "createDraftResources": "또한 도메인을 사용하여 초안 리소스를 만듭니다.",
    "createNeedDomainFirst": "초안 옵션이 함께 적용되도록 기본 도메인을 먼저 입력하세요.",
    "createDnsZone": "DNS 영역도 생성",
    "createDnsZoneDesc": "관리 초안만 작성합니다. 실시간 권한 있는 DNS는 작성하지 않습니다.",
    "createMailDomain": "메일 도메인도 등록하세요",
    "createMailDomainDesc": "메일함을 완성하고 나중에 메일페이지에서 신청하세요",
    "createServerIpv4": "서버 IPv4",
    "createServerIpv4Hint": "DNS/메일 템플릿의 경우",
    "createServerIpv4Ph": "이 호스트의 공개 IPv4",
    "createServerIpv6": "서버 IPv6(선택 사항)",
    "createServerIpv6Ph": "공용 IPv6(선택사항)",
    "sshCardDesc": "로그인 키는 입장할 수 있는 사람을 결정합니다.",
    "sshLoginKeys": "로그인 공개 키가 허용됨",
    "sshKeyCount": "{{count}} 키",
    "sshOutbound": "아웃바운드 ID",
    "sshOutboundNone": "생성되지 않음",
    "sshOutboundCreated": "아웃바운드 ID 생성됨(개인 키 암호화됨)",
    "sshCreateFailed": "생성 실패",
    "sshWriteTried": "디스크에 쓰기를 시도했습니다.",
    "sshOutboundHint": "생성 후 이 프로젝트 사용자는 git/scripts 아웃바운드를 사용할 수 있습니다.",
    "sshCreateOutbound": "아웃바운드 ID 만들기",
    "sshWriteHome": "home/.ssh 쓰기",
    "sshOpenWorkspace": "SSH 작업공간 열기",
    "sshManageLoginKeys": "로그인 키 관리",
    "logsSectionDesc": "로그/, 로그/ 및 추가 디렉토리를 스캔합니다. 이름이나 콘텐츠 키워드로 검색",
    "logsNameSearch": "파일명 검색",
    "logsNameSearchHint": "상대 경로 일치(예: 오류, app.out",
    "logsContentKw": "콘텐츠 키워드",
    "logsContentKwHint": "파일 테일 검색(전체 파일 아님)",
    "logsSearch": "검색",
    "logsRescan": "다시 스캔",
    "logsRefreshFile": "이 파일 새로 고침",
    "logsCopy": "콘텐츠 복사",
    "logsDownloadTail": "꼬리 다운로드",
    "logsCenter": "로그 센터",
    "logsHitsTitle": "조회수가 있는 {{count}} 파일 — 꼬리를 열려면 클릭하세요(키워드 필터 사용)",
    "logsLinesHit": "{{count}} 라인 히트",
    "logsFileCount": "로그 파일 {{count}}",
    "logsNameFilter": "(이름에는 “{{q}}”이 포함됨)",
    "logsScanning": "로그 스캔 중…",
    "logsNoneYet": "아직 로그 파일이 없습니다. 배포/실행 후에 나타납니다. 추가 디렉토리도 작동합니다.",
    "logsNoContent": "아직 콘텐츠가 없습니다.",
    "logsRelated": "관련 소스",
    "logsRelatedDesc": "저널 / nginx / PHP-FPM (로그 센터 참조)",
    "logsAvailable": "사용 가능",
    "logsMissing": "없어진",
    "logsOpenInCenter": "로그 센터에서 열기",
    "logsExtraDirs": "추가 로그 디렉터리",
    "logsExtraDirsDesc": "프로젝트 홈에 상대적인 경로(logs/ 및 log/ 제외)",
    "logsDirList": "디렉토리 목록",
    "logsDirListHint": "한 줄에 하나씩; 홈 상대 경로만",
    "logsReset": "다시 놓기",
    "logsSaveScan": "저장 및 스캔",
    "logsDefaultNote": "항상 로그/ 및 로그/를 검사합니다. 추가 디렉토리에는 *.log / *.out / *.err만 포함됩니다.",
    "resOsTitle": "시스템 사용자 격리",
    "resOsDesc": "각 프로젝트에는 고유한 Linux 사용자가 있습니다.",
    "resLinuxUser": "리눅스 사용자",
    "resOsIsolation": "OS 격리",
    "resOsReady": "준비됨",
    "resOsNotCreated": "생성되지 않음(관리자 필요)",
    "resHomeDir": "홈 디렉토리",
    "resCanonical": "의도된 경로",
    "resUserMissing": "사용자 누락",
    "resShellLive": "라이브 쉘/락",
    "resLocked": "잠김",
    "resUnlocked": "잠금 해제됨",
    "resHomeMode": "홈 모드",
    "resHomeExists": "있음 · 모드 {{mode}}",
    "resHomeMissing": "없어진",
    "resIsolationOn": "외딴",
    "resIsolationPending": "격리 대기 중",
    "resOsHint": "프로세스는 프로젝트 사용자로 실행됩니다.",
    "resProvisionUser": "시스템 사용자 생성/수리",
    "resRefreshStatus": "새로고침 상태",
    "resFixHome": "주택 소유권 문제 해결",
    "resMigrateHome": "/home/ysk-server-…로 마이그레이션합니다.",
    "resQuotaDesc": "소프트 할당량(배포 전 du) + setquota가 존재할 때 하드 적용",
    "resQuotaHint": "예를 들어 1024 = 1GiB",
    "resSetSoftQuota": "소프트 할당량 저장",
    "resLimitsTitle": "프로세스 및 계정 제한",
    "resLimitsDesc": "systemd MemoryMax / CPUQuota / TasksMax / NOFILE + 쉘 / 잠금",
    "resLimitsDescSystemd": "systemd cgroup: MemoryMax / CPUQuota / TasksMax / NOFILE + 쉘 / 잠금",
    "resLimitsDescPm2": "PM2: 메모리는 max_memory_restart에 매핑됩니다. 다른 제한은 systemd를 사용합니다.",
    "resRunnerSystemd": "프로세스 관리자: systemd",
    "resRunnerPm2": "프로세스 관리자: PM2",
    "resMemMax": "최대 메모리",
    "resMemHint": "예를 들어 512M 또는 1G",
    "resMemHintSystemd": "systemd MemoryMax(cgroup 하드 캡, 예: 512M 또는 1G)",
    "resMemHintPm2": "생태계 max_memory_restart(cgroup 종료가 아닌 다시 시작 임계값)를 작성합니다.",
    "resFieldSystemdOnly": "systemd cgroup에만 해당; systemd로 다시 전환할 때를 위해 여전히 DB에 저장되어 있습니다.",
    "resCpuHint": "100 = CPU 1개",
    "resCustomPct": "관습 %",
    "resTasksHint": "최대 작업",
    "resNofileHint": "열린 파일 제한",
    "resShellHint": "기본 nologin",
    "resShellBashRisk": "강타 · 위험",
    "resLockAccount": "Linux 계정 잠금",
    "resLockDesc": "사용자모드 -L; 잠금 해제하려면 선택을 취소하세요.",
    "resLimitsHint": "저장 및 적용은 DB에 쓰고 usermod / setquota / systemctl set-property를 시도합니다.",
    "resLimitsHintSystemd": "허용되는 경우 쓰기 패널 상태 및 OS/시스템 제한을 저장하고 적용합니다.",
    "resLimitsHintPm2": "저장 및 적용은 패널 상태 및 PM2 메모리 제한을 기록합니다.",
    "resSaveApply": "OS에 제한 저장 및 적용",
    "resSaveControlOnly": "메모리/CPU를 제어 영역에만 저장",
    "resReapply": "1회 재신청(양식 변경 없음)",
    "resMigrateDone": "마이그레이션 완료",
    "resMigrateIncomplete": "마이그레이션이 완료되지 않았습니다.",
    "resMigrateTitle": "시스템 사용자 홈을 마이그레이션하시겠습니까?",
    "resMigrateDesc": "/home/ysk-server-{id}로 마이그레이션하고 시스템 사용자를 생성/복구합니다.",
    "resMigrate": "마이그레이션",
    "resWrittenOnly": "제어 플레인에 기록됩니다. OS가 적용되지 않았습니다(루트 필요). {{notes}}",
    "resAppliedOs": "OS에 적용되는 제한 사항입니다. {{notes}}",
    "resSaved": "저장됨",
    "resIncomplete": "불완전한",
    "resApplyLimitsFailed": "한도를 적용하지 못했습니다.",
    "resApplied": "적용된",
    "resApplyFailed": "적용 실패",
    "resChownOk": "완전하다",
    "resChownFailed": "chown 실패",
    "netSavedPublished": "네트워크가 저장되고 Nginx가 게시되었습니다.",
    "netSavedOnly": "네트워크 설정이 저장됨(게시되지 않음)",
    "netSaveFailed": "저장 실패",
    "netSuspended": "프로젝트가 일시 중지됨 - 방문자는 503을 받습니다. 일시 중지를 해제한 후 게시하세요.",
    "netDomainTitle": "도메인",
    "netDomainDesc": "기본 도메인 및 별칭 저장은 Nginx 관리 구성을 작성할 수도 있습니다.",
    "netPrimaryDomain": "기본 도메인",
    "netPrimaryHint": "방문자 도메인(예: app.example.com",
    "netAliases": "별칭",
    "netAliasesHint": "한 줄에 하나씩, 예: www 또는 블로그 하위 도메인",
    "netNeedPrimary": "기본 도메인을 먼저 입력하세요.",
    "netHttpsTitle": "HTTPS 및 사이트 리디렉션",
    "netHttpsDesc": "저장 후 Nginx를 게시하세요. 전체 사이트 301은 프록시/PHP/정적 콘텐츠를 재정의합니다.",
    "netForceHttps": "강제 HTTPS",
    "netForceHttpsDesc": "HTTP → HTTPS(301); SSL 인증서 및 SSL 게시가 필요합니다.",
    "netForceHttpsOn": "Edge를 게시하면 HTTP가 HTTPS로 리디렉션됩니다.",
    "netForceHttpsOff": "강제 리디렉션이 저장되지 않습니다.",
    "netBoundCert": "바인딩된 인증서",
    "netBoundCertExpiry": "만료 {{at}}",
    "netNoBoundCert": "이 호스트 이름의 인증서가 디스크에 없습니다",
    "netForceHttpsNeedCert": "HTTPS를 강제하기 전에 /ssl에서 이 도메인 인증서를 발급하세요.",
    "netHttpsLiveNotForced": "Edge 파일이 존재합니다. HTTPS가 이미 작동할 수도 있습니다. 이 상자는 HTTP→HTTPS만 강제합니다.",
    "netHsts": "HSTS 활성화",
    "netHstsDesc": "브라우저는 HTTPS를 고수합니다(HTTPS 강제 적용 후 권장).",
    "netHstsNeedHttps": "강제 HTTPS를 먼저 켜십시오.",
    "netRedirectUrl": "전체 사이트 리디렉션 URL",
    "netRedirectHint": "선택 과목. 전체사이트 301번을 이 URL로 (이동/apex→www)",
    "netBasicAuthTitle": "HTTP 기본 인증(브라우저 로그인)",
    "netBasicAuthDesc": "게시 시 htpasswd를 씁니다. 빈 사용자 이름 = 꺼짐. 빈 비밀번호 = 계속 저장됨",
    "netAuthUserHint": "비어 있으면 인증이 비활성화됩니다.",
    "netAuthPassHint": "처음으로 필요합니다. 나중에 보관하려면 비워 두세요.",
    "netAuthPassSet": "비밀번호 설정 또는 업데이트",
    "netCacheNote": "기본적으로 정적/PHP 정적 캐시 제어 7d; 제거는 호스트 nginx 캐시 디렉토리를 지웁니다(YSK_EXECUTE 필요).",
    "netPurgeOk": "캐시 제거를 시도했습니다.",
    "netPurgeFailed": "제거 실패",
    "netDocrootTitle": "사이트 디렉터리(docroot)",
    "netDocrootDesc": "프로젝트 홈과 관련하여; 게시 시 Nginx 루트로 사용됨(기본 앱/공개)",
    "netDocrootLabel": "문서 루트",
    "netDocrootFull": "전체 경로: {{path}}",
    "netDocrootCustom": "사용자 정의 상대 경로…",
    "netAdvancedTitle": "고급 및 게시",
    "netAdvancedDesc": "IP 바인딩, Nginx 시스템에 게시",
    "netCollapseBind": "바인드 IP 접기",
    "netExpandBind": "바인드 IP 확장",
    "netBindIp": "IP 바인딩",
    "netBindHint": "비어 있음 = 모든 인터페이스",
    "netBindPh": "비어 있음 = 모두; 또는 IP 바인딩",
    "netNeedDomainSave": "기본 도메인을 먼저 입력하고 저장하세요.",
    "ovUsed": "사용된",
    "ovQuota": "몫",
    "ovQuotaUnset": "설정되지 않음",
    "ovQuotaStatus": "할당량 상태",
    "ovOverQuota": "할당량 초과",
    "ovQuotaOk": "OK",
    "ovDocroot": "문서 루트",
    "ovAccessSample": "샘플에 액세스",
    "ovLines": "{{count}} 줄",
    "ovDailyDays": "일일 통계 일수",
    "ovDailyTitle": "일일 방문 통계(최대 60일)",
    "ovDailyDesc": "액세스 로그 샘플에서 롤링",
    "ovQuickTitle": "사이트 바로가기",
    "ovQuickDesc": "게시 및 백업(헤더 또는 배포 탭을 통한 기본 배포)",
    "ovNeedNetworkDomain": "먼저 네트워크 탭에서 도메인을 설정하세요.",
    "ovPublishNginx": "Nginx 게시",
    "ovPublishSsl": "Nginx + SSL 게시",
    "ovBackupProject": "이 프로젝트를 백업하세요",
    "ovOpenFiles": "프로젝트 파일 열기",
    "ovNoDomainHint": "도메인 없음 — 게시하기 전에 네트워크 탭에서 설정하세요.",
    "ovPublishNote": "게시 쓰기 관리 구성; 라이브 Nginx 다시 로드에는 시스템 변경 권한이 필요합니다.",
    "ovStatic": "공전",
    "ovAliases": "별칭",
    "ovForceOn": "강요된",
    "ovForceOff": "강요하지 않음",
    "advFtpCreated": "FTP {{user}} 생성됨(초안 — FTPS 페이지에서 적용)",
    "advCreateFailed": "생성 실패",
    "advFtpFailed": "FTP 생성 실패",
    "advMaintTitle": "유지",
    "advMaintDesc": "백업, 일시 중지/재개, 옵션 도구",
    "advBackupProject": "이 프로젝트를 백업하세요",
    "advOneClickWp": "원클릭 WordPress(다운로드 + 설정)",
    "advSuspendedHint": "일시 중지됨: 프로세스가 중지되고 방문자에게 503이 표시됩니다.",
    "advSuspendHint": "일시 중지하면 프로세스가 중지되고 503 유지 관리 페이지가 표시됩니다.",
    "advFtpTitle": "프로젝트 FTP(경로 감옥)",
    "advFtpDesc": "프로젝트 앱 디렉토리에 계정이 감금되었습니다. 생성 후 FTPS 서비스 페이지에서 적용",
    "advFtpUserHint": "선택 과목; 시스템이 생성할 수 있는",
    "advFtpPassHint": "8자 이상",
    "advDangerTitle": "위험지대",
    "advDangerDesc": "삭제는 UI에서 실행 취소할 수 없습니다. 먼저 백업하세요.",
    "advDelete": "프로젝트 삭제",
    "deployPyHint": "기본값: venv + pip; uvicorn을 통한 ASGI, gunicorn을 통한 Django.",
    "deployGoHint": "기본값: go build -o app . 그런 다음 ./app; 바이너리가 있으면 빌드를 건너뜁니다.",
    "deployRustHint": "기본값: 화물 빌드 --release 다음으로 target/release/{crate}; 선택적으로 빌드를 건너뜁니다.",
    "deployNodeHint": "노드 프로세스 시작(기본값 server.js 입력) prod에서는 systemd를 권장합니다.",
    "deployDefaultHint": "런타임별로 시작합니다. 적용 후에만 외부.",
    "deployOsStep": "격리된 Linux 사용자 + /home/ysk-server-{project id}(리소스 탭 생성 가능)",
    "deployPyReady": "Python 런타임 준비됨",
    "deployPipNet": "요구사항.txt에는 아웃바운드 pip가 필요합니다.",
    "deployCheckPort": "배포 후 포트 및 /health를 확인하세요.",
    "deployPublishProxy": "Nginx 역방향 프록시 게시",
    "deployToolchainReady": "{{runtime}} 툴체인 준비됨",
    "deployFirstBuild": "첫 번째 배포 빌드(시간이 걸릴 수 있음)",
    "deployNeedBinary": "성공적인 빌드 후에만 바이너리",
    "deployPhpFpmOk": "PHP-FPM 버전 OK",
    "deployPhpPool": "PHP 배포/풀 적용",
    "deployNginxSsl": "Nginx 게시 + 선택적 SSL",
    "deployPublicContent": "공개 확인/콘텐츠 있음",
    "deployNetPublish": "네트워크 탭에 Nginx 게시",
    "deployConfirmToolchain": "런타임 페이지에 설치된 툴체인 확인(또는 호스트에 있음)",
    "deployConfirmCode": "앱 확인/코드 있음(템플릿 또는 Git)",
    "deployPressDeploy": "배포를 누르세요. 그런 다음 네트워크에 Nginx를 게시하세요.",
    "deployVersionSaved": "{{runtime}} 버전 {{version}} 저장됨(배포 시 사용됨)",
    "deployVersionSaveFailed": "런타임 버전을 저장하지 못했습니다.",
    "deployInstallingToolchain": "툴체인 설치/확인 중…",
    "deployToolchainIncomplete": "툴체인 설치가 완료되지 않았습니다(권한 또는 네트워크). 런타임 페이지를 사용해 보세요",
    "deployToolchainDone": "툴체인 단계 완료, 배포 시작 중…",
    "deployToolchainFailed": "툴체인 설치 실패",
    "deployChecklistTitle": "생성됨 — 체크리스트 배포",
    "deployChecklistDesc": "{{runtime}} 스켈레톤 준비; 트래픽 처리 단계 완료",
    "deploySectionTitle": "{{runtime}} 배포",
    "deploySectionDesc": "{{runtime}} 프로세스 시작(port / systemd 또는 pidfile)",
    "deployPhpVersion": "PHP 버전",
    "deployPhpVersionHint": "이 사이트의 PHP 버전(일치하는 FPM이 설치되어 있어야 함)",
    "deployRuntimeVersion": "{{runtime}} 버전",
    "deployRuntimeVersionHint": "프로젝트에 저장되었습니다. 배포에 사용됩니다. 런타임 페이지에 설치",
    "deployRuntimeVersionCreateHint": "작성 시 작성; 배포 시 참조됨",
    "deployRuntimeVersionGeneric": "런타임 버전",
    "deployEntry": "입장 시작",
    "deployEntryHint": "비어 있음 = 기본값({{hint}}); 서버에 동기화됨",
    "deploySkipBuild": "빌드 건너뛰기",
    "deploySkipBuildHint": "venv/바이너리가 존재하는 경우; 속도 재시작(로컬 기본 설정)",
    "deployPort": "· 포트 {{port}}",
    "deployFpmApplied": "PHP-FPM 풀 적용",
    "deployFpmIncomplete": "FPM 불완전",
    "deployFpmNote": "사이트/풀 구성을 작성합니다. 실시간 새로고침에는 시스템 변경 권한이 필요합니다.",
    "deployBuildNote": "빌드/시작 실패가 작업 결과에 표시됩니다. 항목이 서버에 기록됩니다. 건너뛰기 빌드는 로컬 환경 설정입니다.",
    "deployPhpIniTitle": "프로젝트 php.ini 재정의",
    "deployPhpIniDesc": "변경할 키만;",
    "deployPhpIniExample": "예를 들어 256M; 비어 있음 = 전역",
    "deployGlobal": "글로벌",
    "deployCustom": "관습",
    "deployOff": "꺼짐",
    "deployOnCareful": "에 · 조심",
    "deployPhpIniSaved": "프로젝트 php.ini 재정의가 저장되었습니다. FPM을 다시 배포 또는 적용",
    "deployHistory": "배포 기록({{count}})",
    "deployHistoryDesc": "감사에서; 최신순",
    "deployGitUrlHint": "HTTPS 또는 SSH 저장소 URL; 동기화 후 런타임별로 재배포",
    "deployEnvHint": "한 줄에 하나의 KEY=값; #댓글",
    "resume": "프로젝트 재개",
    "suspend": "프로젝트 일시 중단",
    "goFtpsApply": "FTPS 서비스 신청하러 가기",
    "toolchainNote": "툴체인 설치 ≠ 프로젝트가 활성화되었습니다. 배포 성공 ≠ 공개 Nginx(네트워크에 게시)",
    "installToolchainDeploy": "툴체인 설치 및 배포",
    "deployOnly": "배포만",
    "openRuntime": "{{runtime}} 런타임 열기",
    "later": "나중에",
    "installToolchainDeployShort": "툴체인 + 배포",
    "runtimeEnv": "{{runtime}} 환경",
    "applyFpmPool": "FPM 풀 적용",
    "staticNginxHint": "정적 사이트는 Publish Nginx를 사용합니다. 네트워크 또는 개요 바로가기를 사용하세요.",
    "fullIniLink": "전체 카탈로그 및 opcache/세션 등",
    "phpIniLink": "PHP 런타임 → php.ini",
    "savePhpIniOverride": "php.ini 재정의 저장",
    "scaffoldNote": "app/이 YSK 스캐폴드(.ysk-scaffold)인 경우 복제 전에 지워집니다. 사용자 정의 컨텐츠는 덮어쓰기를 거부합니다.",
    "saveOnly": "저장만",
    "savePublishNginx": "Nginx 저장 및 게시",
    "needDomainToPublish": "게시하기 전에 기본 도메인을 입력하세요.",
    "savePublish": "저장 및 게시",
    "saveAuth": "인증 저장",
    "cacheZoneNote": "전체 FastCGI/proxy_cache 영역에는 호스트 nginx.conf에 key_zone이 필요합니다. 패널은 최선의 퍼지 기능을 제공합니다.",
    "purgeNginxCache": "Nginx 캐시 제거",
    "nginxManageFile": "Nginx 관리 파일:",
    "publishRuntimeNote": "게시는 런타임별로 프록시/PHP-FPM/정적 conf를 작성합니다(인증, 리디렉션, docroot).",
    "publishStored": "저장된 설정으로 게시",
    "publishStoredSsl": "저장된 게시 + SSL",
    "publishNote": "게시 쓰기 관리 conf; /etc/nginx에 동기화하고 다시 로드하려면 시스템 변경 권한이 필요합니다.",
    "hitsFiles": "조회수가 있는 {{count}} 파일 — 꼬리를 열려면 클릭하세요(키워드 필터)",
    "logFilesCount": "로그 파일 {{count}}",
    "defaultScanNote": "항상 로그/ 및 로그/를 검사합니다. 추가 디렉토리에는 *.log / *.out / *.err만 포함됩니다.",
    "opsOk": "{{label}} 완료{{url}}",
    "opsOkWithNote": "{{label}} 완료: {{note}}{{url}}",
    "opsFail": "{{label}} 실패: {{reason}}",
    "railPython": "파이썬 프로세스",
    "railGo": "프로세스 이동",
    "railRust": "녹 과정",
    "railNode": "노드 프로세스",
    "runtimeName": {
      "php": "PHP",
      "node": "Node.js",
      "static": "공전",
      "python": "파이썬",
      "go": "가다",
      "rust": "녹",
      "java": "자바",
      "kotlin": "코틀린",
      "bun": "혈액 요소 질소"
    },
    "netCacheTitle": "은닉처",
    "logsDeepAccess": "로그센터 · 접속",
    "logsDeepError": "로그센터 · 오류",
    "logsDeepNginxUnit": "Nginx 유닛 로그",
    "logsPresetAccess": "필터 access.log",
    "logsPresetError": "필터 오류.로그",
    "railJava": "자바 프로세스",
    "railKotlin": "코틀린 프로세스",
    "railBun": "롤빵 과정",
    "deployProcessManager": "프로세스 관리자",
    "deployProcessManagerSystemd": "systemd (권장)",
    "deployProcessManagerPm2": "PM2",
    "proc_restart": "다시 시작",
    "proc_stop": "멈추다",
    "proc_reload": "새로고침",
    "procControlsHint": "공정관리({{manager}})",
    "procActionOk": "{{action}} 알았어 · {{notes}}",
    "procActionFail": "{{action}} 실패 · {{notes}}",
    "procActionFailShort": "처리 작업이 실패했습니다.",
    "procMissingUser": "프로젝트에 Linux 사용자가 없으므로 PM2 앱을 대상으로 지정할 수 없습니다.",
    "deploySystemdHint": "프로덕션 기본값: 단위 ysk-project-*",
    "deployPm2Hint": "pm2(생태계)를 통해 시작됩니다.",
    "deleteDialogTitle": "프로젝트를 영구적으로 삭제",
    "deletePermanent": "영구 삭제",
    "deleteRemoveFiles": "디스크 홈 및 Linux 사용자 삭제",
    "deleteTypeName": "확인하려면 프로젝트 이름을 입력하세요.",
    "deletedOk": "프로젝트가 삭제되었습니다.",
    "sslRequiredFirst": "이 도메인에는 아직 SSL 인증서가 없습니다. 게시 + SSL 전에 SSL 인증서 아래에서 하나를 만들거나 업로드하세요.",
    "sslGateHint": "SSL 작업이 잠겼습니다. — 다음으로 이동하세요.",
    "sslGateHint2": "먼저 이 도메인에 대한 인증서를 발급/업로드하세요.",
    "netPublishPrimary": "기초적인",
    "netPublishSsl": "HTTPS/SSL",
    "netPublishMaint": "유지",
    "sslNeedDomain": "Nginx/SSL을 게시하기 전에 도메인을 설정하세요.",
    "createTemplateMissing": "{{v0}} ;「— —」。",
    "deleteDialogDesc": "「{{name}}」。。",
    "deleteWillStop": "시스템 / PM2 /",
    "deleteWillWeb": "Nginx conf, PHP-FPM 풀, Apache 가상 호스트()",
    "deleteWillOs": "리눅스 홈 （）",
    "deleteKeepOs": "홈 리눅스 （）",
    "deleteWillDb": "…",
    "deleteRemoveFilesDesc": "취소,",
    "deleteTypeNameHint": "「{{name}}」",
    "deleteDnsWarn": "DNS 영역/도메인 。",
    "manageInNginx": "Nginx에서 관리",
    "advFtpHomeApp": "사이트 app 디렉터리",
    "advFtpHomeRoot": "프로젝트 홈(전체)",
    "advFtpManage": "FTP 페이지 열기",
    "resShell": "로그인 쉘",
    "resSaveHint": "라이브 OS의 변경 사항을 저장하고 적용합니다. 제어 영역은 양식만 저장합니다. 다시 적용하면 마지막으로 저장된 값이 사용됩니다.",
    "resBashConfirmTitle": "대화형 bash를 허용하시겠습니까?",
    "resBashConfirmDesc": "그러면 프로젝트 사용자에게 대화형 로그인 셸이 부여됩니다. 해당 사용자로 SSH 또는 PTY가 필요한 경우에만 확인하세요.",
    "createGitHint": "선택 과목. 프로젝트에 저장됩니다. 배포 탭에서 복제합니다(생성 시 복제되지 않음).",
    "gitTokenLaterHint": "HTTPS 토큰 및 복제 깊이는 생성 후 프로젝트 배포 탭에서 설정됩니다.",
    "gitBranch": "나뭇가지",
    "gitBranchHint": "Branch or tag. Empty uses the remote default. First clone is shallow (depth 1).",
    "gitBranchAfterUrl": "먼저 Git URL을 입력하세요. 비우면 원격 기본 분기를 사용합니다.",
    "gitLastRef": "마지막 동기화: {{branch}} @ {{commit}}",
    "gitConfirmTitle": "이 프로젝트에 복제하시겠습니까?",
    "gitConfirmBody": "app/이 여전히 Hello World 자리 표시자인 경우 지워진 다음 복제됩니다. YSK 스캐폴드가 아닌 사용자 정의 파일은 거부됩니다.",
    "gitConfirmRemoteBody": "이는 새 URL의 출처를 가리키고 가져옵니다. 관련되지 않은 기록은 실패합니다. 사용자 정의 파일은 지워지지 않습니다.",
    "runtimeActual": "실제 바이너리 {{path}}",
    "runtimeFallback": "선택된 {{version}}은(는) 이 호스트에 없습니다. 프로세스는 {{path}}을 사용합니다.",
    "gitSync": "동조",
    "gitFetch": "술책",
    "gitCheckout": "점검",
    "gitReset": "원격으로 재설정",
    "gitResetNeedConfirm": "확인 필요 — 로컬 커밋을 버립니다",
    "gitDeepen": "전체 기록 가져오기",
    "gitLogTitle": "최근 커밋",
    "gitDirtyTitle": "로컬 변경 블록 풀",
    "gitDirtyBody": "{{count}} 파일이 Git(파일 편집 또는 앱)과 다릅니다. 이를 폐기하거나 중단하십시오.",
    "gitSyncBlockedDirty": "로컬 변경 사항이 삭제되거나(재설정) 파일이 Git과 일치할 때까지 동기화가 비활성화됩니다.",
    "gitViewDiff": "차이점 보기",
    "gitDiscard": "로컬 파일 삭제",
    "gitOpenFiles": "파일에서 열기",
    "gitNotCloned": "복제되지 않음",
    "gitClean": "깨끗한",
    "gitDirty": "더러운",
    "gitBehind": "뒤에 {{count}}",
    "gitAhead": "앞으로 {{count}}",
    "gitDetached": "고정됨",
    "gitShallow": "얕은",
    "gitMissing": "자식이 없어",
    "gitResetConfirmTitle": "원격으로 하드 재설정하시겠습니까?",
    "gitResetConfirmBody": "이렇게 하면 로컬 Git 기록과 .env를 제외한 추적되지 않는 파일이 삭제되고 제어 플레인에서 .env가 복원됩니다.",
    "gitHeads": "원격 지점",
    "gitToken": "HTTPS 토큰",
    "gitTokenHint": "Personal access token. Stored encrypted; never written into the remote URL.",
    "gitTokenPlaceholder": "ghp_… 또는 glpat-…",
    "gitTokenSet": "토큰 세트",
    "gitSaveToken": "토큰 저장",
    "gitClearToken": "토큰 지우기",
    "gitDeployKey": "공개 키 배포",
    "gitDeployKeyHint": "이를 Git 호스트에 읽기 전용 배포 키로 추가하세요.",
    "gitDeployKeyOn": "키 배포",
    "gitMakeKey": "배포 키 생성",
    "gitCopyPub": "공개 키 복사",
    "gitClearKey": "배포 키 지우기",
    "gitKeyCopied": "공개 키가 복사되었습니다.",
    "gitPinHost": "호스트 키 고정",
    "gitPinHostBody": "{{host}}이 고정되지 않았습니다. 지문을 확인한 다음 SSH 복제 전에 고정하세요.",
    "gitHostUnpinned": "호스트 키가 고정되지 않음",
    "gitHookTitle": "Inbound hook",
    "gitHookHint": "Paste POST /api/v1/hooks/git/<id> into GitHub / Gitea / GitLab yourself (push events). Not Slack. Secret is HMAC or X-YSK-Git-Hook.",
    "gitHookOn": "Hook on",
    "gitHookOff": "Hook off",
    "gitHookEnable": "Enable hook",
    "gitHookRotate": "비밀 순환",
    "gitHookDisable": "Disable hook",
    "gitHookSecretOnce": "Copy this secret now — it is not stored in the page after you leave.",
    "gitHookCopyUrl": "Copy URL",
    "gitHookCopySecret": "비밀 복사",
    "gitHookCopied": "복사됨",
    "gitHookSetup": "Add the webhook yourself. Payload URL = the URL above. Content type application/json. Events: push only. Secret = the one-time value.",
    "gitHookGithub": "GitHub: Settings → Webhooks → Add webhook. Content type application/json. Events: Just the push event. GitHub.com requires HTTPS.",
    "gitHookGitea": "Gitea: Settings → Webhooks → Add Webhook → Gitea. HTTP Method POST. Push events.",
    "gitHookGitlab": "GitLab: Settings → Webhooks. Trigger: Push events. Secret token = the hook secret (sent as X-Gitlab-Token).",
    "gitHookHonesty": "The host unit must have YSK_EXECUTE=1. Without it the hook answers but does not clone or deploy.",
    "gitHookSkipOther": "Pushes to other branches are ignored. Only the project ref syncs.",
    "gitAuthHttps": "HTTPS 토큰",
    "gitAuthSsh": "SSH 배포 키",
    "gitLoadRefs": "브랜치 로드",
    "gitRefDefault": "원격 기본값",
    "gitRefBranches": "지점",
    "gitRefTags": "태그",
    "gitRefOther": "기타 참고…",
    "gitRefCustom": "커밋 또는 참조",
    "gitRefsNeedUrl": "먼저 URL을 입력하세요.",
    "gitRefsNeedAuth": "토큰 또는 배포 키를 저장한 다음 분기를 로드하세요.",
    "gitRefsHint": "리모콘에서 로드되었습니다. 하나를 선택하십시오. 입력하지 마십시오.",
    "gitHookSetupToggle": "이것을 붙여넣는 방법",
    "gitHookOneLiner": "HMAC 또는 X-YSK-Git-Hook. 이 프로젝트의 심판만 해당됩니다.",
    "gitHookExecuteHint": "복제하거나 배포하려면 YSK_EXECUTE=1이 필요합니다.",
    "gitShowKey": "키 표시",
    "gitHideKey": "숨다",
    "gitBehindShort": "↓{{count}}",
    "gitAheadShort": "↑{{count}}",
    "gitDirtyShort": "더러운 · {{count}}",
    "gitFilesLink": "파일",
    "nameInvalid": "소문자 이름을 사용하세요. 문자로 시작한 다음 문자, 숫자, 하이픈(최대 31자)을 사용하세요.",
    "deployVersionMissing": "노드 {{version}}가 이 호스트에 설치되어 있지 않습니다. 설치된 버전을 선택하거나 이 버전을 먼저 설치하세요.",
    "deployUsedBinary": "사용된 배포 {{path}}"
  },
  "protection": {
    "levels": {
      "low": {
        "label": "OK",
        "verb": "시스템 안정",
        "hint": "매일 보호를 유지"
      },
      "elevated": {
        "label": "높은",
        "verb": "이상 징후 발견",
        "hint": "강화된 IP로 전환하고 의심스러운 IP를 감시하세요."
      },
      "under_attack": {
        "label": "공격을 받고 있다",
        "verb": "공격을 받을 가능성이 있음",
        "hint": "과소공격 프리셋 적용 + 일괄 차단"
      },
      "critical": {
        "label": "비판적인",
        "verb": "심각한 위협",
        "hint": "긴급상황을 고려하세요. 당신이 허용 목록에 있는지 확인하십시오"
      }
    },
    "presetsWhen": {
      "daily": "매일매일",
      "hardened": "스캔 / 무차별",
      "under_attack": "L7 홍수",
      "emergency": "최후의 수단"
    },
    "note": {
      "notApplied": "호스트에 적용되지 않음(루트 + YSK_EXECUTE=1 필요) - 패널 설정에 저장됨",
      "nginxWritten": "Nginx 속도 제한 패널 파일 작성",
      "f2bWritten": "fail2ban 패널 설정을 작성했습니다.",
      "hintDropped": "내부 보호 힌트가 생략되었습니다.",
      "nginxLimits": "Nginx 속도 제한 스니펫을 작성합니다."
    },
    "rel": {
      "justNow": "방금",
      "minutesAgo": "{{n}}분 전",
      "hoursAgo": "{{n}} 시간 전"
    },
    "apiUnreachable": "API에 연결할 수 없습니다(웹 프록시/백엔드가 다운되었을 수 있음).",
    "geoipLoadFailed": "GeoIP를 로드하지 못했습니다.",
    "loadFailed": "로드 실패",
    "previewDone": "미리보기 완료(작성되지 않음)",
    "presetApplied": "보호 사전 설정이 적용되었습니다.",
    "manualBan": "수동 차단",
    "banSent": "{{ip}}에 대한 차단이 전송되었습니다.",
    "quickSelectBan": "빠른 선택 금지",
    "bulkBan": "일괄 차단 {{count}}",
    "autoBanStatus": "자동 차단: {{onOff}} · {{mode}} · {{method}}",
    "autoBanUpdated": "자동 차단 업데이트됨",
    "automationMaster": "자동화 마스터: {{onOff}}",
    "autoPresetStatus": "자동 사전 설정: {{onOff}}",
    "autoBanAutomation": "자동 차단: {{onOff}} ({{mode}})",
    "automationSaved": "자동화 설정이 저장되었습니다.",
    "statFirewall": "방화벽",
    "statSuspects": "의심되는 IP",
    "statSuspectsSplit": "{{actionable}} 실행 가능 / {{total}} 목록",
    "suspectActionableCount": "실행 가능한 IP {{count}}",
    "scoreBasisHint": "위협 점수는 방화벽, Fail2ban 금지 볼륨 및 요청 속도 신호를 사용하며 인텔 용의자 목록과 동일한 수는 아닙니다.",
    "statAutoBan": "자동 금지",
    "statApply": "시스템 적용",
    "statActiveBans": "활성 차단",
    "statPreset": "프리셋",
    "threatPill": "위협 {{label}} · 점수 {{score}}",
    "reprobed": "다시 조사됨",
    "loadingStatus": "보호 상태 로드 중…",
    "tabs": {
      "command": "응답",
      "automation": "오토메이션",
      "bans": "금지",
      "geo": "IP 액세스",
      "stack": "스택",
      "intel": "인텔",
      "about": "설명"
    },
    "reapply": "재신청",
    "nginxLimits": "Nginx 속도 제한",
    "notWritten": "작성되지 않음",
    "modeValue": {
      "normal": "정상",
      "degraded": "타락한",
      "ddos-protection": "DDoS 보호",
      "offline": "오프라인"
    },
    "mode": "방법",
    "controlPlane": "제어 영역",
    "canApply": "신청 가능",
    "needRoot": "루트가 필요합니다",
    "writeOnly": "파일만 쓰기",
    "autoRunning": "실행 중 · {{sec}}초마다 · 이번 시간 {{n}} 금지",
    "autoOffManual": "끄기 — 수동으로만",
    "lastTick": "· 마지막 {{t}}",
    "nextTick": "· 다음 {{t}}",
    "on": "켜짐",
    "off": "꺼짐",
    "open": "열려 있는",
    "ranAutomationTick": "하나의 자동화 틱을 실행했습니다.",
    "escalateHardened": "경화 ≥ 점수",
    "escalateAttack": "공격을 받고 있음 ≥ 점수",
    "deescalateDaily": "일일 < 점수로 돌아가기",
    "zeroOff": "0 할인",
    "holdAfterEscalate": "에스컬레이션 후 최소 보류",
    "min5": "5분",
    "min15": "15분",
    "min30": "30분",
    "hour1": "1시간",
    "hour2": "2시간",
    "hour6": "6시간",
    "presetOrCustom": "프리셋/커스텀",
    "autoBanMode": "자동 금지 모드",
    "soft": "부드러운",
    "normal": "정상",
    "aggressive": "공격적인",
    "custom": "관습",
    "method": "방법",
    "banMethod": "금지 방법",
    "both": "둘 다",
    "scoreGte": "점수 ≥",
    "hitsGte": "요청 적중 ≥",
    "hits429Gte": "429 관련 조회수 ≥",
    "scanHitsGte": "스캔 경로 적중 ≥",
    "cooldown": "쿨다운",
    "maxPerHour": "시간당 최대",
    "scanInterval": "스캔 간격",
    "schedulerDefault": "스케줄러 기본 120초",
    "collapse": "무너지다",
    "expand": "확장하다",
    "step": "단계",
    "mechanism": "기구",
    "youCanTune": "튜닝할 수 있습니다",
    "probe": "조사",
    "probeSignals": "WAN / 요청 속도 / TCP / f2b / UFW",
    "escalateThreshold": "임계값 에스컬레이션",
    "emergency": "비상",
    "neverAuto": "자동 사용 안함",
    "manualEmergency": "수동 비상",
    "signalNetworkDown": "WAN 다운",
    "signalHighReq": "높은 요청률",
    "signalDdos": "DDoS 휴리스틱",
    "signalTcp": "TCP 연결",
    "signalUfwOff": "UFW 꺼짐",
    "signalF2bBans": "fail2ban 금지 횟수",
    "weightHint": "{{label}} 가중치 0–3",
    "detected": "(감지됨)",
    "notSet": "(설정되지 않음)",
    "zonesComma": "영역(쉼표로 구분)",
    "underAttackRequested": "공격을 받고 있음이 요청됨",
    "underAttackCleared": "UA 삭제 요청됨",
    "autoBanOpen": "켜짐 · {{mode}} · 이번 시간 {{n}}/{{max}}",
    "autoBanClosed": "끄기 - 수동/목록만",
    "pausedNoExecute": "· 일시중지됨(EXECUTE 없음)",
    "circuitOpen": "· 회로 개방",
    "autoBanModeLabel": "자동 금지 모드",
    "scanned": "스캔됨",
    "bulkOps": "대량 작업",
    "fromAccessLog": "접속 로그에서 · 원클릭 또는 일괄 차단",
    "noSuspectIps": "현재로서는 의심되는 IP가 없습니다.",
    "noSuspectDesc": "scan/429 트래픽이 발견되면 나타납니다. 수동 금지를 위해 확장하세요.",
    "whitelistPlus": "화이트리스트 + {{ip}}",
    "whitelistAdded": "허용 목록에 추가됨",
    "activeBansTitle": "활성 차단({{count}})",
    "activeBansDesc": "보호 집계 · 방어 API를 통한 금지 해제(fail2ban-client와 동일)",
    "source": "원천",
    "unbanned": "금지 해제됨",
    "noBans": "금지 없음",
    "noBansDesc": "금지사항은 여기에 표시됩니다.",
    "collapseQuickAdd": "빠른 추가 접기",
    "quickAddOne": "빠른 추가",
    "removeItem": "{{w}} 삭제",
    "updated": "업데이트됨",
    "ipOrCidr": "IPv4/IPv6 또는 CIDR",
    "autoBanWhitelistAdded": "자동 차단 허용 목록에 추가됨",
    "added": "추가됨",
    "banIpPlaceholder": "금지할 IPv4 또는 IPv6",
    "reason": "이유",
    "scanBrute": "스캔 / 무차별",
    "noSignals": "아직 신호 없음",
    "pressReprobe": "다시 프로브를 누르세요.",
    "points": "포인트",
    "noTopIps": "아직 상위 IP가 없습니다.",
    "topIpsAfterLog": "로그가 존재하면 표시됩니다.",
    "noManagedVhost": "관리형 가상호스트 없음",
    "afterPresetMarker": "사전 설정 적용으로 마커 삽입",
    "injected": "YSK_DEFENSE 주입",
    "notInjected": "주입되지 않음",
    "noEvents": "아직 이벤트가 없습니다",
    "eventsAfterOps": "적용/금지 후 표시",
    "geoipUpdated": "GeoIP DB 업데이트",
    "dbReady": "DB 준비",
    "stale": "탁한",
    "older7d": ">7일",
    "freshnessNa": "해당사항 없음",
    "freshnessMissing": "데이터베이스 없음",
    "freshnessStale": "탁한",
    "freshnessFresh": "현재의",
    "lastSuccess": "마지막 성공",
    "downloaded": "다운로드됨",
    "missing": "없어진",
    "geoMode": "지리적 액세스 모드",
    "denyList": "거부 목록",
    "allowListHighRisk": "허용 목록 · 높은 위험",
    "autoUpdateDb": "DB 자동 업데이트",
    "countriesSelected": "국가({{n}} 선택됨)",
    "searchCountry": "중국어 이름 또는 ISO 검색",
    "countryPlaceholder": "중국 / CN",
    "regionsSelected": "지역({{n}} 선택됨)",
    "regionsHint": "일부 국가에서; 맞춤형 CN-GD 확인",
    "pickCountryFirst": "목록을 좁히려면 먼저 국가를 선택하세요.",
    "customRegion": "사용자 정의(예: CN-GD",
    "regionPlaceholder": "광동 / 캘리포니아 / 도쿄",
    "continentsSelected": "대륙({{n}} 선택됨)",
    "continentsHint": "선택적 대륙",
    "continentPlaceholder": "아시아 / EU",
    "asnsSelected": "제공업체 ASN({{n}} 선택됨)",
    "asnsHint": "클라우드/ISP; 맞춤형 ASN 확인",
    "customAsn": "사용자 정의 ASN(예: 13335",
    "asnPlaceholder": "클라우드플레어/ISP",
    "cityExample": "예를 들어 CN|심천 또는 미국|애쉬번",
    "policySaved": "정책 저장됨 · 국가 {{c}} · 지역 {{r}} · ASN {{a}}",
    "ipPolicySaved": "IP 액세스 정책이 저장되었습니다.",
    "nginxGeoWritten": "nginx 지리 정보 조각을 작성했습니다.",
    "ipAddress": "IP 주소",
    "lookupPlaceholder": "조회할 IPv4 또는 IPv6",
    "wouldBlock": "차단할 것임 · {{reason}} · {{matched}}",
    "wouldAllow": "허용 · {{reason}}",
    "lookupDone": "조회 완료",
    "item": "필드",
    "value": "값",
    "country": "국가",
    "region": "지역",
    "city": "도시",
    "continent": "대륙",
    "coords": "좌표",
    "provider": "공급자",
    "policy": "정책",
    "block": "차단하다",
    "allow": "허용하다",
    "matched": "일치함",
    "applyStricterTitle": "더 엄격한 사전 설정을 적용하시겠습니까?",
    "applyStricterDesc": "자동 차단을 활성화할 수 있습니다. 귀하의 IP가 허용 목록에 있는지 확인하세요.",
    "confirmEmergencyTitle": "비상 사전 설정 확인",
    "confirmEmergencyDesc": "긴급 상황에서는 속도 제한이 매우 심합니다. 화이트리스트를 확인하고 EMERGENCY를 입력하세요.",
    "confirmString": "문자열 확인",
    "applyEmergency": "긴급상황 적용",
    "sectionPreset": "사전 설정",
    "sectionAutoPreset": "① 자동 프리셋",
    "sectionAutoBan": "② 자동 차단",
    "unban": "금지 해제",
    "ban": "반",
    "banConfirmTitle": "금지 {{ip}}?",
    "banConfirmMethod": "방법: {{method}}",
    "banConfirmUntilUnban": "금지를 해제할 때까지(또는 Fail2ban 만료) 금지된 상태로 유지됩니다.",
    "banConfirmDesc": "이 IP는 호스트에서 차단됩니다. 현재 패널이나 세션 주소가 아닌지 확인하세요.",
    "wlRemovedUndo": "허용 목록에서 {{ip}}를 제거했습니다. 5초 이내에 실행 취소하세요.",
    "undo": "끄르다",
    "banSelectedConfirmTitle": "{{count}} 선택된 IP를 차단하시겠습니까?",
    "banSelectedConfirmDesc": "다음 주소는 호스트에서 차단됩니다: {{ips}}",
    "save": "저장",
    "yes": "예",
    "no": "아니요",
    "oneClickSuggested": "추천 사전 설정 적용",
    "stackApply": "보호 스택 적용(UFW, Fail2ban, 사전 설정)",
    "stackApplyDone": "보호 스택 적용이 요청되었습니다.",
    "stackApplyHint": "이렇게 하면 UFW가 활성화되고 Fail2ban과 제안된 사전 설정이 적용됩니다. 원격 패널에서 자신을 잠그지 않을 것인지 확인하십시오.",
    "viewPresets": "사전 설정 보기",
    "suspectIpsCount": "의심되는 IP {{count}}",
    "goBans": "금지로 이동",
    "singleEntryPrefix": "단일 항목:",
    "singleEntryBody": " ",
    "emergencyNeverAuto": "비상사태 절대 자동",
    "writeOnlyBanner": "쓰기 전용: 시스템 적용에는 EXECUTE=1 및 루트가 필요합니다.",
    "readiness": "준비",
    "goTo": "열려 있는",
    "presetGuide": "",
    "active": "활동적인",
    "recommended": "제안",
    "useCarefully": "주의",
    "preview": "시사",
    "stackToolsSee": "스택 탭의 스택 도구 ·",
    "readinessCheck": "준비 상태 확인",
    "automationMasterLabel": "자동화 마스터 스위치",
    "runOneTick": "지금 한 틱을 실행하세요",
    "suggestEmergencyBanner": "점수가 매우 높음 - 시스템에서 긴급 상황을 제안하지만 자동으로 적용되지는 않습니다. 응답 탭에서 확인하세요.",
    "autoPresetDesc": "점수에 따라 일일/강화/공격력 부족으로 자동 전환됩니다. 비상은 절대 자동이 아닙니다.",
    "allowDeescalate": "자동 에스컬레이션 허용",
    "autoBanThresholdHint": "소프트/보통/공격적 채우기 임계값;",
    "sectionMechanism": "③ 작동 원리",
    "lastNotes": "마지막: {{notes}}",
    "sectionWeights": "④ 신호 가중치(0~3)",
    "weightsDesc": "기본값 1;",
    "needCfToken": "환경 CF_API_TOKEN이 필요합니다.",
    "cfOnEscalate": ". 공격이 부족하거나 수동 적용으로 에스컬레이션할 때 API를 호출할 수 있습니다.",
    "ufwOnlyCf": "공격 중: UFW는 CF 범위(+SSH)만 허용합니다.",
    "ufwOnlyCfHint": "UFW를 Cloudflare IP로만 재설정합니다. 시스템 변경 권한이 필요합니다.",
    "saveZones": "구역 저장",
    "uaNow": "지금 공격받고 있다",
    "uaClear": "클리어(→높음)",
    "stackRoleNote": "UFW 및 fall2ban은 보호(최상위 탐색 아님) 아래의 도구 페이지입니다. 사이드바는 이 페이지만 유지합니다.",
    "fwUfwTitle": "방화벽 UFW",
    "fwStats": "포트 정책 · 영구 거부 · 허용 {{allow}} · 거부 {{deny}}",
    "fwRulesProfiles": "UFW 규칙 및 프로필",
    "f2bStats": "로그 임시 금지 · {{jails}} 감옥 · 금지 {{banned}}",
    "jailsWhitelistPolicy": "감옥 · 허용 목록 · 정책",
    "divisionTitle": "노동 분업",
    "divisionUfw": "UFW = 열려 있는 포트, 영구 IP 거부",
    "divisionF2b": "failure2ban = 로그 스캔 후 임시 금지",
    "divisionDefense": "이 페이지 = 공격 조율(비율 사전 설정 + 자동 금지 + 용의자)",
    "autoBanLabel": "자동 금지",
    "scanOnce": "한 번 스캔",
    "selectedIps": "{{count}} IP 선택됨",
    "banSelected": "차단이 선택됨",
    "suspectIps": "의심되는 IP",
    "selectAll": "모두 선택",
    "alreadyBanned": "금지됨",
    "whitelist": "화이트리스트",
    "bansWorkflow": "대응: 용의자 목록 → 금지/금지 해제. 감옥 정책, IP 무시, 서비스 수명 주기:",
    "f2bTool": "fail2ban 도구",
    "noSecondJail": "(여기에는 두 번째 감옥 편집자가 없습니다).",
    "autoBanWhitelistTitle": "자동 차단 허용 목록",
    "autoBanWhitelistDesc": "보호 자동 차단 예외(fail2banignoreip 동기화)",
    "ufwOff": "UFW (꺼짐)",
    "ufwOffHint": "UFW가 활성화되어 있지 않습니다. - fall2ban이 사용 가능한 대상입니다.",
    "whitelistSyncHint": "{{n}} 패널 항목 · FAIL2BIN 무시 IP 동기화: {{sync}}",
    "whitelistSyncOn": "~에",
    "whitelistSyncOff": "꺼짐(목록은 다를 수 있음)",
    "ignoreipWhitelist": "IP 허용 목록 무시",
    "notSetSuggestAdmin": "설정되지 않음(관리자 IP 추가)",
    "moreItems": "… {{n}} 더보기 · fail2ban 허용 목록 참조",
    "add": "추가하다",
    "manualBanTitle": "수동 차단",
    "methodFollows": "방법은 위의 선택을 따릅니다(fail2ban / UFW).",
    "preferSuspectList": "일반적으로 용의자 목록이면 충분합니다.",
    "threatSignals": "위협 신호",
    "scoreSource": "점수 소스 · 가중치 조정 가능",
    "accessAuthSample": "액세스 + 인증 샘플",
    "fullLogsAt": "전체 nginx/인증 로그:",
    "logCenter": "로그 센터",
    "colScore": "점수",
    "colHits": "횟수",
    "col429": "429",
    "topIpsTitle": "상위 IP",
    "hitsCount": "{{n}}회",
    "sampleWindowHint": "횟수는 전체 로그가 아니라 현재 access + auth 샘플 창에서 나옵니다.",
    "banShort": "반",
    "vhostLimits": "Vhost 속도 제한",
    "eventStream": "이벤트 스트림",
    "eventKind": {
      "preset": "프리셋",
      "auto_preset": "자동 프리셋",
      "cloudflare_ua": "클라우드플레어",
      "ban": "반",
      "unban": "금지 해제"
    },
    "hours48": "48시간",
    "geoipDb": "GeoIP 데이터베이스",
    "refreshStatus": "새로고침 상태",
    "updateDbNow": "지금 DB 업데이트",
    "geoipSourceHint": "기본적으로 로컬 GeoIP DB를 사용합니다. 선택적 IPinfo 토큰.",
    "retry": "다시 해 보다",
    "loadingGeoip": "GeoIP 상태 로드 중…",
    "nextScheduledUpdate": "다음 예정 업데이트: {{at}}",
    "statusNotLoaded": "로드되지 않은 상태",
    "load": "짐",
    "accessPolicy": "접근 정책",
    "enable": "사용",
    "freeGranularity": "최대 무료: 국가 + 지역 + ASN; 도시는 선택 사항입니다(기본값은 꺼짐, 정확도는 낮음). 공급자 = ASN. 화이트리스트는 항상 면제됩니다. 제거하려면 칩을 클릭하세요.",
    "allowListDanger": "허용 목록 모드는 위험도가 높습니다. 목록에 없는 공용 IP(알 수 없는 지역 포함)는 차단됩니다. 관리자 IP가 금지 페이지 허용 목록에 있는지 확인하세요.",
    "dailySchedule": "일일 일정",
    "cityPolicy": "도시 정책(낮은 신뢰도 · 선택 사항)",
    "useCityAccess": "액세스하려면 도시를 사용하세요.",
    "cityPolicyHint": "무료 DB 도시 정확도는 제한되어 있습니다.",
    "noCitiesYet": "아직 도시가 없습니다.",
    "savePolicy": "정책 저장",
    "applyNginxSnippet": "Nginx 스니펫 적용",
    "nginxSnippetHint": "HTTP 차단에는 nginx geoip2 모듈이 필요합니다.",
    "testIp": "테스트 IP",
    "lookup": "조회",
    "plusCountry": "+ 국가 {{v}}",
    "plusRegion": "+ 지역 {{v}}",
    "plusCity": "+ 도시 {{v}}",
    "lastTickPrefix": "· 마지막 {{t}}",
    "nextTickPrefix": "· 다음 {{t}}",
    "cannotBanSelf": "{{ip}}는 차단할 수 없습니다 — 호스트, 로그인 IP 또는 ignoreip입니다",
    "selfIp": "이 호스트",
    "selfHostIp": "호스트 IP",
    "selfLoginIp": "귀하의 로그인 IP",
    "showZeroScore": "0점 표시",
    "hideZeroScore": "0점 숨기기",
    "geoDraftOnly": "정책이 꺼져 있습니다. 저장은 초안만 씁니다. 켜기 전까지 Nginx는 적용하지 않습니다.",
    "geoNeedDb": "GeoIP 데이터베이스가 없습니다. 먼저 MMDB 파일을 업데이트하세요.",
    "uaNeedZones": "Cloudflare 영역을 먼저 설정하세요",
    "selectAllCountriesWarn": "차단 목록에서 모든 국가를 선택할까요? 이 호스트와 로그인 국가도 막힐 수 있습니다.",
    "badgeRecommendPreset": "현재 위협 수준에는 더 강한 프리셋을 권장합니다",
    "badgeAutomationOn": "자동화가 켜져 있습니다",
    "badgeBanCount": "현재 차단 수",
    "badgeGeoOn": "Geo 접근 정책이 켜져 있습니다",
    "badgeGeoNotReady": "GeoIP 데이터베이스가 준비되지 않았습니다",
    "badgeIntelSignals": "지금 점수에 더해지는 신호 수",
    "signalActive": "동작 중",
    "signalInactive": "비활성",
    "signalJails": "jail {{n}}개",
    "dbReadyHint": "MMDB 파일이 있습니다",
    "dbNotReadyHint": "먼저 GeoIP 데이터베이스를 받으세요",
    "staleHint": "마지막 성공 업데이트가 7일을 넘겼는지",
    "draftBadge": "초안",
    "banIsSelf": "이 IP는 현재 패널 소스 또는 이 호스트와 일치합니다.",
    "banNotSelf": "이 IP는 현재 패널 소스가 아닙니다.",
    "geoSourceLocal": "로컬 GeoIP 라이브러리(sapics + DB-IP)",
    "nginxPreviewHint": "이 사전 설정이 작성하는 Nginx 스니펫(미리보기 전용):"
  },
  "publicFiles": {
    "notSet": "설정되지 않음",
    "quota": "몫",
    "reloadOnApply": "신청시",
    "path": "길",
    "fileManager": "파일 관리자",
    "overview": "개요",
    "overviewDesc": "적용할 설정(읽기 전용 요약)",
    "serverName": "서버 이름",
    "reloadNginx": "Nginx 다시 로드",
    "reloadTry": "신청해 보세요",
    "siteSettings": "사이트 설정",
    "siteSettingsDesc": "관리되는 conf를 작성합니다. 적용 시 Nginx를 다시 로드할 수 있음(적용 후에만 접근 가능)",
    "serverNameHint": "Nginx 서버_이름, 예: files.example.com",
    "notes": {
      "noManagedConf": "아직 관리되는 Nginx conf가 없습니다. 적용을 클릭하세요.",
      "notSynced": "관리되는 conf가 존재하지만 /etc/nginx/conf.d 아래에 있지 않습니다. YSK_EXECUTE를 사용하여 루트로 다시 적용합니다."
    },
    "quotaMiB": "할당량(MiB)",
    "quotaHint": "선택 과목; 공용 디렉토리 크기를 제한합니다.",
    "unlimited": "제한 없는",
    "quotaInvalid": "MiB의 정수를 입력하거나 무제한을 선택합니다.",
    "serverNameRequired": "서버 이름을 입력하세요.",
    "serverNameInvalid": "공백이나 구두점 없이 호스트 이름, 와일드카드 또는 IP를 사용하세요.",
    "applyHint": "적용은 구성 쓰기에만 적용됩니다.",
    "appliedOk": "공개 파일 사이트 적용",
    "applyReload": "Nginx 적용 및 다시 로드",
    "statusLive": "nginx에서 라이브",
    "statusDraft": "초안 / 적용되지 않음",
    "statusManagedOnly": "관리형만",
    "statusNotApplied": "적용되지 않음",
    "nginxLive": "conf.d에서",
    "nginxNotLive": "conf.d에 없음",
    "openSite": "사이트 열기",
    "notLiveHint": "도메인 404는 일반적으로 conf가 dataDir에만 있고 /etc/nginx/conf.d에 복사되지 않았거나 nginx가 다시 로드되지 않았음을 의미합니다. 루트 + YSK_EXECUTE로 다시 적용하세요. 이 호스트 이름에 대해 SSL이 발행될 때까지 http://를 사용하십시오.",
    "diskRoot": "디스크 루트",
    "executeFlag": "실행하다",
    "asRoot": "뿌리",
    "filesInRoot": "항목",
    "managedConf": "관리형 구성",
    "systemConf": "시스템 구성",
    "autoindex": "디렉토리 목록(자동 색인)",
    "liveSystemConf": "실제 시스템 설정: {{path}}",
    "publicRootNote": "공개 루트: {{path}}",
    "applyConfirmTitle": "공개 파일 사이트를 적용할까요?",
    "applyConfirmDesc": "Nginx server_name {{name}}을(를) 쓰고 Nginx를 다시 로드합니다.",
    "serverNameMismatch": "실제 설정은 {{live}}이고 폼은 {{draft}}입니다. 적용하면 교체됩니다.",
    "liveName": "실명",
    "draftName": "초안 이름",
    "draftUnapplied": "이 초안은 적용되지 않습니다. Nginx는 여전히 실제 이름을 제공합니다.",
    "discardDraft": "초안 삭제"
  },
  "rbac": {
    "permissions": "권한",
    "permissionsDesc": "역할별로 기능을 추가하거나 제거합니다. 원클릭 복원으로 공장 기본값을 복원합니다.",
    "rolePolicy": "역할 정책",
    "dirty": "맞춤형",
    "factory": "공장 기본값",
    "maxLevel": "최대 레벨",
    "save": "정책 저장",
    "saved": "{{role}} 정책 저장됨",
    "restoreRole": "이 역할을 복원하세요.",
    "restoreAll": "모든 역할 복원",
    "restoreRoleTitle": "{{role}}를 공장 기본값으로 복원하시겠습니까?",
    "restoreRoleDesc": "이 역할의 맞춤 기능이 삭제됩니다.",
    "restoreAllTitle": "모든 역할을 공장 기본값으로 복원하시겠습니까?",
    "restoreAllDesc": "모든 맞춤 역할 정책이 삭제됩니다.",
    "restoredRole": "복원됨 {{role}}",
    "restoredAll": "모든 역할 기본값을 복원했습니다.",
    "bandAllOn": "모두 활성화",
    "bandAllOff": "모두 비활성화",
    "diffFromFactory": "기본값과 다름",
    "effectivePreview": "효과적인 능력",
    "userOverrides": "사용자 재정의",
    "extraGrants": "추가 보조금",
    "extraRevokes": "추가 취소",
    "restoreUserOverrides": "사용자 재정의 지우기",
    "restoreUserOverridesTitle": "{{name}}에 대한 재정의를 삭제하시겠습니까?",
    "restoreUserOverridesDesc": "추가 승인/취소만 삭제됩니다. 역할 정책은 변경되지 않습니다.",
    "overridesBadge": "재정의",
    "promoteAdminTitle": "관리자로 승급하시겠습니까?",
    "promoteAdminDesc": "관리자는 사용자 관리, RBAC 변경, 가장, 백업 복원 등을 수행할 수 있습니다.",
    "level": {
      "read": "읽다",
      "write-low": "쓰기(낮음)",
      "write-high": "쓰다(높음)",
      "destructive": "파괴적인",
      "privilege": "특권"
    },
    "cap": {
      "dashboardRead": "대시보드",
      "logsRead": "로그",
      "metricsRead": "측정항목",
      "projectsRead": "프로젝트(읽기)",
      "mailRead": "메일(읽기)",
      "dnsRead": "DNS(읽기)",
      "sslRead": "SSL(읽기)",
      "backupsRead": "백업(읽기)",
      "updatesRead": "업데이트(읽기)",
      "servicesRead": "서비스(읽기)",
      "firewallRead": "방화벽(읽기)",
      "approvalsView": "승인(보기)",
      "usersSelf": "자기 프로필 / 2FA",
      "projectsWrite": "프로젝트 생성/편집",
      "mailWrite": "사서함/별칭",
      "dbWrite": "데이터베이스 생성",
      "sslUpload": "인증서 업로드",
      "filesProject": "프로젝트 파일",
      "approvalsRespond": "승인에 응답",
      "cronManage": "크론 관리",
      "servicesControl": "서비스 제어",
      "updatesApply": "패키지 업데이트 적용",
      "dnsApply": "DNS 적용",
      "sslIssue": "SSL 발급",
      "publishApply": "게시/Nginx",
      "firewallEdit": "방화벽 수정",
      "mailApply": "메일 맵 적용",
      "runtimeTuning": "런타임 튜닝",
      "mysqlConsoleWrite": "MySQL 쓰기 콘솔",
      "projectsDelete": "프로젝트 삭제",
      "dbDrop": "데이터베이스 삭제",
      "backupsRun": "백업 실행",
      "backupsRestore": "백업 복원",
      "firewallFlush": "플러시 방화벽",
      "logsPurge": "로그 제거",
      "usersManage": "사용자 관리",
      "packagesManage": "패키지 관리",
      "usersImpersonate": "가장",
      "securityPolicy": "보안정책",
      "rbacPolicy": "RBAC 정책",
      "settingsSystem": "시스템 설정",
      "auditExport": "내보내기 감사",
      "securityApiKeysAdmin": "API 키 관리자",
      "networkBrowse": "호스트 중재 웹 탐색",
      "networkVnc": "VNC 원격 데스크톱",
      "validatorsRead": "검증자(읽기)",
      "validatorsManage": "검증자 관리",
      "validatorsWipe": "검증자 데이터 삭제",
      "dockerRead": "Docker(읽기)",
      "dockerManage": "Docker 관리",
      "dockerWipe": "Docker 삭제／정리"
    },
    "aboutRoles": "역할(공장 기본값)",
    "aboutRolesBody": "역할은 기본 기능을 설정합니다. 사용자는 개별 항목을 재정의할 수 있습니다.",
    "aboutQuota": "할당량",
    "aboutQuotaBody": "패키지 할당량은 기본적으로 하드 다중 테넌트 격리가 아닌 호스트/패널 합계입니다.",
    "dangerPolicyTitle": "파괴적/권한 기능을 부여하시겠습니까?",
    "dangerPolicyDesc": "파괴적 또는 권한 제한을 추가하거나 이 역할에 대한 maxLevel을 높이고 있습니다.",
    "needRbacPolicy": "역할 정책을 편집하려면 rbac.policy가 필요합니다.",
    "adminLockedFull": "관리자 완전 개방(잠김)",
    "adminLockedHint": "관리자 시스템 역할은 항상 완전히 열려 있으며 축소할 수 없습니다.",
    "maxLevelHint": "이 수준 이상의 기능 그룹은 잠긴 상태로 유지됩니다.",
    "capabilities": "기능",
    "capabilitiesHint": "이 역할이 수행할 수 있는 작업 전환",
    "enabledCount": "{{total}} 중 {{enabled}} 활성화됨",
    "bandAboveMax": "최대 레벨 이상",
    "roleUnavailable": "이 역할에는 사용할 수 없습니다.",
    "dirtyHint": "맞춤형(공장마다 다름)",
    "unsaved": "저장되지 않음",
    "unsavedHint": "이 역할에 대한 저장되지 않은 수정사항",
    "nothingToSave": "저장할 항목이 없습니다.",
    "saveRole": "{{role}} 정책 저장",
    "discardTitle": "저장되지 않은 정책을 삭제하시겠습니까?",
    "discardDesc": "역할을 전환하면 저장되지 않은 기능 편집 내용이 삭제됩니다."
  },
  "readiness": {
    "cat": {
      "core": "제어 영역",
      "security": "권한 및 보안",
      "binaries": "시스템 소프트웨어",
      "hosting": "런타임",
      "dns": "DNS",
      "email": "이메일",
      "isolation": "프로젝트 격리",
      "ops": "운영"
    },
    "level": {
      "ready": "준비됨",
      "degraded": "타락한",
      "missing": "없어진",
      "unknown": "알 수 없음"
    },
    "severity": {
      "critical": "비판적인",
      "recommended": "추천",
      "optional": "선택 과목"
    },
    "fix": "고치다",
    "passed": "통과하다",
    "checkFailed": "준비 확인 실패",
    "gatePass": "관문 통과 · {{pct}}%",
    "gateFail": "준비되지 않음 · {{pct}}%",
    "gateBlocked": "통과되지 않음 · {{n}} 누락",
    "executeOn": "켜짐",
    "executeOff": "꺼짐",
    "blockers": "차단제",
    "blockersHint": "「차단」은 「없음」의 핵심 부분집합이며 추가 검사가 아닙니다.",
    "requireAdminTotp": "관리자 2FA 정책 필요",
    "listenBind": "주소를 들어",
    "item": {
      "admin2fa": "관리 2단계"
    },
    "dataDirPerms": "패널 데이터 디렉토리 권한",
    "mode750": "모드 750",
    "totalChecks": "모든 수표",
    "totalChecksHint": "준비 + 성능 저하 + 누락 = 이 합계입니다. 차단제는 중요한 누락 부분 집합입니다.",
    "probing": "조사 중…",
    "reprobe": "다시 조사",
    "exportReport": "보고서 내보내기",
    "exportStarted": "다운로드 중 {{name}}",
    "firstBlocker": "첫 번째 차단 문제 해결",
    "viewRecommended": "추천 보기",
    "loadingProbe": "호스트 기능을 조사하는 중…",
    "priorityTab": "우선순위 수정",
    "checklistTab": "전체 체크리스트",
    "summaryTab": "요약 및 단축키",
    "priorityTitle": "우선순위 수정",
    "prioritySub": "순서대로 처리하십시오. 차단제를 제거한 후 다시 조사",
    "nItems": "{{count}} 항목",
    "noHardBlockers": "하드 블로커 없음",
    "noHardBlockersTitle": "하드 블로커 없음",
    "prodGate": "생산 게이트",
    "gatePassed": "합격",
    "gateMaybePerm": "권한으로 인해 여전히 실패할 수 있음",
    "viewDegradedHint": "저하된 권장 사항(메일, DNS, 선택적 런타임)을 검토합니다.",
    "viewDegraded": "보기 성능이 저하됨",
    "fullChecklist": "전체 체크리스트",
    "showing": "{{shown}} / {{total}} 표시 중",
    "filterAria": "상태 필터",
    "all": "전체",
    "category": "범주",
    "allCategories": "모든 카테고리",
    "searchPh": "제목, 세부정보, ID, 수정 힌트…",
    "quickCatAria": "빠른 카테고리",
    "noMatchTitle": "일치하는 항목이 없습니다.",
    "noMatchDesc": "검색을 지우거나 필터를 변경하세요.",
    "resetFilters": "필터 재설정",
    "summary": "요약",
    "shortcuts": "단축키",
    "opsShortcutsAria": "운영 단축키",
    "scHost": "호스트 설정",
    "scHostD": "호스트 이름 · 전원 · NTP",
    "scUnit": "제어 영역 단위",
    "scUnitD": "시스템 설치 / 활성화",
    "scServices": "서비스 매트릭스",
    "scServicesD": "nginx · DB · 수명주기",
    "scMetrics": "호스트 측정항목",
    "scMetricsD": "로드 · 메모리 · 경고",
    "scProtection": "국방센터",
    "scProtectionD": "대응 · UFW · fail2ban",
    "policyNote": "정책: 메일 PTR / 포트 25 / 등록자 DNS는 자동으로 완료되지 않습니다. HTTP 503 = 준비되지 않았지만 전체 보고서(가짜 성공 아님)",
    "notProbedTitle": "아직 조사되지 않음",
    "notProbedDesc": "읽기 전용 준비 상태 확인을 시작하려면 \"다시 프로브\"를 클릭하세요.",
    "runCheck": "준비 상태 확인 실행",
    "reportFormatError": "잘못된 준비 보고서 형식",
    "checkFailedHttp": "준비 상태 확인 실패({{status}})",
    "itemAdminPassword": "관리자 비밀번호 강도",
    "itemAdminPasswordWeak": "{{count}} 관리자가 must_change_password / 안전하지 않은 부트스트랩을 표시함 — 제작 전 변경",
    "itemAdminPasswordOk": "관리자 계정에는 부트스트랩/비밀번호 취약 플래그가 없습니다.",
    "itemAdminPasswordFix": "관리자 비밀번호 변경(보안/사용자)",
    "itemListenBind": "제어 영역 수신 바인딩",
    "itemListenBindPublic": "Listen은 공개(0.0.0.0/::)일 수 있습니다. 127.0.0.1 + 역방향 프록시/방화벽을 선호합니다.",
    "itemListenBindLoopback": "루프백 바인드 선호(기본값 127.0.0.1)",
    "itemDataDirPerms": "dataDir 권한",
    "itemDataDirWorldW": "chmod 750(또는 700) dataDir; 패널 사용자에게 chown",
    "itemDataDirOtherR": "다른 사용자가 제어 평면 JSON을 읽을 수 없도록 chmod 750 dataDir을 선호합니다.",
    "itemRustToolchain": "Rust 툴체인",
    "itemWebBuildFix": "\"지금 수정\"을 클릭하여 웹 UI를 빌드하거나(이 호스트에 모노레포가 필요함) pnpm --filter ysk-server-web build를 실행합니다.",
    "itemWebBuildManual": "이 호스트에는 단일 저장소 또는 패키지 SPA가 없습니다. 원클릭 수정이 불가능합니다. 소스가 있는 머신에서: pnpm --filter ysk-server-web build를 누른 다음 apps/web/dist/*를 dataDir/web(예: /var/lib/ysk-server/web)에 복사하거나 YSK_WEB_ROOT를 설정하고 다시 시작합니다.",
    "itemStateStore": "제어 영역 상태 저장소",
    "itemStateStoreSqliteHint": "선택사항: WAL 문서 저장소용 YSK_STORE=sqlite",
    "itemBackupFreshness": "마지막 전체 백업 실행",
    "itemBackupNone": "last_backup_run이 기록되지 않음 - 전체 백업 또는 예약 실행",
    "itemBackupFix": "ysk-server 백업 모두 · 백업 일정 --install",
    "itemFleetSessions": "차량 에이전트 세션",
    "itemFleetNone": "단일 호스트의 경우 선택 사항입니다. 다중 에지에는 에이전트 실행 + 하트비트가 필요합니다.",
    "itemFleetNoHb": "세션이 등록되었지만 하트비트가 아닌 경우 — 에지 에이전트 시작",
    "itemPdnsutil": "pdnsutil(PowerDNS)",
    "apachePort80Title": "아파치 대 공개 :80",
    "apachePort80Detail": "Apache는 :80을 수신하고 있으며 Nginx는 공개 HTTP를 사용하지 않습니다. Nginx-as-edge 토폴로지와 충돌합니다.",
    "apachePort80Both": "Apache와 Nginx는 모두 :80에 나타납니다. Apache를 127.0.0.1:8080에 다시 바인딩합니다.",
    "apachePort80Ok": "Apache가 실행 중이지만 public :80(토폴로지 정상)만을 소유하지는 않습니다.",
    "apachePort80Fix": "설치 리바인드 도우미가 존재합니다. 80에서 Apache 가상 호스트를 비활성화하거나 다시 로드한 후 ss -lntp로 확인하십시오.",
    "fixNow": "지금 고치세요",
    "fixFailed": "수정 실패",
    "fixDone": "dataDir 권한 강화(chmod 750)",
    "fixDoneWebUi": "웹 UI 구축/설치",
    "rootLabel": "수퍼유저",
    "techDetails": "기술적인 세부사항",
    "missingOwner": "할당된 패널 소유자 없음(패키지 할당량 속성)",
    "notOsProvisioned": "OS 사용자/홈이 아직 프로비저닝되지 않았습니다.",
    "isolationPendingOs": "프로젝트 상태와 동일: OS 사용자 보류 중입니다. 격리를 열어 시스템 사용자와 홈을 프로비저닝합니다.",
    "ondrejNone": "ondrej Launchpad PHP 소스가 감지되지 않았습니다.",
    "ondrejFound": "packages.sury.org와 충돌하는 기존 ondrej/php 소스 발견: {{paths}}",
    "ondrejTitle": "PHP 적절한 소스(ondrej 잔여)",
    "systemctlActive": "서비스가 실행 중입니다.",
    "systemctlStatus": "서비스 상태: {{status}}",
    "binInPath": "PATH의 {{bin}}",
    "leftoverApache": "Apache 남은 기본 사이트",
    "leftoverVsftpd": "vsftpd 장치 실패",
    "leftoverCli": "오래된 남은 CLI",
    "leftoverNginx": "Nginx 포괄 기능이 누락되었습니다.",
    "leftoverDovecot": "누락된 인증서를 가리키는 Dovecot TLS",
    "leftoverOther": "호스트 남은 음식",
    "leftoverApply": "남은 적용",
    "isolationOwnerDegrades": "owner_user_id가 누락되면 패키지 할당량 특성에 영향을 미칩니다. 상태는 저하됨, 준비되지 않음입니다."
  },
  "redis": {
    "neverExpire": "만료되지 않음",
    "ttlSeconds": "{{ttl}}초",
    "ttlMinutes": "{{n}}분",
    "ttlHours": "{{n}} 시간",
    "ttlDays": "{{n}}디",
    "typeString": "끈",
    "typeHash": "해시시",
    "typeList": "목록",
    "typeSet": "세트",
    "typeZset": "정렬된 세트",
    "keysLoadFailed": "키를 로드하지 못했습니다.",
    "writeFailed": "쓰기 실패",
    "saved": "저장됨",
    "deleted": "삭제됨",
    "offline": "오프라인",
    "connections": "사이",
    "totalKeys": "총 키",
    "writable": "쓰기 가능",
    "connected": "연결됨",
    "notConnected": "연결되지 않음",
    "keys": "열쇠",
    "selected": "선택된",
    "softwareMissing": "Redis 소프트웨어가 설치되지 않았습니다.",
    "notConnectedTitle": "Redis에 연결되지 않음",
    "installThenStart": "배너를 통해 Redis를 설치한 후 서비스를 시작합니다.",
    "installedNotConnected": "설치되었지만 연결되지 않았습니다. 서비스를 시작하여 키를 찾아보세요.",
    "keysCountSuffix": "· {{n}} 키",
    "searchPlaceholder": "검색 키(예: 사용자:* 또는 *",
    "searchKeys": "검색 키",
    "scanHint": "KEYS가 아닌 SCAN을 사용합니다. 최대 {{n}} 키를 반환합니다. 대규모 데이터베이스에서는 *를 피하세요.",
    "scanCapped": "첫 번째 {{n}} 일치 항목을 표시합니다.",
    "rows": "{{n}} 행",
    "content": "콘텐츠",
    "noMatchingKeys": "일치하는 키가 없습니다.",
    "dbEmpty": "데이터베이스 {{db}}가 비어 있습니다.",
    "noMatchPattern": "'{{pattern}}'와 일치하는 키가 없습니다.",
    "opsResult": "작업 결과",
    "addStringKey": "문자열 키 추가",
    "writeToDb": "Redis DB에 쓰기 {{db}} (라이브 — 주의)",
    "keyName": "열쇠",
    "keyNameHint": "콜론 네임스페이스를 사용하세요. 세션:사용자:1",
    "ttlLabel": "TTL(초)",
    "ttlHint": "비어 있음 = 만료되지 않음",
    "m1": "1m",
    "m5": "5m",
    "h1": "1시간",
    "d1": "1일",
    "d7": "7일",
    "customSeconds": "맞춤 초",
    "stringValue": "SET을 통한 문자열 값",
    "stringContent": "문자열 내용",
    "deleteKeyTitle": "이 키를 삭제하시겠습니까?",
    "deleteKeyDesc": "DB {{db}}에서 '{{key}}'을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.",
    "installedOk": "Redis가 설치되었습니다.",
    "startedOk": "Redis가 시작되었습니다.",
    "memory": "메모리",
    "addKey": "키 추가",
    "dbLabel": "DB {{i}}",
    "keysInDb": "· {{n}} 키",
    "dbOptionKeys": "DB {{i}} · {{n}} 키",
    "dbOptionEmpty": "DB {{i}} · 비어 있음",
    "dbRange": "{{n}} 데이터베이스(0~{{max}}).",
    "serviceLink": "서비스 설정의 변경 횟수",
    "dbsWithData": "데이터가 있는 DB(빠름)",
    "keysShort": "{{k}} 키",
    "keyList": "주요 목록",
    "pickKey": "콘텐츠를 보려면 왼쪽에 있는 키를 선택하세요.",
    "ttlPrefix": "TTL: {{ttl}}",
    "writeLiveHint": "라이브 Redis를 작성합니다. 한 번의 클릭으로 패널에서 실행 취소할 수 없습니다.",
    "refPath": "참조: {{path}}",
    "dbEmptyMark": " · 비어 있음",
    "noRequirepass": "보호 모드는 켜져 있지만 requirepass가 비었거나 읽히지 않았습니다 — 암호 없음.",
    "insecureShort": "비밀번호 없음",
    "setRequirepass": "암호 설정",
    "generateRequirepass": "비밀번호 생성 및 적용",
    "generateRequirepassTitle": "Redis 비밀번호를 생성하시겠습니까?",
    "generateRequirepassDesc": "requirepass를 작성하고 Redis를 다시 시작합니다. 비밀번호는 한 번 표시됩니다. 호스트 변경에는 EXECUTE가 필요합니다.",
    "generateRequirepassDone": "Redis 비밀번호가 적용되었습니다.",
    "generatedOnce": "생성된 비밀번호(한 번 표시됨): {{password}}",
    "rdbOnlyLossHint": "AOF 꺼짐, RDB 켜짐. 재시작이나 충돌 시 최근 쓰기가 유실될 수 있습니다.",
    "dirDataContainer": "/data(컨테이너)",
    "dirHostDefault": "/var/lib/redis",
    "dirDefaultInstance": "/var/lib/redis/default",
    "dirDataWarn": "/data는 일반적으로 컨테이너 경로입니다. 이 패널에서는 존재 여부를 확인할 수 없습니다.",
    "saveOff": "스냅샷 비활성화(권장되지 않음)",
    "saveOffWarn": "빈 저장 문자열은 RDB 스냅샷을 끕니다. AOF도 꺼져 있으면 충돌로 인해 모든 데이터가 손실될 수 있습니다.",
    "dirMoveWarn": "dir을 변경해도 dump.rdb / AOF는 이동되지 않습니다. 다음 시작에서는 새 경로를 그대로 사용합니다.",
    "passwordUnset": "서비스에 설정되지 않음",
    "passwordSetHidden": "설정(표시되지 않음)"
  },
  "resources": {
    "created": "생성됨",
    "updated": "업데이트됨",
    "deleted": "삭제됨",
    "applyDone": "신청완료",
    "applyIncomplete": "미완료 신청"
  },
  "roles": {
    "admin": "관리자",
    "operator": "연산자",
    "viewer": "뷰어",
    "agent": "대리인"
  },
  "runtime": {
    "probed": "조사됨",
    "notProbed": "프로브되지 않음",
    "probe": "조사",
    "read": "읽다",
    "targetVersion": "대상 버전",
    "nodeMissing": "Node.js가 설치되지 않았습니다.",
    "probeResult": "프로브 결과",
    "readonly": "읽기 전용",
    "installNode": "Node.js 설치",
    "needExecuteAdmin": "시스템 변경 권한과 관리자가 필요합니다.",
    "nodeMajor": "노드 주 버전",
    "nodeMajorHint": "LTS는 대개 20 또는 22입니다. 프로젝트 런타임에 맞춰",
    "installedNode": "설치된 노드 {{version}}",
    "installPm2": "PM2 설치",
    "installPm2Desc": "원클릭 npm install -g pm2(프로세스 관리자). 먼저 Node.js가 필요합니다.",
    "installPm2Btn": "PM2 설치",
    "reinstallPm2": "PM2 재설치",
    "installedPm2": "PM2가 설치됨",
    "pm2Status": "PM2 상태",
    "pm2Ready": "준비됨",
    "pm2MissingShort": "미설치",
    "pm2NeedNodeFirst": "Node.js를 먼저 설치한 다음 PM2를 설치하세요.",
    "pm2InstallHint": "시스템 변경 권한이 있는 루트로 npm -g를 실행합니다.",
    "pm2ReadyHint": "PM2는 PATH에 있습니다. 프로젝트는 PM2 프로세스 모드를 사용할 수 있습니다.",
    "opsResult": "작업 결과",
    "unlimited": "제한 없는",
    "zeroUnlimited": "0 = 무제한",
    "m24": "24분",
    "h1": "1시간",
    "d1": "1일",
    "d7": "7일",
    "phpIniLoadFailed": "php.ini를 로드하지 못했습니다.",
    "loaded": "짐을 실은",
    "default": "기본",
    "phpMissing": "PHP가 설치되지 않았습니다.",
    "overview": "개요",
    "fpmSites": "FPM / 사이트",
    "tools": "도구",
    "about": "설명",
    "installPhp": "PHP 설치",
    "versionAlreadyInstalled": "버전 {{version}}이 이미 호스트에 있습니다.",
    "installedVersionBtn": "설치됨 {{version}}",
    "newerVersionAvailable": "현재 {{current}}; 최신 지원: {{newer}} (설치하려면 선택)",
    "switchToNewer": "{{version}} 선택",
    "installedVersionsHint": "감지됨: {{list}}",
    "phpInstallHint": "시스템 변경 권한과 관리자가 필요합니다.",
    "phpVersion": "PHP 버전",
    "phpExtHint": "설치할 확장 프로그램 선택",
    "phpExtSelect": "PHP 확장",
    "phpExtSelectHint": "패키지는 php{{version}}-…로 설치됩니다.",
    "phpExtRequired": "필수(핵심)",
    "phpExtRecommended": "추천 세트",
    "phpExtSelectAll": "모든 확장 프로그램 선택",
    "phpExtCoreOnly": "코어만",
    "phpExtSearch": "검색 확장 프로그램(mysql, gd, redis…)",
    "phpExtEmpty": "일치하는 확장자가 없습니다.",
    "pluginsSelect": "일반 도구/플러그인",
    "pluginsSelectHint": "런타임과 함께 설치하려면 선택하세요(예: Node용 PM2, Python용 Poetry).",
    "pluginsSearch": "검색 도구(pm2, poem, Maven…)",
    "pluginsEmpty": "일치하는 도구가 없습니다.",
    "pluginsRecommended": "추천 세트",
    "pluginsSelectAll": "사용 가능한 항목 모두 선택",
    "pluginsNone": "동반 도구 없음",
    "pluginsInstallNote": "도구를 선택한 다음 설치를 선택합니다. 최초 런타임 설치에는 도구가 포함될 수 있습니다. 런타임이 있는 경우 위의 버튼만 사용하세요.",
    "installPluginsOnly": "선택한 도구 설치({{version}}이미 있음)",
    "installExtOnly": "선택한 확장 설치(PHP {{version}} 현재)",
    "pluginAlreadyOnHost": "이미 호스트에 있습니다",
    "installAddonsOnly": "선택한 추가 기능 설치({{version}} 현재)",
    "remoteNewerHint": "설치됨 {{current}} · 업스트림 최신 {{remote}}{{source}}",
    "installedPhp": "설치된 PHP {{version}}",
    "nextSteps": "다음",
    "suggestedFlow": "제안된 흐름",
    "globalPhpIni": "글로벌 php.ini",
    "globalPhpIniDesc": "행당 하나의 설정",
    "managePath": "관리경로",
    "loading": "로드 중",
    "probing": "조사 중…",
    "noBinaryPath": "바이너리 경로 없음",
    "hostDefaultError": "호스트 기본값을 사용할 수 없음",
    "pm2Tick": "{{at}} · 프로젝트 {{projects}} · PM2 {{pm2}} · 실행 중 {{run}}",
    "cannotLoadSettings": "설정 테이블을 로드할 수 없습니다.",
    "reloadFailed": "새로고침 실패",
    "sensitive": "민감한 설정 — 주의",
    "on": "켜짐",
    "off": "꺼짐",
    "customNumber": "맞춤 번호",
    "customExample": "사용자 정의(예: 768M",
    "advancedExtra": "고급: 추가 키 및 원시",
    "advancedExtraDesc": "카탈로그에 없는 지시어; 하나의 키=한 줄에 값; raw는 ini tail에 추가됩니다.",
    "extraDirectives": "추가 지시문",
    "extraDirectivesHint": "하나의 키=한 줄에 값(키가 아직 위에 있지 않음)",
    "rawAppend": "ini 끝에 raw 추가",
    "phpIniSaved": "php.ini가 저장되었습니다.",
    "appliedSystem": "시스템에 적용",
    "demoVhost": "시스템 도구: 데모 호스트/풀",
    "demoVhostDesc": "고급/디버그; 일일 사이트에서는 프로젝트 → 배포를 사용합니다.",
    "domain": "도메인",
    "domainRequired": "가상 호스트를 적용하기 전에 유효한 도메인을 입력하세요.",
    "vhostServerName": "가상 호스트 server_name",
    "poolName": "풀 이름",
    "poolNameHint": "직접 입력한 ID(데모); 프로젝트 경로는 ysks_* 사용자를 사용합니다.",
    "enableReload": "서비스 활성화 및 다시 로드",
    "enableReloadHint": "시스템 변경 권한이 필요합니다. 꺼짐 = 쓰기 관리만",
    "applyFailed": "적용 실패",
    "phpVhostApplied": "PHP 가상 호스트/풀 적용됨",
    "composerTools": "컴포저 / WP-CLI / 모듈",
    "composerToolsDesc": "PATH 도구 및 php -m의 라이브 프로브(읽기 전용)",
    "toolsProbed": "조사된 도구",
    "notFound": "찾을 수 없음",
    "available": "사용 가능",
    "moduleCount": "모듈",
    "installNodeV": "노드 설치 {{v}}",
    "installPhpV": "PHP 설치 {{v}}",
    "installPythonV": "Python 설치 {{v}}",
    "installGoV": "Go 설치 {{v}}",
    "installRustV": "러스트 설치 {{v}}",
    "pythonMissing": "파이썬이 설치되지 않았습니다",
    "goMissing": "Go가 설치되지 않았습니다.",
    "rustMissing": "Rust/cargo가 설치되지 않았습니다.",
    "tuneLoadFailed": "튜닝을 로드하지 못했습니다.",
    "availableCount": "{{n}} 가능",
    "notDetected": "감지되지 않음",
    "binaryPath": "바이너리 경로",
    "targetMissing": "대상 버전이 설치되지 않음",
    "targetMissingHint": "대상 {{version}}이(가) 이 호스트에 없습니다. 설치된 버전에 묶거나 이 핀을 설치하세요.",
    "target": "목표",
    "tune": "곡조",
    "loadedShort": "짐을 실은",
    "host": "주인",
    "tabOverviewInstall": "개요",
    "tabTune": "동조",
    "probeReadonlyInstall": "읽기 전용 · 설치 후 다시 조사",
    "hostDefault": "호스트 기본값",
    "panelSupport": "패널 지원",
    "ready": "준비됨",
    "notDetectedYet": "아직 감지되지 않음",
    "install": "설치",
    "installHint": "시스템 변경 권한과 관리자가 필요합니다. 툴체인 설치 ≠ 프로젝트가 공개됨",
    "panelTune": "패널 튜닝",
    "panelTuneDesc": "쓰기 관리; 배포 시 환경 삽입",
    "bindVersion": "핀 버전",
    "onePerRow": "행당 하나의 설정",
    "zeroAll": "0 = 모두",
    "custom": "관습",
    "extraEnv": "추가 환경 변수",
    "extraEnvHint": "한 줄에 하나의 KEY=값",
    "customEnv": "맞춤 환경",
    "envPreview": "환경 미리보기",
    "envPreviewDesc": "저장/마지막 로드 후 병합된 결과",
    "unsupported": "지원되지 않음",
    "tuneSaved": "튜닝이 저장되었습니다",
    "nodeDetectedHint": "호스트에서 노드가 감지되었습니다. 다시 설치하면 권한이 부여되어 덮어쓸 수 있습니다.",
    "nodeProbeAfter": "설치 후 다시 프로브하여 PATH와 버전을 확인하세요.",
    "installNodeVBtn": "노드 설치 {{version}}",
    "installPhpVBtn": "PHP 설치 {{version}}",
    "phpIniSteps1": "php.ini 탭에서 전역 값을 디자인하고 저장합니다.",
    "phpIniSteps2": "선택 사항: 시스템에 적용(/etc/php/…/conf.d 작성, 루트 필요)",
    "phpIniSteps3": "프로젝트 배포는 FPM 풀에 php_admin_*으로 병합된 ini를 주입합니다.",
    "phpIniSteps4": "프로젝트는 개별 키를 재정의할 수 있습니다(프로젝트 → 배포)",
    "phpIniNote": "변경 사항은 먼저 패널 dataDir에 저장됩니다. /etc/php에 시스템 복사본을 적용하고 FPM을 다시 로드합니다. 프로젝트 풀은 배포 시 php_admin_value를 주입합니다.",
    "phpIniLoading": "php.ini 양식 로드 중…",
    "phpIniEmpty": "빈 카탈로그 — 다시 로드하거나 API가 작동 중인지 확인하세요.",
    "reloadForm": "양식 새로고침",
    "savePhpIni": "php.ini 저장",
    "prodUseProjects": "프로덕션에서는 프로젝트를 사용해야 합니다.",
    "prodPathDesc": ": PHP 프로젝트 생성 → FPM 배포/적용 (풀 = 프로젝트 Linux 사용자 + 격리된 홈)",
    "systemDemo": "시스템 수준 데모/도구",
    "demoNotBind": "(손으로 입력한 풀 이름)이며 프로젝트 격리를 자동 바인딩하지 않습니다. 전역 php.ini는 php.ini 탭에 있습니다.",
    "applyOkWritten": "적용 성공 = 파일이 작성되었습니다. 프로젝트 배포를 선호하므로 User=project Linux 사용자입니다.",
    "applyPhpVhost": "PHP 가상호스트/풀 적용",
    "applyPhpVhostTitle": "확인 필요 - 풀/가상 호스트 파일 쓰기",
    "applyPhpVhostDesc": "{{pool}} 풀과 {{domain}} 가상 호스트를 작성합니다. 서비스 새로고침: {{reload}}.",
    "reprobeTools": "재프로브 도구",
    "pressReprobe": "재프로브 도구를 눌러 로드하세요.",
    "installNodeLabel": "노드 설치 {{v}}",
    "installPhpLabel": "PHP 설치 {{v}}",
    "installPythonLabel": "Python 설치 {{v}}",
    "installGoLabel": "Go 설치 {{v}}",
    "installRustLabel": "러스트 설치 {{v}}",
    "readShort": "읽다",
    "pressReprobeHost": "Re-probe를 눌러 호스트 버전 매트릭스를 로드하세요.",
    "installScriptNote": "설치 스크립트를 작성합니다. 권한으로만 실행됩니다. 튜닝은 튜닝 탭에 있습니다. 프로세스 변경을 위해 프로젝트를 재배포합니다.",
    "envNote": "노드: max-old-space-size가 NODE_OPTIONS로 병합됩니다. Go/Python/Rust는 공식 환경 변수를 사용합니다.",
    "saveTune": "튜닝 저장",
    "pressReprobeLoad": "재프로브 도구를 눌러 로드하세요.",
    "installJavaLabel": "OpenJDK 설치/업데이트",
    "installKotlinLabel": "Kotlin 설치/업데이트",
    "installBunLabel": "Bun 설치/업데이트",
    "javaMissing": "Java(OpenJDK)가 감지되지 않음",
    "kotlinMissing": "Kotlin 컴파일러가 감지되지 않음",
    "bunMissing": "빵이 감지되지 않음",
    "phpIniCatalog": {
      "groups": {
        "resource": {
          "title": "리소스 제한",
          "description": "메모리, 실행 시간 및 입력 제한"
        },
        "upload": {
          "title": "업로드 및 게시",
          "description": "파일 업로드 및 POST 본문 크기"
        },
        "session": {
          "title": "세션",
          "description": "세션 저장 및 쿠키"
        },
        "error": {
          "title": "오류 및 로깅",
          "description": "오류, 로깅, 보고 수준 표시"
        },
        "opcache": {
          "title": "OP캐시",
          "description": "바이트코드 캐시"
        },
        "security": {
          "title": "보안 및 경로",
          "description": "원격 파일, 노출 및 비활성화된 기능"
        },
        "locale": {
          "title": "시간대 및 문자셋"
        },
        "misc": {
          "title": "기타 공통 설정"
        }
      },
      "fields": {
        "memory_limit": {
          "label": "메모리 한도",
          "hint": "예를 들어 128M, 256M, 512M, -1(무제한)"
        },
        "max_execution_time": {
          "label": "최대 실행 시간",
          "hint": "초; 0 = 무제한(CLI)"
        },
        "max_input_time": {
          "label": "최대 입력 시간",
          "hint": "초; 요청을 구문 분석하는 데 걸리는 최대 시간"
        },
        "max_input_vars": {
          "label": "최대 입력 변수",
          "hint": "$_GET / $_POST / $_COOKIE 변수에 대한 제한"
        },
        "max_input_nesting_level": {
          "label": "최대 입력 중첩 수준"
        },
        "file_uploads": {
          "label": "파일 업로드 허용"
        },
        "upload_max_filesize": {
          "label": "최대 업로드 파일 크기"
        },
        "post_max_size": {
          "label": "최대 POST 크기",
          "hint": "최대 업로드 파일 크기 이상이어야 합니다."
        },
        "max_file_uploads": {
          "label": "요청당 최대 파일 수"
        },
        "session_save_handler": {
          "label": "세션 저장 핸들러"
        },
        "session_gc_maxlifetime": {
          "label": "세션 수명(초)",
          "hint": "초"
        },
        "session_cookie_httponly": {
          "label": "쿠키 HttpOnly"
        },
        "session_cookie_secure": {
          "label": "쿠키 보안(HTTPS만 해당)",
          "hint": "HTTPS 사이트에 권장됨"
        },
        "session_use_strict_mode": {
          "label": "세션 엄격 모드"
        },
        "display_errors": {
          "label": "오류 표시(페이지)",
          "hint": "프로덕션에서 비활성화"
        },
        "display_startup_errors": {
          "label": "시작 오류 표시"
        },
        "log_errors": {
          "label": "오류 기록"
        },
        "error_reporting": {
          "label": "오류 보고 수준",
          "hint": "또는 32767과 같은 정수"
        },
        "error_log": {
          "label": "오류 로그 경로",
          "hint": "비어 있음 = 시스템 기본값; 절대 경로 허용"
        },
        "opcache_enable": {
          "label": "OPcache 활성화"
        },
        "opcache_enable_cli": {
          "label": "CLI용 OPcache 활성화"
        },
        "opcache_memory_consumption": {
          "label": "OPcache 메모리(MB)",
          "hint": "단위:MB"
        },
        "opcache_interned_strings_buffer": {
          "label": "인턴된 문자열 버퍼(MB)"
        },
        "opcache_max_accelerated_files": {
          "label": "최대 가속 파일"
        },
        "opcache_validate_timestamps": {
          "label": "타임스탬프 검증",
          "hint": "프로덕션에서는 수동으로 비활성화하고 다시 로드할 수 있습니다."
        },
        "opcache_revalidate_freq": {
          "label": "재검증 빈도(초)"
        },
        "allow_url_fopen": {
          "label": "URL fopen 허용"
        },
        "allow_url_include": {
          "label": "URL 포함 허용"
        },
        "expose_php": {
          "label": "PHP 버전 헤더 노출"
        },
        "open_basedir": {
          "label": "open_basedir 경로 제한",
          "hint": "비어 있음 = 제한 없음 다음을 사용하여 별도의 경로:"
        },
        "disable_functions": {
          "label": "비활성화된 기능",
          "hint": "쉼표로 구분됩니다. 너무 엄격하면 패키지가 손상될 수 있습니다."
        },
        "date_timezone": {
          "label": "시간대"
        },
        "default_charset": {
          "label": "기본 문자 세트"
        },
        "short_open_tag": {
          "label": "짧은 열기 태그 허용(<?)"
        },
        "realpath_cache_size": {
          "label": "실제 경로 캐시 크기"
        },
        "realpath_cache_ttl": {
          "label": "실제 경로 캐시 TTL(초)"
        },
        "cgi_fix_redirect": {
          "label": "CGI 수정 경로 리디렉션"
        }
      },
      "options": {
        "sessionFiles": "파일",
        "sessionRedis": "레디스",
        "sessionMemcached": "멤캐시드",
        "errorReportingProd": "프로덕션(E_ALL - 더 이상 사용되지 않음/엄격함)",
        "errorReportingAll": "모든 것 (E_ALL)",
        "errorReportingQuiet": "더 조용함(공지/지원 중단 없음)",
        "errorReportingMinimal": "오류/경고/구문 분석만",
        "errorReportingOff": "꺼짐 (0)",
        "openBasedirNone": "제한 없음(비어 있음)",
        "openBasedirVarWww": "/var/www",
        "openBasedirHome": "/home",
        "openBasedirWwwTmp": "/var/www 및 /tmp",
        "errorLogDefault": "시스템 기본값(비어 있음)",
        "errorLogPhp": "/var/log/php/error.log",
        "errorLogFpm": "FPM 로그 경로",
        "errorLogSyslog": "시스템 로그"
      },
      "disableFn": {
        "groups": {
          "process": "프로세스 실행",
          "dynamic": "동적 로딩",
          "info": "정보 공개",
          "filesystem": "파일 시스템",
          "network": "네트워크/기타"
        },
        "extraHint": "카탈로그에 없음(호스트가 존재함)",
        "customPlaceholder": "다른 함수 이름…",
        "searchPlaceholder": "검색 기능…",
        "emptyText": "일치하는 항목 없음"
      }
    },
    "pluginsAvailableTitle": "설치 가능",
    "pluginsInstalledTitle": "호스트에 설치됨",
    "pluginsInstalledHint": "PATH에서 감지되었습니다. 설치 선택에서 제외됩니다. 제거하는 것이 최선입니다.",
    "pluginsAllInstalled": "모든 카탈로그 도구가 이미 이 호스트에 있습니다.",
    "pluginStatusInstalled": "설치됨",
    "pluginUninstall": "제거",
    "pluginUninstallConfirmTitle": "도구를 제거하시겠습니까?",
    "pluginUninstallConfirm": "이 호스트에서 \"{{name}}\"를 제거합니다(해당되는 경우 npm/apt/pip를 통해). 이에 의존하는 서비스를 먼저 중지하십시오.",
    "pluginUninstalled": "제거됨 {{name}}",
    "pluginUninstallFailed": "제거 실패 {{name}}",
    "pluginUninstallBlocked": "패널을 제거할 수 없습니다(루트 + EXECUTE 필요).",
    "phpExtAlreadyOnHost": "설치된 확장 프로그램",
    "pluginsInstallSelected": "선택됨 설치({{n}})",
    "pluginInstallOk": "{{n}} 도구 설치됨",
    "pluginInstallFailed": "도구 설치 실패",
    "phpExtUninstallHint": "선택적 확장 제거(적절한 제거, FPM/CLI 아님)",
    "phpExtUninstallConfirmTitle": "PHP 확장 프로그램을 제거하시겠습니까?",
    "phpExtUninstallConfirm": "적절하게 \"{{pkg}}\"({{name}})를 제거합니다. 핵심 FPM/CLI는 제거되지 않습니다.",
    "phpExtOpsTitle": "확장 작업 결과",
    "pluginsOpsTitle": "도구 작업 결과",
    "pluginBatchUninstall": "선택됨 제거({{n}})",
    "pluginBatchUninstallConfirm": "{{n}} 선택한 도구를 제거하시겠습니까?",
    "pluginBatchUninstalled": "제거된 {{n}} 도구",
    "pluginBatchLabel": "선택한 도구",
    "addonsInstallAbove": "도구/확장에 대해서는 위의 \"선택한 설치...\"를 사용하십시오. 이 버튼은 런타임 버전만 설치/확인합니다.",
    "phpExtInstallSelected": "선택한 확장 프로그램 설치({{n}})",
    "phpExtInstallNote": "확장을 선택한 다음 설치를 선택합니다. 처음 PHP를 사용하는 경우 아래 PHP 설치(core+ext)를 사용합니다. 설치되면 확장 버튼만 표시됩니다.",
    "phpExtInstallNoteInstalled": "확장을 선택한 다음 설치를 선택합니다. 이 버전은 이미 호스트에 있으므로 런타임 재설치가 필요하지 않습니다.",
    "phpExtInstallNoteFirst": "PHP {{version}}이 설치되지 않았습니다. 확장 기능을 선택한 다음 아래의 PHP 설치 {{version}}를 사용하세요(설치 버튼 1개, 코어+확장 기능).",
    "installPhpWithExt": "PHP {{version}} 설치(선택한 확장 포함)",
    "installLogTitle": "설치 로그(라이브)",
    "installLogStreaming": "스트리밍…",
    "installLogDone": "완성된",
    "installLogWaiting": "서버 출력을 기다리는 중…",
    "activeDefault": "기본",
    "switchDefaultBtn": "호스트 기본값을 {{version}}로 설정",
    "switchDefaultHint": "이 버전은 설치되었지만 활성 기본값은 아닙니다.",
    "installedNotActive": "{{version}} 설치됨(기본값 아님)",
    "multiVersionHint": "Go/Rust는 여러 버전을 유지합니다. 누락된 버전을 설치한 다음 PATH에 대한 기본값을 전환합니다.",
    "tabProcesses": "프로세스",
    "pm2": {
      "title": "PM2 함대",
      "desc": "pm2 jlist(패널 사용자 PM2_HOME)의 읽기 전용 보기입니다. 실시간 SSE는 2초마다 새로 고쳐집니다.",
      "glossary": "PM2 = 프로세스 관리자; SSE = 라이브 스트림.",
      "live": "살다",
      "installed": "PM2가 설치됨",
      "version": "pm2 버전",
      "path": "pm2 경로",
      "counts": "프로세스",
      "countsValue": "총 {{n}} · {{run}} 온라인 · {{stop}} 중지됨 · {{err}} 오류 발생",
      "updatedAt": "마지막 새로고침",
      "notInstalled": "PM2가 PATH에 없습니다.",
      "installHint": "개요에 컴패니언 플러그인 설치",
      "tableTitle": "프로세스 목록",
      "yskOnly": "YSK 앱만 해당(ysk-*)",
      "filterPh": "필터 이름 / 스크립트 / pid…",
      "emptyTitle": "PM2를 사용할 수 없음",
      "emptyDesc": "Node용 pm2 플러그인을 설치한 후 새로 고치세요.",
      "noApps": "프로세스 없음",
      "noAppsDesc": "패널 사용자를 위한 PM2 앱이 없습니다.",
      "streamLog": "라이브 틱 로그",
      "streamLogDesc": "SSE 틱당 한 줄(표준 출력 처리 아님)",
      "col": {
        "name": "이름",
        "status": "상태",
        "mem": "메모리",
        "restarts": "다시 시작",
        "uptime": "가동 시간",
        "mode": "방법",
        "script": "스크립트",
        "interpreter": "통역사",
        "user": "사용자",
        "unit": "단위",
        "runtime": "실행 시간",
        "pid": "PID"
      },
      "projectsTitle": "YSK 프로젝트 프로세스",
      "projectsDesc": "패널 프로젝트용 systemd 단위(기본 배포 경로 - PM2 아님)",
      "projectsCount": "YSK 프로젝트",
      "noProjects": "프로젝트 없음",
      "noProjectsDesc": "패널에 노드/bun 프로젝트가 없거나 OS 사용자가 프로비저닝되지 않았습니다.",
      "pm2OnlyDesc": "패널 사용자 아래에서 PM2로 시작된 앱만 해당됩니다. systemd 배포가 위에 나타납니다.",
      "startupTitle": "부팅 시 시작",
      "startupDesc": "PM2를 등록하면 재부팅 후 프로세스가 다시 시작됩니다.",
      "systemdActionsHint": "systemd 작업에는 루트와 YSK_EXECUTE가 필요합니다.",
      "startupOk": "스타트업이 등록되었습니다. {{notes}}",
      "startupFail": "시작을 등록할 수 없습니다. {{notes}}",
      "actionOk": "{{action}} {{name}} — {{notes}}",
      "actionFail": "{{action}} {{name}}할 수 없습니다. {{notes}}",
      "startupReady": "준비됨",
      "startupReadyYes": "예",
      "startupReadyNo": "아니요",
      "startupUnit": "단위",
      "startupDump": "덤프",
      "startupInstall": "설치 시작",
      "startupSave": "공정 목록 저장",
      "actRestart": "다시 시작",
      "actStop": "멈추다",
      "actReload": "새로고침",
      "pm2ActionsHint": "PM2 작업은 패널 사용자의 프로세스 목록에만 적용됩니다.",
      "noteUnparsed": "PM2 목록을 구문 분석할 수 없습니다(비어 있거나 예기치 않은 출력).",
      "notePanelUserOnly": "PM2 목록은 패널 프로세스 사용자 전용입니다.",
      "noteProjectUnits": "{{n}} YSK 프로젝트 유닛 목록"
    },
    "recordedInstalled": "녹화됨 {{v}}",
    "remoteSourceSuffix": "({{source}})",
    "nodePathYskMissingTitle": "관리 노드 경로가 준비되지 않았습니다.",
    "nodePathYskMissing": "버전 {{version}}용 YSK 관리 노드가 준비되지 않았습니다. 다시 조사하거나 다시 설치하십시오.",
    "managedPathMissingTitle": "관리형 {{name}} 경로가 준비되지 않음",
    "managedPathMissing": "버전 {{version}}에 대한 YSK 관리 {{name}}가 준비되지 않았습니다. 다시 조사하거나 다시 설치하십시오.",
    "nodePathUnsafeTitle": "노드 경로가 안전하지 않습니다",
    "nodePathUnsafe": "경로 {{path}}는 관리되는 트리 외부에 있습니다. 프로젝트 배포가 실패할 수 있습니다.",
    "recordedButProbeEmpty": "패널이 설치 {{v}}를 기록했지만 호스트 프로브에서 바이너리를 찾지 못했습니다. 설치되지 않음 - 다시 조사하거나 다시 설치하십시오.",
    "installedLabel": "설치됨",
    "installedHint": "호스트 프로브 결과 — 제어 영역 기록이 아님",
    "targetHint": "이 페이지가 설치되거나 고정될 버전",
    "panelDefaultHint": "새 프로젝트는 패널 기본값 {{version}}을 선호합니다(호스트 CLI는 다를 수 있음).",
    "rebuildFromHost": "호스트에서 레코드 재구축",
    "rebuiltFromHost": "호스트 프로브에서 새로 고쳐진 레코드",
    "tabTuning": "동조",
    "versionPlaceholder": "최신,",
    "pluginsBundleWithRuntime": "도구「런타임 설치」설치(설치)。",
    "tabSoftware": "소프트웨어",
    "overviewSoftwareHint": "버전을 설치하고, 호스트 기본값을 설정하고,",
    "versionReadyTitle": "{{name}} {{version}} 준비됨",
    "versionReadyHint": "이 탭에서 호스트 기본값을 설정하거나 제거할 수 있습니다.",
    "softwareVersionTitle": "버전 {{version}}",
    "setHostDefault": "호스트 기본값으로 설정",
    "alreadyHostDefault": "{{version}}는 호스트 기본값입니다.",
    "setHostDefaultConfirmTitle": "호스트 기본값을 {{version}}로 설정하시겠습니까?",
    "setHostDefaultConfirm": "시스템 CLI(node/go/…)는 {{version}}를 가리킵니다. 버전을 고정한 프로젝트는 변경되지 않습니다.",
    "hostDefaultUnsupported": "이 런타임은 패널에서 호스트 기본값 전환을 지원하지 않습니다. 설치 또는 프로젝트 수준 핀을 사용하세요.",
    "versionInventory": "버전 인벤토리",
    "versionInventoryDesc": "모든 패널 지원 버전. 설치할 행을 선택하거나 기본값으로 설정하세요.",
    "selectToInstall": "선택하다",
    "advancedFeatureUninstall": "고급: 전체 {{name}} 스택 제거…",
    "advancedFeatureUninstallHint": "영향 미리보기 및 이중 확인을 통해 패널(및 노드용 PM2와 같은 동반 버전)에서 관리하는 모든 {{name}} 버전을 제거합니다. 가능하면 위의 단일 버전을 제거하는 것이 좋습니다.",
    "probeReadonly": "호스트의 읽기 전용 프로브",
    "uninstallVersion": "제거 {{version}}",
    "uninstallVersionTitle": "제거 {{version}}?",
    "uninstallVersionConfirm": "이 호스트(YSK 설치 경로 또는 Rustup 툴체인)에서 관리형 {{name}} {{version}}을 제거합니다. 호스트 기본값인 경우 해당 런타임에 대한 CLI 심볼릭 링크가 지워집니다. 다른 버전을 고정한 프로젝트는 변경되지 않습니다.",
    "uninstallVersionDone": "제거됨 {{version}}",
    "uninstallVersionUnsupported": "이 런타임에서는 아직 버전별 제거를 사용할 수 없습니다.",
    "setPanelDefault": "패널 기본값으로 설정",
    "alreadyPanelDefault": "패널 기본값 · {{version}}",
    "panelDefaultSaved": "패널 기본값이 {{version}}로 설정됨",
    "panelDefaultExplain": "패널 기본값 = 새 사이트/프로젝트에 선호되는 버전. 호스트 기본값 = 시스템 CLI(php/python/node…).",
    "stackReadyTitle": "{{name}} 스택 준비됨",
    "softwareIntro": "설치된 버전, 호스트 CLI 기본값, 새 프로젝트에 선호되는 버전을 관리합니다.",
    "panelDefaultLabel": "패널 기본값",
    "panelDefaultNone": "설정되지 않음",
    "versionsTitle": "버전",
    "versionsDesc": "버전을 선택하세요. 행에서 호스트 CLI를 설치하거나 설정하거나 패널 기본값을 설정합니다.",
    "roleHost": "주인",
    "rolePanel": "패널",
    "rowUninstall": "이 버전을 삭제하세요",
    "moreActions": "추가 작업",
    "selectedVersion": "선택됨 · {{version}}",
    "selectedInstalledDesc": "아래의 동반 도구. 더 이상 필요하지 않은 경우에만 이 버전을 제거하세요.",
    "selectedMissingDesc": "이 버전을 호스트에 설치하십시오. 설치 후 도우미 도구를 추가할 수 있습니다.",
    "path": "길",
    "fullVersion": "정식 버전",
    "useListForDefaults": "호스트 또는 패널 기본값을 변경하거나 이 버전을 제거하려면 위 목록을 사용하십시오.",
    "alreadyHostDefaultShort": "호스트 기본값",
    "installRecordedCta": "설치 기록 {{v}}",
    "needsInstall": "설치 필요",
    "needsInstallHint": "이 버전은 이 호스트에 없습니다. 먼저 설치하거나 설치된 버전을 고르세요.",
    "unitBytes": "바이트",
    "headerSizeKb": "{{n}}KB",
    "phpIniChipEmpty": "불러오지 않음 — php.ini 탭을 여세요",
    "phpFpmService": "PHP-FPM",
    "phpFpmServiceDesc": "PHP-FPM 유닛 시작, 중지, 다시 불러오기, 재시작",
    "rustupDefaultMissingTitle": "rustup 기본 툴체인이 없습니다",
    "rustupDefaultMissing": "rustup에 기본값이 없습니다. 소프트웨어 탭에서 stable을 설정하세요.",
    "rustupDefaultMissingShort": "기본 툴체인 없음",
    "rustupSetDefaultHint": "기본 툴체인 설정",
    "uninstalledCountHint": "{{n}}개 버전이 이 호스트에 없습니다"
  },
  "search": {
    "placeholder": "페이지 및 리소스 검색…",
    "aria": "글로벌 검색",
    "results": "검색결과",
    "loading": "수색…",
    "noResults": "일치하는 항목 없음",
    "kinds": {
      "page": "페이지",
      "project": "프로젝트",
      "email": "이메일",
      "mailbox": "사서함",
      "ssl": "SSL",
      "dns": "DNS",
      "nginx": "엔진엑스",
      "share": "주식",
      "ftp": "FTP",
      "mysql": "MySQL",
      "postgres": "PostgreSQL",
      "redis": "레디스",
      "cron": "Cron",
      "user": "사용자",
      "other": "다른"
    },
    "alias": {
      "ssl": "인증서 인증서 인증서",
      "projects": "프로젝트 사이트"
    }
  },
  "security": {
    "title": "보안 및 승인",
    "allowlist": "도구 허용 목록(읽기 전용 기본값, 고위험에는 사람의 승인이 필요함)",
    "llmUntrusted": "LLM 출력은 항상 신뢰할 수 없으며 직접 실행해서는 안 됩니다.",
    "pending": "승인 대기 중",
    "runSysInfo": "sys.info 실행",
    "none": "대기 중인 승인 없음",
    "pillPending": "{{count}} 보류 중",
    "pillReady": "준비됨",
    "pill2faOff": "2FA 꺼짐",
    "stat2fa": "2FA",
    "statApi": "API",
    "statApiSessions": "API 세션",
    "revokeOtherTitle": "로그아웃 {{n}} 다른 세션",
    "statSsh": "SSH",
    "statSshValue": "{{keys}} 키 · {{auth}} 승인됨",
    "statSshHint": "아웃바운드 ID/승인된 로그인 키",
    "statPending": "보류 중",
    "on": "켜짐",
    "off": "꺼짐",
    "output": "산출",
    "tabAccount": "내 보안",
    "tabApiKeys": "API 키",
    "tabSsh": "SSH",
    "tabApprovals": "승인",
    "tabAllowlist": "에이전트 도구",
    "apiTokenOnce": "API 토큰(한 번 표시됨):",
    "copiedToken": "토큰이 복사되었습니다.",
    "totpTitle": "2단계(TOTP)",
    "totpStatus": "상태:",
    "totpEnabled": "사용",
    "totpEnrolledUnconfirmed": "진행 중 — 스캔 및 확인",
    "totpNotSet": "설정되지 않음",
    "totpLead": "로그인하려면 6자리 앱 ​​코드가 필요합니다.",
    "totpWhy1": "도난당한 비밀번호만으로는 앱 코드 없이 로그인할 수 없습니다.",
    "totpWhy2": "민감한 작업은 TOTP(단계별)에 대한 메시지를 다시 표시할 수 있습니다.",
    "totpWhy3": "Google Authenticator, Authy, NordPass, 1Password 등과 함께 작동합니다.",
    "totpAppsHint": "추천 앱: Google Authenticator, Authy, Microsoft Authenticator, NordPass, 1Password",
    "totpStepsLabel": "설정 단계",
    "totpStepReauth": "비밀번호 확인",
    "totpStepScan": "QR 스캔 / 키 입력",
    "totpStepConfirm": "6자리 코드 확인",
    "totpStepBackup": "복구 코드 저장",
    "totpScanTitle": "QR 코드 스캔",
    "totpScanHint": "인증 앱 열기 → 계정 추가 → 이 QR을 스캔하세요.",
    "totpManualTitle": "또는 수동으로 키를 입력하세요.",
    "totpManualHint": "스캔할 수 없는 경우 앱에서 수동 입력을 선택하고 이 Base32 비밀을 붙여넣으세요.",
    "totpShowOtpauth": "otpauth:// URL 표시(고급)",
    "totpQrAlt": "TOTP 설정 QR 코드",
    "totpQrFailed": "QR을 렌더링할 수 없습니다. 아래 비밀 키를 사용하세요.",
    "totpSecretCopied": "비밀번호가 복사되었습니다.",
    "hideSecret": "비밀 숨기기",
    "showSecret": "비밀 표시",
    "totpEnabledDesc": "활성화되었습니다.",
    "totpRecoveryRemaining": "{{n}} 복구 코드 남음",
    "totpResetSummary": "2FA를 재설정하거나 끄세요…",
    "totpResetHint": "재설정하면 새로운 QR/비밀번호가 발행됩니다(이전 앱 항목이 작동하지 않음).",
    "totpDisableCodeHint": "앱 6자리 코드 또는 복구 코드",
    "disable2fa": "2FA 끄기",
    "totpDisabledOk": "이중 인증이 꺼졌습니다",
    "reauthPassword": "비밀번호를 다시 입력하세요",
    "reauthPasswordHint": "2FA 시작/재설정에는 비밀번호를 다시 입력해야 합니다(도난된 세션 보호).",
    "reauthPasswordRequired": "먼저 로그인 비밀번호를 입력하세요",
    "needCurrentPassword": "현재 비밀번호를 먼저 입력하세요",
    "passwordMin8": "새 비밀번호는 8자 이상이어야 합니다.",
    "totpSecretGenerated": "비밀 준비됨 - QR을 스캔하거나 키를 복사한 후 앱의 6자리 코드를 입력하세요.",
    "reset2fa": "2FA 재설정",
    "start2fa": "2FA 설정",
    "secretLabel": "비밀:",
    "confirmCode": "앱의 6자리 코드",
    "confirmCodeHint": "스캔 후 현재 인증기에 표시된 6자리 숫자를 입력하세요.",
    "confirmCodeInvalid": "6자리 인증코드를 입력하세요",
    "totpEnabledSaveCodes": "2FA 활성화 — 지금 아래 복구 코드를 저장하세요(한 번 표시됨)",
    "confirmEnable": "확인 및 활성화",
    "recoveryCodesHint": "복구 코드는 한 번만 표시됩니다.",
    "copiedRecoveryCodes": "복구 코드가 복사되었습니다.",
    "downloadRecovery": ".txt 다운로드",
    "recoveryDownloaded": "복구 코드 파일 다운로드됨",
    "copyAll": "모두 복사",
    "savedClose": "저장했어요 — 완료",
    "sessionsTitle": "세션",
    "sessionsDesc": "",
    "revokeOtherSessions": "다른 기기에서 로그아웃",
    "revokedOtherSessions": "로그아웃 {{count}} 다른 세션",
    "noSessions": "활성 세션 없음",
    "currentSession": "이 장치",
    "revoke": "로그아웃",
    "passkeyTitle": "패스키/웹인증",
    "passkeyDesc": "",
    "passkeyRegistered": "비밀번호가 등록되었습니다",
    "webauthnFailed": "웹 인증 실패",
    "webauthnUnsupported": "이 페이지에는 WebAuthn API가 없습니다. Brave/Chrome/Firefox에서는 제한된 모드를 피하세요. 필요한 경우 비밀번호 관리자를 사용하고 HTTPS를 통해 도메인에서 패널을 엽니다.",
    "webauthnInsecureContext": "이 페이지는 보안 컨텍스트({{origin}})가 아닙니다. 브라우저에는 암호키에 HTTPS 또는 localhost가 필요하며 Brave/NordPass와는 관련이 없습니다. 대신 https://your-domain을 열어보세요.",
    "webauthnIpHost": "IP({{origin}})를 통해 패널을 열었습니다. WebAuthn은 IP를 RP ID로 금지하므로 Brave/NordPass는 실패합니다. 도메인 + HTTPS(예: https://panel.example.com)를 바인딩하고 다시 시도하세요.",
    "webauthnEnvOk": "패스키 준비됨({{origin}})",
    "webauthnEnvCurrent": "현재 페이지: {{origin}}",
    "webauthnCancelled": "취소되었거나 시간이 초과되었습니다. 다시 시도해 보세요.",
    "webauthnUnavailableHint": "패스키에는 HTTPS + 도메인이 필요합니다.",
    "registerPasskey": "비밀번호 등록",
    "noPasskey": "패스키 없음",
    "passkeyVerifyOk": "패스키 확인됨(단계업 완료)",
    "verifyFailed": "확인 실패",
    "verifyWithPasskey": "패스키로 확인(단계별)",
    "passkeyHint": "고위험 스텝업의 경우; HTTPS + 도메인이 필요합니다.",
    "devicesTitle": "장치/백업",
    "devicesDesc": "",
    "viewTrustedDevices": "신뢰할 수 있는 장치 보기",
    "trustedDevicesCount": "신뢰할 수 있는 장치: {{count}}",
    "revokeAllDevices": "모든 기기 취소",
    "revokedAllDevices": "신뢰할 수 있는 모든 기기가 취소되었습니다.",
    "export2faBackup": "2FA 암호화 백업 내보내기",
    "fail2banSnippetMsg": "fail2ban 스니펫: {{written}} — {{notes}}",
    "generatefail2ban": "fail2ban 스니펫 생성",
    "generateFail2ban": "fail2ban 스니펫 생성",
    "adminPolicyTitle": "관리자 2FA 정책",
    "adminPolicyDesc": "",
    "requireAdmin2fa": "관리자 2FA 필요",
    "strictAdmin2fa": "엄격함: 2FA 없이 로그인 차단",
    "confirmTotpPolicy": "TOTP 확인(정책 변경 시)",
    "confirmTotpPolicyHint": "정책을 활성화하려면 조치가 필요합니다.",
    "totp6digitPlaceholder": "6자리 코드",
    "policyUpdated": "보안 정책이 업데이트되었습니다.",
    "savePolicy": "정책 저장",
    "recentProbe": "최근 프로브",
    "apiKeysTitle": "API 액세스 키",
    "apiKeysDesc": "",
    "createKey": "+ 키 생성",
    "colName": "이름",
    "colPrefix": "접두사",
    "colCreated": "생성됨",
    "apiKeysEmpty": "아직 API 키가 없습니다.",
    "apiKeysEmptyHint": "도구 모음에서 생성하세요. 그런 다음 Bearer 토큰으로 API를 호출합니다.",
    "approve": "승인하다",
    "allowlistTitle": "에이전트 도구({{count}})",
    "allowlistEmpty": "카탈로그에 도구가 없습니다",
    "totpStatusLoadFailed": "2단계 상태를 불러오지 못했습니다",
    "createApiKeyTitle": "API 키 생성",
    "createApiKeyDesc": "전체 토큰은 생성 후 한 번만 표시됩니다.",
    "createKeyBtn": "키 생성",
    "apiKeyNameHint": "쉽게 알아볼 수 있습니다. CI/백업 스크립트",
    "apiKeyScope": "범위",
    "apiKeyScopeHint": "읽기 = 읽기 전용(완전한 변경 없음)",
    "scopeFull": "전체(전체 API)",
    "scopeRead": "읽기(읽기 전용)",
    "apiKey2faHint": "2FA가 켜져 있는 경우 키를 생성하려면 인증 코드(단계별)가 필요합니다.",
    "apiKeyCreated": "API 키가 생성되었습니다.",
    "export2faBackupTitle": "2FA 백업 내보내기",
    "createApiKeyStepUp": "API 키 생성 · 스텝업",
    "enterTotpCode": "현재 TOTP 코드를 입력하세요",
    "export": "내보내다",
    "backupCopied": "클립보드에 복사된 암호화된 백업(오프라인 저장)",
    "digit6Placeholder": "6자리 코드",
    "ssh": {
      "workspaceTitle": "SSH 작업공간",
      "workspaceDesc": "먼저 직업을 선택하세요",
      "subOutbound": "아웃바운드 ID",
      "subOutboundHint": "패널/프로젝트 아웃바운드용 개인 키",
      "subLogin": "로그인 인증",
      "subLoginHint": "SFTP/SSH를 사용할 수 있는 사람",
      "sub2fa": "로그인 2FA",
      "sub2faHint": "SSH TOTP(≠ 패널 2FA)",
      "subSshd": "시스템 SSHD",
      "subSshdHint": "프로젝트 사용자 SFTP 설정",
      "jobOutboundTitle": "아웃바운드 연결",
      "jobOutboundDesc": "아웃바운드 ID 키 생성 · 패널 피어/프로젝트 Git",
      "jobLoginTitle": "인바운드 로그인 허용",
      "jobLoginDesc": "프로젝트 홈 ·authorized_keys에 공개키 등록",
      "job2faTitle": "SSH 로그인에는 2FA가 필요합니다.",
      "job2faDesc": "Linux 사용자 TOTP(패널 2FA와 별도)",
      "jobSshdTitle": "시스템 SFTP 활성화",
      "jobSshdDesc": "sshd Match 스니펫 설치(프로젝트 사용자)",
      "purposePanel": "다른 호스트에 대한 패널",
      "purposeUser": "프로젝트 사용자 아웃바운드",
      "purposeUnbound": "목적이 설정되지 않음",
      "purposePanelHint": "클러스터 피어, 백업 scp, 원격 프로브",
      "purposeUserHint": "프로젝트 Linux 사용자 git / scp / 스크립트",
      "purposeDefaultHint": "나중에 바인딩",
      "statusStored": "저장됨",
      "statusInstalled": "디스크에",
      "statusVerified": "확인됨",
      "statusMissing": "디스크에 없음",
      "statusRetired": "은퇴",
      "statusError": "오류",
      "actionInstall": "디스크에 쓰기",
      "actionTest": "테스트 연결",
      "actionCopyPub": "공개 키 복사",
      "pipelineStored": "저장됨",
      "pipelineInstalled": "디스크에",
      "pipelineVerified": "확인됨",
      "progressAria": "진전",
      "loginTitle": "로그인 인증(공개 키)",
      "loginDesc": "누가 들어올 수 있나요?",
      "loginAdd": "로그인 공개 키 추가",
      "loginEmpty": "아직 로그인 공개 키가 없습니다.",
      "loginEmptyHint": "노트북 또는 CI 공개 키를 붙여넣고 SFTP/SSH를 위해 프로젝트 사용자에 바인딩합니다(sshd 조각 필요).",
      "loginAddFirst": "첫 번째 로그인 공개 키 추가",
      "boundProject": "프로젝트",
      "unboundProject": "프로젝트 없음",
      "loginRemoved": "공개 키가 삭제되었습니다.",
      "remove": "제거하다",
      "loginModalTitle": "공개 키 승인",
      "loginModalDesc": "프로젝트를 선택한 후 해당 Linux 사용자 홈/",
      "addAuth": "승인 추가",
      "selectOption": "- 선택하다 -",
      "publicKey": "공개키",
      "publicKeyHint": "전체 줄을 붙여넣으세요. ssh-ed25519 AAAA… 댓글",
      "commentOptional": "댓글(선택사항)",
      "commentPlaceholder": "노트북 / CI",
      "loginNeedProject": "먼저 프로젝트를 생성하세요. 바인딩은 시스템 사용자가 준비되었을 때 가장 잘 작동합니다.",
      "loginNeedPub": "프로젝트를 선택하고 ssh-로 시작하는 공개 키를 붙여넣으세요.",
      "loginNoProjects": "프로젝트가 없습니다. 아래에서 기존 Linux 사용자(루트/테스터)에게 권한을 부여하세요. /root/.ssh를 작성하려면 YSK_EXECUTE=1이 필요합니다.",
      "loginLinuxHint": "프로젝트가 없을 때 사용됩니다. 예: 루트 또는 테스터.",
      "loginAdded": "추가됨",
      "sshdTitle": "프로젝트 사용자 SFTP(sshd)",
      "sshdDesc": "ysks_* / ysk_* 프로젝트 사용자가 공개 키를 사용하여 SFTP를 사용하도록 허용",
      "sshdStep1": "프로젝트 로그인 인증에 공개 키 추가",
      "sshdStep2": "여기에서 시스템 일치 스니펫을 미리 보고 설치하세요.",
      "sshdStep3": "설치에는 시스템 실행 권한이 필요합니다. sshd를 다시 로드하려고 합니다",
      "sshdPreview": "구성 미리보기",
      "loadingSnippet": "(로드 중…)",
      "reloadedCopied": "리로드됨; 스니펫이 클립보드에 복사되었습니다.",
      "reloadAndCopy": "새로고침 및 복사",
      "installedOk": "설치됨",
      "installToSystem": "시스템에 설치",
      "sshdManualHint": "실행이 차단된 경우 권한을 사용하여 컨트롤 플레인을 실행하거나 아래에 스니펫을 배치하세요.",
      "outboundTitle": "아웃바운드 ID 키",
      "outboundDesc": "제어 영역에서 암호화된 비공개 키",
      "outboundAdd": "아웃바운드 ID 추가",
      "filterActive": "활동적인",
      "filterPanel": "패널",
      "filterUser": "프로젝트 사용자",
      "filterRetired": "은퇴",
      "filterAll": "전체",
      "searchIdentity": "이름이나 지문 검색…",
      "searchIdentityAria": "신원 검색",
      "identityCount": "{{count}} 신분",
      "identityList": "신원",
      "outboundEmpty": "아직 아웃바운드 ID가 없습니다.",
      "outboundEmptyFilter": "일치하는 항목이 없습니다.",
      "outboundEmptyHint": "~30초 안에 키 만들기: 목적 선택 → 이름 → 완료. 피어/백업/git에 사용합니다.",
      "outboundEmptyFilterHint": "필터를 변경하거나 검색을 삭제해 보세요.",
      "outboundAddFirst": "첫 번째 아웃바운드 ID 추가",
      "userPrefix": "사용자 {{user}}",
      "createFailed": "생성 실패",
      "identityCreatedOnce": "생성된 ID(개인 키는 한 번 표시됨)",
      "writtenToDisk": "디스크에 기록됨",
      "cannotWriteNeedExecute": "시스템에 쓸 수 없습니다: 실행 활성화(YSK_EXECUTE)",
      "notDone": "완료되지 않음",
      "installFailed": "설치 실패",
      "testPassed": "연결 OK",
      "testFailed": "연결 실패",
      "testError": "테스트 실패",
      "copiedPubPaste": "공개 키 복사됨 - 피어 Authorized_keys 또는 Git 배포 키에 붙여넣기",
      "deletedNamed": "'{{name}}' 삭제됨",
      "rotated": "순환: 이전 키가 폐기되고 새 키가 생성됨",
      "detailStatus": "상태",
      "detailPurpose": "목적",
      "detailLinuxUser": "리눅스 사용자",
      "detailDiskPath": "디스크 경로",
      "detailLastTest": "마지막 테스트",
      "suggestFlow": "제안: 저장 → 디스크 쓰기 → 피어에 공개 키 넣기 → 연결 테스트",
      "suggestFlowPrefix": "제안: 저장 → 디스크 쓰기 → 넣기",
      "suggestFlowSuffix": "피어 → 연결 테스트",
      "publicKeyStrong": "공개 키",
      "copiedPub": "공개 키가 복사되었습니다.",
      "allowLocalLogin": "이 키를 사용하여 로컬 로그인 허용",
      "localLoginOk": "로컬 로그인 인증에 공개 키가 추가됨",
      "testingConnection": "연결 테스트 중…",
      "rotateKey": "키 회전",
      "wizStepPurpose": "이 열쇠는 무엇을 위한 것인가요?",
      "wizStepProject": "어떤 프로젝트인가요?",
      "wizStepPanelConfirm": "패널 아웃바운드 확인",
      "wizStepName": "이름 및 옵션",
      "wizStepPurposeDesc": "목적을 선택하여 목록과 설치 경로를 일치시키세요.",
      "wizStepProjectDesc": "키는 해당 프로젝트의 Linux 사용자 및 홈에 바인딩됩니다.",
      "wizStepPanelDesc": "개인 키는 다른 호스트에 대한 scp/ssh의 제어 영역 비밀에 유지됩니다.",
      "wizStepNameDesc": "인식을 위한 이름 고급 옵션은 기다릴 수 있습니다",
      "prevStep": "뒤로",
      "nextStep": "다음",
      "createIdentity": "아이덴티티 만들기",
      "purposePanelTitle": "다른 호스트에 대한 패널",
      "purposePanelSub": "클러스터 피어, 원격 백업, 프로브",
      "purposePanelRec": "대부분의 관리 작업에 권장됨",
      "purposeUserTitle": "프로젝트 사용자 아웃바운드",
      "purposeUserSub": "git pull, 프로젝트 스크립트 scp",
      "purposeUserPath": "프로젝트 home/.ssh를 작성합니다.",
      "selectProject": "— 프로젝트 선택 —",
      "noProjectsHint": "아직 프로젝트가 없습니다. 먼저 프로젝트와 시스템 사용자를 만드세요.",
      "afterCreatePub": "생성 후",
      "afterCreatePubMid": "대상 호스트의",
      "afterCreatePubEnd": "을 클릭한 다음 연결 테스트를 사용하세요.",
      "privKeyStayLocal": "개인 키는 이 제어 영역에 유지됩니다. 목록이나 로그에는 절대 없습니다.",
      "displayName": "표시 이름",
      "displayNameHint": "예를 들어 피어 프로덕션, myapp-git",
      "algorithm": "연산",
      "algoSuggested": "추천",
      "algoLegacy": "레거시 시스템",
      "installImmediately": "생성 후 즉시 디스크에 쓰기",
      "installImmediatelyHint": "(시스템 실행이 필요합니다. 그렇지 않으면 적용할 수 없다는 메시지가 표시됩니다)",
      "savePrivTitle": "지금 개인 키 저장",
      "savePrivDesc": "닫은 후에는 전체 개인 키가 다시 표시되지 않습니다.",
      "copiedPriv": "비공개 키가 복사되었습니다.",
      "copyPriv": "개인 키 복사",
      "nextInstallDisk": "다음: 디스크에 쓰기",
      "savedCloseBtn": "저장됨 — 닫기",
      "privKeyOnce": "개인 키(이번에만)",
      "privSavedConfirm": "개인키를 안전하게 보관했습니다. (비밀번호 관리/오프라인 백업)",
      "testConnTitle": "테스트 연결",
      "testConnDesc": "이 ID를 사용하여 ssh를 시도해보세요. 성공은 단지 이 목표에 도달할 수 있다는 것을 의미합니다.",
      "startTest": "테스트 시작",
      "testTarget": "목표",
      "testTargetHint": "user@host 또는 user@host:port 형식을 지정하세요.",
      "deleteIdentityTitle": "ID를 삭제하시겠습니까?",
      "rotateKeyTitle": "키를 순환하시겠습니까?",
      "deleteIdentityDesc": "\"{{name}}\"을 삭제하고 디스크에서 개인 키 파일을 제거해 보세요.",
      "rotateKeyDesc": "'{{name}}'는 더 이상 사용되지 않고 새 키가 생성됩니다. 피어 Authorized_keys를 업데이트합니다.",
      "rotate": "회전",
      "enrollStatusSecret": "비밀번호가 생성되었습니다.",
      "enrollStatusConfirmed": "앱 확인됨",
      "enrollStatusWritten": "집에 쓴 글",
      "enrollStatusRetired": "은퇴",
      "needProjectOrUser": "프로젝트를 선택하거나 Linux 사용자 이름을 입력하세요.",
      "enrollFailed": "등록 실패",
      "totpGenerated": "SSH 전용 TOTP 생성(동기화하지 않는 한 패널 2FA와 별도)",
      "confirmed": "확인됨",
      "codeWrong": "잘못된 코드",
      "gaWritten": ".google_authenticator를 작성했습니다.",
      "needExecute": "시스템 실행이 활성화되어야 합니다.",
      "ssh2faTitle": "SSH 로그인 두 번째 요소",
      "ssh2faDesc": "Linux 사용자의 SSH 로그인을 보호합니다.",
      "ssh2faStep1": "Linux 사용자를 위한 TOTP 등록(QR 스캔)",
      "ssh2faStep2": "앱 6자리 코드 확인",
      "ssh2faStep3": "홈 파일 쓰기",
      "ssh2faStep4": "PAM 모듈 및 병합 조각 설치(아래)",
      "pkgLabel": "패키지 {{name}}",
      "pkgStatus": "패키지 {{status}}",
      "pamStatus": "팸 {{status}}",
      "kbdStatus": "sshd 키보드 대화형 {{status}}",
      "light": {
        "green": "좋아요",
        "yellow": "확인하다",
        "red": "없어진"
      },
      "enrollForUser": "사용자에 대해 SSH 2FA 등록",
      "ssh2faEmpty": "아직 SSH 2FA를 사용하는 Linux 사용자는 없습니다.",
      "ssh2faEmptyHint": "먼저 키 로그인을 선호하세요.",
      "startEnroll": "등록 시작",
      "fromPanelBadge": "패널과 동일",
      "enterCode": "코드 입력",
      "rewriteHome": "홈 파일 다시 쓰기",
      "writeHome": "집에 편지 쓰기",
      "retiredOk": "은퇴",
      "retire": "은퇴",
      "pamTitle": "시스템: PAM / sshd (수동 또는 허용되는 경우 적용)",
      "pamDesc": "nullok은 파일 없이 사용자를 잠그는 것을 방지합니다. 작성된 파일 ≠ TOTP가 필요합니다.",
      "pamSnippet": "PAM 조각(/etc/pam.d/sshd에 병합)",
      "sshdHint": "SSHD 힌트",
      "rescueUsers": "사용자 구조(쉼표로 구분, 절대 엄격하게 일치하지 않음)",
      "strictPreview": "엄격한 일치 미리보기(공개키+TOTP, 비밀번호 끄기)",
      "copiedPam": "PAM 스니펫이 복사되었습니다.",
      "copyPam": "PAM 복사",
      "applyStrict": "시스템에 엄격 적용",
      "pamPkgHint": "패키지:",
      "pamRescueHint": ". 2FA 파일이 없는 복구 관리자를 한 명 이상 유지하세요(기본 루트).",
      "enrollModalTitle": "SSH 2FA 등록",
      "enrollModalDesc": "기본값: 독립 비밀(패널과 공유되지 않음)",
      "generateShowSecret": "비밀 생성 및 표시",
      "projectSuggested": "프로젝트(권장)",
      "orManualUser": "— 또는 사용자를 수동으로 입력 —",
      "linuxUser": "리눅스 사용자",
      "advancedSharePanel": "고급: 현재 패널 운영자 TOTP 비밀번호 사용(확인하려면 SHARED를 입력하세요)",
      "setupAuthTitle": "인증자 설정",
      "setupAuthDesc": "비밀번호를 스캔하거나 입력한 후 앱 6자리 코드로 확인하세요.",
      "later": "나중에",
      "confirmCodeBtn": "코드 확인",
      "secretBase32": "비밀(base32)",
      "copiedSecret": "비밀번호가 복사되었습니다.",
      "copySecret": "비밀 복사",
      "scanThenCode": "이미 스캔한 경우 현재 6자리 코드를 입력하세요.",
      "verifyCode": "인증코드",
      "applyStrictStepUp": "엄격·스텝업 적용",
      "enterPanelTotp": "현재 패널 TOTP 코드 입력",
      "applyBtn": "적용",
      "appliedOk": "적용된",
      "sharePanelTitle": "패널 TOTP 비밀을 공유하시겠습니까?",
      "sharePanelDesc": "위험. 확인하려면 SHARED를 입력하세요.",
      "confirmString": "확인 문자열",
      "enableShare": "공유 활성화",
      "invalidPub": "OpenSSH 공개 키를 한 줄로 붙여 넣으세요(ssh-ed25519 / ssh-rsa / ecdsa…).",
      "dryRunOk": "미리보기가 끝났습니다. 아래 내용을 확인하세요.",
      "strictDryRun": "엄격 모드 미리보기",
      "errorNoDetail": "테스트 실패(상세 없음)",
      "strictBlocked": "패키지 또는 PAM이 준비되지 않아 Strict 적용이 비활성화되었습니다.",
      "privCloseWithoutAck": "닫은. 개인 키는 다시 표시되지 않습니다. 저장하지 않은 경우 새 것을 생성하십시오."
    },
    "sessionsActive": "활성 세션",
    "sessionsOther": "기타 장치",
    "sessionsHint": "",
    "noSessionsHint": "다시 로그인하면 이 기기가 여기에 표시됩니다.",
    "sessionOtherBadge": "다른",
    "sessionThisDevice": "당신은 여기 있어요",
    "sessionDeviceOn": "{{browser}} {{os}}에",
    "sessionIpUnknown": "IP를 알 수 없음",
    "sessionLastActive": "마지막 활동 {{when}}",
    "sessionStarted": "로그인됨 {{when}}",
    "sessionIdShort": "아이디 {{id}}…",
    "sessionJustNow": "방금",
    "sessionMinAgo": "{{n}}분 전",
    "sessionHourAgo": "{{n}} 시간 전",
    "sessionDayAgo": "{{n}} 일 전",
    "revokeSessionTitle": "이 기기에서 로그아웃하시겠습니까?",
    "revokeSessionDesc": "{{device}}({{ip}}) 세션을 종료합니다. 해당 기기에서는 다시 로그인해야 합니다.",
    "revokeOthersTitle": "다른 모든 기기에서 로그아웃하시겠습니까?",
    "revokeOthersDesc": "{{count}} 다른 세션이 종료됩니다. 현재 브라우저는 로그인된 상태로 유지됩니다.",
    "sessionRevoked": "세션이 로그아웃되었습니다.",
    "mySecurityHint": "",
    "policyTotpHint": "사이트 정책: 각 관리자는 자신의 2FA(개별 QR)를 활성화해야 합니다.",
    "requireUser2fa": "모든 패널 사용자에게 2FA 요구",
    "changePasswordTitle": "로그인 비밀번호 변경",
    "currentPassword": "현재 비밀번호",
    "newPassword": "새 비밀번호",
    "confirmNewPassword": "새 비밀번호 확인",
    "passwordMismatch": "새 비밀번호가 일치하지 않습니다.",
    "changePassword": "비밀번호 변경",
    "passwordChanged": "비밀번호가 업데이트되었습니다.",
    "strictNeedsEnrolled": "Strict를 켜려면 관리자 2단계가 필요합니다.",
    "policyTotpNeedSelf": "먼저 이 계정에서 2단계를 사용하세요. 확인 코드를 입력할 수 없습니다.",
    "policyNoTotpHint": "This account has no 2FA yet — saving policy does not need a TOTP. Set up 2FA above if you want to require it for others.",
    "policyNeedSelf2fa": "먼저 이 계정에서 2FA를 활성화한 다음 TOTP 코드로 확인하세요.",
    "revokeAllDevicesTitle": "기억된 모든 장치를 취소합니다. 귀하와 다른 관리자는 2FA를 다시 확인해야 합니다.",
    "sessionCli": "CLI",
    "sessionApi": "API",
    "fail2banSnippetTitle": "fail2ban 스니펫",
    "fail2banSnippetEmpty": "스니펫이 기록되지 않았습니다.",
    "trustedDevicesTitle": "신뢰하는 기기",
    "noTrustedDevices": "신뢰하는 기기가 없습니다.",
    "strictConfirmTitle": "Strict 2단계를 켤까요?",
    "strictConfirmDesc": "2단계가 없는 사용자는 로그인할 수 없습니다. 사용 가능한 TOTP 또는 Passkey가 있는지 확인하세요.",
    "revokeDevicesTitle": "신뢰하는 기기를 취소할까요?",
    "revokeDevicesDesc": "기억된 브라우저는 다시 2단계가 필요합니다.",
    "approvalsHint": "고위험 도구에 두 번째 운영자 승인이 필요할 때 표시됩니다. 권한은 「사용자 → 권한」에서 설정합니다.",
    "allowlistReadonly": "에이전트 도구 카탈로그(읽기 전용). 능력 부여는 「사용자 → 권한」에서 설정합니다.",
    "colTool": "도구",
    "colAllowed": "허용",
    "colRisk": "위험",
    "colApproval": "승인",
    "risk": {
      "low": "낮음",
      "medium": "보통",
      "high": "높음",
      "critical": "심각"
    },
    "confirmDeleteApiKey": "이 API 키를 삭제하시겠습니까?",
    "confirmDeleteApiKeyDesc": "'{{name}}'을 입력하면 인증이 중단됩니다. 이 작업은 취소할 수 없습니다."
  },
  "serviceExposure": {
    "title": "네트워크 접속",
    "manage": "액세스 관리",
    "manageTitle": "서비스 네트워크 접속",
    "manageDesc": "호스트 방화벽에서 {{service}}에 접근할 수 있는 방법을 제어합니다.",
    "mode": "액세스 모드",
    "modePrivate": "로컬 전용",
    "modePublic": "공공의",
    "modeRestricted": "제한된",
    "modeUndecided": "설정되지 않음",
    "modePublicLive": "공개(라이브 바인드)",
    "summaryPublicLive": "{{bind}}에서 듣기 — 모든 인터페이스에서 접근 가능합니다. 액세스 모드를 확인하세요. 이것은 비공개가 아닙니다.",
    "modeLoading": "로드 중",
    "summaryPrivate": "공용 방화벽에서는 열리지 않습니다.",
    "summaryPublic": "열려 있음 · {{ports}}",
    "summaryUndecided": "액세스 모드가 확인되지 않았습니다(카탈로그 기본값: {{suggested}}).",
    "summaryNotEnforced": "방화벽이 꺼져 있습니다. 패널이 이러한 포트를 열거나 차단하지 않습니다.",
    "roleSmtp": "SMTP 제출",
    "roleImap": "IMAP/POP3 사서함",
    "summaryRestricted": "제한됨 · {{count}} 소스",
    "summaryFirewallOff": "호스트 방화벽: {{detail}} — UFW가 활성화될 때까지 규칙이 적용되지 않습니다.",
    "summaryFirewallOffOnly": "호스트 방화벽이 활성화되어 있지 않으므로 포트 규칙이 적용되지 않습니다.",
    "outOfSync": "동기화되지 않음",
    "openButStopped": "포트가 열려 있음 - 서비스가 실행되고 있지 않음",
    "openNoTenants": "테넌트가 없는 공용 포트",
    "firewallOff": "방화벽 꺼짐",
    "ufwMissing": "UFW가 설치되지 않았습니다",
    "ufwInactive": "비활성",
    "firewallLink": "방화벽",
    "portsLabel": "포트",
    "allowFrom": "허용된 소스(IP/CIDR)",
    "allowCountries": "허용 국가(ISO)",
    "hintPrivate": "서비스는 여전히 localhost에서 수신 대기할 수 있습니다. 공개 UFW 허용 규칙이 없습니다.",
    "hintPublic": "경고: 이 포트를 전체 인터넷에 개방합니다. 데이터베이스의 경우 제한된 것을 선호합니다.",
    "hintRestricted": "쉼표로 구분된 IP 또는 CIDR입니다. 이러한 소스만 연결할 수 있습니다.",
    "hintCountries": "ipset + 국가 영역 CIDR을 통한 L2 최선의 노력. 루트, EXECUTE 및 ipset이 필요합니다. 클라우드 보안 그룹은 별개입니다.",
    "restrictedNeedIp": "제한 모드의 경우 IP 또는 CIDR을 하나 이상 추가하세요.",
    "restrictedNeedSource": "제한 모드에 대한 IP/CIDR 또는 국가 코드를 하나 이상 추가하세요.",
    "privateStartTitle": "네트워크에 {{service}}를 노출하시겠습니까?",
    "confirmAndStart": "확인하고 시작하세요",
    "cloudSgNote": "호스트 방화벽만 해당 - 클라우드 보안 그룹(AWS/GCP/Azure)은 변경되지 않습니다.",
    "serviceNotInstalled": "이 서비스는 설치되지 않았으므로 방화벽 규칙이 적용되지 않습니다."
  },
  "services": {
    "enabledBoot": "부팅 시",
    "unitNotFound": "Unit not installed",
    "bootNa": "해당 없음",
    "unitNa": "해당 없음",
    "permLabel": "허가",
    "permCanChange": "시스템 변경 가능(수퍼유저)",
    "permBlocked": "시스템을 변경할 수 없습니다",
    "permHint": "시스템 변경 {{exec}} · 슈퍼유저 {{root}}",
    "clusterLegend": "계획됨 = 패널에 저장되고 호스트에 적용되지 않습니다.",
    "active": {
      "active": "달리기",
      "inactive": "중지됨",
      "not-found": "미설치",
      "failed": "실패한",
      "tool": "도구",
      "activating": "시작"
    },
    "unitStatic": "공전",
    "unitIndirect": "간접적인",
    "action": {
      "start": "시작",
      "stop": "멈추다",
      "restart": "다시 시작",
      "reload": "새로고침",
      "enable": "부팅 시 사용",
      "disable": "부팅 시 사용 안 함"
    },
    "enabledOk": "{{label}} 부팅 시 사용으로 설정됨",
    "bootDisabledWarn": "{{label}}이(가) 실행 중이지만 부팅 시 시작되지 않습니다. 재부팅 후에도 유지하려면 사용으로 설정하세요.",
    "bootDisabledShort": "부팅 시 아님",
    "sshdBootOffWarn": "부팅 시 sshd가 활성화되지 않습니다. 재부팅 후 이 호스트에는 SSH 복구 경로가 없습니다.",
    "mariadbNotInstalled": "MariaDB가 설치되지 않음",
    "mariadbNotInstalledMysqlOk": "설치되지 않음: MariaDB(MySQL이 설치되어 있음)",
    "lifecycleTitle": "{{label}} 서비스 제어",
    "startedOk": "{{label}}을(를) 시작했습니다",
    "stoppedOk": "{{label}}을(를) 중지했습니다",
    "needRunning": "{{label}}가 실행되고 있지 않습니다.",
    "restartedOk": "{{label}}을(를) 재시작했습니다",
    "reloadedOk": "{{label}}을(를) 다시 불러왔습니다",
    "reloadTitle": "완전히 다시 시작하지 않고 {{label}} 구성 다시 로드",
    "stopNeedConfirm": "확인이 필요합니다",
    "stopNeedConfirmPhrase": "확인 문구를 입력해야 합니다",
    "stopNeedConfirmImpact": "그만 {{label}}? 이 서비스에 대한 활성 연결이 끊어집니다.",
    "stopConfirmTitle": "{{label}}을(를) 중지할까요?",
    "stopConfirmDesc": "{{label}} 수신을 중지합니다. 필요하면 이 페이지에서 다시 시작하세요.",
    "stopConfirmEdgeDesc": "{{label}}을(를) 중지하면 사이트와 리버스 프록시가 다시 시작할 때까지 오프라인입니다.",
    "stopConfirmEdgeConsequence": "{{label}}이(가) 중지된 동안 이 호스트는 HTTP/HTTPS를 제공하지 않습니다.",
    "stopConfirmSshdTitle": "sshd를 중지할까요?",
    "stopConfirmSshdDesc": "sshd를 중지하면 원격 SSH가 끊깁니다. 콘솔 등 다른 로그인 경로가 있는지 확인하세요.",
    "stopConfirmSshdToken": "SSHD 중지",
    "stopConfirmSshdConsequence": "호스트 콘솔에서 sshd를 시작할 때까지 새 SSH 세션은 실패합니다.",
    "stopConfirmPanelTitle": "YSK Server를 중지할까요?",
    "stopConfirmPanelDesc": "호스트에서 유닛을 시작할 때까지 패널과 API가 오프라인입니다.",
    "stopConfirmPanelSshdOffDesc": "패널과 API가 오프라인 상태가 됩니다. sshd는 부팅 시 활성화되지 않으므로 재부팅 후 SSH가 복구 경로가 아닐 수 있습니다.",
    "stopConfirmPanelSshdOffConsequence": "부팅 시 sshd가 활성화되지 않습니다. 재부팅 후에는 SSH 복구 경로가 없을 수 있습니다.",
    "ufwNoLifecycle": "UFW는 이 매트릭스에서 시작되거나 중지되지 않습니다.",
    "restartConfirmPanelTitle": "YSK 서버를 다시 시작하시겠습니까?",
    "restartConfirmPanelDesc": "장치가 다시 시작되는 동안 패널과 API가 잠시 중단됩니다.",
    "restartConfirmTitle": "다시 시작 {{label}}?",
    "restartConfirmDesc": "지금 {{label}}을 다시 시작하세요. 활성 연결이 끊어질 수 있습니다.",
    "restartConfirmConsequence": "{{label}}는 연결을 잠시 중단한 다음 HTTP/HTTPS를 계속 제공합니다.",
    "reloadConfirmTitle": "새로고침 {{label}}?",
    "reloadConfirmDesc": "{{label}} 구성을 다시 로드하세요. 기존 세션은 계속 유지되어야 합니다.",
    "enableConfirmTitle": "부팅 시 {{label}}를 활성화하시겠습니까?",
    "enableConfirmDesc": "{{label}}를 활성화하면 부팅 시 시작됩니다.",
    "startVerifyFailed": "{{label}} 시작은 건강하지 못했습니다.",
    "stopConfirmPanelToken": "ysk 서버 중지",
    "stopConfirmPanelConsequence": "이 브라우저 세션이 끊깁니다. SSH 또는 호스트 콘솔에서 시작하세요.",
    "stopConfirmFail2banTitle": "Fail2ban을 중지하시겠습니까?",
    "stopConfirmFail2banDesc": "fall2ban을 중지하면 자동 IP 차단이 꺼집니다. 웹사이트와 SSH는 계속 실행됩니다.",
    "stopConfirmFail2banConsequence": "새로운 공격자는 Fail2ban이 다시 시작될 때까지 금지되지 않습니다.",
    "actionDone": "{{action}} 완료",
    "runningOf": "{{running}}/{{total}} 달리기",
    "statusFilter": {
      "all": "모든 주",
      "running": "달리기",
      "failed": "실패한",
      "missing": "미설치"
    },
    "canMutate": "변하기 쉬운",
    "locked": "잠김",
    "controlUnit": "제어 영역 단위",
    "logs": "로그",
    "dbHa": "데이터베이스 HA",
    "clusterCount": "{{count}} 클러스터",
    "mariadbCluster": "MariaDB 클러스터",
    "probing": "프로빙 서비스 매트릭스…",
    "lifecycleLocked": "수명 주기 작업이 잠겼습니다. 루트 + YSK_EXECUTE가 필요합니다. 프로브는 여전히 작동합니다. 보다",
    "hostSettings": "호스트 설정",
    "matrixTab": "서비스 매트릭스({{count}})",
    "stackTab": "소프트웨어 스택",
    "stackTitle": "호스트 소프트웨어 스택",
    "stackHint": "계획에 따라 호스트 구성 요소를 설치하거나 제거합니다. SQL Server 엔진은 독점적입니다.",
    "protectionTab": "보호 프로브",
    "knownServices": "알려진 서비스",
    "showing": "{{shown}} / {{total}} 표시 중",
    "all": "전체",
    "searchPh": "이름/부대/범주",
    "noMatch": "일치하는 서비스가 없습니다.",
    "bootPrefix": "부팅 {{state}}",
    "controlPage": "제어 페이지",
    "manageRuntime": "설치/업데이트",
    "installOrOpen": "설치/열기",
    "protectionTitle": "보호 프로브",
    "protectionSub": "읽기 전용; 방화벽/fail2ban을 변경하지 않습니다.",
    "protectionDoneNote": "보호 프로브 완료",
    "probeDone": "프로브 완료",
    "runProtection": "보호 프로브 실행",
    "notProbedYet": "아직 조사되지 않음",
    "cat": {
      "web": "편물",
      "db": "데이터베이스",
      "mail": "우편",
      "dns": "DNS",
      "ftp": "FTP",
      "cache": "은닉처",
      "panel": "패널",
      "ssh": "SSH",
      "other": "다른",
      "runtime": "런타임"
    }
  },
  "software": {
    "title": "소프트웨어",
    "desc": "모든 관리형 소프트웨어: 설치 상태, 서비스 상태, 최신 버전, 프로젝트에서 사용할 링크.",
    "tabs": {
      "overview": "개요",
      "runtimes": "런타임",
      "databases": "데이터베이스",
      "edge": "도메인 및 엣지",
      "mailFiles": "메일 및 파일",
      "host": "호스트 서비스"
    },
    "stat": {
      "catalog": "카탈로그 항목",
      "runtimesInstalled": "설치된 런타임",
      "updates": "업데이트 / 확장 가능",
      "attention": "주의가 필요함"
    },
    "quickTitle": "단축키",
    "quickDesc": "섹션 또는 호스트 도구로 이동",
    "updatesTitle": "업데이트 및 설치 가능한 버전",
    "updatesDesc": "최신 업스트림 또는 패널 핀. 설치한 다음 프로젝트에서 런타임을 선택합니다.",
    "allSoftware": "모든 소프트웨어",
    "status": {
      "unknown": "—",
      "installed": "설치됨",
      "notInstalled": "미설치",
      "running": "달리기",
      "missing": "감지되지 않음",
      "failed": "실패한",
      "stopped": "중지됨"
    },
    "badge": {
      "update": "업데이트 가능",
      "upToDate": "최신"
    },
    "meta": {
      "installed": "설치됨: {{list}}",
      "default": "기본값 {{v}}",
      "remote": "업스트림 ~{{v}}",
      "openManage": "설치 또는 구성하려면 관리 페이지를 엽니다.",
      "aptCurrentLatest": "설치됨 {{v}} · 저장소가 최신임",
      "aptVersion": "설치됨 {{v}}",
      "aptUpgrade": "{{from}} → {{to}} 가능",
      "aptUpgradeMulti": "{{n}} 패키지 업그레이드 가능: {{list}}",
      "aptNotInstalled": "패키지가 설치되지 않았습니다(설치하려면 관리 페이지 열기).",
      "hostUpgradable": "~{{n}} 호스트에서 업그레이드 가능한 패키지",
      "checking": "버전 확인 중… 또는 관리 페이지 열기"
    },
    "action": {
      "manage": "관리하다",
      "useInProject": "프로젝트에 사용",
      "useInProjectTitle": "이 런타임을 설정하려면 프로젝트를 여세요.",
      "update": "업데이트",
      "updateTitle": "{{v}} 설치 또는 전환",
      "updateTo": "{{v}}로 업데이트",
      "installVersion": "설치 {{v}}",
      "applyAptTitle": "업데이트 확인 {{pkg}}",
      "updateN": "{{n}} 항목 업데이트",
      "installTitle": "설치 {{list}}",
      "install": "설치",
      "updateAptTitle": "{{pkg}} 업데이트 열기"
    },
    "apply": {
      "blockedShort": "막힌",
      "failedShort": "실패한",
      "failed": "업데이트 실패",
      "blocked": "막힌",
      "confirm": "업데이트 확인",
      "confirmTitle": "소프트웨어 업데이트를 확인하시겠습니까?",
      "confirmBody": "업데이트 {{pkg}}: {{from}} → {{to}}. 시스템 변경 권한이 필요합니다.",
      "ok": "적용됨 {{pkg}}",
      "progress": "{{n}}/{{total}} 업데이트 중: {{pkg}}",
      "okMulti": "업데이트됨: {{list}}",
      "okMultiTitle": "{{label}} 업데이트됨",
      "partial": "부분적인 성공",
      "partialTitle": "일부 업데이트가 실패했습니다.",
      "failedTitle": "{{label}} 업데이트 실패",
      "progressDetail": "{{from}} → {{to}}",
      "confirmBodyMulti": "업데이트 {{label}}: {{list}}"
    },
    "version": {
      "loading": "버전 로드 중…",
      "installed": "설치됨",
      "latest": "최신",
      "upToDate": "최신/repo 최신",
      "refresh": "최신 다시 확인",
      "refreshHasUpdate": "최신 버전 사용 가능",
      "refreshLatest": "이미 가장 최근에 녹음된 버전입니다.",
      "pick": "버전 선택",
      "noTarget": "업데이트 대상 없음",
      "needRuntimePage": "런타임 페이지에 이 버전을 설치하세요.",
      "noAptCandidate": "적절한 후보 버전 없음",
      "sourceLabel": "원천"
    },
    "install": {
      "progress": "설치 중: {{list}}…",
      "progressHint": "1~2분 정도 걸릴 수 있습니다.",
      "blockedTitle": "{{label}} 설치할 수 없음",
      "ok": "설치 대기 중: {{list}}",
      "okTitle": "{{label}} 설치됨 / 대기 중",
      "failedTitle": "{{label}} 설치 실패",
      "confirmTitle": "소프트웨어 설치를 확인하시겠습니까?",
      "confirmBody": "{{label}} 설치: {{list}}. 시스템 변경 권한이 필요합니다.",
      "confirm": "설치 확인"
    },
    "runtime": {
      "installing": "설치/업데이트 중 {{kind}} {{v}}…",
      "installingHint": "1~2분 정도 걸릴 수 있습니다.",
      "blockedTitle": "{{kind}} {{v}}를 설치할 수 없습니다.",
      "installed": "설치/업데이트됨 {{kind}} {{v}}",
      "installedDetail": "프로젝트에서 이 버전을 선택하세요.",
      "failedTitle": "{{kind}} {{v}} 설치 실패",
      "installingShort": "설치 중…"
    },
    "aptSummaryTitle": "Repo 업그레이드 가능",
    "aptSummaryDesc": "카탈로그 및 호스트 패키지 수는 별개입니다. 업데이트 또는 카드에서 적용됩니다.",
    "aptSummary": {
      "catalog": "카탈로그 {{n}}",
      "host": "호스트 패키지 {{n}}",
      "openUpdates": "업데이트 열기"
    },
    "navBadgeTitle": "카탈로그 업그레이드: {{n}}",
    "projectHint": "런타임 {{runtime}} 사전 입력 — 프로젝트 생성",
    "projectHintWithVersion": "런타임 {{runtime}} {{version}} 사전 입력 — 프로젝트 생성"
  },
  "softwareBanner": {
    "titleDefault": "필수 소프트웨어가 설치되지 않았습니다.",
    "missing": "누락됨: {{names}}",
    "nameSep": ", ",
    "installOneClick": "지금 설치",
    "installing": "설치 중…",
    "reprobe": "재확인",
    "close": "닫기",
    "resultTitle": "설치 결과",
    "probeFailed": "프로브 실패",
    "installIncomplete": "설치가 완료되지 않았습니다.",
    "installedOne": "설치됨 {{name}}",
    "allInstalled": "필수 소프트웨어 설치됨"
  },
  "softwareLifecycle": {
    "kindInstall": "설치",
    "kindUninstall": "제거",
    "dockBusy": "{{kind}} · {{title}}",
    "dockFail": "실패 · {{title}}",
    "dockDone": "완료 · {{title}}",
    "minimize": "최소화",
    "maximize": "확대",
    "restore": "복원",
    "liveLog": "라이브 로그",
    "uninstall": "제거…",
    "uninstallTitle": "제거 {{name}}",
    "impactIntro": "이러한 구성 요소와 서비스가 영향을 받습니다. 계속하기 전에 주의 깊게 검토하세요.",
    "nothingInstalled": "이 기능을 위해 설치된 것이 없습니다.",
    "packagesList": "패키지: {{list}}",
    "noPackages": "적절한 패키지가 나열되지 않음",
    "unitsList": "서비스: {{list}}",
    "dataPolicy": "데이터 정책",
    "policyKeep": "구성 및 데이터 유지",
    "policyPurge": "구성 및 데이터 삭제(위험)",
    "purgeWarning": "제거는 구성 및 데이터 디렉터리를 영구적으로 삭제합니다. 이 작업은 쉽게 취소할 수 없습니다.",
    "keepHint": "패키지가 제거됩니다. 구성 및 데이터 디렉터리는 디스크에 보관됩니다.",
    "summaryLine": "{{packages}} 패키지, {{units}} 서비스 단위가 처리됩니다.",
    "doubleConfirmIntro": "제거하려면 이중 확인이 필요합니다.",
    "ackLabel": "나는 서비스가 중단될 수 있음을 이해하고 영향 목록을 읽었습니다.",
    "typePhrase": "확인하려면 {{phrase}}를 입력하세요.",
    "confirmUninstall": "제거 확인",
    "protected": "보호됨",
    "readyHint": "필수 소프트웨어가 설치되어 있습니다. 필요한 경우 여기에서 제거할 수 있습니다.",
    "readyTitle": "소프트웨어 준비",
    "jobInProgress": "다른 설치/제거가 이미 실행 중입니다.",
    "uninstallDone": "제거 완료",
    "uninstallFailed": "제거 실패",
    "impact": {
      "sitesDown": "공개 사이트가 오프라인 상태가 될 수 있음",
      "reverseProxy": "역방향 프록시가 중지됩니다.",
      "phpBackend": "PHP 백엔드가 중지될 수 있음",
      "mailOutbound": "아웃바운드 메일이 중지됩니다.",
      "mailInbound": "수신 메일이 중지됩니다.",
      "mailQueue": "메일 대기열 도구를 사용할 수 없습니다.",
      "mailDkim": "DKIM 서명이 중지됩니다.",
      "database": "데이터베이스 서비스가 중지됩니다",
      "dataLossPurge": "제거는 데이터 디렉터리를 삭제합니다.",
      "cache": "캐시 서비스가 중지됩니다",
      "firewall": "호스트 방화벽이 제거됩니다",
      "intrusion": "침입 차단이 중지됩니다.",
      "ftp": "FTPS 서비스가 중지됩니다",
      "dns": "DNS 서버가 중지됩니다",
      "vpn": "VPN 서비스가 중지됩니다",
      "vnc": "VNC 서비스가 중지됩니다",
      "controlPlane": "제어 영역 런타임(보호됨)",
      "generic": "관련 서비스가 중단될 수 있습니다",
      "containers": "실행 중인 컨테이너가 중지됩니다",
      "validators": "Docker Compose를 쓰는 검증자 스택이 중지됩니다",
      "purgeData": "데이터 경로가 삭제됩니다.",
      "protectedSkipped": "보호된 구성 요소를 건너뜁니다.",
      "runtimeStack": "이 런타임의 모든 패널 관리 버전이 삭제됩니다."
    },
    "requestCancel": "취소 요청",
    "cancelling": "취소 중…",
    "dockCancelling": "취소 중 · {{title}}",
    "dockCancelled": "취소됨 · {{title}}",
    "cancelHint": "취소를 요청했습니다. 클라이언트가 청취를 중단했습니다. 호스트는 현재 apt/step을 완료할 수 있습니다. 잠시 후 상태를 다시 조사해 보세요.",
    "cancelledToast": "작업이 취소됨(클라이언트가 스트리밍을 중지함)",
    "kindApply": "적용",
    "kindScan": "주사",
    "kindDeploy": "배포",
    "kindRuntime": "실행 시간",
    "jobDone": "완료 · {{title}}",
    "jobFailed": "실패 · {{title}}",
    "uninstallUfwWarn": "UFW를 제거하면 패널이 관리하는 포트 방화벽이 사라집니다.",
    "uninstallFail2banWarn": "fail2ban을 제거하면 jail이 멈추고 현재 차단이 해제됩니다. 유지하려면 먼저 로그인 IP를 ignoreip에 넣으세요."
  },
  "sqlEngineHealth": {
    "finding": {
      "package_missing": "{{flavor}}용 서버 패키지가 설치되지 않았습니다.",
      "client_missing": "SQL 클라이언트 도구가 설치되지 않았습니다.",
      "frozen_marker": "Debian 정지 마커가 있습니다(모드: {{mode}}). 데몬 시작은 릴리스될 때까지 차단됩니다.",
      "datadir_uninitialized": "데이터 디렉토리에는 시스템 카탈로그가 없습니다. 초기화가 필요합니다.",
      "config_flavor_mismatch": "my.cnf는 {{flavor}}({{path}})에 대한 잘못된 엔진을 가리킵니다.",
      "residual_foreign_plugins": "다른 SQL 엔진의 잔여 구성/플러그인으로 인해 이 데몬이 중단될 수 있습니다.",
      "unit_failed": "서비스 단위 {{unit}}에 오류가 발생했습니다.",
      "unit_not_active": "서비스 단위 {{unit}}는 {{active}}(비활성)입니다.",
      "port_conflict": "이 엔진이 작동 중지된 동안 포트 3306이 사용 중입니다(충돌 가능성)."
    },
    "action": {
      "stop_unit": "서비스 장치 중지",
      "clear_frozen": "동결 마커 지우기",
      "sanitize_config": "my.cnf 정렬 및 외부 엔진 플러그인 비활성화",
      "init_datadir": "빈 데이터 디렉터리 초기화",
      "reset_failed": "실패한 장치 상태 재설정",
      "enable_unit": "부팅 시 서비스 활성화",
      "start_unit": "서비스 시작",
      "verify_active": "서비스가 활성 상태인지 확인"
    },
    "note": {
      "alreadyHealthy": "SQL 엔진은 이미 정상입니다. 복구가 필요하지 않습니다.",
      "needsConfirm": "수리에 대한 확인이 필요합니다({{count}} 단계: {{findings}}).",
      "installPackageFirst": "{{flavor}} 서버 패키지를 먼저 설치한 후 복구하세요.",
      "stepFailed": "복구 단계 {{action}} 실패: {{detail}}",
      "repairOk": "수리 완료 — {{unit}}가 활성화되었습니다.",
      "repairIncomplete": "수리가 완료되었지만 장치는 여전히 {{active}}입니다."
    }
  },
  "sqlEngineSwitch": {
    "title": "{{target}}로 전환",
    "subtitle": "{{from}}를 {{to}}로 바꿉니다. 이 호스트에는 하나의 SQL Server만 허용됩니다.",
    "confirm": "전환 확인 및 마이그레이션",
    "success": "SQL 엔진 전환 및 데이터 마이그레이션",
    "bannerHint": "다른 엔진이 이미 설치되어 있는 경우 전용 스위치(제거)를 확인해야 합니다.",
    "flowAria": "SQL 엔진 전환 방향",
    "from": "현재의",
    "to": "목표",
    "calloutTitle": "백업 없이 실행 취소하기 어려움",
    "calloutBody": "{{from}} 패키지는 내보내기가 성공한 후에만 제거됩니다.",
    "sectionImpact": "무슨 일이 일어날까요?",
    "sectionLimits": "한계 및 위험",
    "dbListTitle": "마이그레이션할 데이터베이스({{count}})",
    "dbMigrateBadge": "{{count}} 사용자 데이터베이스",
    "dbEmptyBadge": "사용자 데이터베이스 없음",
    "noUserDbs": "사용자 데이터베이스가 감지되지 않았습니다(시스템 스키마만 해당). 서버 엔진은 계속 교체됩니다.",
    "tableCount": "{{count}} 테이블",
    "ackLabel": "나는 엔진이 독점적이라는 것을 이해합니다. {{from}}을 제거하고 데이터를 {{to}}로 이전하세요.",
    "phraseLabel": "확인하려면 {{phrase}}를 입력하세요.",
    "phraseMismatch": "구문이 일치하지 않습니다. SWITCH를 정확하게 입력하세요.",
    "warn": {
      "replace_engine": "{{from}}를 제거하고 {{to}}를 설치합니다.",
      "exclusive": "MySQL과 MariaDB는 하나의 호스트(독점)에서 서버로 함께 실행할 수 없습니다.",
      "uninstall_packages": "현재 SQL Server 패키지가 시스템에서 제거됩니다.",
      "logical_dump": "사용자 데이터베이스는 논리적으로 내보낸 다음 가져옵니다. 시스템 스키마는 파일로 복사되지 않습니다.",
      "dialect_risk": "MariaDB 또는 MySQL 관련 SQL 가져오기가 실패할 수 있습니다.",
      "no_replication": "복제 설정, 플러그인 및 바이너리 로그는 마이그레이션되지 않습니다.",
      "root_auth": "루트 소켓 또는 비밀번호 인증은 전환 후 재구성이 필요할 수 있습니다.",
      "no_user_dbs": "사용자 데이터베이스가 감지되지 않았습니다. 엔진 패키지만 변경됩니다.",
      "has_user_dbs": "{{count}} 사용자 데이터베이스를 내보내고 가져옵니다."
    },
    "note": {
      "needsSwitch": "이 호스트는 이미 {{other}}를 실행하고 있습니다. MySQL 및 MariaDB는 배타적입니다. 스위치 확인(내보내기 → 기타 제거 → 설치 → 가져오기).",
      "invalidTarget": "잘못된 대상입니다(mysql 또는 mariadb에만 해당).",
      "badConfirmPhrase": "확인 문구는 정확히 SWITCH여야 합니다.",
      "needAck": "단독 스위치(MySQL 또는 MariaDB, 둘 다는 아님)를 승인해야 합니다.",
      "switchNotNeeded": "스위치가 필요하지 않음 - 일반 설치를 사용하십시오.",
      "migrateDataRequired": "사용자 데이터베이스가 있는 경우 데이터 마이그레이션을 활성화해야 합니다.",
      "dumpFailed": "내보내기 실패 — 소스 {{source}}가 계속 실행 중입니다. {{detail}}",
      "datadirBackupFailed": "Datadir 백업 실패 - 제거 전에 중단되었습니다. 소스 서비스를 수동으로 시작해 보세요.",
      "waitFailed": "대상 서비스가 준비되지 않았습니다. 백업: {{dumpPath}}. 이전 데이터 디렉터리: {{datadir}}. 수동 복구가 필요합니다.",
      "incomplete": "스위치가 불완전합니다. 내보내기는 {{dumpPath}}에 유지됩니다. {{datadir}}의 이전 데이터디렉터리. 맹목적으로 다시 퍼지하지 마십시오.",
      "switched": "{{from}} → {{to}}로 전환되었습니다. {{imported}}/{{total}} 데이터베이스를 가져왔습니다.",
      "dumpPath": "논리적 내보내기 경로: {{path}}",
      "datadirBackup": "이전 datadir 백업: {{path}} (만족하면 제거: rm -rf {{path}})",
      "grantsExported": "보조금 내보내기({{detail}})",
      "frozenDetected": "MySQL/MariaDB는 동결되었습니다(적절한 실패는 아닙니다). 경로 {{path}}(모드: {{mode}}). 패키지가 설치될 수 있지만 엔진 전환 또는 다운그레이드 후 데몬이 시작을 거부합니다. 안전하다면 동결을 지우고 빈 datadir을 다시 초기화하십시오. 발췌문: {{snippet}}",
      "frozenCleared": "정지 표시 {{path}}를 제거했습니다.",
      "frozenClearFailed": "고정 마커를 제거할 수 없습니다. {{path}} — 루트로 수동으로 제거합니다.",
      "datadirNotEmptySkipInit": "데이터 디렉터리에 이미 시스템 테이블이 있습니다. 다시 초기화를 건너뛰었습니다.",
      "datadirInitialized": "{{flavor}}에 대한 빈 데이터 디렉터리를 초기화했습니다.",
      "datadirInitFailed": "데이터 디렉터리 초기화 실패: {{detail}}",
      "unitNotActive": "유닛 {{unit}}은 {{active}}(활성화 예상)입니다.",
      "nginxPortConflict": "Nginx 장치가 활성화되지 않음 - Apache는 여전히 public :80;을 바인딩할 수 있습니다. Apache를 127.0.0.1:8080에 다시 바인딩한 다음 Nginx를 다시 시작합니다.",
      "nginxConfigFailed": "nginx -t 실패: {{detail}}",
      "frozenShort": "FROZEN ({{mode}}) — 데몬이 차단되었습니다. 동결 해제 및 수리가 필요합니다.",
      "unfreezeNeedsConfirm": "고정 해제가 필요한지 확인하세요(frozen={{frozen}},emptyDatadir={{empty}}). 확인:true로 POST합니다.",
      "unfreezeOk": "동결해제 수리 후 서비스 {{unit}}가 활성화됩니다.",
      "unfreezeStartFailed": "고정 해제 후에도 여전히 활성화되지 않음: {{detail}}",
      "unfreezePrompt": "FROZEN을 지우고 빈 datadir을 다시 초기화하려면 \"고정 해제 및 복구\"를 클릭하세요.",
      "configSanitized": "SQL 구성이 {{flavor}}(my.cnf → {{target}})에 맞춰 정렬되었습니다. MySQL을 대상으로 할 때 MariaDB 플러그인 잔여물이 비활성화됩니다.",
      "configSanitizeFailed": "SQL 구성을 정리하지 못했습니다: {{detail}}"
    },
    "step": {
      "dump": "내보내기 {{db}}",
      "exportGrants": "보조금 수출",
      "stop": "그만 {{unit}}",
      "backupDatadir": "백업 데이터 디렉토리",
      "purge": "제거 {{pkg}}",
      "wait": "{{unit}}를 기다리세요",
      "importDb": "가져오기 {{db}}",
      "importGrants": "수입 보조금",
      "verify": "확인하다",
      "preflight": "비행 전",
      "confirm": "확인하다",
      "clearFrozen": "MySQL FROZEN 지우기",
      "initDatadir": "빈 datadir 초기화",
      "startUnit": "시작 {{unit}}",
      "sanitizeConfig": "my.cnf/잔류 플러그인 삭제"
    }
  },
  "ssl": {
    "status": {
      "uploaded": "업로드됨",
      "issued": "발급됨",
      "planned": "진행중",
      "failed": "실패한",
      "missing": "파일 누락",
      "ready": "준비됨",
      "processing": "진행중"
    },
    "step": {
      "ok": "완료",
      "blocked": "실행할 수 없습니다",
      "failed": "실패한",
      "skipped": "건너뛰었습니다."
    },
    "pillCount": "{{count}} 인증서",
    "statCerts": "인증서",
    "panelCertHint": "패널 HTTPS는 {{path}}(만료 {{exp}})를 사용합니다. 사이트 인증서로 나열되지 않습니다.",
    "openPanelTls": "패널 HTTPS 열기",
    "statWithFiles": "파일 포함",
    "statBindings": "바인딩",
    "statFailed": "실패한",
    "requestLe": "Let’s Encrypt 요청",
    "openLetsEncryptLog": "로그 센터에서 letsencrypt.log를 엽니다.",
    "uploadCert": "+ 인증서 업로드",
    "certbotNotInstalled": "Certbot이 설치되지 않았습니다",
    "leFailNxdomain": "DNS에는 {{domain}}(NXDOMAIN)에 대한 기록이 없습니다. — Let's Encrypt는 공개 A/AAAA 없이는 유효성을 검사할 수 없습니다.",
    "leFailNxdomainHint": "{{domain}}에 대한 A 레코드를 DNS에서 이 서버의 공용 IP에 추가하고, 영역을 쓰고, 확인합니다.",
    "leFailDns": "DNS 오류 해결 {{domain}}(SERVFAIL 또는 유사).",
    "leFailDnsHint": "네임서버를 확인하고 해당 영역이 공용 인터넷에 게시되어 있는지 확인하세요.",
    "leFailHttp01": "{{domain}}는 해결되었으나 HTTP-01이 실패했습니다(포트 80에 연결할 수 없거나 잘못된 응답).",
    "leFailHttp01Hint": "포트 80을 열고 nginx가 80에서 수신 대기하는지 확인하고 {{domain}}가 이 호스트를 가리키는지 확인하세요.",
    "leFailRateLimit": "암호화 속도 제한에 도달하겠습니다.",
    "leFailRateLimitHint": "기다렸다가 다시 시도하거나 동일한 이름에 대한 반복 요청을 피하세요.",
    "leFailCaa": "CAA 레코드는 {{domain}}에 대해 Let's Encrypt를 차단합니다.",
    "leFailCaaHint": "letsencrypt.org를 허용하는 CAA를 추가하거나 차단 CAA를 제거하세요.",
    "leFailChallenge": "Let's Encrypt 도메인 검증에 실패했습니다({{domain}}).",
    "leFailChallengeHint": "DNS A 레코드와 포트 80 연결 가능성을 확인한 후 다시 시도하세요. letsencrypt.log를 참조하세요.",
    "leFailUnknown": "Let's Encrypt 요청이 실패했습니다({{domain}}).",
    "leFailUnknownHint": "자세한 내용을 보려면 letsencrypt.log를 여세요.",
    "leFailRawTail": "기술 세부정보(발췌): {{snippet}}",
    "requestFailedWhy": "실패한 이유",
    "requestFailedNext": "다음 단계",
    "retryRequest": "재시도 요청",
    "retryRequestFor": "{{domain}}에 대한 요청 재시도",
    "retryInTableHint": "아래 목록의 실패한 도메인 행에서 다시 시도하세요.",
    "bindingsTitle": "바인딩 및 갱신",
    "autoRenewLabel": "자동 갱신",
    "autoRenewYes": "사용",
    "autoRenewNo": "활성화되지 않음/확인되지 않음",
    "autoRenewYesDetail": "갱신 메커니즘 감지됨: {{source}}. Let's Encrypt 인증서는 certbot이 정상일 때 만료되기 전에 갱신되어야 합니다.",
    "autoRenewNoDetail": "활성화된 certbot.timer 또는 갱신 크론을 찾을 수 없습니다. certbot.timer를 활성화하십시오. 그렇지 않으면 수동으로 갱신하지 않으면 인증서가 만료됩니다.",
    "renewSourceCron": "패널/시스템 크론",
    "renewTimerEnabled": "시스템 타이머 활성화됨: {{unit}}",
    "renewTimerDisabled": "{{unit}}을 찾았으나 활성화되지 않았습니다(systemctl 활성화 --now {{unit}}).",
    "renewTimerInstalledUnknown": "호스트에는 {{unit}} 유닛 파일이 있습니다. systemctl 활성화 --지금 확인",
    "renewTimerActive": "{{unit}} 활동 중",
    "renewViaCron": "certbot/갱신을 언급하는 {{count}} 크론 작업을 찾았습니다.",
    "renewNone": "certbot.timer 또는 LE 갱신 cron이 등록되지 않았습니다.",
    "expiresUnknown": "알 수 없음",
    "expiresUnknownHint": "인증서 파일을 읽을 수 없습니다(권한/경로).",
    "expiresInDays": "{{n}}일 후",
    "expiresAt": "· 만료 {{date}}",
    "projectsAt": "· 프로젝트: {{names}}",
    "mailAt": "· 메일: {{domains}}",
    "noBindings": "프로젝트/메일 바인딩이 감지되지 않았습니다.",
    "certsTitle": "인증서({{count}})",
    "colDomain": "도메인",
    "colProvider": "원천",
    "providerUpload": "업로드",
    "colLocalFiles": "로컬 파일",
    "filesYes": "예",
    "filesNo": "아니요",
    "colExpires": "만료",
    "renew": "고쳐 쓰다",
    "renewFor": "{{domain}}에 대한 Let’s Encrypt 갱신",
    "deleteDomain": "삭제 {{domain}}",
    "colStatus": "상태",
    "emptyTitle": "아직 인증서가 없습니다.",
    "emptyDesc": "위의 \"인증서 업로드\" 또는 \"Let's Encrypt 요청\"을 사용하세요.",
    "uploadTitle": "인증서 업로드",
    "uploadDesc": "PEM 콘텐츠를 붙여넣으세요. 패널은 서버에 파일을 씁니다.",
    "domainHint": "이 인증서의 기본 도메인입니다. 예: example.com",
    "fullchainLabel": "인증서 체인(풀체인)",
    "fullchainHint": "서버 인증서 및 중간 CA가 포함된 PEM",
    "privkeyLabel": "개인 키(privkey)",
    "privkeyHint": "인증서와 일치하는 개인 키 PEM — 비밀로 유지",
    "uploadHint": "업로드는 파일 쓰기만 합니다.",
    "leTitle": "Let’s Encrypt 요청",
    "leDesc": "패널이 서버에 인증서를 요청합니다. 수동 인증서봇이 필요하지 않습니다.",
    "requestCert": "인증서 요청",
    "domainLeHint": "Apex/도메인 또는 *.example.com 와일드카드",
    "domainLePlaceholder": "example.com 또는 *.example.com",
    "emailLabel": "연락처 이메일",
    "emailHint": "Let's Encrypt 만료 알림의 경우; admin@domain을 사용하려면 비워 두세요.",
    "leDns01Hint": "와일드카드는 dns-01을 사용합니다. 패널은 certbot 수동 챌린지를 시작합니다. TXT 기록을 완료합니다.",
    "leHttp01Hint": "일반 도메인은 http-01(nginx 플러그인)을 사용합니다.",
    "deleteTitle": "인증서를 삭제하시겠습니까?",
    "deleteDesc": "{{domain}}에 대한 인증서 파일 및 등록을 제거합니다.",
    "deleteNeedDomain": "이 인증서 삭제 - 도메인 이름을 입력하여 확인하세요.",
    "savedCert": "{{domain}}에 대한 저장된 인증서",
    "uploadFailed": "업로드 실패",
    "requestBlocked": "관리자 패널에서 인증서 요청을 완료할 수 없습니다.",
    "requestDone": "인증서 요청이 완료되었습니다.",
    "requestFailed": "인증서 요청이 실패했습니다.",
    "applyFailed": "요청 실패",
    "deletedCert": "삭제됨 {{domain}}",
    "uninstallCertbotWarn": "certbot을 제거하면 기존 Let's Encrypt 인증서의 자동 갱신이 중지됩니다.",
    "uninstallCertbot": "certbot 제거(자동 갱신 손실)",
    "domainRequired": "도메인을 입력하세요.",
    "domainInvalid": "도메인 형식이 올바르지 않습니다.",
    "domainKnownHint": "알려진 프로젝트·DNS·메일 도메인에서 고르거나 직접 입력하세요."
  },
  "stackWizard": {
    "purgeConfirm": "퍼지를 확인하시겠습니까? 등록된 데이터 경로(데이터베이스/메일)가 영구적으로 삭제됩니다.",
    "installedCount": "설치됨 {{installed}} · 누락 {{missing}}",
    "countHint": "이러한 개수는 다른 탭의 서비스 매트릭스 단위가 아닌 소프트웨어 계획의 OS 패키지입니다.",
    "executeRoot": "시스템 변경 {{execute}} · 관리자 {{root}}",
    "manifestPlan": "계획 {{plan}} ({{bundles}})",
    "manifestHint": "마지막으로 선택한 소프트웨어 계획 및 번들",
    "needRootExecute": "라이브 설치/제거에는 관리자 권한과 시스템 변경 권한이 필요합니다. 여전히 테스트 실행이 가능합니다.",
    "modeInstall": "설치 계획",
    "modeUninstall": "제거",
    "plan": "계획",
    "customBundles": "맞춤형 번들",
    "sqlExclusive": "SQL 서버(독점)",
    "clamavOptional": "옵션, 대형",
    "componentsTitle": "설치할 구성 요소",
    "dryRun": "테스트 실행 미리보기",
    "installNow": "지금 설치",
    "uninstallHint": "제거할 번들을 선택하세요. 선택하지 않으면 제거할 수 없습니다. 데이터는 기본적으로 유지됩니다.",
    "dataPolicy": "데이터 정책",
    "keepData": "데이터 보관",
    "purgeData": "데이터 삭제",
    "uninstallNow": "지금 제거",
    "uninstallNeedSelect": "번들을 하나 이상 선택하세요. 빈 선택은 더 이상 모두 제거를 의미하지 않습니다.",
    "uninstallConfirmTitle": "선택한 번들을 삭제하시겠습니까?",
    "uninstallConfirmDesc": "{{count}} 번들이 제거됩니다. 확인하려면 REMOVE를 입력하세요.",
    "bundle": {
      "control-plane": "제어 영역",
      "web": "웹 호스팅",
      "database": "데이터베이스",
      "email": "메일 스택",
      "dns": "DNS",
      "ftp": "FTP / FTPS",
      "defense": "호스트 방어",
      "runtimes": "언어 런타임"
    },
    "planTitle": {
      "minimal": "제어 영역만",
      "recommended": "추천 호스팅",
      "full": "모든 소프트웨어"
    }
  },
  "support": {
    "title": "지원",
    "sub": "Creator, 후원, YSK Limited — 무료 제품, 실질적인 도움",
    "creatorTitle": "창조자",
    "creatorBody": "YSK Server는 자신의 스택을 소유하려는 운영자를 위한 무료·정직한 단일 호스트 제어 평면입니다. 프로젝트는 공개적으로 유지되며, 피드백과 버그 신고가 품질을 지킵니다.",
    "donateTitle": "지원 / 후원",
    "donateBody": "YSK Server가 시간을 아껴 주었다면 개발 후원을 고려해 주세요. 모든 기여가 제품을 모두에게 무료로 유지하는 데 도움이 됩니다.",
    "donateGithub": "GitHub 후원자",
    "donateOther": "다른 후원 방법",
    "yskTitle": "YSK Limited",
    "yskIntro": "무료 패널 이상의 실무 지원이 필요하신가요? YSK Limited는 다음을 도울 수 있습니다:",
    "yskSvc1": "서버 구축, 강화, 지속 운영",
    "yskSvc2": "호스팅 스택 설계(웹, 메일, DNS, 데이터베이스)",
    "yskSvc3": "마이그레이션, 자동화, 맞춤 연동",
    "yskSvc4": "사고 대응과 프로덕션 준비 검토",
    "yskNoPrice": "여기에는 가격이 없습니다. 환경에 맞게 상담해 드립니다.",
    "yskWebsite": "ysk.hk",
    "helpTitle": "문제가 있나요?",
    "helpBody": "OS, 설치 로그 경로, 기대한 동작과 실제 결과를 이메일로 보내 주세요. 모든 메시지를 읽습니다.",
    "docsHint": "전체 문서는 저장소에 있습니다:",
    "donateLinktree": "Linktree",
    "cryptoTitle": "암호화폐 / Web3 핸들",
    "cryptoHint": "해당 네트워크에서만 보내세요. 보내기 전에 주소를 다시 확인하세요.",
    "cryptoNetwork": "네트워크",
    "cryptoAddress": "주소",
    "copy": "복사",
    "copied": "복사됨",
    "copyTitle": "{{address}} 복사",
    "docsLink": "선적 서류 비치",
    "diagTitle": "진단 요약",
    "diagBody": "버전을 복사하고, 실행하고, 팩트를 호스트하여 이메일에 붙여넣습니다. 이것은 전체 로그 번들이 아닙니다.",
    "diagCopy": "진단 요약 복사",
    "diagCopied": "진단 요약이 복사되었습니다.",
    "diagCopyTitle": "버전, EXECUTE, 호스트 정보 복사",
    "diagPreview": "복사될 내용 미리보기",
    "diagLoading": "진단 로드 중…",
    "diagLoadFailed": "진단을 로드할 수 없습니다.",
    "copiedAddr": "복사됨 {{addr}}",
    "diagStatus": "상태",
    "diagMode": "방법",
    "diagProtection": "보호",
    "diagHostname": "호스트 이름",
    "diagOs": "OS"
  },
  "system": {
    "exportLoadFailed": "내보내기 데이터를 로드하지 못했습니다.",
    "dryRunDone": "테스트 실행 완료(시스템 변경 없음)",
    "rebuildDone": "재구축 요청 완료 - 작업 결과 보기",
    "exportWritten": "작성된/관리되는 구성 내보내기 목록",
    "rebuildFailed": "재구축 실패",
    "hostFallback": "주인",
    "mem": "메모리",
    "diskPeak": "디스크 피크",
    "exportRebuild": "내보내기/재구축",
    "dnsCerts": "DNS/인증서",
    "editIdentity": "신원 수정",
    "power": "힘",
    "metrics": "측정항목",
    "writeExports": "내보내기 디렉터리 쓰기",
    "dryRunSync": "드라이런 동기화",
    "hostConsole": "호스트 콘솔",
    "loadingHost": "호스트 개요 로드 중…",
    "identity": "신원",
    "identityReadonly": "읽기 전용 — 적용하려면 YSK_EXECUTE + 루트가 필요합니다.",
    "identityTools": "시스템 도구를 통해 호스트 이름 및 시간대 설정",
    "hostnameHint": "시스템 호스트 이름",
    "writable": "쓰기 가능",
    "locked": "잠김",
    "hostname": "호스트 이름",
    "prettyName": "예쁜 이름",
    "optional": "선택 과목",
    "prettyPh": "친숙한 표시 이름",
    "timezone": "시간대",
    "timezoneHint": "목록에서 IANA 시간대를 선택하세요(예: Asia/Hong_Kong)",
    "timezoneNow": "현재 진행 시간: {{time}} ({{tz}})",
    "timezoneBrowserDiff": "이 호스트는 {{host}}를 사용합니다. 귀하의 브라우저는 {{browser}}를 사용합니다. 여기에서 시간대를 변경하면 브라우저가 아닌 호스트 시계가 변경됩니다.",
    "timezoneSelect": "시간대 선택",
    "notExported": "아직 내보내지 않았습니다.",
    "dns": "DNS",
    "updated": "업데이트됨",
    "applyIdentity": "아이덴티티 적용",
    "identitySetHostname": "호스트 이름이 {{name}}로 설정됨",
    "identitySetPretty": "예쁜 호스트 이름이 {{name}}로 설정되었습니다.",
    "identityClearPretty": "예쁜 호스트 이름이 삭제되었습니다.",
    "identitySetTimezone": "시간대가 {{tz}}로 설정되었습니다.",
    "panelSsl": "패널 SSL",
    "panelTls": {
      "title": "패널 HTTPS",
      "sub": "제어 플레인(ysk-server)은 ListenPort에서 TLS를 제공합니다. 웹인증/비밀번호에는 HTTPS가 필요합니다.",
      "domain": "패널 도메인",
      "domainHint": "인증서 발급/바인딩에 사용됩니다. 데모.ysk.hk",
      "email": "이메일을 암호화하자",
      "status": "상태",
      "enabled": "구성에서 TLS가 활성화되었습니다.",
      "disabled": "TLS 꺼짐(HTTP)",
      "serving": "이 연결: HTTPS",
      "servingHttp": "이 연결: HTTP",
      "expires": "인증서가 만료됩니다.",
      "certPath": "인증서 경로",
      "issueEnable": "인증서 발급 및 HTTPS 활성화",
      "enableExisting": "기존 인증서로 활성화",
      "disable": "패널 HTTPS 비활성화",
      "disableNeedConfirm": "확인 필요 — DISABLE-HTTPS 입력",
      "needDomain": "호스트 이름/도메인을 먼저 입력하세요.",
      "needFqdn": "기본 호스트 이름이 아닌 FQDN(example.com)이 필요합니다.",
      "urlHint": "다시 시작한 후 열기 {{url}}",
      "certMissing": "TLS가 활성화되었지만 인증서/키 파일이 누락되었습니다.",
      "restartToApply": "HTTPS를 적용하려면 ysk-server를 다시 시작하세요.",
      "noConfig": "config.json을 찾을 수 없습니다(--config로 시작).",
      "usingExisting": "기존 로컬 인증서 사용",
      "usingLe": "Let's Encrypt 라이브 경로 사용",
      "needCertFirst": "{{domain}}에 대한 인증서가 없습니다. 먼저 발행하거나 업로드하세요",
      "configWritten": "패널 TLS 설정이 기록됨",
      "disabledNote": "패널 TLS 비활성화됨",
      "certAlreadyPresent": "인증서가 이미 있습니다. 재발행을 건너뛰었습니다.",
      "restartManual": "수동으로 다시 시작: systemctl restart ysk-server",
      "restarted": "ysk 서버가 다시 시작되었습니다",
      "restartFailed": "다시 시작 실패: {{detail}}",
      "firewallHint": "인터넷에서 연결하는 경우 패널 포트(기본값 9287/tcp)를 허용합니다.",
      "restartNow": "다음 직후에 ysk-server를 다시 시작하십시오.",
      "restartNowHint": "이 세션을 삭제합니다.",
      "restartConfirm": "지금 패널 서비스를 다시 시작하시겠습니까? 연결이 끊어질 수 있습니다. HTTPS를 통해 다시 엽니다.",
      "manualRestart": "수동으로 다시 시작한 다음 {{url}}를 엽니다.",
      "reconnectHttps": "서비스가 다시 시작되었을 수 있습니다. {{url}}에 다시 연결하세요.",
      "leStrategies": "패널 인증서: webroot → nginx certonly → 독립 실행형(--redirect 없음) 시도",
      "leOk": "{{domain}}에 대해 획득한 인증서를 암호화하자",
      "leFailed": "인증서 요청 실패: {{detail}}",
      "leHint": "여기에서 DNS A가 가리키고 포트 80이 연결 가능한지 확인하세요(또는 nginx가 도메인을 제공함)",
      "openFirewall": "공개인 경우: 패널 포트 {{port}}/tcp 허용(방화벽 → 포트 열기 → 9287 패널)",
      "disableConfirmTitle": "패널 HTTPS를 비활성화하시겠습니까?",
      "disableConfirmDesc": "패널은 HTTP를 제공합니다. WebAuthn/Passkey는 HTTPS가 다시 활성화될 때까지 작동이 중지됩니다.",
      "disablePasskeyWarn": "등록된 패스키에는 HTTPS가 필요합니다. HTTP에서는 실패합니다.",
      "listenPublic": "패널은 공개 주소(0.0.0.0/::)를 수신하고 있습니다. 방화벽으로 제한하거나 127.0.0.1로 바인딩하세요.",
      "bootstrapCert": "이는 자체 서명된 부트스트랩 인증서입니다. 브라우저에서 경고합니다. 패널 도메인에 대해 신뢰할 수 있는 인증서를 발급합니다.",
      "cliNoSocket": "CLI에는 라이브 HTTP 소켓이 없습니다. ServingHttps는 구성 및 청취 소켓(ss)에서 추론됩니다.",
      "listenHost": "청취 주소",
      "currentHost": "이번 세션",
      "replaceCert": "신뢰할 수 있는 인증서로 교체"
    },
    "timeNtp": "시간 및 NTP",
    "clockStatus": "시스템 시계 상태",
    "local": "현지의",
    "utc": "UTC",
    "source": "원천",
    "ntpService": "NTP 서비스",
    "ntpServiceActive": "달리기",
    "ntpServiceInactive": "중지됨",
    "ntpServiceNa": "해당 없음",
    "ntpSync": "시계 동기화",
    "ntpSyncedYes": "동기화됨",
    "ntpSyncedNo": "동기화되지 않음",
    "ntpSyncedUnknown": "알 수 없음",
    "ntpRequested": "NTP 동기화 활성화가 요청되었습니다.",
    "ntpFailed": "NTP를 활성화하지 못했습니다.",
    "enableNtp": "NTP 동기화 활성화",
    "network": "네트워크",
    "networkSub": "읽기 전용 · 전체 넷플랜은 이 페이지에 없습니다",
    "noIp": "IP를 읽을 수 없습니다.",
    "storage": "저장",
    "metricsDetail": "측정항목 세부정보",
    "noDisk": "디스크를 읽을 수 없습니다.",
    "avail": "가능 {{v}}",
    "shortcuts": "운영 단축키",
    "shortcutsAria": "운영 단축키",
    "scServices": "서비스 매트릭스",
    "scServicesD": "유닛 수명주기",
    "scUnit": "제어 영역 단위",
    "scUnitD": "패널 시스템 유닛",
    "scReadiness": "준비",
    "scReadinessD": "생산 게이트",
    "scUpdates": "시스템 업데이트",
    "scUpdatesD": "패키지/CVE",
    "scMetrics": "호스트 측정항목",
    "scMetricsD": "알림 로드",
    "scLogs": "로그 센터",
    "scLogsD": "저널/파일",
    "powerTitle": "전원(위험 구역)",
    "powerWarn": "재부팅/전원 끄기는 모든 서비스와 패널을 중단합니다. 패널에서 호스트 전원을 켤 수 없습니다. 물리적 액세스 또는 하이퍼바이저가 필요합니다.",
    "unlocked": "잠금 해제됨",
    "powerUnlock": "위험 구역 잠금 해제",
    "powerLock": "위험 구역 잠금",
    "noScheduledPower": "재부팅이나 전원 끄기가 예약되지 않았습니다.",
    "powerCaps": "YSK_EXECUTE=1 및 루트가 필요합니다. 이제 EXECUTE={{exec}}, 루트={{root}}입니다.",
    "scheduledPower": "예약된 전원 끄기/재부팅 감지됨",
    "cancelScheduleHint": ". 철회하려면 “일정 취소”를 이용하세요.",
    "rebootHost": "호스트 재부팅…",
    "poweroffHost": "전원 끄기…",
    "cancelled": "취소",
    "cancelFailed": "취소 실패",
    "cancelSchedule": "일정 취소",
    "confirmStrings": "REBOOT/POWEROFF로 확인하세요. 전원 끄기 및 재부팅(종료 +N)에 대한 기본 지연은 ~1분입니다. 감사를 위해 작성되었습니다.",
    "confirmReboot": "호스트 재부팅을 확인하시겠습니까?",
    "confirmPoweroff": "전원이 꺼졌는지 확인하시겠습니까?",
    "confirmRebootDesc": "모든 서비스와 패널 세션이 중단됩니다. REBOOT를 입력하여 확인하세요.",
    "confirmPoweroffDesc": "호스트의 전원이 꺼집니다. 패널은 원격으로 전원을 켤 수 없습니다. 확인하려면 POWEROFF를 입력하세요.",
    "typeToUnlock": "잠금을 해제하려면 {{need}}를 입력하세요.",
    "confirmRebootBtn": "재부팅 확인",
    "confirmPoweroffBtn": "전원 꺼짐 확인",
    "sentDisconnect": "전송됨 - 연결이 끊어집니다",
    "powerFailed": "전원 작업 실패",
    "exportExplain": "내보내기 = 패널 DB 요약 JSON. 재구축 = 관리되는 conf → /etc/nginx/conf.d + 다시 로드. 동기화에는 루트 + EXECUTE가 필요합니다.",
    "controlSummary": "제어 영역 요약",
    "controlSummarySub": "라이브 DB 스냅샷 · 미리보기 / 다운로드 / 서버에 쓰기",
    "snapshotLoaded": "요약 로드됨 · {{at}}",
    "previewSummary": "미리보기 요약",
    "downloadedJson": "JSON이 브라우저에 다운로드됨",
    "downloadJson": "JSON 다운로드",
    "snapshotMeta": "생성됨 {{at}} · 사용자 {{users}} · 패키지 {{packages}}",
    "previewHint": "제어 영역 스냅샷을 로드하려면 '요약 미리보기'를 클릭하세요.",
    "managedNotEtc": "dataDir/nginx/conf.d — /etc에 적용되는 것과 동일하지 않음",
    "nFiles": "{{count}} 파일",
    "noManaged": "아직 관리되는 conf가 없습니다.",
    "noManagedDesc": "프로젝트 Nginx 게시 후 나타남",
    "readFailed": "읽기 실패",
    "preview": "시사",
    "previewModalDesc": "관리형 conf 콘텐츠(dataDir)",
    "prevPage": "이전",
    "nextPage": "다음",
    "pageOf": "페이지 {{page}} / {{total}} · {{count}} 파일",
    "managedPager": "관리되는 conf 페이지",
    "syncToSystem": "시스템에 동기화",
    "syncSub": "/etc/nginx/conf.d에 복사하고 다시 로드합니다. 루트 + EXECUTE가 필요합니다.",
    "syncReload": "동기화 + 새로고침",
    "syncReloadNeedConfirm": "확인 필요 — /etc/nginx/conf.d에 쓰고 Nginx를 다시 불러옵니다",
    "exportOnly": "내보내기만 + 목록 구성",
    "dryRun": "드라이런",
    "dryRunNote": "Dry-run은 시스템을 변경하지 않습니다.",
    "exportHistory": "서버 내보내기 내역",
    "exportHistorySub": "dataDir/exports · 인증된 다운로드",
    "noExports": "아직 서버 내보내기 파일이 없습니다.",
    "noExportsDesc": "\"내보내기 디렉터리 쓰기\"를 클릭하여 생성하세요.",
    "downloaded": "다운로드됨 {{name}}",
    "download": "다운로드",
    "syncConfirmTitle": "Nginx를 시스템에 동기화하시겠습니까?",
    "syncConfirmDesc": "관리형 Nginx conf를 /etc/nginx/conf에 동기화",
    "uptime": "가동 시간",
    "load1m": "1m 부하",
    "executeLabel": "EXECUTE",
    "rootLabel": "뿌리",
    "managedLabel": "관리됨",
    "managedCount": "관리됨",
    "exportsCount": "수출",
    "managedNginxTitle": "관리형 Nginx",
    "exportPath": "내보내기 경로",
    "mode": "방법",
    "managedConf": "관리형 구성",
    "dryRunFlag": "드라이런",
    "timezoneSearch": "시간대 필터링…",
    "resyncNtp": "NTP 재동기화",
    "storageSub": "디스크 사용량",
    "nginxLeftover": "잔여",
    "nginxUnused": "미사용",
    "nginxLeftoverHint": "옛 public-files 등 잔여 conf. 조치하기 전까지 동기화에 포함됩니다.",
    "nginxUnusedHint": "기본 / catch-all conf(000-default). 조치하기 전까지 동기화에 포함됩니다.",
    "nginxRemoveLeftover": "남은 음식 제거",
    "nginxRemoveLeftoverTitle": "남은 nginx conf를 제거하시겠습니까?",
    "nginxRemoveLeftoverDesc": "패널 인벤토리에서 {{name}}를 삭제합니다. 라이브 /etc/nginx 복사본은 YSK_EXECUTE + 루트로만 제거됩니다. 000-기본값은 남지 않으며 여기서 삭제할 수 없습니다.",
    "needExecuteRoot": "YSK_EXECUTE + 루트가 필요합니다."
  },
  "systemd": {
    "enabled": "사용",
    "disabled": "사용 안 함",
    "notInstalled": "미설치",
    "running": "달리기",
    "notRunning": "실행되지 않음",
    "failed": "실패한",
    "activating": "활성화",
    "unitMissing": "장치 누락",
    "loadFailed": "로드하지 못했습니다.",
    "opFailed": "작업 실패",
    "installedEnabled": "설치하고 활성화하려고 시도했습니다.",
    "unitTemplateWritten": "유닛 템플릿이 작성되었습니다.",
    "writeTemplate": "관리 디렉토리 템플릿 작성",
    "writeTemplateDesc": "dataDir/systemd 아래에 ysk-server.service를 생성합니다(/etc는 변경하지 않음).",
    "templateExists": "관리 템플릿이 이미 존재합니다.",
    "installEnable": "/etc/systemd에 설치하고 활성화합니다.",
    "installEnableDesc": "복사 장치 → daemon-reload → 활성화 --now",
    "needExecuteRoot": "YSK_EXECUTE 및 루트가 필요합니다.",
    "serviceNotRunning": "서비스가 실행되지 않음",
    "serviceNotRunningHint": "장치가 설치되었지만 비활성 상태일 수 있습니다. 설치 및 활성화를 시도하거나 서비스 매트릭스를 사용해 보십시오.",
    "controlRunning": "제어 영역 서비스 실행 중",
    "unlockApply": "잠금 해제 시스템 적용 기능",
    "startAsRoot": "YSK_EXECUTE=1로 루트로 시작",
    "status": "상태",
    "bootEnabled": "부팅 시 시작",
    "on": "켜짐",
    "off": "꺼짐",
    "yes": "예",
    "no": "아니요",
    "canInstall": "설치 가능",
    "copyEnable": "/etc/systemd에 복사하고 --now를 활성화합니다.",
    "needExecuteRootShort": "EXECUTE + 루트가 필요합니다.",
    "probing": "시스템 상태 조사 중…",
    "suggestedSteps": "권장 단계",
    "install": "설치",
    "policy": "정책",
    "about": "설명",
    "exists": "존재한다",
    "missing": "없어진",
    "notWritten": "아직 작성되지 않았습니다.",
    "related": "관련된",
    "opsResult": "작업 결과",
    "writeTemplateOnly": "템플릿만 쓰기",
    "installAndEnable": "설치 및 활성화",
    "stepReport": "걸음수 보고",
    "installEnableShort": "설치 활성화",
    "cannotInstall": "아직 시스템에 설치할 수 없습니다: 필요",
    "andRoot": "그리고 루트. 쓰기 템플릿은 여전히 ​​관리 파일을 생성합니다. 보다",
    "probeDetail": "프로브 세부정보",
    "probeDetailSub": "디스크의 라이브 시스템 상태 및 유닛 파일",
    "unit": "단위",
    "manageTemplate": "관리 템플릿",
    "installOps": "설치 작업",
    "twoModes": "다양한 요구 사항에 맞는 두 가지 모드 — 환경에 따라 선택",
    "writeOnlyTitle": "템플릿만 쓰기",
    "writeOnlyBody": "관리 디렉터리 단위 파일을 생성합니다. 루트 없이 검토하거나 준비하는 데 적합합니다.",
    "willNotEnable": "서비스를 활성화하지 않습니다.",
    "writeTemplateBtn": "템플릿 작성",
    "installEnableTitle": "설치 및 활성화",
    "installEnableBody": "/etc/systemd/system에 복사하고 daemon-reload하고 --now를 활성화합니다. 루트 + EXECUTE가 필요합니다.",
    "policyWrite": "템플릿만 쓰기 — /etc가 아닌 dataDir만 쓰기",
    "policyInstall": "설치 및 활성화 — cp + daemon-reload + 활성화",
    "policyBlocked": "EXECUTE 또는 루트가 아닌 사용자 → 명확하게 차단됨, 가짜 성공 없음",
    "policyNotEqual": "쓰기 템플릿 ≠ 서비스 활성화 ≠ 듣기",
    "shortcutPower": "실행 / 전원",
    "shortcutOther": "기타 단위",
    "cannotInstallFull": "아직 시스템에 설치할 수 없습니다. YSK_EXECUTE=1 및 루트가 필요합니다. 쓰기 템플릿은 여전히 ​​관리 파일을 생성합니다. 보다",
    "policyWriteFull": "템플릿만 쓰기 — /etc가 아닌 dataDir만 쓰기",
    "policyNotEqualFull": "쓰기 템플릿 ≠ 서비스 활성화 ≠ 듣기",
    "controlPlaneUnit": "제어 영역 단위",
    "kpiRuntime": "실행 시간",
    "rawStateHint": "툴팁의 원시 단위 상태",
    "bootHint": "부팅 시 장치가 시작되는지 여부",
    "kpiBoot": "부팅 활성화",
    "kpiCaps": "기능 적용",
    "capsReady": "시스템에 설치할 수 있음",
    "capsBlocked": "신청할 수 없습니다",
    "unitFiles": "유닛 파일",
    "unitFilesSub": "시스템 경로와 패널 관리 템플릿(다양한 역할)",
    "systemUnitFile": "시스템 장치(/etc)",
    "systemUnitHint": "단위 시스템 부하; 설치 및 활성화 후에 나타납니다.",
    "managedUnitFile": "관리형 템플릿(dataDir)",
    "managedUnitHint": "패널 작성 템플릿 — /etc에 설치된 것과 동일하지 않습니다.",
    "managedPathHint": "dataDir/systemd/ysk-server.service",
    "fragmentPath": "조각 경로",
    "fromSystemd": "시스템에서",
    "pid": "PID {{pid}}",
    "nextAction": "다음 단계 제안",
    "controlRunningHint": "systemctl is-active = 활성",
    "aboutPolicyTitle": "정책 적용",
    "aboutPolicySub": "템플릿 작성과 시스템 설치는 별도의 단계입니다. 설치 후 다시 실행하는 것은 누락된 단계가 아니라 일반적인 작업입니다.",
    "policyInstallFull": "설치 및 활성화: /etc/systemd/system에 복사하고 daemon-reload하고 --now를 활성화합니다. 루트 + EXECUTE가 필요합니다.",
    "policyBlockedTitle": "권한 없이 차단됨",
    "policyNotEqualTitle": "상태는 동일하지 않습니다."
  },
  "tabs": {
    "scrollLeft": "탭을 왼쪽으로 스크롤",
    "scrollRight": "탭을 오른쪽으로 스크롤",
    "about": "설명",
    "main": "행위",
    "stack": "소프트웨어",
    "unknown": "해당 탭이 없습니다",
    "unknownHint": "이 페이지에는 {{tab}}라는 탭이 없습니다."
  },
  "terminal": {
    "tabSession": "세션",
    "target": "다음으로 로그인",
    "connect": "연결하다",
    "disconnect": "연결 끊기",
    "user": "사용자",
    "size": "크기",
    "stateConnected": "연결됨",
    "stateConnecting": "연결 중",
    "stateIdle": "게으른",
    "connecting": "오프닝 세션…",
    "connectedAs": "{{user}}로 로그인됨",
    "disconnected": "연결이 끊김",
    "error": "터미널 오류",
    "wsError": "웹소켓 실패",
    "exitCode": "종료 코드 {{code}}",
    "needRootExecute": "시스템 셸에는 루트 + YSK_EXECUTE=1이 필요합니다.",
    "groupSystem": "시스템",
    "groupProject": "프로젝트",
    "unavailable": "없는",
    "copyAll": "모두 복사",
    "copyAllNeedConn": "먼저 연결 - 연결이 끊어진 동안 버퍼는 비어 있습니다.",
    "placeholder": "ID를 선택한 다음 연결하세요.",
    "aboutTitle": "터미널 정보",
    "aboutSub": "브라우저의 대화형 OS 셸(로컬 사용자) 임의의 원격 SSH 클라이언트가 아닙니다.",
    "aboutWhat": "그것은 무엇입니까",
    "aboutWhatBody": "실제 PTY 로그인 쉘(bash -l). runuser를 통한 프로젝트 사용자 루트 쉘을 통해 루트.",
    "aboutReq": "요구사항",
    "aboutReqBody": "제어 평면은 YSK_EXECUTE가 활성화된 루트로 실행되어야 합니다.",
    "aboutUsers": "신원",
    "aboutUsersBody": "루트 또는 OS 프로비저닝 프로젝트 Linux 사용자.",
    "stepUpRequired": "루트 쉘에는 TOTP/복구 코드가 필요합니다",
    "stepUpHint": "계정에 TOTP가 활성화되어 있는 경우 루트 로그인을 위해서는 2FA 승격이 필요합니다.",
    "stepUpTitle": "루트 쉘 확인",
    "stepUpDesc": "인증 코드 또는 복구 코드를 입력하세요.",
    "totpLabel": "TOTP / 복구 코드",
    "sessionStillOpen": "이 페이지를 읽는 동안 라이브 셸은 계속 연결되어 있습니다.",
    "rootConfirmTitle": "루트 쉘을 여시겠습니까?",
    "rootConfirmDesc": "이 세션은 호스트의 무제한 루트 PTY입니다. 명령이 감사됩니다.",
    "rootConfirmBody": "권한 있는 호스트 명령을 실행하려는 경우에만 계속하십시오."
  },
  "uiInline": {
    "s27d9daa5": "런타임 {{v0}} {{v1}}，",
    "sb8eaefa3": "런타임 {{v0}}，",
    "s7d540128": "· {{v0}}",
    "s814bcc7c": "· {{v0}}",
    "s3f7c3eae": "업데이트",
    "s92e48065": "건너뛰다",
    "sdff0f697": "보다",
    "s012f2d7e": "업데이트",
    "s20455064": "…",
    "s9b34f8c3": "…",
    "s8e3824cb": "업데이트 0/{{v0}}：…",
    "sc2570ff7": "업데이트 {{v0}}/{{v1}}：{{v2}}",
    "s0bd0c471": "： {{v0}}，실패 {{v1}}",
    "s2980553a": "…",
    "s303ee0f7": "취소…()",
    "s21858fe5": "취소",
    "sddc05404": "닫기",
    "saf251c2a": "업데이트()",
    "s5929623c": "…",
    "s18b08919": "…",
    "se2b088fc": "업데이트({{v0}})",
    "sb2848bc7": "업데이트?",
    "sc1910cf2": "{{v0}} 。 루트 실행。",
    "sc13bb38c": "／；。",
    "sea4ba90a": "짐을 실은",
    "sdd78429a": "쓴",
    "s9b6c1b03": "설명",
    "s858f4eca": "…",
    "s090aa1a7": "관리。 Nginx 프로젝트 → → 。",
    "sac96ec39": "패널이 설치 {{v0}}를 기록했지만 호스트 프로브에서 바이너리를 찾지 못했습니다. 설치되지 않음 - 다시 조사하거나 다시 설치하십시오.",
    "sf7f7807b": "기본",
    "sc9530028": "최신,",
    "s9602769e": "설치됨 {{v0}} · 업스트림 최신 {{v1}}",
    "sb8b5a353": "Go/Rust ：「설치」，「기본값」 PATH 。",
    "sac155c20": "제거 가능한 비핵심 확장(적절한 제거, FPM/CLI 유지)",
    "s23379974": "「설치」。， 런타임。",
    "s7b6d4414": "PHP가 설치되지 않음 {{v0}}：「PHP 설치 {{v0}}」+(설치)。",
    "s2e9a1b03": "PHP 설치 {{v0}}（）",
    "s62b73dd7": "…",
    "se23513e5": "PHP ?",
    "sf8c8ff4b": "\"{{v0}}\"를 적절하게 제거합니다. 핵심 FPM/CLI는 제거되지 않습니다.",
    "s7aa09150": "설치됨",
    "sbcbdbc49": "미설치",
    "sae7738d0": "달리기",
    "sf3af7c5e": "감지되지 않음",
    "sa1d77833": "실패한",
    "s75dddf52": "중지됨",
    "s4e7f6152": "업데이트… {{v0}}/{{v1}}：{{v2}}",
    "s72cac69e": "{{v0}}: {{v1}}",
    "sd1c15b6d": "{{v0}}: {{v1}}",
    "s7a90f74c": "업데이트：{{v0}}",
    "s0aa24093": "{{v0}} 업데이트",
    "s5d92ffc3": "：{{v0}};실패：{{v1}}",
    "sa15a291f": "업데이트 실패",
    "sbb823c06": "실패한",
    "s68db1348": "{{v0}} 업데이트 실패",
    "s84a4e7c6": "설치：{{v0}}…",
    "s2ca8a4f5": "루트 + 실행;",
    "sd9419dc9": "설치( 루트+EXECUTE)",
    "s3ec3d449": "{{v0}} 설치",
    "sbb8dfdeb": "설치：{{v0}}",
    "s18bb4b62": "{{v0}} 설치／",
    "se9a47def": "설치",
    "sdc0528a2": "{{v0}} 설치 실패",
    "s69e60fb5": "업데이트 대상 없음",
    "s3f50fa6e": "설치／업데이트 {{v0}} {{v1}}…()",
    "s1f5eef17": "서버 표시 ，닫기。",
    "s2bf6b642": "업데이트( 루트 YSK_EXECUTE=1)",
    "s9b4a58e8": "{{v0}} {{v1}} 설치",
    "s6dc82720": "설치됨／업데이트 {{v0}} {{v1}}",
    "s94a1f025": ".보여주다,.",
    "s73cae5a0": "{{v0}} {{v1}} 설치 실패",
    "se1050a28": "개요",
    "s8c29cb38": "…",
    "s583f0654": "…",
    "s4344c486": "…",
    "sed2550e1": "…",
    "scb435db5": "서비스",
    "s97bbc1b7": "…",
    "s60a23151": "관리：설치、서비스、、관리。",
    "s5387b55b": "…",
    "s0b582c70": "…",
    "s4be2a3a4": "설치됨",
    "s259e6f0e": "／",
    "s13b3f970": "주의가 필요함",
    "sdd33adf9": "…",
    "sdfaaf946": ";업데이트.",
    "s78f03e20": "{{v0}}",
    "sbf368054": "{{v0}}",
    "s235a7426": "업데이트",
    "s14249f75": "빠른",
    "saff76d0a": "서비스",
    "s24f12f4f": "업데이트／설치",
    "s43a9fd7a": "：업스트림／;서비스：。업데이트。",
    "sc45743bd": "…",
    "s00338fde": "업데이트?",
    "s0e05f4b7": "업데이트",
    "s4d0b4688": "취소",
    "s92b8bf67": "설치하다?",
    "s9af27043": "{{v0}}：{{v1}}。 루트 YSK_EXECUTE=1을 설치합니다.",
    "s28263d85": "설치",
    "s2e37cbfa": "설치일:{{v0}}",
    "s7d52bb0c": "기본값 {{v0}}",
    "s9f898b85": "업스트림 {{v0}}",
    "s93dde991": "{{v0}} → {{v1}}",
    "s9071dcb7": "설치됨 {{v0}} · 저장소가 최신임",
    "s0b09f444": "{{v0}}",
    "sf6cc774f": "설치되지 않음(설치 관리)",
    "s42f9c88b": "{{v0}}",
    "sb72e8ebc": "버전 확인 중… 또는 관리 페이지 열기",
    "sabac942e": "설치 또는 구성하려면 관리 페이지를 엽니다.",
    "sbd26894e": "업데이트 가능",
    "s5985ee9a": "최신",
    "s090e6a43": "버전 선택",
    "s8253535d": "설치／업데이트 {{v0}}",
    "s1723f1d7": "설치하다……",
    "sd9db02d0": "업데이트",
    "sba60558e": "업데이트 {{v0}}",
    "s706de938": "업데이트 {{v0}}",
    "s0f9ddc70": "설치 {{v0}}",
    "sef864639": "설치",
    "s59f613d5": "설치／ {{v0}}",
    "s78b1688f": "업데이트 {{v0}}",
    "s4989b5cf": "관리하다",
    "s72203f17": "서비스",
    "s75817a35": ", 런타임",
    "s6d449473": "…",
    "s777e90e0": "관리하다",
    "sd8bc8ab3": "이름:{{name}}",
    "s09877be5": "관리하다",
    "sd95910ce": "…",
    "sa72ef18d": "도구",
    "s4b2bec80": "이름",
    "sd00c0d39": "PHP ;이름",
    "sd7c669ac": "phpMyAdmin（）",
    "s9e5d3a97": "： {{v0}}，실패 {{v1}}",
    "s1f0a4bf9": "취소()",
    "s7193f51b": "： {{v0}}，실패 0",
    "sd93b8620": "{{v0}} 도구",
    "sd0ef129c": "({{v0}})",
    "se6d47d0b": "도구",
    "se6436711": "설치도구({{v0}})",
    "s1a27a3c4": "도구「런타임 설치」설치(설치)。",
    "s32add03e": "{{v0}} 도구。",
    "s3bca33b2": "도구",
    "s8072fa0d": "{{v0}} 설치(기본값)",
    "s2bf2b4c4": "InstallDefault。「기본값」、설치。",
    "s42f3d613": "기본값 {{v0}}",
    "sdcdc5029": "라이브 시작이 완료되지 않았습니다.",
    "s55cc91e0": "Nginx 게시，。",
    "s303f6113": "배포 재시도",
    "s3265f9ed": "Nginx 게시",
    "s99cc48c1": "{{v0}} ;「— —」。",
    "sa87ceeff": "Nginx 게시",
    "s38a63bcb": "고정 포트()",
    "s5ac95c29": "게시되지 않음",
    "sc8f34a0d": "작성(새로고침)",
    "s07fb5671": "먼저 배포",
    "sa5f994e3": "게시 실패",
    "s32dd17d9": "SSL 。「SSL 」／，게시 + SSL。",
    "s5516cb5b": "사이트 상태",
    "sed38f4ea": "업스트림",
    "sadb6ef47": "프로세스 포트",
    "se7a422dd": "고정 포트",
    "s2eff57b7": "프로세스 포트",
    "s110671e6": "현재 포트",
    "s549ea65e": "게시",
    "s9dc5c003": "기초적인",
    "s04a32a1e": "SSL ：",
    "s564d50b7": "／게시 + SSL。",
    "sbb6c72f1": "({{v0}})",
    "sd9b695a5": "，Nginx / SSL 게시。",
    "scb85cfff": "SSL",
    "s18c1af46": "게시 + SSL",
    "s6a284cb0": "Nginx + SSL 게시",
    "s85483ffb": "유지",
    "s6993c6ba": "숨다",
    "s15671929": "보여주다",
    "s56f99a6b": "프로젝트를 영구적으로 삭제",
    "sa0f2f5c6": "「{{v0}}」。。",
    "sa6710b42": "영구 삭제",
    "s06569331": "시스템 / PM2 /",
    "sd20a5b0c": "Nginx conf, PHP-FPM 풀, Apache 가상 호스트()",
    "s4ff53acc": "리눅스 홈 （）",
    "s50dda2df": "홈 리눅스 （）",
    "sa7f90a4a": "…",
    "se0d24557": "이름",
    "s9a9e4e32": "홈 리눅스",
    "s1cf2a97b": "취소,",
    "s51af87fd": "이름",
    "s8b04d62f": "「{{v0}}」",
    "s49d55c8f": "DNS 영역/도메인 。",
    "s239f6551": "：{{v0}}",
    "sa00380bd": "：{{v0}}",
    "sb4e3bb0b": "설치",
    "sae926193": "…",
    "s52573ef8": "업데이트( 루트+EXECUTE)",
    "s872d2fe0": "{{v0}} 업데이트",
    "s6a93c0ec": "버전 로드 중…",
    "s378e49b6": "설치됨",
    "s7e805a12": "최신",
    "s74b39712": "최신/repo 최신",
    "s03a87d5d": "최신 다시 확인",
    "s53c07a48": "업데이트 {{v0}}",
    "s425e8381": "설치 {{v0}}",
    "s5bd1242f": "{{v0}}：{{v1}} → {{v2}}。 루트 실행。",
    "s296817b1": "설치하다()",
    "s3568a3da": "…",
    "s28256229": "완성된",
    "s3971290f": "서버…"
  },
  "updates": {
    "title": "지능형 업데이트",
    "body": "",
    "risk": {
      "critical": "비판적인",
      "high": "높은",
      "medium": "중간",
      "low": "낮은"
    },
    "justNow": "방금",
    "secAgo": "{{n}}초 전",
    "minAgo": "{{n}}분 전",
    "hourAgo": "{{n}}시간 전",
    "highRiskN": "{{count}} 고위험",
    "panelUpdate": "패널 업데이트 가능",
    "footerNewVersion": "새 버전 {{version}}",
    "riskOk": "위험 관리 가능",
    "riskUnevaluated": "평가되지 않음 — Scan + OSV 실행",
    "pendingScan": "스캔 대기 중",
    "packages": "패키지",
    "highRisk": "위험",
    "needApproval": "승인 필요",
    "hasCve": "CVE 있음",
    "panel": "패널",
    "schedule": "일정",
    "reload": "새로고침",
    "osvTitle": "상위 12개 제안 패키지에 대한 OSV 쿼리(네트워크 필요)",
    "scanOsv": "스캔 + OSV",
    "cveNotChecked": "체크하지 않음",
    "scanPkgs": "패키지 스캔",
    "tabInventory": "패키지 재고",
    "tabSelf": "패널 자체",
    "badgeUpdate": "업데이트",
    "tabSchedule": "일정",
    "tabPolicy": "정책",
    "scanning": "스캐닝…",
    "inventoryTitle": "패키지 재고",
    "inventoryDesc": "표시 {{shown}} / {{total}} · 인벤토리됨 {{when}}",
    "riskFilterAria": "위험 필터",
    "all": "전체",
    "upgradable": "업그레이드 가능",
    "mediumFilter": "중간",
    "lowUnmarked": "낮음/표시 없음",
    "searchPh": "패키지/조언/CVE…",
    "searchAria": "패키지 검색",
    "colPackage": "패키지",
    "colVersion": "버전(설치 → 적절한 후보)",
    "installedTitle": "설치됨",
    "noUpgrade": "(업그레이드 불가)",
    "colAdvice": "조언",
    "upgradeTo": "{{v}}로 업그레이드",
    "sameVersion": "적절한 후보가 설치된 버전과 일치합니다.",
    "noNeedUpgrade": "업그레이드가 필요하지 않습니다",
    "emptyInventory": "아직 패키지 데이터가 없습니다.",
    "emptyInventoryDesc": "이 호스트의 인벤토리를 작성하려면 페이지 헤더의 \"패키지 검색\"을 사용하십시오.",
    "emptyFilter": "패키지 일치 필터가 없습니다.",
    "emptyFilterDesc": "위험 필터 변경 또는 검색 지우기",
    "resetFilters": "필터 재설정",
    "selfLoading": "자체 업데이트 상태 로드 중…",
    "selfTitle": "패널 자체 업데이트",
    "selfCheckFailed": "확인 실패",
    "selfUpToDate": "최신",
    "selfAvailable": "업데이트 가능",
    "selfCurrent": "현재 버전",
    "selfLatest": "최신 버전",
    "selfChannel": "채널",
    "checkSelf": "업데이트 확인",
    "applySelf": "자체 업데이트 적용",
    "scheduleTitle": "자동 스캔 일정",
    "scheduleDesc": "정기적인 재고; 자동 업그레이드되지 않습니다",
    "enabled": "사용",
    "disabled": "사용 안 함",
    "cron": "크론 표현",
    "saveSchedule": "일정 저장",
    "policyTitle": "정책 업데이트",
    "policyBody": "고위험 및 CVE 패키지는 적용 전 승인이 필요합니다.",
    "applyPkg": "패키지 업그레이드 적용",
    "rebootNeeded": "재부팅",
    "kernelRebootHint": "커널 패키지를 적용한 후 재부팅해야 함",
    "applyPkgConfirm": "업그레이드 {{name}}?",
    "applyPkgDesc": "호스트에서 이 패키지에 대한 적절한 업그레이드를 실행합니다. 루트 + YSK_EXECUTE가 필요합니다.",
    "lastScan": "마지막 스캔",
    "never": "절대",
    "cve": "CVE",
    "riskCol": "위험",
    "selfUpdatable": "업데이트 가능",
    "selfCurrentShort": "현재의",
    "selfLatestShort": "최신",
    "applyPanelUpdate": "패널 업데이트 적용",
    "applySelfConfirmTitle": "패널 업데이트를 적용하시겠습니까?",
    "applySelfConfirmDesc": "{{from}} → {{to}}를 설치하고 패널 서비스를 다시 시작하세요. 드라이런은 없습니다.",
    "applyPanelAlreadyLatest": "이미 최신 패널 버전",
    "recheck": "재확인",
    "aboutScope": "범위",
    "aboutScopeV": "ysk-server 패널 + 카탈로그 서비스 + 런타임 + 나머지 적절한 패키지",
    "aboutChannel": "채널",
    "aboutChannelV": "npm 패키지 ysk-server → GitHub 릴리스 → apps/server/package.json; 적용: npm i -g ysk-server@version 또는 git (YSK_SOURCE_ROOT)",
    "aboutFail": "실패",
    "aboutFailV": "사용할 수 없는 채널은 최신으로 보고되지 않습니다. 적용하려면 실행이 필요합니다. git Apply에 서비스를 다시 시작해야 합니다.",
    "jobsTitle": "예약된 작업",
    "jobsSub": "제어 영역 스케줄러(읽기 전용) · {{count}}",
    "noJobs": "표시되는 일정이 없습니다.",
    "noJobsDesc": "아직 스케줄러 작업이 비활성화되었거나 없음",
    "lastRun": "· 마지막 {{when}}",
    "scanPolicy": "주사",
    "scanPolicyV": "스캔 ≠ 업그레이드됨; 적용 시스템 변경",
    "highRiskPolicy": "위험",
    "highRiskPolicyV": "승인 필요: 보내기 전 두 번째 확인",
    "needApprovalHint": "사용 가능을 열고 승인이 필요한 패키지로 필터링합니다.",
    "applyNeedConfirm": "적용하기 전에 확인 대화상자를 엽니다.",
    "probeFailed": "프로브 실패",
    "notViaApt": "apt에서 관리하지 않음 — 후보자 없음",
    "noCandidate": "후보 버전 없음",
    "cveLabel": "CVE",
    "jobOpenGeo": "GeoIP 페이지",
    "job": {
      "protection_probe": {
        "name": "보호 프로브",
        "hint": "주기적 방어 신호"
      },
      "updates_scan": {
        "name": "업데이트 검사",
        "hint": "패키지 인벤토리 새로 고침"
      },
      "daily_backup": {
        "name": "일일 백업",
        "hint": "전체 백업 예약"
      },
      "db_temp_expire": {
        "name": "임시 DB 사용자 만료",
        "hint": "만료된 임시 데이터베이스 사용자 삭제"
      },
      "defense_auto_ban": {
        "name": "방어 자동 금지",
        "hint": "자동 차단 체크 적용"
      },
      "defense_geoip_update": {
        "name": "GeoIP 업데이트",
        "hint": "GeoIP 데이터베이스 다운로드"
      },
      "log_auto_vacuum": {
        "name": "로그 진공",
        "hint": "저널링 보존"
      },
      "email_dnsbl": {
        "name": "이메일 DNSBL",
        "hint": "메일 DNSBL 확인"
      },
      "validators_upgrade_scan": {
        "name": "검증인 업그레이드 스캔",
        "hint": "유효성 검사기 이미지/바이너리 업데이트 확인"
      }
    },
    "permPolicy": "권한",
    "permPolicyV": "EXECUTE/root 없이 → 차단됨(가짜 성공 없음)",
    "osvPolicyV": "네트워크가 필요합니다. 상위 12개 제안만 강화",
    "relatedAria": "관련된",
    "scHost": "호스트 설정",
    "scReadiness": "준비",
    "scReadinessD": "생산 게이트",
    "scSystemd": "시스템 단위",
    "scSystemdD": "제어 영역 서비스",
    "scSecurity": "보안센터",
    "scSecurityD": "승인/도구",
    "applyHighRisk": "고위험 업데이트 적용 {{name}}?",
    "highRiskUpdate": "고위험 업데이트",
    "remoteUnknown": "원격지 알 수 없음",
    "hasUpdate": "업데이트 가능",
    "scanned": "{{count}} 패키지를 스캔했습니다.",
    "scannedWithOsv": "스캔된 {{count}} 패키지(OSV 포함)",
    "realUpgradeable": "{{count}} 정말 업그레이드 가능",
    "panelCheckFailed": "패널 버전 확인 실패",
    "applyIncomplete": "미완료 신청",
    "appliedPackage": "패키지 업데이트 적용됨",
    "updateFailed": "업데이트 실패",
    "updateIncomplete": "업데이트가 완료되지 않았습니다.",
    "appliedUpdate": "업데이트 적용됨",
    "panelRestarting": "새 버전을 불러오려고 패널을 다시 시작하는 중…",
    "panelRestarted": "패널이 복구됨 · {{version}}",
    "panelRestartWait": "적용이 끝났습니다. 이 페이지가 갱신되지 않으면 몇 초 후 다시 불러오세요.",
    "reloadUi": "UI 새로고침",
    "reloadUiTitle": "패널 UI를 다시 로드하시겠습니까?",
    "reloadUiDesc": "패널 서비스는 {{version}} 입니다. 다시 로드할 때까지 이 탭에는 여전히 이전 프런트엔드가 있습니다. 이 페이지의 저장되지 않은 필드는 손실됩니다.",
    "aptCandidate": "적합한 후보자",
    "advice": {
      "update": "업데이트 권장",
      "skip": "건너뛰다",
      "watch": "보다",
      "urgent": "긴급 업데이트"
    },
    "selectCol": "선택하다",
    "selectAllUpgradable": "업그레이드 가능한 항목 모두 선택",
    "clearSelection": "선택 취소",
    "updateSelected": "업데이트 선택됨({{n}})",
    "batchConfirmTitle": "대량 패키지 업데이트를 확인하시겠습니까?",
    "batchConfirmBody": "{{n}} 패키지를 순서대로 업그레이드합니다. 루트 및 EXECUTE가 필요합니다.",
    "batchConfirmHighRisk": "선택에는 고위험/승인 패키지가 포함됩니다. 검토 후 신청을 승인했습니다.",
    "batchProgress": "일괄 업데이트 {{n}}/{{total}}: {{pkg}}",
    "batchDone": "일괄 완료: {{ok}} 확인, {{fail}} 실패",
    "batchPartialFail": "일부 실패: {{list}}",
    "batchEmpty": "업그레이드 가능한 패키지를 먼저 선택하세요",
    "batchNoneUpgradable": "현재 필터에는 업그레이드 가능한 패키지가 없습니다.",
    "batchCancel": "일괄 취소",
    "batchCancelling": "취소 중… (현재 패키지 이후 중지)",
    "batchCancelled": "취소됨(나머지 건너뛰기)",
    "batchRescanned": "호스트 패키지 상태가 다시 검색되었습니다.",
    "applyLogTitle": "업데이트()",
    "navBadgeTitle": "업데이트 보류 중: {{n}}",
    "aboutPolicySub": "스캔, 적용, 권한 및 OSV 경계. 스캔은 업그레이드된 것과 다릅니다.",
    "tabOverview": "개요",
    "overviewHint": "서버는 일정에 따라 패키지를 검색합니다. 각 기능 페이지에 소프트웨어를 설치합니다. 이 페이지에서는 업그레이드만 확인하고 적용합니다.",
    "overviewStale": "스캔 데이터가 오래되었습니다. 검사를 실행하거나 다음 자동 검사를 기다립니다.",
    "nextScan": "다음 스캔",
    "autoScan": "자동 스캔",
    "autoScanEnable": "자동 패키지 검사 활성화",
    "scanInterval": "스캔 간격",
    "interval6h": "6시간마다",
    "interval12h": "12시간마다",
    "interval24h": "24시간마다",
    "interval48h": "48시간마다",
    "scheduleSaved": "스캔 일정이 저장되었습니다.",
    "scanNow": "지금 스캔",
    "viewUpgradable": "업그레이드 가능 보기",
    "installElsewhere": "패키지(Nginx, PHP, 데이터베이스…)를 설치하려면 이 허브가 아닌 해당 기능 페이지를 엽니다.",
    "status": "상태",
    "groupService": "서비스",
    "groupRuntime": "런타임",
    "groupOs": "시스템 패키지",
    "notInstalled": "미설치",
    "goToPage": "페이지 열기",
    "hubHint": "이 호스트의 카탈로그 소프트웨어 및 런타임. 새로고침하려면 스캔하세요.",
    "intervalDay": "매일",
    "intervalDays": "{{n}}일마다",
    "intervalHour": "매시간",
    "intervalHours": "{{n}}시간마다",
    "intervalMinutes": "{{n}}분마다",
    "intervalSeconds": "{{n}}초마다",
    "availableHint": "패키지 관리자의 최신 후보가 포함된 패키지입니다.",
    "servicesHint": "이 호스트의 카탈로그 서비스입니다. 설치하려면 서비스 페이지를 엽니다.",
    "runtimeHint": "이 호스트의 런타임. 버전 업그레이드는 각 런타임 페이지에서 수행됩니다.",
    "needsReboot": "재부팅 필요",
    "kernelRebootWarn": "새 커널을 설치하려면 일반적으로 사용하기 전에 재부팅해야 합니다.",
    "neverRun": "아직 실행되지 않음",
    "scanOsvN": "스캔 + OSV(첫 번째 {{n}})"
  },
  "users": {
    "userCount": "{{count}} 사용자",
    "users": "사용자",
    "packages": "패키지",
    "suspended": "정지된",
    "securityCenter": "보안센터",
    "singleAdminNo2fa": "이 호스트에는 관리자가 한 명 있고 2FA가 꺼져 있습니다. 2FA를 활성화하고 백업 관리자를 추가하세요.",
    "enableAdmin2fa": "관리자 2FA 활성화",
    "addBackupAdmin": "백업 관리자 추가",
    "loading": "사용자 및 패키지 로드 중…",
    "userList": "사용자 ({{count}})",
    "userListDesc": "역할, 비밀번호, 패키지, 재정의를 편집하려면 세부정보를 엽니다.",
    "createUser": "사용자 생성",
    "operatorHighRiskHint": "공장 기본 운영자 역할에는 고위험 쓰기가 포함됩니다. 좁히면 새 계정만, 기본을 바꾸면 기존 운영자에게도 영향을 줍니다.",
    "createUserPlus": "+ 사용자 생성",
    "searchPh": "사용자 이름/역할/패키지",
    "searchPkgPh": "패키지 이름",
    "searchUsersAria": "사용자 검색",
    "user": "사용자",
    "roles": "역할",
    "package": "패키지",
    "packageAria": "{{name}} 패키지",
    "noneOption": "- 없음 -",
    "resume": "재개하다",
    "suspend": "유예하다",
    "impersonate": "가장",
    "impersonateHint": "이 사용자로 세션을 엽니다. 명의 도용을 종료하려면 계정 메뉴를 사용하세요.",
    "cannotDeleteSelf": "로그인한 계정은 삭제할 수 없습니다",
    "cannotImpersonateSelf": "이미 이 계정으로 로그인되어 있습니다.",
    "openDetail": "세부",
    "edit": "편집",
    "resetPassword": "비밀번호 재설정",
    "newPassword": "새 비밀번호",
    "saveUser": "사용자 저장",
    "userSaved": "업데이트됨 {{name}}",
    "filterAll": "전체",
    "filterAdmin": "관리자",
    "filterOperator": "연산자",
    "filterViewer": "뷰어",
    "filterSuspended": "정지된",
    "filterNoPkg": "패키지 없음",
    "filter2faOff": "2FA 꺼짐",
    "filterOverrides": "재정의 있음",
    "subscribers": "구독자",
    "subscribersN": "{{count}} 사용자",
    "ftp": "FTP",
    "ssh": "SSH",
    "databases": "데이터베이스",
    "bandwidth": "대역폭 MiB",
    "notes": "메모",
    "editPkg": "패키지 편집",
    "pkgUpdated": "업데이트된 패키지 {{name}}",
    "pkgList": "패키지({{count}})",
    "pkgListDesc": "할당량을 편집합니다. 구독자가 남아 있는 동안 차단된 삭제",
    "createPkg": "패키지 생성",
    "createPkgPlus": "+ 패키지 생성",
    "mailboxes": "사서함",
    "diskMiB": "디스크 MiB",
    "noPackages": "아직 패키지가 없습니다.",
    "noPackagesHint": "도구 모음에서 계획을 만든 다음 이를 사용자에게 연결합니다.",
    "createUserDesc": "비밀번호는 최소 8자입니다. 나중에 역할 및 권한을 자세히 편집하세요.",
    "username": "사용자 이름",
    "passwordHint": "8자 이상",
    "role": "역할",
    "roleAria": "사용자 역할",
    "createPkgDesc": "할당량 템플릿 나중에 사용자에게 바인딩",
    "maxProjects": "최대 프로젝트",
    "diskQuota": "디스크 MiB",
    "custom": "관습",
    "createdUser": "생성된 사용자 {{name}}",
    "createdPkg": "패키지가 생성됨 {{name}}",
    "impersonateTitle": "가장 {{name}}?",
    "deleteUserTitle": "{{name}}을 삭제하시겠습니까?",
    "deletePkgTitle": "패키지를 삭제하시겠습니까? {{name}}?",
    "impersonateDesc": "현재 세션이 대체됩니다(~2시간).",
    "deleteUserDesc": "이 작업은 취소할 수 없습니다.",
    "deletePkgDesc": "사용자가 이 패키지를 계속 사용하는 동안에는 삭제가 거부됩니다.",
    "lastSeen": "마지막으로 본",
    "neverSeen": "절대",
    "hostUsage": "호스트 사용량",
    "hostUsageHint": "사용자별 하드 격리가 아닌 시스템 전체(호스트) 합계",
    "hostTotalsBadge": "호스트 총계",
    "opsChecklist": "운영 체크리스트",
    "opsCheck1": "권한이 필요한 사람에게만 관리자 권한을 부여하세요. 매일 Operator를 사용하세요.",
    "opsCheck2": "권한을 편집한 후 저장하세요. 원클릭 복원은 공장 기본값으로 돌아갑니다.",
    "opsCheck3": "구독자가 있는 패키지를 삭제하지 마십시오. 먼저 할당을 해제하세요.",
    "opsCheck4": "백업 복원은 파괴적입니다. 기본적으로 관리자입니다. 운영자에게 승인하기 전에 확인하십시오.",
    "detailDesc": "계정, 액세스 미리보기 및 고급 재정의",
    "tabAccount": "계정",
    "tabAccess": "입장",
    "tabAdvanced": "고급의",
    "rolePickHint": "올바른 직무를 선택하세요. 관리자는 완전히 열려있습니다",
    "accountSection": "계정 설정",
    "packageHint": "호스팅 패키지 템플릿(선택 사항)",
    "resetPasswordOptional": "비밀번호를 유지하려면 비워두세요.",
    "accountStatus": "계정 상태",
    "suspendedHint": "일시중지됨: 로그인할 수 없음",
    "activeHint": "활성: 로그인하여 작업할 수 있습니다.",
    "accessHint": "역할 정책의 유효 기능(읽을 수 있는 레이블)",
    "noCapsInBand": "이 수준에는 기능이 없습니다.",
    "overridesHint": "이 사용자에게만 영향을 미칩니다. 역할 기본값은 변경되지 않습니다.",
    "adminNoOverrides": "관리 사용자는 항상 완전히 열려 있습니다. 개인 취소는 적용되지 않습니다.",
    "grantsHint": "역할 팩 이상의 추가 기능",
    "revokesHint": "상속된 기능 끄기(관리자용 아님)",
    "searchCaps": "검색 기능…",
    "noCapMatch": "일치하는 기능이 없습니다.",
    "no2fa": "2FA 꺼짐",
    "lastSeenValue": "마지막 활동 {{time}}",
    "roleName": {
      "admin": "관리자",
      "operator": "연산자",
      "viewer": "뷰어",
      "agent": "대리인"
    },
    "roleDesc": {
      "admin": "모든 권한: 사용자, 권한, 파괴적인 작업. 항상 완전 개방형입니다.",
      "operator": "일상적인 작업: 서비스, 업데이트, DNS/SSL, 사이트.",
      "viewer": "읽기 전용: 상태, 로그, 목록 — 변경 사항이 없습니다.",
      "agent": "자동화 에이전트: 범위 제한이 있는 위험도가 낮은 쓰기입니다."
    },
    "securityTitle": "2단계 인증(이 사용자)",
    "securityPerUserHint": "TOTP/패스키는 사용자별입니다.",
    "securityStatusOn": "2FA 활성화",
    "securityStatusOff": "2FA가 설정되지 않음",
    "securitySessions": "활성 세션",
    "securityClearTotp": "이 사용자의 2FA를 강제로 삭제합니다.",
    "securityClearTotpHint": "승격이 필요합니다",
    "securityClearConfirm": "2FA 삭제를 확인하려면 사용자 이름을 입력하세요.",
    "securityClearOk": "{{name}}에 대한 2FA를 통과했습니다.",
    "securitySelfNote": "자신만의 2FA를 설정하려면 보안 → 내 보안을 엽니다.",
    "cannotModifySelf": "로그인한 계정은 정지하거나 강등할 수 없습니다",
    "cannotDeleteLastAdmin": "마지막 관리자는 삭제할 수 없습니다",
    "cannotDemoteLastAdmin": "마지막 관리자는 정지하거나 강등할 수 없습니다",
    "lockSelfHint": "로그인한 계정입니다. 잠김을 막기 위해 삭제, 정지, 역할 변경이 차단됩니다.",
    "lockLastAdminHint": "마지막 관리자입니다. 삭제, 정지, 강등이 차단됩니다.",
    "demoteAdminTitle": "이 관리자를 강등할까요?",
    "demoteAdminDesc": "이 사용자는 전체 관리자 권한을 잃습니다. 다른 관리자가 남아 있는지 확인하세요.",
    "quotaNonNeg": "개수와 할당량은 음수일 수 없습니다.",
    "diskQuotaHint": "사전 설정은 GiB입니다. 사용자 정의 상자는 MiB입니다.",
    "bandwidthHint": "0은 무제한을 의미합니다."
  },
  "validators": {
    "title": "검증자 노드 (Beta)",
    "subtitle": "이 호스트에서 L1 노드를 설치하고 관리합니다. 비수탁 — 키는 직접 보관하세요.",
    "beta": "Beta",
    "tab": {
      "nodes": "노드",
      "disk": "디스크",
      "stack": "소프트웨어",
      "about": "설명"
    },
    "empty": {
      "title": "아직 검증자 노드가 없습니다",
      "desc": "마법사로 테스트넷 노드를 만드세요."
    },
    "refresh": "새로 고침",
    "software": {
      "engine": "도커 엔진",
      "engineDesc": "유효성 검사기 노드는 Compose 프로젝트로 실행됩니다. Docker가 없는 경우 여기에 Docker를 설치하세요. 이미지 정리는 Docker 페이지에 유지됩니다.",
      "client": "고객",
      "image": "영상",
      "present": "현지의",
      "local": "뽑아낸",
      "missing": "뽑히지 않음",
      "size": "크기",
      "usedBy": "사용처",
      "unused": "인스턴스 없음",
      "pull": "Pull",
      "pulled": "이 호스트에서",
      "pulling": "당기기 {{ref}}",
      "empty": "고정된 클라이언트 이미지가 없습니다.",
      "emptyDesc": "카탈로그가 비어 있습니다. 이런 일이 일어나서는 안 됩니다.",
      "daemonDown": "Docker 엔진이 실행되고 있지 않습니다.",
      "source": "원천",
      "official": "공식 최신",
      "officialNewer": "공식 최신",
      "stale": "핀 뒤",
      "staleItem": "{{id}} ({{tag}})",
      "pin": "패널핀",
      "openRelease": "릴리스 노트",
      "chooseOnInstance": "인스턴스 페이지에서 버전을 변경하세요. 이미지를 가져와도 실행 중인 노드에 태그를 다시 지정하지 않습니다."
    },
    "disk": {
      "title": "검증자 디스크",
      "root": "데이터 디렉터리",
      "free": "여유",
      "used": "사용",
      "fsUsed": "사용된 파일 시스템",
      "leftoverTitle": "남은 데이터 ({{count}})",
      "leftoverEmpty": "남은 인스턴스 디렉터리 없음",
      "leftoverDesc": "저장소 인스턴스가 아닌 유효성 검사기 루트 아래의 디렉터리입니다. 사용되지 않은 것을 확인한 후에만 제거하십시오.",
      "leftoverRemove": "제거하다",
      "leftoverRemoveTitle": "남은 유효성 검사기 데이터를 삭제하시겠습니까?",
      "leftoverRemoveDesc": "디스크에서 {{path}}를 영구적으로 삭제합니다. 이것은 나열된 노드가 아닙니다.",
      "browseRoot": "파일 브라우저에서 열기",
      "none": "아직 인스턴스 데이터가 없습니다",
      "warn": "디스크 사용량이 높습니다(70% 이상)",
      "danger": "디스크 사용량이 위험합니다(85% 이상)",
      "autoClear": "디스크가 위험할 때 가장 큰 중지 인스턴스를 자동 삭제(기본 꺼짐)",
      "autoClearRisk": "파괴적: 중지된 가장 큰 인스턴스가 추가 메시지 없이 삭제됩니다. 기본값은 꺼져 있습니다. 실행 후 감사/로그를 확인하세요.",
      "autoClearConfirmTitle": "자동 지우기를 활성화하시겠습니까?",
      "autoClearC1": "디스크가 중요한 경우 다시 묻지 않고 중지된 가장 큰 인스턴스가 삭제됩니다.",
      "autoClearThreshold": "트리거: 파일 시스템 사용률이 85% 이상입니다.",
      "autoClearCandidate": "현재 후보자: {{id}}",
      "autoClearCandidates": "중지된 후보(데이터가 먼저 있는 가장 큰 항목): {{list}}",
      "autoClearNone": "현재 중지된 인스턴스는 후보가 아닙니다."
    },
    "chain": {
      "eth": "Ethereum",
      "avax": "Avalanche",
      "near": "NEAR",
      "ada": "Cardano",
      "btc": "Bitcoin",
      "cosmos": "Cosmos Hub",
      "sui": "Sui",
      "aptos": "Aptos",
      "dot": "Polkadot",
      "sol": "Solana"
    },
    "network": {
      "hoodi": "Hoodi",
      "sepolia": "Sepolia",
      "mainnet": "메인넷",
      "fuji": "Fuji",
      "testnet": "테스트넷",
      "preview": "시사",
      "preprod": "프레프로트",
      "westend": "Westend"
    },
    "networkKind": {
      "testnet": "테스트넷",
      "mainnet": "메인넷",
      "mixed": "메인넷 + 테스트넷"
    },
    "profile": {
      "minimal": "최소",
      "pruned": "Pruned",
      "validator-ready": "검증자 준비",
      "rpc": "RPC"
    },
    "profileHelp": {
      "title": "Profiles",
      "desc": "The four choices on wizard step 3 are mainly disk budget and role. Each chain shows its recommended size in the wizard. The panel never holds staking keys.",
      "colName": "윤곽",
      "colUse": "용도",
      "colDisk": "디스크",
      "colStake": "스테이킹 검증인",
      "useMinimal": "테스트넷 또는 첫 설치. 전체 역사가 아닙니다.",
      "usePruned": "체인 팁을 장기적으로 따르십시오. 최근 데이터만 유지합니다(정리됨).",
      "useValidatorReady": "나중에 증명하거나 제안할 수 있도록 크기가 조정되었습니다. 오프라인으로 직접 키를 생성하세요.",
      "useRpc": "이 호스트나 다른 서비스가 체인을 쿼리하도록 하세요. 기본적으로 127.0.0.1을 수신합니다.",
      "diskMinimal": "가장 작은",
      "diskPruned": "중간(최소 이상)",
      "diskValidatorReady": "4개 중 가장 큰 것",
      "diskRpc": "체인에 따라 다름",
      "stakeNo": "적합하지 않음",
      "stakeYes": "예 — 오프라인이거나 잘못 구성되면 지분을 잃을 수 있습니다.",
      "stakeRpc": "검증인이 아님",
      "minimal": "가장 작은 디스크. 테스트넷 또는 최초 설치에 사용하세요. 전체 기록이 아니며 라이브 스테이킹 검증인을 위한 것도 아닙니다.",
      "pruned": "최근 체인 상태를 유지하고 이전 블록을 삭제합니다(Pruned). 최소보다 많은 디스크, 전체 노드보다 적습니다. 팁을 장기적으로 따르는 데 사용합니다.",
      "validatorReady": "나중에 검증인으로 증명하거나 제안할 수 있도록 더 많은 디스크를 예약합니다. 오프라인으로 직접 키를 생성하세요. 오프라인 상태이거나 잘못 구성되면 지분을 잃을 수 있습니다.",
      "rpc": "이 호스트 또는 다른 서비스가 체인을 쿼리합니다. RPC는 기본적으로 127.0.0.1에서 수신 대기하며 인터넷에 게시되지 않습니다."
    },
    "col": {
      "id": "ID",
      "chain": "체인",
      "network": "네트워크",
      "profile": "프로필",
      "status": "상태",
      "traffic": "교통",
      "disk": "디스크"
    },
    "cli": {
      "usage": "사용법: ysk-server validators list|chains|disk|get|status|checklist|logs|create|start|stop|restart|clear|upgrade|set-version|versions|policy|mithril|prune|switch-network|snapshot|compose|compose-write|rewrite-compose|software|pull|leftover-remove|stats|settings|producer-keys|producer-detach|near-account [--chain C] [--network N] [--profile P] [--el EL] [--cl CL] [--el-tag T] [--cl-tag T] [--node-tag T] [--client ID] [--tag T] [--data-path P] [--rpc-port N] [--id ID] [--path PATH] [--file PATH] [--image REF] [--upgrade POLICY] [--confirm TOKEN] [--kes-file P] [--vrf-file P] [--opcert-file P] [--accept-low-disk] [--accept-low-mem] [--accept-mainnet] [--refresh] [--execute] [--json]"
    },
    "clients": {
      "el": "실행 클라이언트",
      "cl": "합의 클라이언트",
      "version": "버전",
      "pin": "패널핀",
      "officialNewer": "공식 최신",
      "olderThanPin": "패널 핀보다 오래됨",
      "prerelease": "프리릴리즈",
      "current": "지금 실행 중",
      "source": "이미지 출처"
    },
    "mithril": {
      "label": "먼저 Mithril 스냅샷으로 복원(테스트넷 권장)",
      "hint": "설치 후 일회성 복원입니다. Compose에 기록되지 않습니다. 나중에 인스턴스 페이지에서 실행할 수도 있습니다.",
      "action": "Mithril로 복원"
    },
    "errors": {
      "notFound": "검증자 인스턴스를 찾을 수 없습니다",
      "invalidId": "인스턴스 ID가 올바르지 않습니다",
      "diskLow": "이 체인, 네트워크, 프로필에 필요한 여유 디스크가 부족합니다",
      "memLow": "이 체인의 메모리 한도에 비해 사용 가능한 RAM이 충분하지 않습니다.",
      "diskUnknownMainnet": "여유 디스크를 측정할 수 없어 메인넷 생성을 거부했습니다",
      "needDocker": "Docker Compose가 필요하지만 찾을 수 없습니다",
      "composeFailed": "docker compose가 실패했습니다",
      "containerNotUp": "Compose가 시작되었지만 컨테이너가 계속 실행되지 않았습니다.",
      "probeFailed": "노드가 아직 RPC에 응답하지 않습니다. 이 페이지에서 로그를 확인하세요.",
      "oom": "메모리가 부족합니다. 메모리 제한을 설정하거나 RAM을 추가한 다음 다시 시작하세요.",
      "nofile": "프로세스가 파일 열기(nofile) 제한에 도달했습니다. ulimits.nofile을 올리고 다시 시작하세요.",
      "noContainer": "이 인스턴스에는 작성 컨테이너가 없습니다.",
      "restarting": "컨테이너를 다시 시작하는 중입니다. 이 페이지에서 로그를 확인하세요.",
      "restartingCount": "컨테이너가 다시 시작되는 중입니다({{n}}). 이 페이지에서 로그를 확인하세요.",
      "needConfirm": "삭제에는 confirm=인스턴스 ID 또는 CLEAR가 필요합니다",
      "mithrilAdaOnly": "Mithril 복원은 Cardano만 지원합니다",
      "needMithrilConfirm": "Mithril에는 confirm=인스턴스 ID 또는 MITHRIL이 필요합니다",
      "mithrilBlocked": "Mithril docker run이 허용 목록에서 거부되었습니다",
      "mithrilKey": "Mithril genesis 검증 키를 불러올 수 없습니다",
      "mithrilFailed": "Mithril 스냅샷 다운로드가 실패했습니다",
      "pruneFailed": "정리가 실패했습니다",
      "switchNeedStop": "네트워크를 바꾸기 전에 노드를 중지하십시오",
      "switchNeedClear": "네트워크 전환은 체인 데이터를 지웁니다. 인스턴스 ID 또는 CLEAR로 확인하십시오",
      "composeMissing": "Compose 파일을 찾을 수 없습니다",
      "composeNotManaged": "YSK가 관리하지 않는 Compose 파일은 쓰지 않습니다",
      "badDataPath": "데이터 경로는 시스템 경로가 아닌 절대 디렉터리여야 합니다",
      "portInUse": "해당 RPC 포트는 다른 검증자 인스턴스가 사용 중입니다",
      "badTag": "해당 클라이언트 버전은 이 이미지의 공식 태그가 아닙니다.",
      "needVersionConfirm": "버전을 변경하려면 확인=인스턴스 ID가 필요합니다.",
      "needMainnetVersionAck": "메인넷 버전 변경에는 acceptMainnet이 필요합니다.",
      "snapshotUnsupported": "이 체인에는 허용된 스냅샷 원본이 없습니다",
      "snapshotLookup": "공식 스냅샷 포인터를 해석할 수 없습니다",
      "needSnapshotConfirm": "스냅샷 복원에는 confirm=인스턴스 ID 또는 SNAPSHOT이 필요합니다",
      "snapshotBlocked": "스냅샷 docker run이 허용 목록에서 거부되었습니다",
      "snapshotFailed": "스냅샷 다운로드 또는 압축 해제가 실패했습니다",
      "producerAdaOnly": "생산자 키는 Cardano 전용입니다.",
      "needProducerConfirm": "생산자 키를 연결하려면 verify=인스턴스 ID 또는 PRODUCER가 필요합니다.",
      "needMainnetProducerAck": "메인넷 생산자 연결에는 acceptMainnet이 필요합니다.",
      "producerColdRejected": "콜드 또는 풀 소유자 서명 키는 거부됩니다. 콜드 키를 오프라인으로 유지하세요.",
      "producerTooLarge": "해당 키 파일이 64KiB보다 큽니다.",
      "producerBadType": "해당 파일은 KES 키, VRF 키 또는 운영 인증서가 아닙니다.",
      "producerEmpty": "kes, vrf 또는 opcert 중 하나 이상을 제공하세요.",
      "switchNeedDetachProducer": "네트워크를 전환하기 전에 생산자 키를 분리하세요",
      "nearAccountInvalid": "풀 이름은 짧은 슬러그(또는 전체 {pool}{factory} 계정)여야 합니다.",
      "nearKeyMissing": "validator_key.json이 없거나 public_key가 없습니다. 노드를 시작하고 neard init를 기다립니다."
    },
    "notes": {
      "beta": "이 기능은 Beta입니다. 호스트 변경에는 root와 YSK_EXECUTE=1이 필요합니다.",
      "noKeys": "YSK Server는 스테이킹 키를 생성하거나 저장하지 않습니다.",
      "dockerSoon": "이 페이지 마법사에서 설치하고 시작하세요. 호스트 변경에는 루트 및 YSK_EXECUTE=1이 필요합니다.",
      "dryCreate": "인스턴스 사양과 compose를 썼습니다(dry-run). 컨테이너를 시작하려면 --execute와 YSK_EXECUTE=1을 사용하세요.",
      "dryStart": "시작은 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
      "dryStop": "중지는 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
      "dryClear": "삭제는 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
      "created": "노드를 만들고 compose를 시작했습니다",
      "started": "노드를 시작했습니다",
      "stopped": "노드를 중지했습니다",
      "cleared": "체인 데이터를 지웠습니다",
      "dryMithril": "Mithril 복원은 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
      "mithril": "Mithril 스냅샷을 복원하고 노드를 다시 시작했습니다",
      "dryPrune": "정리는 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
      "pruned": "사용하지 않는 프로젝트 이미지를 정리했습니다",
      "pruneProfile": "클라이언트 원본 정리는 pruned／minimal 프로필입니다. 바꾸려면 다시 만드세요.",
      "sameNetwork": "이미 그 네트워크입니다",
      "drySwitch": "네트워크 전환은 dry-run입니다.",
      "switched": "네트워크를 바꾸고 체인 데이터를 지웠습니다",
      "dryCompose": "compose.yml을 씁니다",
      "composeWrote": "compose.yml을 썼습니다",
      "statsEmpty": "측정할 실행 중 컨테이너가 없습니다",
      "autoClearNone": "자동 삭제할 중지된 인스턴스가 없습니다",
      "drySnapshot": "스냅샷 복원은 dry-run입니다. --execute와 YSK_EXECUTE=1을 사용하세요.",
      "snapshotEthEl": "ethPandaOps EL 아카이브를 복원하고 checkpoint sync를 위해 CL을 재설정했습니다",
      "snapshotEthCl": "CL 데이터를 재설정하고 공식 checkpoint sync를 사용합니다",
      "snapshotNear": "NEAR 데이터를 지웠습니다. compose가 공식 genesis와 epoch sync로 다시 초기화합니다",
      "nativePrune": "클라이언트 원본 정리 명령을 실행했습니다",
      "dryProducer": "생산자 키는 테스트 실행됩니다. --execute 및 YSK_EXECUTE=1을 추가합니다.",
      "dryProducerDetach": "생산자 분리는 시험 실행됩니다. --execute 및 YSK_EXECUTE=1을 추가합니다.",
      "producerPartial": "단축키를 썼습니다. 노드가 블록 생산자로 시작되기 전에 KES, VRF 및 opcert를 연결합니다.",
      "producerAttached": "단축키가 부착되어 있습니다. 블록 생산자로 다시 작성",
      "producerDetached": "단축키가 제거되었습니다. 릴레이로 다시 작성",
      "dryDelete": "삭제는 연습 실행입니다. --execute 및 YSK_EXECUTE=1을 전달합니다.",
      "deleted": "노드가 삭제되었습니다.",
      "leftoverRemoved": "남은 음식 제거 {{path}}",
      "dryNearAccount": "account_id를 {{account}}로 설정합니다(pass --execute). 비밀은 절대 변경되지 않습니다.",
      "nearAccountWrote": "account_id를 {{account}}로 설정하세요. 비밀번호가 변경되지 않았습니다. 노드가 실행 중인 경우 다시 시작합니다."
    },
    "create": "노드 만들기",
    "wizard": {
      "title": "노드 만들기",
      "stepOf": "단계 {{n}} / {{total}}",
      "stepChain": "체인",
      "stepNetwork": "네트워크",
      "stepProfile": "윤곽",
      "stepSummary": "요약",
      "needDocker": "Docker 엔진이 설치되지 않았습니다. 먼저 설치하세요. 이 버튼은 비활성화된 상태로 유지됩니다.",
      "diskNeed": "이 프로필에는 약 {{need}} · 무료 {{free}}가 필요합니다.",
      "diskNeedNetwork": "이 네트워크의 기본값(최소)에는 약 {{need}} · 무료 {{free}}이 필요합니다.",
      "profileHint": {
        "minimal": "가장 작은 동기화 — 스테이킹용이 아닌 가벼운 디스크입니다.",
        "pruned": "최근 기록만 유지합니다(정리됨). 아카이브보다 작지만 여전히 RPC에 사용할 수 있습니다.",
        "validator-ready": "스테이킹 검증인을 위한 크기입니다. 최소보다 더 많은 디스크가 필요합니다.",
        "rpc": "공개 RPC 노드 — 스테이킹 검증자가 아닙니다."
      },
      "diskShort": "이 체인/네트워크/프로필에 사용 가능한 디스크가 부족합니다.",
      "diskShortDetail": "필요 {{need}} · 무료 {{free}} · 단기 {{short}}",
      "memShort": "이 체인의 메모리 한도에 비해 사용 가능한 RAM이 충분하지 않습니다.",
      "memShortDetail": "필요 {{need}} · 무료 {{free}} · 단기 {{short}}",
      "needCustomPath": "절대 데이터 경로를 입력하세요.",
      "previewId": "노드 ID",
      "previewCompose": "프로젝트 작성",
      "profileSeeAbout": "What each profile means is on the About tab.",
      "back": "뒤로",
      "next": "다음",
      "install": "설치",
      "mainnetWarn": "메인넷은 여유 디스크가 많이 필요합니다(ETH는 종종 800 GiB 이상). 테스트넷을 권장합니다.",
      "mainnetAck": "디스크와 슬래싱 위험을 이해했으며 메인넷을 계속합니다.",
      "lowDiskAcked": "여유 디스크가 권장 크기보다 작습니다. 어쨌든 생성을 확인했습니다. 디스크가 가득 차면 동기화가 중지될 수 있습니다.",
      "lowMemAcked": "여유 RAM은 이 체인의 메모리 한도에 1GiB 헤드룸을 더한 값보다 낮습니다. 어쨌든 생성을 확인했습니다. 노드가 OOM 또는 정지될 수 있습니다.",
      "heavyWarn": "이 체인은 부하가 큽니다(대용량 디스크와 높은 IOPS). Solana 메인넷은 보통 2 TiB 이상이 필요합니다.",
      "memory": "메모리 한도(예: 4g)",
      "cpus": "CPU 한도(예: 2.0)",
      "dataPath": "데이터 경로(선택)",
      "rpcPort": "RPC 포트(선택)",
      "limitNone": "제한 없음",
      "rpcDefault": "기본",
      "customPath": "사용자 정의 데이터 경로 사용",
      "installConfirmTitle": "이 노드를 설치하시겠습니까?",
      "installConfirmDesc": "{{chain}} · {{network}} · {{profile}}. 약 {{disk}} 디스크. 이미지 가져오기에는 시간이 오래 걸릴 수 있습니다.",
      "installC1": "수 기가바이트의 이미지를 다운로드할 수 있습니다.",
      "installC2": "패널 작업을 취소할 수 있습니다. 이미 가져온 이미지는 자동으로 삭제되지 않습니다.",
      "installC3": "메인넷은 많은 디스크를 사용합니다. 스테이킹 검증인은 오프라인이거나 잘못 구성된 경우 지분을 잃을 수 있습니다. 확인하려면 노드 ID를 입력하세요.",
      "dockerAbout": "노드를 설치하고 시작하려면 Docker 엔진이 필요합니다.",
      "dockerAboutOk": "도커 엔진이 설치되었습니다.",
      "dockerAboutMissing": "Docker 엔진이 설치되지 않았습니다. Docker를 열어서 설치하세요.",
      "rewriteCompose": "작성 다시 작성",
      "rewriteComposeTitle": "현재 어댑터에서 compose.yml을 다시 작성하시겠습니까?",
      "rewriteComposeDesc": "이 체인에 대해 제공된 플래그를 사용하여 {{id}}에 대해 생성된 Compose를 덮어씁니다.",
      "chainMeta": "{{disk}}분 · {{clients}} 고객"
    },
    "actions": {
      "detail": "자세히",
      "start": "시작",
      "stop": "중지",
      "restart": "다시 시작",
      "clear": "비우기",
      "upgrade": "업그레이드",
      "setVersion": "버전 변경",
      "clearConfirm": "인스턴스 ID 또는 CLEAR 입력",
      "prune": "이미지 정리",
      "switchNetwork": "네트워크 전환",
      "removeUnit": "compose／인스턴스 기록도 삭제",
      "restoreAfter": "비운 뒤 스냅샷 복원",
      "delete": "삭제",
      "deleteTitle": "삭제 {{id}}",
      "deleteDesc": "이렇게 하면 패널에서 노드가 제거됩니다.",
      "deleteC1": "Docker Compose가 중지되고 제거되었습니다.",
      "deleteC2": "디스크의 체인 데이터가 삭제됩니다.",
      "deleteC3": "인스턴스 레코드가 제거됩니다.",
      "pruneTitle": "사용하지 않는 이미지 정리",
      "pruneDesc": "이 노드에 대해 사용되지 않은 Compose 이미지를 정리하려면 인스턴스 ID를 입력하세요.",
      "pruneC1": "이 Compose 프로젝트에 라벨이 지정된 사용되지 않은 이미지는 삭제됩니다.",
      "clearTitle": "클리어 {{id}}",
      "clearC1": "디스크의 체인 데이터가 삭제됩니다.",
      "clearC2": "인스턴스는 패널에 유지되고 중지된 상태로 비어 있습니다.",
      "switchTitle": "네트워크 전환",
      "switchC1": "새 네트워크가 작성되기 전에 노드가 중지되고 체인 데이터가 지워집니다."
    },
    "policy": {
      "label": "업그레이드 정책",
      "manual": "수동",
      "notify": "알림",
      "auto-safe": "자동(안전)",
      "auto-all": "자동(모두)"
    },
    "logs": {
      "empty": "아직 로그가 없습니다",
      "follow": "로그 따라가기"
    },
    "compose": {
      "label": "Compose 파일",
      "save": "compose 저장"
    },
    "snapshot": {
      "action": "스냅샷 복원",
      "mithril": "Cardano는 인증 스냅샷 복원에 Mithril을 사용합니다.",
      "eth": "Ethereum 메인넷은 합의 클라이언트의 공식 checkpoint sync로 시작합니다. EL은 snap sync를 계속합니다.",
      "ethEl": "Hoodi／Sepolia는 ethPandaOps EL 아카이브를 복원한 뒤 CL을 checkpoint-sync할 수 있습니다.",
      "avax": "Avalanche는 compose 프로필에서 state-sync를 사용합니다.",
      "near": "공식 무료 NEAR tar 스냅샷은 종료되었습니다. 복원은 데이터를 지우고 공식 genesis와 epoch sync를 사용합니다.",
      "none": "이 체인에는 스냅샷 원본이 설정되어 있지 않습니다."
    },
    "producer": {
      "title": "블록 생산자 단축키",
      "hint": "이는 IP 주소가 아닙니다. 오프라인 머신에서 KES 키, VRF 키, 작동 인증서를 업로드하세요. 이 호스트에 콜드 키를 두지 마십시오.",
      "warn": "공용 P2P 포트가 있는 동일한 노드가 블록에 서명합니다. 공식 토폴로지는 생산자를 공용 인터넷에서 차단합니다. 이 세 파일은 단축키입니다.",
      "kes": "KES",
      "vrf": "VRF",
      "opcert": "opcert",
      "missing": "첨부되지 않음",
      "present": "첨부 {{fp}}",
      "presentShort": "호스트에서",
      "queuedShort": "준비됨",
      "queued": "선택됨 · {{name}}",
      "fileHint": "일반적인 이름 {{file}}",
      "dropOrBrowse": "여기에 {{file}}를 입력하거나 찾아보세요.",
      "dropping": "첨부하려면 드롭하세요 {{label}}",
      "browse": "먹다",
      "clearFile": "제거하다",
      "choose": "파일 선택",
      "apply": "블록 프로듀서로 신청하고 다시 시작하세요",
      "detach": "분리 및 릴레이로 실행",
      "applyTitle": "{{id}}에 단축키를 추가하시겠습니까?",
      "applyDesc": "KES, VRF 및 opcert는 인스턴스 키 디렉터리 아래에 기록됩니다. 작성이 다시 작성되었습니다. 컨테이너가 블록 생산자로 다시 시작됩니다.",
      "applyC1": "콜드 키는 오프라인 상태를 유지해야 합니다. cold.skey를 업로드하지 마십시오.",
      "applyC2": "실행 중인 노드는 이러한 파일이 유효한 경우 블록에 서명할 수 있습니다.",
      "applyC3": "메인넷: 오프라인이거나 잘못 구성된 생산자가 블록을 놓칩니다.",
      "detachTitle": "{{id}}에서 생산자 키를 분리하시겠습니까?",
      "detachDesc": "단축키가 이 호스트에서 삭제되었습니다. Compose가 릴레이로 돌아갑니다.",
      "detachC1": "노드는 더 이상 블록을 생성하지 않습니다.",
      "mainnet": "메인넷: 나는 이 호스트가 단축키와 사인 블록을 보유할 것이라는 것을 알고 있습니다."
    },
    "stake": {
      "title": "스테이킹 준비(키는 직접 보관)",
      "offlineKeys": "키는 오프라인에서 만드세요. 패널은 저장하지 않습니다.",
      "deposit": "공식 launchpad에서 예치／등록을 완료하세요.",
      "withdrawal": "출금 자격 증명은 직접 설정하세요.",
      "monitor": "이 페이지에서 디스크, 피어, 업그레이드 배지를 확인하세요."
    },
    "playbook": {
      "overviewTitle": "각 체인에서 스테이킹이 작동하는 방식",
      "overviewDesc": "이 패널은 노드를 실행합니다. 지갑과 열쇠는 당신과 함께 있습니다. 공식 링크만 — 여기에서는 시드 문구를 공유하지 마세요.",
      "colChain": "체인",
      "colModel": "등록 방법",
      "colMin": "일반적인 최소값",
      "colWallet": "당신의 지갑",
      "colPanel": "이 패널의 기능",
      "yskDoes": "이 패널은",
      "youDo": "당신은",
      "steps": "단계",
      "never": "하지 마십시오",
      "official": "공식 링크",
      "seeAbout": "전체 단계는 정보 탭에 있습니다.",
      "nodeIdReady": "NodeID(이 노드에서)",
      "nodeIdPending": "NodeID는 노드가 동기화되고 RPC에 응답한 후에 나타납니다.",
      "blsReady": "BLS 공개 키",
      "blsProof": "BLS 보유 증명",
      "blsPending": "노드가 RPC에 응답한 후에 BLS 자격 증명이 나타납니다.",
      "copyAll": "모두 복사",
      "copyNamed": "복사 {{label}}",
      "nearStakeKey": "공개 키 스테이크",
      "nearStakeKeyPending": "처음 시작한 후에 나타납니다(init 근처). RPC가 준비되지 않았다고 해서 키가 누락된 것은 아닙니다.",
      "nearAccountId": "키 파일 account_id",
      "nearAccountIdPending": "풀이 존재한 후 {{pool}}{{suffix}}로 설정할 때까지 비어 있는 경우가 많습니다. 패널은 이 필드만 작성하며 secret_key는 작성하지 않습니다.",
      "nearFactory": "스테이킹 풀 공장",
      "nearPublicAddr": "공개 P2P(피어)",
      "nearPublicAddrPending": "처음 시작하면 WAN:{{port}}이 config.json에 기록된 후 나타납니다.",
      "nearCreateCommand": "create_staking_pool 명령",
      "nearPointing": "풀 계약은 이 서버의 IP를 사용하지 않습니다. 이 노드의 지분 공개 키를 저장합니다. 피어는 위의 공개 P2P 행(호스트 포트 {{port}})을 사용합니다. RPC는 로컬호스트에 유지됩니다.",
      "nearAccountIdHint": "풀이 존재하면 여기에서 account_id를 설정합니다(파일을 직접 편집하지 마세요). 패널은 secret_key를 쓰지 않습니다.",
      "cosmosPubkey": "합의 공개 키",
      "cosmosPubkeyPending": "gaiad init가 priv_validator_key.json을 작성한 후에 나타납니다. RPC가 준비되지 않았다고 해서 키가 누락된 것은 아닙니다.",
      "cosmosChainId": "체인 ID",
      "cosmosP2p": "공개 P2P(external_address)",
      "cosmosP2pPending": "처음 시작하면 tcp://WAN:{{port}}이 config.toml에 기록된 후에 나타납니다.",
      "ethBeacon": "비콘 API(로컬호스트)",
      "ethBeaconPending": "이 호스트의 비콘 HTTP입니다. 이 URL에서 직접 실행하는 유효성 검사기 클라이언트를 지정하세요. 이 작성에는 VC가 없습니다.",
      "cosmosCreateCommand": "생성 유효성 검사기 명령",
      "cosmosCreateJson": "validator.json (gaiad v28)",
      "copyFailed": "복사 실패",
      "solIdentity": "신원 공개키",
      "solIdentityPending": "RPC가 getIdentity에 응답한 후에 나타납니다. 이 프로세스는 귀하가 직접 투표 계정을 추가할 때까지 투표가 불가능합니다.",
      "adaP2pPort": "릴레이 P2P 포트",
      "adaP2pPending": "풀 등록 인증서에서 이 호스트의 공개 IPv4(또는 DNS) 및 이 포트를 광고합니다. topology.json localRoots는 자신만의 블록 프로듀서를 위한 것입니다. 이 패널은 WAN를 조사하지 않습니다.",
      "notPosTitle": "지분 증명이 아님",
      "notPosBody": "여기서 비트코인은 전체 노드 또는 정리된 노드입니다. 이 페이지에는 스테이킹 지갑이 없습니다.",
      "eth": {
        "model": "이 작성은 유효성 검사기 클라이언트가 아닌 실행 + 비콘만 실행합니다. 공식 런치패드에 32 ETH를 입금하세요.",
        "min": "32 ETH + 가스",
        "wallets": "MetaMask, Ledger, Trezor — 공식 런치패드에서만 가능",
        "panel": "EL + 비콘을 실행합니다. localhost의 RPC 및 비콘 API. Compose에 유효성 검사기 클라이언트가 없습니다.",
        "honesty": "이 인스턴스는 실행 + 비콘 전용입니다. 작성 파일에는 유효성 검사기 클라이언트가 없습니다. 키 저장소를 비콘 데이터 디렉터리에 복사하면 증명이 시작되지 않습니다. 입금 계약은 본 서버의 IP를 가져가지 않습니다.",
        "yskDoes": [
          "실행 및 비콘 클라이언트를 설치하고 시작합니다.",
          "디스크, 피어 및 업그레이드 상태를 표시합니다.",
          "유효성 검사기 클라이언트를 실행하지 않으며 서명 키 저장소를 로드하지 않습니다."
        ],
        "youDo": [
          "공식 런치패드나 stake-deposit-cli를 사용하여 키스토어와 출금 주소를 직접 생성하세요.",
          "이 네트워크의 런치패드에 32 ETH를 예치하세요.",
          "이 인스턴스의 localhost 비콘 API에 대해 유효성 검사기 클라이언트를 직접 실행합니다(이 Compose 아님)."
        ],
        "steps": [
          "실행과 비콘이 동기화될 때까지 기다립니다.",
          "이 네트워크(이 페이지의 Hoodi 또는 Mainnet)에 대한 공식 런치패드를 엽니다. 세폴리아에는 런치패드 버튼이 없습니다.",
          "오프라인에서는 keystore(staking-deposit-cli)를 생성합니다. 출금 주소를 본인의 ETH 지갑으로 설정하세요.",
          "launchpad에 32 ETH를 예치하세요(가스를 위해 추가로 보관하세요).",
          "이 카드의 비콘 URL에 대해 직접 validator client를 실행하세요(예: lighthouse vc --beacon-nodes). 이 작성에는 VC가 없습니다. 비콘 datadir에 keystore를 넣는 것은 증명되지 않습니다."
        ],
        "never": [
          "이 패널을 포함하여 누구에게도 시드 문구나 출금 키를 알려주지 마십시오.",
          "호스팅된 클라우드에 서명 키 저장소를 업로드하지 마십시오.",
          "키 저장소를 비콘 datadir에 복사한 후에는 이 페이지가 증명될 것이라고 기대하지 마십시오."
        ]
      },
      "avax": {
        "model": "Core 또는 Ledger에서 P-Chain에 실행 중인 NodeID 및 BLS 증명을 등록합니다.",
        "min": "2,000 AVAX + 수수료(Fuji에서는 1 AVAX) 최소 14일",
        "wallets": "코어, 원장",
        "panel": "Avalanchego를 실행하고 RPC 응답 후 NodeID 및 BLS를 표시할 수 있습니다.",
        "yskDoes": [
          "Avalanchego를 실행하고 RPC를 localhost에 유지하십시오.",
          "노드가 RPC에 응답하면 NodeID 및 BLS 자격 증명을 표시합니다."
        ],
        "youDo": [
          "Core 또는 Ledger에 AVAX를 보관하세요.",
          "이 노드의 NodeID 및 BLS 증명을 사용하여 Core에서 유효성 검사기를 추가합니다."
        ],
        "steps": [
          "이 노드가 동기화되고 NodeID / BLS 행(RPC)이 나타날 때까지 기다립니다.",
          "NodeID, BLS 공개 키, BLS 소유 증명을 복사합니다.",
          "Core 웹(Stake → Validate) 또는 Ledger을 통해 Core를 통해 P-Chain에 등록하세요. 트랜잭션은 서버 IP를 사용하지 않습니다.",
          "메인넷에는 최소 2,000 AVAX, 최소 기간 14일, 예비 수수료가 필요합니다. Fuji은 1 AVAX입니다."
        ],
        "never": [
          "AVAX를 이 패널로 보내지 마십시오.",
          "Core 또는 Ledger 복구 문구를 공유하지 마세요."
        ]
      },
      "ada": {
        "model": "브라우저 지갑 탭이 아닌 오프라인 콜드/KES/VRF 키를 사용하여 스테이크 풀을 운영하세요.",
        "min": "서약은 당신의 선택입니다 (공식 문서 참조)",
        "wallets": "공식 스테이크 풀 도구(콜드 키는 오프라인 상태로 유지됨)",
        "panel": "먼저 Cardano-node를 릴레이로 실행합니다. 이 페이지에 단축키를 첨부할 수 있습니다.",
        "honesty": "이 인스턴스는 릴레이로 시작됩니다. 온체인 풀 등록은 오프라인으로 유지되는 콜드 키를 사용합니다. 피어와 토폴로지는 이 호스트의 공개 IPv4와 여기에 표시된 P2P 포트를 사용합니다. 패널은 WAN을 검색하지 않습니다.",
        "yskDoes": [
          "제공되는 경우 Cardano-node 및 Mithril 스냅샷 복원을 실행하세요.",
          "KES, VRF, opcert를 제공할 때 첨부하세요. 콜드 키는 거부됩니다."
        ],
        "youDo": [
          "풀 키를 오프라인으로 생성하세요.",
          "공식 Cardano CLI에 풀을 등록하세요. 이 호스트의 공개 IPv4 또는 DNS 및 릴레이 P2P 포트를 풀 등록 인증서에 넣습니다.",
          "이 페이지에 KES, VRF, opcert를 첨부하세요. 콜드 키를 업로드하지 마십시오."
        ],
        "steps": [
          "공식 스테이크풀 운영 가이드를 읽어보세요.",
          "오프라인 시스템에서 콜드, KES 및 VRF 키를 생성합니다.",
          "풀을 온체인에 등록하세요. 해당 인증서의 릴레이를 광고합니다(--pool-relay-ipv4 또는 DNS + 이 카드의 P2P 포트). 공개 검색은 topology.json가 아닌 인증서입니다.",
          "이 인스턴스 페이지에서 KES, VRF 및 운영 인증서를 첨부하세요. 콜드 키는 거부됩니다.",
          "topology.json localRoots는 자신의 블록 생산자를 위한 것입니다(광고: 거짓). 이 패널은 WAN 주소를 조회하지 않습니다."
        ],
        "never": [
          "이것을 MetaMask 원클릭 스테이크로 취급하지 마십시오.",
          "검증인 호스트에 콜드 키를 저장하지 마십시오.",
          "체인에 릴레이를 등록하기 위해 편집 topology.json만 기대하지 마십시오."
        ]
      },
      "near": {
        "model": "공식 공장에서 스테이킹 풀 계약을 생성하세요. 계약은 서버 IP가 아닌 이 노드의 공개 키를 저장합니다.",
        "min": "공식 검증인 문서를 참조하세요(풀과 지분을 생성하려면 30개 NEAR).",
        "wallets": "공식 NEAR 지갑 / 락업",
        "panel": "neard를 실행합니다. 양식 채우기 create_staking_pool; 풀이 존재하면 account_id만 씁니다.",
        "yskDoes": [
          "localhost에서는 RPC를 사용하고 24567에서는 P2P를 사용하여 Neard를 실행합니다.",
          "초기화 후 스테이크 공개 키, 공개 P2P 주소 및 공장을 표시합니다.",
          "풀 이름 + 소유자 + 공개 키로 create_staking_pool를 입력합니다. 풀이 존재하면 account_id만 작성하세요. 절대 secret_key가 아니고 트랜잭션도 작성하지 마세요."
        ],
        "youDo": [
          "노드를 시작하고 이 페이지에서 공개 키를 기다립니다.",
          "풀 이름과 소유자를 입력한 후 명령을 복사합니다.",
          "자신의 NEAR 지갑이나 Near-cli에서 create_staking_pool에 서명하세요.",
          "여기로 돌아와 account_id를 설정하세요. 지갑에서 해당 풀에 지분을 투자하세요."
        ],
        "steps": [
          "노드를 시작하고 공개 키가 나타날 때까지 초기화가 완료될 때까지 기다립니다(RPC 준비 안 됨은 누락된 키와 동일하지 않음).",
          "풀 짧은 이름과 소유자 계정을 입력합니다. 채워진 create_staking_pool 명령을 복사합니다.",
          "지갑에서 30 NEAR로 공장(testnet pool.f863973.m0 / mainnet poolv1.near)에 전화하여 저장하세요. 이 명령은 --accountId를 사용합니다. 가까운 CLI에서 --account_id를 예상하는 경우 해당 CLI의 --help를 따르세요.",
          "풀이 존재하면 이 페이지에서 Set account_id를 사용하세요(확인 = 인스턴스 ID). validator_key.json을 직접 편집하지 마세요.",
          "노드가 이미 실행 중이면 다시 시작하세요. 대량으로 스테이킹하기 전에 RPC 응답이 있고 노드가 동기화될 때까지 기다리세요. 피어는 공개 P2P을 사용합니다. 계약은 IP를 사용하지 않습니다."
        ],
        "never": [
          "이 패널에 시드 문구를 붙여넣지 마십시오.",
          "이 서버의 IP를 계약에 넣지 마십시오.",
          "패널이 create_staking_pool 트랜잭션을 보낼 것이라고 기대하지 마십시오."
        ]
      },
      "cosmos": {
        "model": "서버 IP가 아닌 이 노드의 합의 공개 키를 사용하여 운영자 지갑에서 유효성 검사기를 생성합니다.",
        "min": "공식 Cosmos Hub 문서를 참조하세요(uatom의 자체 위임).",
        "wallets": "Keplr 또는 귀하가 관리하는 다른 Cosmos 지갑",
        "panel": "gaiad v28을 실행합니다. 합의 공개 키를 보여줍니다. 양식은 validator.json + create-validator를 채웁니다. priv_validator_key.json 또는 브로드캐스트를 작성하지 마세요.",
        "honesty": "이 gaiad는 v28(JSON 파일)입니다. 허브 문서에는 여전히 플래그가 표시됩니다. 여기서는 실패합니다. 트랜잭션은 서버 IP가 아닌 이 노드의 합의 공개 키를 저장합니다. 피어는 공개 P2P를 사용합니다. RPC는 로컬호스트에 유지됩니다. 이 패널은 priv_key를 브로드캐스트하거나 읽지 않습니다.",
        "yskDoes": [
          "localhost에서는 RPC로 gaiad를 실행하고 26656에서는 P2P를 실행합니다. 최소 가스 가격은 0.005uatom입니다.",
          "초기화 후 합의 공개 키, 체인 ID 및 공개 P2P를 표시합니다.",
          "amount, moniker 및 --from과 합의 pubkey에서 validator.json 및 gaiad v28 명령을 입력합니다. 절대로 priv_validator_key.json을 작성하거나 거래를 브로드캐스트하지 마세요."
        ],
        "youDo": [
          "노드를 시작하고 이 페이지에서 합의 공개 키를 기다립니다.",
          "금액, 이름 및 --from을 입력합니다. validator.json을 복사한 다음 gaiad 명령을 복사하세요.",
          "귀하가 제어하는 ​​Keplr 또는 Gaiad 키에서 서명하세요. 해당 니모닉을 이 호스트의 합의 키와 혼합하지 마십시오."
        ],
        "steps": [
          "노드를 시작하고 합의 공개 키가 나타날 때까지 gaiad init를 기다립니다(RPC 준비 안 됨은 누락된 키와 동일하지 않음).",
          "자체 위임(1atom = 1 ATOM 또는 uatom), 모니커 및 --from을 입력합니다. validator.json을 복사한 다음 gaiad 명령을 복사하세요. 이 노드는 Hub 문서의 플래그 형식이 아닌 gaiad v28: JSON 파일입니다. chain-id는 메인넷에서는 cosmoshub-4, 테스트넷에서는 공급자입니다.",
          "복사된 --gas-prices는 이 노드와 일치하도록 0.005uatom입니다. Hub 문서의 0.0025uatom 예제나 플래그 기반 생성 유효성 검사기를 붙여넣지 마세요.",
          "validator.json을 저장하고 운영자 지갑에서 방송하세요. 트랜잭션은 서버 IP를 사용하지 않습니다. 피어는 tcp://WAN:{{port}}를 사용합니다.",
          "대량으로 본딩하기 전에 RPC 응답이 있고 노드가 동기화될 때까지 기다리세요."
        ],
        "never": [
          "운영자 지갑 니모닉을 합의 키와 혼합하지 마십시오.",
          "여기에 지갑 니모닉을 입력하지 마세요.",
          "이 서버의 IP를 create-validator에 넣지 마십시오.",
          "Hub 문서의 --amount/--pubkey 플래그를 붙여넣지 마세요. 이 gaiad는 v28(validator.json)입니다.",
          "이 노드에서는 0.0025uatom 가스를 사용하지 마세요. 작성 최소값은 0.005uatom입니다."
        ]
      },
      "sol": {
        "model": "이 작성은 --no-voting을 사용하여 Agave를 실행합니다. 투표 계정과 출금자는 이 패널이 아닌 공식 솔라나 도구를 통해 생성됩니다.",
        "min": "공식 운영 문서를 참조하세요(하드웨어와 디스크는 무겁습니다)",
        "wallets": "공식 Solana CLI / 귀하가 관리하는 지갑",
        "panel": "Agave를 캐치업 노드로 실행합니다(--no-voting). RPC가 응답한 후 ID 공개 키를 표시할 수 있습니다.",
        "honesty": "이 프로세스는 투표가 없습니다. 공식 Agave CLI를 사용하여 투표 계정을 만들고 프로세스 시작 방법을 변경할 때까지 투표하거나 스테이크를 얻을 수 없습니다. 이 패널은 --no-voting을 제거하지 않습니다.",
        "yskDoes": [
          "Agave 클라이언트를 실행하고 디스크에 대해 경고합니다.",
          "RPC가 getIdentity에 응답하면 ID 공개 키를 표시합니다.",
          "투표 계정을 생성하지 않으며 투표를 시작하지 않습니다."
        ],
        "youDo": [
          "귀하가 제어하는 ​​기계에서 공식 솔라나 도구를 사용하여 투표 및 승인된 출금 키를 생성하세요.",
          "이 ID 공개 키를 사용하여 공식 CLI로 투표 계정을 만듭니다.",
          "그런 다음 투표 유효성 검사기를 실행하세요. 이 작성은 --no-voting 상태로 유지됩니다."
        ],
        "steps": [
          "이 호스트에 충분한 디스크와 IOPS가 있는지 확인합니다(메인넷은 일반적으로 2TiB+입니다).",
          "RPC가 응답할 때까지 기다린 후 여기에 표시된 ID 공개 키를 복사합니다.",
          "귀하가 제어하는 ​​기계에서 공식 솔라나 도구를 사용하여 투표 키와 승인된 출금 키를 생성한 다음, 솔라나 투표 계정을 생성하세요.",
          "이 작성은 --no-voting를 유지합니다. vote account을 생성해도 이 프로세스 투표가 이루어지지 않습니다."
        ],
        "never": [
          "이 패널에 브라우저 지갑 버튼이 있을 것이라고 기대하지 마십시오.",
          "이 패널에 ID를 붙여넣거나 키 쌍을 투표하지 마십시오.",
          "vote account를 만든 후에 이 페이지에서 투표가 시작될 것이라고 기대하지 마세요."
        ]
      },
      "dot": {
        "model": "이 작성은 전체 노드입니다(--validator 없음). 세션 키와 setKeys는 이 패널이 아닌 공식 Polkadot.js 단계입니다.",
        "min": "공식 위키를 참조하세요",
        "wallets": "Polkadot.js",
        "panel": "Polkadot을 전체 노드로 실행합니다. 로컬호스트의 RPC. --validator 플래그가 없습니다.",
        "honesty": "이 프로세스는 --validator로 시작되지 않습니다. 패널은 Author_rotateKeys(키 저장소를 변경함)를 호출하지 않습니다. 유효성 검사기가 되려면 공식 노드 플래그와 localhost RPC에 대한rotateKeys 호출이 필요합니다.",
        "yskDoes": [
          "polkadot을 실행하고 localhost에 RPC를 노출합니다.",
          "--validator를 전달하지 않으며 세션 키를 순환하지 않습니다."
        ],
        "youDo": [
          "공식 유효성 검사기 설정 가이드를 따르세요.",
          "--validator를 직접 추가하는 경우 localhost RPC에서 RotateKeys를 호출하고 숨김에서 Polkadot.js에 결과를 바인딩합니다."
        ],
        "steps": [
          "이 전체 노드를 동기화하세요.",
          "공식 유효성 검사 가이드를 읽어보세요. 이 작성은 유효성 검사기 프로세스가 아닙니다.",
          "여기에 숨김 니모닉을 붙여넣지 마세요. 나중에 --validator를 사용하여 실행하는 경우 http://127.0.0.1(이 인스턴스의 RPC 포트)에서 키를 직접 교체하세요.",
          "Polkadot.js에서 숨김/컨트롤러에 해당 세션 키를 설정한 다음 공식 결합 단계를 따르세요."
        ],
        "never": [
          "이 패널에 숨김 니모닉을 붙여넣지 마십시오.",
          "이 페이지가 세션 키를 생성하거나 --validator를 시작할 것이라고 예상하지 마십시오."
        ]
      },
      "sui": {
        "model": "이 구성은 유효성 검사기 노드가 아닌 Sui 풀노드(fullnode.yaml)입니다.",
        "min": "공식 Sui 문서 보기",
        "wallets": "공식 Sui 운영자 지갑",
        "panel": "sui-node를 전체 노드로 실행합니다. 로컬호스트의 RPC.",
        "honesty": "이 프로세스는 Sui 유효성 검사기로 서명할 수 없습니다. 유효성 검사기 설정은 다른 구성과 키를 사용합니다. 공식 검증인 문서가 링크되어 있습니다. 이 패널은 노드를 유효성 검사기 모드로 전환하지 않습니다.",
        "yskDoes": [
          "제공된 sui-node 이미지를 전체 노드로 실행합니다."
        ],
        "youDo": [
          "이 인스턴스를 풀노드로 사용하세요.",
          "유효성 검사기가 되려면 이 작성이 아닌 유효성 검사기 구성에 대한 공식 Sui 유효성 검사기 문서를 따르세요."
        ],
        "steps": [
          "이 풀노드를 동기화하세요.",
          "풀노드로 취급합니다. 체크포인트를 다시 실행하지만 합의에 서명하지는 않습니다.",
          "별도의 검증인 프로세스를 구축하는 경우에만 공식 검증인 운영자 가이드를 열어보세요."
        ],
        "never": [
          "이 패널에 SUI를 보내지 마십시오.",
          "이 풀노드 프로세스가 검증자로 등록될 것이라고 기대하지 마십시오."
        ]
      },
      "aptos": {
        "model": "이 구성은 검증자가 아닌 Aptos 공개 풀노드(역할 full_node)입니다.",
        "min": "공식 Aptos 문서 보기",
        "wallets": "Aptos 공식 운영자 지갑",
        "panel": "aptos-node를 공개 풀노드로 실행합니다. 로컬호스트의 RPC.",
        "honesty": "퍼블릭 풀노드는 합의에 참여하지 않습니다. 검증인에게는 다른 역할, 키 및 일반적으로 검증인 풀노드가 필요합니다. 이 패널은 노드를 검증자 모드로 전환하지 않습니다.",
        "yskDoes": [
          "배송된 Aptos 이미지를 퍼블릭 풀노드로 실행하세요."
        ],
        "youDo": [
          "이 인스턴스를 공개 풀노드로 사용하세요.",
          "유효성 검사기를 실행하려면 이 작성이 아닌 공식 Aptos 유효성 검사기 노드 문서를 따르십시오."
        ],
        "steps": [
          "이 공개 풀노드를 동기화하세요.",
          "이를 PFN으로 취급합니다. 원장 데이터를 제공하고 투표하지 않습니다.",
          "별도의 검증인 + VFN 쌍을 구축하는 경우에만 공식 검증인 문서를 엽니다."
        ],
        "never": [
          "이 패널에 연산자 키를 입력하지 마십시오.",
          "이 풀노드 프로세스가 검증자로 등록될 것이라고 기대하지 마십시오."
        ]
      },
      "btc": {
        "model": "지분 증명이 아닙니다. 이는 비트코인 ​​전체 노드 또는 정리된 노드입니다.",
        "min": "—",
        "wallets": "해당 없음",
        "panel": "비트코인을 실행합니다",
        "yskDoes": [
          "비트코인 전체 노드 또는 프루닝 노드를 실행하세요."
        ],
        "youDo": [
          "비트코인 지갑을 별도로 사용하세요. 채굴과 라이트닝은 범위를 벗어납니다."
        ],
        "steps": [
          "이 인스턴스를 비트코인 ​​노드로만 취급하십시오.",
          "스테이킹 보증금도 없고 검증인 키스토어도 없습니다."
        ],
        "never": [
          "이 페이지에서 스테이킹 지갑을 찾지 마세요."
        ]
      },
      "nearPoolSlug": "풀 이름",
      "nearPoolSlugHint": "짧은 이름만 가능합니다. 공장에서는 {{suffix}}를 추가합니다.",
      "nearOwner": "소유자 계정",
      "nearOwnerHint": "NEAR 지갑에 create_staking_pool을 서명하는 계정입니다. 노드 키가 아닙니다.",
      "nearPreview": "명령 미리보기",
      "nearWriteAccount": "account_id 설정",
      "nearWriteTitle": "validator_key.json account_id를 {{id}}로 설정하시겠습니까?",
      "nearWriteDesc": "기존 키 파일에 account_id만 씁니다. create_staking_pool을 보내지 않습니다. secret_key를 건드리지 않습니다.",
      "nearWriteC1": "account_id는 {{pool}}{{suffix}}가 됩니다.",
      "nearWriteC2": "패널은 factory 트랜잭션에 서명하지 않습니다",
      "nearRestart": "쓰기 후 노드를 다시 시작하십시오.",
      "nearNeedKey": "스테이크 공개 키가 나타날 때까지(neard init) 기다린 후 이 양식을 작성하세요.",
      "nearNeedSlug": "account_id를 설정하려면 풀 이름을 입력하세요.",
      "nearNeedOwner": "명령을 입력하려면 소유자 계정을 입력하세요. account_id 설정에는 풀 이름만 필요합니다.",
      "cosmosPointing": "이 gaiad는 v28입니다: validator.json을 복사한 다음, create-validator validator.json을 복사합니다. 허브 문서에는 여전히 플래그가 표시됩니다. 여기서는 실패합니다. 트랜잭션은 서버 IP가 아닌 이 노드의 합의 공개 키를 사용합니다. 피어는 공용 P2P(호스트 포트 {{port}})를 사용합니다. 가스는 0.005uatom입니다. 허브 문서의 0.0025uatom 예가 아닙니다.",
      "avaxPointing": "P-Chain 등록은 서버 IP가 아닌 이 NodeID 및 BLS 증명을 사용합니다. RPC는 로컬 호스트에 유지됩니다. Core에 등록하세요(스테이킹 → 검증).",
      "ethVcCommand": "Validator client 예시 (이 compose에 없음)",
      "ethVcHint": "이 비콘 URL에 대해 직접 validator client를 실행하세요. keystore을 비콘 데이터 디렉터리로 가져오는 것은 증명되지 않습니다.",
      "cosmosAmount": "자기 위임",
      "cosmosAmountHint": "uatom, 또는 1ATOM의 경우 1atom입니다. 베어 1은 1 ATOM이 아니라 1 uato입니다.",
      "cosmosAmountParsed": "{{amount}} = {{atom}}",
      "cosmosMoniker": "Moniker",
      "cosmosFromKey": "--from 키 이름",
      "cosmosFromHint": "로컬 gaiad 키 이름 또는 Keplr로 서명합니다. 이 호스트의 합의 키가 아닙니다.",
      "cosmosNeedPubkey": "합의 공개 키가 나타날 때까지 기다린 후(gaiad init) 이 양식을 작성하세요.",
      "cosmosNeedFields": "금액, 이름, --from를 입력하여 명령을 입력하세요."
    },
    "alerts": {
      "diskTitle": "검증자 디스크가 위험합니다",
      "diskBody": "검증자 데이터 볼륨의 여유 공간이 매우 적습니다.",
      "upgradeTitle": "검증자 업그레이드가 있습니다",
      "upgradeBody": "하나 이상의 노드 클라이언트에 더 새로운 고정 버전이 있습니다.",
      "syncTitle": "검증자 노드를 확인하세요",
      "syncBody": "6시간 넘게 동기화 중인 노드가 있거나 오류를 보고했습니다.",
      "rollbackTitle": "검증자 업그레이드를 롤백했습니다",
      "rollbackBody": "{{id}} 업그레이드가 상태 확인에 실패하여 롤백되었습니다."
    },
    "upgrade": {
      "changelog": "변경 기록"
    },
    "readiness": {
      "dockerTitle": "검증자 노드용 Docker",
      "dockerOk": "검증자 인스턴스 {{count}}개; Docker가 설치되어 있습니다",
      "dockerMissing": "검증자 인스턴스가 있지만 docker 명령을 찾을 수 없습니다"
    },
    "detail": {
      "status": "상태",
      "sync": "동조",
      "peers": "동료",
      "traffic": "교통",
      "version": "버전",
      "access": "입장",
      "upgrade": "업데이트",
      "upgradeHint": "이 노드가 클라이언트 버전을 추적하는 방법입니다.",
      "setVersion": "버전 변경",
      "setVersionHint": "이 노드의 클라이언트에 대한 공식 Docker 태그를 선택하세요. Compose가 다시 작성된 다음 가져와서 다시 시작됩니다.",
      "setVersionConfirmTitle": "{{id}}를 {{tag}}로 변경하시겠습니까?",
      "setVersionConfirmDesc": "Compose를 다시 작성하고 {{ref}}를 가져온 다음 노드를 다시 시작합니다.",
      "setVersionC1": "실행 중인 컨테이너가 선택한 태그로 대체됩니다.",
      "setVersionC2": "확인하려면 인스턴스 ID를 입력하세요.",
      "setVersionMainnet": "메인넷: 잘못된 버전은 노드를 오프라인 상태로 만들 수 있습니다. 이해합니다.",
      "releaseNotes": "릴리스 노트",
      "network": "네트워크",
      "networkHint": "네트워크 전환은 노드를 중지하고 체인 데이터를 지웁니다. 먼저 데이터 지우기에서 확인하세요.",
      "maintain": "유지",
      "danger": "데이터 지우기",
      "dangerHint": "인스턴스 ID 또는 CLEAR를 입력합니다. 그러면 디스크의 체인 데이터가 삭제됩니다.",
      "compose": "Compose",
      "logs": "로그"
    },
    "state": {
      "unknown": "알 수 없음",
      "stopped": "중지됨",
      "created": "생성됨(시작되지 않음)",
      "missing": "컨테이너 없음",
      "starting": "시작",
      "rpc_wait": "실행 중 - RPC가 준비되지 않음",
      "running": "달리기",
      "syncing": "동기화 중",
      "error": "오류"
    }
  },
  "vnc": {
    "pageDesc": "VNC 서버 및 클라이언트",
    "result": "VNC 작업 결과",
    "installed": "설치됨",
    "notInstalled": "미설치",
    "stackBins": "{{bins}}",
    "stackMissing": "누락된 도구",
    "executeOn": "YSK_EXECUTE 켜짐",
    "executeOff": "YSK_EXECUTE 꺼짐",
    "statAccounts": "계정",
    "statRunning": "달리기",
    "statClients": "클라이언트 프로필",
    "statEndpoint": "주인",
    "goAccounts": "계정",
    "goClient": "고객",
    "goInstall": "설치",
    "accountsEmptyTitle": "계정 없음",
    "accountsEmptyDesc": "시작하려면 계정을 만드세요",
    "clientPathHint": "두 경로 모두 브라우저에서 VNC를 엽니다. 대상 의미 체계와 복사에 따라 다릅니다(둘 다 여전히 패널을 통한 TCP-프록시).",
    "clientPathCompare": "\"사용자 연결 가능\": 공개 호스트 이름(예: hermes.example.com:5901) “서버 프록시”: 이 호스트만 연결할 수 있는 LAN/DC 대상입니다. 연결하기 전에 이 서버에서 TCP를 검색합니다.",
    "clientEmptyTitle": "클라이언트 없음",
    "clientEmptyDesc": "원격 호스트 추가:포트",
    "openInBrowser": "브라우저에서 열기",
    "pathUserReachable": "사용자가 연결할 수 있는 엔드포인트",
    "pathServerProxy": "서버 프록시를 통해",
    "pathUserReachableShort": "사용자 접근 가능",
    "pathServerProxyShort": "서버 프록시",
    "pathUserReachableHint": "공개 호스트 이름 또는 대상이 구성된 경우(예: example.com:5901) 브라우저는 패널을 통과합니다. 이 호스트는 해당 주소에 대해 TCP를 열어야 합니다.",
    "pathServerProxyHint": "LAN 또는 대상의 경우 제어 평면 서버만 연결할 수 있습니다. 트래픽은 이 서버의 네트워크를 통해 프록시됩니다. 선택적 연결 호스트는 TCP 주소를 재정의합니다(예: 표시 이름 대 10.x).",
    "connectHost": "호스트 연결(선택 사항, 서버 프록시)",
    "connectHostHint": "제어 영역이 열리는 TCP 주소(LAN IP) 위의 원격 호스트를 사용하려면 비워 두세요.",
    "pathBrowser": "사용자가 연결할 수 있는 엔드포인트",
    "pathHostViewer": "서버 프록시를 통해",
    "hostViewer": "서버 프록시를 통해",
    "needViewerOptional": "TigerVNC 뷰어(선택 사항, 브라우저 경로용 아님)",
    "viewerStackOptional": "브라우저 내 VNC에는 데스크톱 vncviewer가 필요하지 않습니다. 아래 뷰어 패키지는 선택적 시스템 유지 관리 전용입니다.",
    "viewer": {
      "minting": "세션 준비 중…",
      "connecting": "연결 중…",
      "connected": "연결됨",
      "disconnected": "연결이 끊김",
      "error": "연결 실패",
      "idle": "게으른",
      "closed": "닫은",
      "minting_state": "준비 중",
      "reconnect": "다시 연결",
      "disconnect": "연결 끊기",
      "fullscreen": "전체 화면",
      "fit": "창 맞추기",
      "oneToOne": "1:1",
      "cad": "Ctrl+Alt+Del",
      "password": "VNC 비밀번호",
      "passwordPrompt": "비밀번호가 필요합니다",
      "sendPassword": "비밀번호 보내기",
      "securityFailure": "인증 실패",
      "canvasLabel": "VNC 데스크탑: {{name}}",
      "clipboardPaste": "붙여넣기 → 원격",
      "clipboardPanel": "클립보드",
      "clipboardHint": "이 브라우저와 원격 데스크톱 간에 텍스트를 동기화합니다.",
      "clipboardLocal": "원격으로 보내기",
      "clipboardLocalPh": "VNC 세션에 보낼 텍스트를 붙여넣거나 입력하세요.",
      "clipboardRemote": "원격에서",
      "clipboardRemotePh": "원격 데스크톱에 복사된 텍스트가 여기에 표시됩니다.",
      "clipboardSend": "원격으로 보내기",
      "clipboardCopy": "로컬로 복사",
      "clipboardToRemote": "클립보드가 원격으로 전송됨",
      "clipboardToRemoteHint": "브라우저 클립보드를 원격 세션에 붙여넣기",
      "clipboardFromRemote": "원격 클립보드가 이 브라우저에 복사되었습니다.",
      "clipboardFromRemoteManual": "원격 클립보드가 업데이트되었습니다. 클립보드 패널을 열어 복사하세요.",
      "clipboardEmpty": "붙여넣을 것이 없습니다. 먼저 텍스트를 복사하거나 아래에 입력하세요.",
      "clipboardReadDenied": "브라우저에서 클립보드 읽기를 차단했습니다. 패널에 붙여넣고 보내기",
      "clipboardNoRemote": "아직 원격에서 문자가 수신되지 않았습니다.",
      "clipboardCopiedLocal": "이 브라우저에 복사됨",
      "quality": "품질",
      "qualityHint": "이미지 품질과 대역폭(JPEG/압축)",
      "qualityLow": "낮음(데이터 저장)",
      "qualityBalanced": "균형 잡힌",
      "qualityHigh": "높은",
      "qualityMax": "최대 품질",
      "passwordPromptHint": "이 데스크탑에는 VNC 비밀번호가 필요합니다. 아래에 입력하세요.",
      "errNeedExecute": "데스크탑을 시작할 수 없습니다. 서버에는 루트가 필요하고 YSK_EXECUTE가 활성화되어 있어야 합니다.",
      "errTicket": "세션 티켓이 만료되었거나 유효하지 않습니다. 다시 연결을 누르세요.",
      "errBusy": "이 패널에 VNC 세션이 너무 많습니다. 다른 세션을 닫고 다시 시도하세요.",
      "errRefused": "{{host}}:{{port}}에서는 아무것도 듣고 있지 않습니다(연결이 거부됨). VNC가 실행 중이고 이 서버에서 연결할 수 있습니까?",
      "errRefusedGeneric": "연결이 거부되었습니다. VNC가 실행 중이고 포트가 올바른지 확인하세요.",
      "errTimeout": "{{host}}:{{port}} 연결 시간이 초과되었습니다. 이 서버의 방화벽/네트워크 경로를 확인하세요.",
      "errTimeoutGeneric": "연결 시간이 초과되었습니다. 네트워크와 방화벽을 확인하세요.",
      "errDns": "호스트 이름 «{{host}}»을 확인할 수 없습니다.",
      "errDnsGeneric": "호스트 이름을 확인할 수 없습니다.",
      "errNet": "{{host}}:{{port}}에 대해 네트워크에 연결할 수 없습니다.",
      "reconnecting": "연결이 끊어졌습니다 — 다시 연결하는 중({{n}}/{{max}})…",
      "idleHint": "세션이 한동안 유휴 상태였습니다. 원격 데스크톱이 잠길 수 있습니다. 필요한 경우 마우스를 이동하거나 다시 연결하세요.",
      "idleDismiss": "아직 여기 있어요",
      "sessions": "VNC 세션 열기",
      "sessionCount": "{{n}} / {{max}} 세션",
      "sessionLimit": "한 번에 최대 {{max}} VNC 세션 — 먼저 하나를 닫습니다.",
      "closeSession": "세션 종료 {{name}}",
      "shareLink": "링크 공유",
      "shareCopied": "보기 전용 공유 링크 복사됨(유효 기간: 최대 1시간)",
      "shareFailed": "공유 링크를 생성할 수 없습니다.",
      "shareTitle": "공유 VNC 보기",
      "shareGuest": "공유 데스크톱",
      "shareMissing": "공유 토큰 누락",
      "shareExpired": "이 공유 링크는 유효하지 않거나 만료되었습니다.",
      "viewOnlyBadge": "보기 전용",
      "screenshot": "스크린샷",
      "screenshotSaved": "스크린샷이 다운로드되었습니다.",
      "screenshotFailed": "스크린샷을 캡처할 수 없습니다.",
      "screenshotNoCanvas": "디스플레이가 스크린샷을 찍을 준비가 되지 않았습니다.",
      "record": "기록",
      "recordStop": "녹음 중지",
      "recordHint": "데스크톱을 WebM에 녹화(최대 60초)",
      "recordStarted": "녹음 중… 녹음 중지를 클릭하거나 60초 동안 기다리세요.",
      "recordSaved": "녹음이 다운로드됨",
      "recordFailed": "녹음할 수 없습니다.",
      "recordUnsupported": "이 브라우저는 캔버스를 기록할 수 없습니다",
      "connectingHint": "데스크탑에 대한 보안 터널을 여는 중…",
      "reconnectHint": "다시 연결을 눌러 다시 시도하거나 원격 호스트와 포트를 확인하세요."
    },
    "installHint": "TigerVNC → noVNC; XFCE 선택 사항",
    "needTigerVnc": "TigerVNC가 필요합니다",
    "needXfceFirst": "XFCE를 먼저 설치하세요",
    "needSessionRunning": "세션이 실행되고 있지 않습니다. 먼저 시작하세요.",
    "needNovnc": "noVNC 필요",
    "needXfce": "XFCE(선택사항)",
    "needViewer": "뷰어(선택사항)",
    "needViewerOrNovnc": "뷰어 또는 noVNC",
    "settingsHint": "새 계정의 기본값",
    "settingsNeedStack": "이러한 기본값은 TigerVNC(선택한 경우 XFCE)가 설치된 경우 적용됩니다. 먼저 설치 탭에서 설치하세요.",
    "clientNeedNovnc": "브라우저에서 열려면 noVNC가 필요합니다. 여기에서 열 것으로 예상되는 리모컨을 추가하기 전에 설치 탭에서 설치하세요.",
    "defaultDesktop": "기본 데스크탑",
    "defaultGeometry": "기본 해상도",
    "defaultDepth": "색상 심도",
    "defaultRfbBind": "RFB 듣기",
    "defaultAutostart": "세션 자동 시작",
    "autostartLabel": "부팅 시 시작",
    "settingsSaved": "VNC 기본값이 저장되었습니다.",
    "tab": {
      "overview": "개요",
      "accounts": "계정",
      "client": "고객",
      "install": "설치",
      "settings": "설정",
      "about": "설명"
    },
    "desktop": {
      "xfce": "XFCE(풀 데스크톱)",
      "terminal": "터미널"
    },
    "bind": {
      "localhost": "로컬호스트 전용(noVNC/터널)",
      "all": "모든 인터페이스(직접 RFB — 개방형 방화벽)",
      "localhostShort": "로컬호스트",
      "allShort": "0.0.0.0"
    },
    "accountListTitle": "VNC 계정({{count}})",
    "accountListDesc": "계정당 Linux 사용자 1명",
    "createAccount": "+ 계정 만들기",
    "createAccountTitle": "VNC 계정 만들기",
    "createAccountDesc": "전용 yskvnc_* 사용자",
    "createAccountBtn": "계정 만들기",
    "editAccountTitle": "VNC 계정 편집",
    "editAccountDesc": "Linux 사용자 {{user}} · 디스플레이 :{{display}}",
    "setPassword": "비밀번호",
    "setPasswordTitle": "VNC 비밀번호 설정",
    "setPasswordDesc": "{{address}}의 VNC 로그인 비밀번호 업데이트",
    "newPassword": "새 비밀번호",
    "confirmPassword": "비밀번호 확인",
    "passwordHint": "최소 6자",
    "passwordMismatch": "비밀번호가 일치하지 않습니다.",
    "passwordTooShort": "비밀번호는 6자 이상이어야 합니다.",
    "needName": "표시 이름을 입력하세요.",
    "start": "시작",
    "stop": "멈추다",
    "startAfterCreate": "생성 후 시작",
    "hostnameBroken": "이 호스트는 자체 호스트 이름({{hostname}})을 확인할 수 없습니다. 세션 시작이 실패합니다.",
    "hostnameBrokenIdle": "Hostname {{hostname}} does not resolve on this host. Fix /etc/hosts before you create a session.",
    "hostnameFix": "/etc/hosts에 호스트 이름 쓰기",
    "hostnameFixTitle": "이 줄을 /etc/hosts에 추가하시겠습니까?",
    "hostnameFixDesc": "{{line}}",
    "hostnameFixDone": "호스트 이름 /etc/hosts가 업데이트되었습니다.",
    "startAfterCreateBlocked": "호스트 이름이 확인될 때까지 비활성화됩니다.",
    "startHostnameBlocked": "이 호스트가 호스트 이름을 확인할 수 있을 때까지 시작할 수 없습니다. \"/etc/hosts에 호스트 이름 쓰기\"를 사용하십시오.",
    "colName": "이름",
    "colLinuxUser": "리눅스 사용자",
    "colDisplay": "디스플레이/포트",
    "colStatus": "상태",
    "colDesktop": "데스크탑",
    "colBind": "RFB 바인드",
    "accountStatus": {
      "running": "달리기",
      "stopped": "중지됨",
      "failed": "실패한",
      "written": "쓴",
      "unknown": "알 수 없음"
    },
    "clientStatus": {
      "up": "연결됨",
      "down": "연결이 끊김",
      "unknown": "알 수 없음",
      "error": "오류",
      "viewing": "브라우저에서 보기"
    },
    "accountPager": "계정 페이지",
    "prevPage": "이전",
    "nextPage": "다음",
    "pageOf": "페이지 {{page}} / {{total}} · {{count}}",
    "deleteAccountTitle": "VNC 계정을 삭제하시겠습니까?",
    "deleteAccountDesc": "제어 영역 계정 {{name}}({{user}})을 삭제합니다. 세션이 먼저 중지됩니다.",
    "deleteAccountC1": "이 디스플레이에 대한 VNC 세션",
    "deleteAccountC2": "dataDir/vnc 아래의 패널 메타데이터",
    "deleteAccountC3User": "Linux 사용자 홈이 제거됩니다(userdel -r).",
    "deleteAccountC3Keep": "Linux 사용자는 시스템에 유지됩니다.",
    "removeLinuxUser": "Linux 사용자 및 홈 디렉터리도 제거하세요.",
    "deleteKeepUserWarn": "Linux 사용자는 호스트에 고아로 남게 됩니다. 나중에 정리해야 합니다.",
    "bindRfbLine": "RFB {{bind}} :{{port}}",
    "bindNovncLine": "noVNC 127.0.0.1:{{port}}",
    "bindNovncHint": "noVNC는 localhost에서 수신 대기합니다. RFB 바인딩이 모든 인터페이스인 경우를 제외하고 공용 인터넷이 아닌 이 패널을 통해 데스크탑에 접근합니다.",
    "connection": "연결하다",
    "connectionTitle": "연결 재료",
    "connectionDesc": "고객이 {{name}}에 도달하는 방법",
    "connectionPathsHint": "브라우저에서 열기를 선호합니다. 레거시 noVNC/직접 RFB를 위한 고급 옵션",
    "connectionBrowserHint": "권장 사항: 이 패널 내에서 데스크탑을 엽니다(SSH 터널 없음, 패널에 연결할 수 있는 모든 브라우저에서 작동함).",
    "connectionBrowserDesc": "필요한 경우 VNC 세션을 시작하고 키보드, 마우스 및 클립보드를 사용하여 패널 내 뷰어를 엽니다.",
    "connectionAdvanced": "고급: 기존 noVNC URL 및 직접 RFB",
    "pathViaServer": "서버를 통해(noVNC)",
    "pathViaServerLegacy": "서버의 레거시 noVNC(127.0.0.1)",
    "pathViaServerLegacyHint": "서버 호스트 또는 SSH 터널을 통해서만 작동합니다. \"브라우저에서 열기\"를 선호합니다.",
    "pathDirect": "직접 RFB",
    "recommended": "추천",
    "startNovnc": "noVNC 시작",
    "stopNovnc": "noVNC 중지",
    "copyNovncUrl": "noVNC URL 복사",
    "copyAddress": "호스트:포트 복사",
    "openFirewall": "UFW 포트 열기",
    "directAddress": "주소",
    "ticketPath": "티켓 API 보기",
    "directLocalhostWarn": "RFB는 로컬호스트 전용입니다.",
    "copied": "클립보드에 복사됨",
    "clientListTitle": "고객 프로필({{count}})",
    "clientListDesc": "아웃바운드 VNC",
    "addClient": "+ 리모컨 추가",
    "addClientTitle": "원격 VNC 추가",
    "addClientDesc": "원격 호스트:포트",
    "clientTarget": "목표",
    "clientPath": "연결 경로",
    "clientHost": "원격 호스트",
    "pathViaServerShort": "브라우저",
    "pathDirectShort": "호스트 뷰어",
    "disconnect": "연결 끊기",
    "connect": "연결하다",
    "clientNeedFields": "이름과 호스트가 필요합니다",
    "clientCreated": "클라이언트 프로필이 생성되었습니다.",
    "clientPasswordOptional": "VNC 비밀번호(선택사항)",
    "clientPasswordHint": "브라우저 뷰어를 열 때 사용됩니다. 매번 입력하려면 비워 두세요.",
    "clientRememberPassword": "다음에 열 때를 ​​위해 이 서버에 비밀번호를 저장하세요.",
    "clientRememberPasswordWarn": "비밀번호는 패널 dataDir(루트에서 읽을 수 있음)에 저장됩니다. 공유 호스트에서 매번 입력하는 것을 선호합니다.",
    "stackMissingShort": "미설치",
    "editClientTitle": "원격 클라이언트 편집",
    "editClientDesc": "경로, 호스트 및 선택적으로 저장된 비밀번호를 업데이트합니다.",
    "clientUpdated": "클라이언트 프로필이 업데이트되었습니다.",
    "rememberNeedPassword": "먼저 비밀번호를 입력하세요."
  },
  "vpn": {
    "pageDesc": "VPN 서버 및 클라이언트",
    "eyebrow": "VPN",
    "tab": {
      "wireguard": "WireGuard",
      "openvpn": "OpenVPN",
      "outline": "Shadowsocks",
      "client": "로컬 클라이언트",
      "software": "소프트웨어",
      "monitor": "감시 장치",
      "about": "설명",
      "server": "섬기는 사람",
      "install": "설치",
      "overview": "개요"
    },
    "softwareIntro": "여기에서 VPN 엔진을 설치하거나 업데이트하세요. 서버 탭은 구성에 계속 집중합니다.",
    "monitor": {
      "needLive": "라이브 메트릭에는 서버에 루트 + YSK_EXECUTE가 필요합니다.",
      "autoRefresh": "자동 3초",
      "filterEngine": "엔진 필터",
      "filterPresence": "존재감 필터",
      "engineAll": "모든 엔진",
      "presenceAll": "전체",
      "presenceOnline": "온라인",
      "presenceOffline": "오프라인",
      "onlineOf": "온라인 {{online}} / {{total}}",
      "peersTitle": "동료({{count}})",
      "localTitle": "현지 아웃바운드",
      "colEndpoint": "원격",
      "colLastSeen": "마지막으로 본",
      "colRx": "↓ 합계",
      "colTx": "↑ 합계",
      "colRxRate": "↓ 요금",
      "colTxRate": "↑ 요금",
      "sampledAt": "샘플링됨 {{when}}",
      "emptyPeers": "표시할 동료가 없습니다.",
      "emptyPeersHint": "엔진 탭에 피어를 추가하거나 필터를 지우세요.",
      "presence": {
        "online": "온라인",
        "idle": "게으른",
        "offline": "오프라인",
        "never": "절대",
        "unknown": "알 수 없음"
      }
    },
    "installed": "설치됨",
    "notInstalled": "미설치",
    "serverUp": "달리기",
    "serverDown": "중지됨",
    "engineSummary": "포트 {{port}} · {{peers}} 피어",
    "engineSummaryClient": "{{count}} 프로필 · {{up}} 증가",
    "needWireGuard": "WireGuard 필요",
    "needOpenVpn": "OpenVPN 필요",
    "needSs": "SS-서버가 필요합니다",
    "ssHonestUi": "ss:// 액세스 키(전체 개요 관리자 아님)",
    "listenPort": "청취 포트",
    "listenPortUdp": "청취 포트(UDP)",
    "listenPortTcp": "청취 포트(TCP)",
    "endpoint": "공개 끝점",
    "endpointHint": "공용 호스트:클라이언트가 연결하는 데 사용하는 포트",
    "ddnsFill": "DDNS 호스트 이름 사용",
    "ddnsFilled": "DDNS에서 채워진 엔드포인트 호스트. 피어는 변경되지 않습니다.",
    "ddnsFillEmpty": "아직 DDNS 기본 호스트 이름이 없습니다. DNS DDNS 탭에 하나를 추가하세요.",
    "ensureServer": "서버 적용",
    "openFirewall": "{{port}}/{{proto}} 열기",
    "presets": "포트 사전 설정",
    "portHint": {
      "51820": "기본 WireGuard 수신 포트",
      "51821": "대체 WireGuard 수신 포트",
      "51822": "두 번째 대체 WireGuard 수신 포트"
    },
    "proto": "규약",
    "protoUdp": "UDP",
    "protoTcp": "TCP",
    "statusLine": "{{state}} · {{port}}/{{proto}} · {{peers}} 동료",
    "peersTitle": "피어/키",
    "peersTitleWg": "동료",
    "peersTitleOvpn": "클라이언트 구성",
    "peersTitleSs": "액세스 키",
    "peerName": "이름",
    "peerNamePlaceholder": "핸드폰",
    "peerNameHint": "문자, 숫자, . _ - — 공백 없음, / 또는 !",
    "peerNameInvalid": "공백, / 및 ! 허용되지 않습니다. {{preview}}를 사용하거나 이름을 변경하세요.",
    "addPeer": "+ 추가",
    "installEngineFirst": "VPN 엔진을 먼저 설치하세요",
    "needServerRunning": "{{engine}}가 실행되고 있지 않습니다. 먼저 서버를 적용하세요",
    "engineSummarySoftware": "{{installed}} 설치됨 · {{running}} 실행 중",
    "privateKeyOnce": "클라이언트 개인 키는 여기에만 표시됩니다. 지금 다운로드하거나 복사하세요. 나중에 복구할 수 없습니다.",
    "showPrivateKey": "개인 키 표시",
    "hidePrivateKey": "개인 키 숨기기",
    "deletePeerTitle": "피어를 삭제하시겠습니까 {{name}}?",
    "deletePeerDesc": "Remove {{name}} ({{address}}). The client disconnects immediately and the config cannot be restored.",
    "deleteClientTitle": "OpenVPN 클라이언트 {{name}}를 삭제하시겠습니까?",
    "deleteClientDesc": "{{name}}({{address}})를 제거합니다. 클라이언트의 연결이 즉시 끊어지고 프로필을 복원할 수 없습니다. OpenVPN 서버는 계속 작동합니다.",
    "deleteKeyTitle": "Shadowsocks 키 {{name}}를 삭제하시겠습니까?",
    "deleteKeyDesc": "액세스 키 {{name}}({{address}})를 제거하세요. 이 키를 사용하는 클라이언트는 연결이 끊어집니다. Shadowsocks 서버는 계속 작동됩니다.",
    "deleteResult": "{{name}} 삭제되었습니다.",
    "portInvalid": "수신 포트는 1~65535 사이의 정수여야 합니다.",
    "portRequired": "수신 포트가 필요합니다.",
    "importInvalid": "WireGuard 또는 OpenVPN 클라이언트 구성을 감지할 수 없습니다.",
    "qrFailed": "이 구성에 대한 QR 코드를 생성할 수 없습니다. 대신 텍스트를 다운로드하거나 복사하세요.",
    "cfgTitle": "구성 — {{name}}",
    "addPeerWg": "+ 동료 추가",
    "addPeerOvpn": "+ 클라이언트 추가",
    "addPeerSs": "+ 키 추가",
    "noPeers": "아직 없음",
    "noPeersHint": "구성을 다운로드하려면 하나를 추가하세요.",
    "colName": "이름",
    "colAddress": "주소",
    "colCreated": "생성됨",
    "colActions": "행위",
    "colEngine": "엔진",
    "colStatus": "상태",
    "colIface": "인터페이스",
    "downloadKey": "다운로드",
    "showQr": "QR",
    "copyConf": "복사",
    "copied": "복사됨",
    "downloaded": "구성이 다운로드되었습니다.",
    "qrReady": "QR 준비됨",
    "qrTitle": "QR — {{name}}",
    "qrHintWg": "WireGuard 앱에서 스캔",
    "qrHintSs": "Shadowsocks 클라이언트에서 ss:// 스캔",
    "showConf": "구성 텍스트",
    "close": "닫기",
    "clientIntro": "이 호스트를 연결하려면 conf 파일을 가져오세요.",
    "profileName": "프로필 이름",
    "pasteConf": "conf 붙여넣기",
    "importProfile": "수입",
    "importOpen": "+ 구성 가져오기",
    "noProfiles": "로컬 프로필 없음",
    "noProfilesHint": "WireGuard 또는 OpenVPN 클라이언트 구성 가져오기",
    "connect": "연결하다",
    "disconnect": "연결 끊기",
    "clientStatus": {
      "up": "연결됨",
      "down": "연결이 끊김",
      "unknown": "알 수 없음",
      "error": "오류"
    },
    "result": "결과",
    "clientEngine": "유형",
    "engineAuto": "자동 감지",
    "refresh": "새로고침",
    "dnsOptional": "DNS(선택사항)",
    "serverSettings": "서버 설정",
    "access": {
      "label": "클라이언트 트래픽",
      "full": "풀 인터넷",
      "lan": "LAN 전용",
      "custom": "커스텀 경로",
      "fullHint": "모든 클라이언트 트래픽은 이 서버를 통해 전달됩니다(NAT 활성화). 적용 후 클라이언트를 다시 연결합니다.",
      "lanHint": "VPN + 선택된 개인망만; 클라이언트는 자체 인터넷을 유지합니다. 적용 후 재접속하세요.",
      "customHint": "나열된 CIDR만 터널에 들어갑니다. 적용 후 재접속하세요.",
      "lanCidrs": "LAN 네트워크",
      "customCidr": "CIDR",
      "addCidr": "추가하다",
      "cidrRequired": "CIDR(예: 192.168.1.0/24)을 입력합니다.",
      "cidrInvalid": "유효한 CIDR(예: 192.168.1.0/24)을 입력하세요."
    },
    "engineNotInstalled": "이 VPN 엔진이 호스트에 설치되어 있지 않습니다.",
    "serverNotListening": "서버 유닛이 활성 상태가 아닙니다. UDP/TCP {{port}}가 닫혀 있을 수 있습니다."
  }
}
