{
  "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번에서 응답을 기대하기 전에 바인드를 복구하거나 다른 수신을 중지하십시오."
}
