{
  "status": {
    "uploaded": "Uploaded",
    "issued": "Issued",
    "planned": "In progress",
    "failed": "Failed",
    "missing": "Files missing",
    "ready": "Ready",
    "processing": "In progress"
  },
  "step": {
    "ok": "Done",
    "blocked": "Cannot run",
    "failed": "Failed",
    "skipped": "Skipped"
  },
  "pillCount": "{{count}} cert(s)",
  "statCerts": "Certificates",
  "panelCertHint": "Panel HTTPS uses {{path}} (expires {{exp}}). It is not listed as a site certificate.",
  "openPanelTls": "Open panel HTTPS",
  "statWithFiles": "With files",
  "statBindings": "Bindings",
  "statFailed": "Failed",
  "requestLe": "Request Let’s Encrypt",
  "openLetsEncryptLog": "Open letsencrypt.log in Log Center",
  "uploadCert": "+ Upload certificate",
  "certbotNotInstalled": "Certbot is not installed",
  "leFailNxdomain": "DNS has no record for {{domain}} (NXDOMAIN) — Let's Encrypt cannot validate without a public A/AAAA.",
  "leFailNxdomainHint": "Add an A record for {{domain}} to this server’s public IP in DNS, write the zone, confirm",
  "leFailDns": "DNS error resolving {{domain}} (SERVFAIL or similar).",
  "leFailDnsHint": "Check nameservers and that the zone is published to the public internet.",
  "leFailHttp01": "{{domain}} resolves, but HTTP-01 failed (port 80 unreachable or wrong response).",
  "leFailHttp01Hint": "Open port 80, ensure nginx listens on 80, and that {{domain}} points at this host",
  "leFailRateLimit": "Let's Encrypt rate limit hit.",
  "leFailRateLimitHint": "Wait and retry, or avoid repeated requests for the same name.",
  "leFailCaa": "CAA records block Let's Encrypt for {{domain}}.",
  "leFailCaaHint": "Add a CAA allowing letsencrypt.org, or remove the blocking CAA.",
  "leFailChallenge": "Let's Encrypt domain validation failed ({{domain}}).",
  "leFailChallengeHint": "Confirm DNS A record and port 80 reachability, then retry; see letsencrypt.log.",
  "leFailUnknown": "Let's Encrypt request failed ({{domain}}).",
  "leFailUnknownHint": "Open letsencrypt.log for details.",
  "leFailRawTail": "Technical detail (excerpt): {{snippet}}",
  "requestFailedWhy": "Why it failed",
  "requestFailedNext": "Next steps",
  "retryRequest": "Retry request",
  "retryRequestFor": "Retry request for {{domain}}",
  "retryInTableHint": "Retry from the failed domain row in the list below",
  "bindingsTitle": "Bindings & renewal",
  "autoRenewLabel": "Auto-renewal",
  "autoRenewYes": "Enabled",
  "autoRenewNo": "Not enabled / unconfirmed",
  "autoRenewYesDetail": "Renewal mechanism detected: {{source}}. Let's Encrypt certs should renew before expiry when certbot is healthy.",
  "autoRenewNoDetail": "No enabled certbot.timer or renew cron found. Enable certbot.timer or certs will expire unless you renew manually.",
  "renewSourceCron": "panel/system cron",
  "renewTimerEnabled": "systemd timer enabled: {{unit}}",
  "renewTimerDisabled": "Found {{unit}} but it is not enabled (systemctl enable --now {{unit}})",
  "renewTimerInstalledUnknown": "Host has {{unit}} unit file; confirm systemctl enable --now",
  "renewTimerActive": "{{unit}} is active",
  "renewViaCron": "Found {{count}} cron job(s) mentioning certbot/renew",
  "renewNone": "No certbot.timer or LE renew cron registered",
  "expiresUnknown": "Unknown",
  "expiresUnknownHint": "Certificate file unreadable (permissions/path);",
  "expiresInDays": "in {{n}} days",
  "expiresAt": " · Expires {{date}}",
  "projectsAt": " · Projects: {{names}}",
  "mailAt": " · Mail: {{domains}}",
  "noBindings": "No project/mail bindings detected",
  "certsTitle": "Certificates ({{count}})",
  "colDomain": "Domain",
  "colProvider": "Source",
  "providerUpload": "Upload",
  "colLocalFiles": "Local files",
  "filesYes": "Yes",
  "filesNo": "No",
  "colExpires": "Expires",
  "renew": "Renew",
  "renewFor": "Renew {{domain}}",
  "deleteDomain": "Delete {{domain}}",
  "colStatus": "Status",
  "emptyTitle": "No certificates yet",
  "emptyDesc": "Use “Upload certificate” or “Request Let’s Encrypt” above",
  "uploadTitle": "Upload certificate",
  "uploadDesc": "Paste PEM content; the panel writes files on the server",
  "domainHint": "Primary domain for this cert, e.g. example.com",
  "fullchainLabel": "Certificate chain (fullchain)",
  "fullchainHint": "PEM with server cert and intermediate CA",
  "privkeyLabel": "Private key (privkey)",
  "privkeyHint": "Private key PEM matching the certificate — keep it secret",
  "uploadHint": "Upload only writes files;",
  "leTitle": "Request Let’s Encrypt",
  "leDesc": "The panel requests the cert on the server — no manual certbot",
  "requestCert": "Request certificate",
  "domainLeHint": "Apex/domain or *.example.com wildcard",
  "domainLePlaceholder": "example.com or *.example.com",
  "emailLabel": "Contact email",
  "emailHint": "For Let’s Encrypt expiry notices; leave empty to use admin@domain",
  "leDns01Hint": "Wildcards use dns-01: the panel starts a certbot manual challenge — complete the TXT recor",
  "leHttp01Hint": "Normal domains use http-01 (nginx plugin)",
  "deleteTitle": "Delete certificate?",
  "deleteDesc": "Removes cert files and registration for {{domain}}.",
  "deleteNeedDomain": "Delete this certificate — type the domain name to confirm",
  "savedCert": "Saved certificate for {{domain}}",
  "uploadFailed": "Upload failed",
  "requestBlocked": "Cannot complete certificate request in the admin panel",
  "requestDone": "Certificate request completed",
  "requestFailed": "Certificate request did not succeed",
  "applyFailed": "Request failed",
  "deletedCert": "Deleted {{domain}}",
  "uninstallCertbotWarn": "Removing certbot stops automatic renewal of existing Let's Encrypt certificates.",
  "uninstallCertbot": "Uninstall certbot (loses auto-renew)",
  "domainRequired": "Please enter a domain.",
  "domainInvalid": "Domain format is not valid.",
  "domainKnownHint": "Pick a known project, DNS, or mail domain, or type a custom name."
}
