{
  "title": "Docker",
  "subtitle": "Install Docker Engine, then manage containers, images, volumes, and validator Compose stacks on this host.",
  "refresh": "Refresh",
  "notInstalled": "Docker Engine is not installed. Install docker.io and docker-compose-v2 from this page.",
  "protected": "Protected",
  "pruneConfirm": "Type PRUNE to confirm any prune",
  "needEngineTitle": "Install Docker Engine first",
  "stopEngineDesc": "This stops the Docker engine and all {{n}} container(s) on this host.",
  "notInstalledValue": "Not installed",
  "nameHint": "Letters, digits, underscore, dot, hyphen (max 128)",
  "volPlaceholder": "my-data",
  "netPlaceholder": "my-net",
  "runPorts": "Publish ports",
  "runPortsHint": "host:container per line, e.g. 8080:80",
  "runEnv": "Environment",
  "runEnvHint": "KEY=value per line",
  "runRestart": "Restart policy",
  "runNetwork": "Network",
  "runVolumes": "Volumes",
  "runVolumesHint": "volume:dest per line",
  "runAdvancedHint": "For multi-service stacks use validator nodes or Compose files already on this host.",
  "daemonConfirmTitle": "Apply daemon settings?",
  "daemonConfirmDesc": "Writes daemon.json and restarts docker.service. All containers will be interrupted.",
  "settingsHint": "Safe daemon.json subset only. Apply writes the file and restarts docker.service.",
  "cli": {
    "usage": "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": "Overview",
    "containers": "Containers",
    "images": "Images",
    "compose": "Compose",
    "volumes": "Volumes",
    "networks": "Networks",
    "prune": "Prune",
    "settings": "Settings",
    "about": "About"
  },
  "col": {
    "engine": "Engine",
    "containers": "Containers",
    "version": "Version",
    "dataRoot": "Data root",
    "disk": "Disk",
    "validators": "Validator stacks",
    "name": "Name",
    "image": "Image",
    "status": "Status",
    "ports": "Ports",
    "managed": "Managed",
    "size": "Size",
    "driver": "Driver",
    "type": "Type",
    "reclaimable": "Reclaimable"
  },
  "state": {
    "up": "Active",
    "down": "Stopped",
    "running": "Running",
    "exited": "Exited",
    "exitedCode": "Exited ({{n}})",
    "restarting": "Restarting",
    "restartingCount": "Restarting · {{n}} times",
    "paused": "Paused",
    "created": "Created",
    "dead": "Dead",
    "removing": "Removing",
    "unknown": "Unknown"
  },
  "df": {
    "images": "Images",
    "containers": "Containers",
    "volumes": "Local volumes",
    "builder": "Build cache",
    "other": "Other"
  },
  "actions": {
    "start": "Start",
    "stop": "Stop",
    "restart": "Restart",
    "remove": "Remove",
    "logs": "Logs",
    "inspect": "Inspect",
    "exec": "Exec (version)",
    "run": "Run image",
    "pull": "Pull",
    "up": "Up",
    "down": "Down",
    "createVolume": "Create volume",
    "createNetwork": "Create network",
    "pruneContainers": "Prune containers",
    "pruneImages": "Prune images",
    "pruneVolumes": "Prune volumes",
    "pruneSystem": "System prune",
    "startEngine": "Start engine",
    "stopEngine": "Stop engine",
    "restartEngine": "Restart engine",
    "applyDaemon": "Apply daemon settings"
  },
  "empty": {
    "containers": "No containers",
    "images": "No images",
    "compose": "No Compose projects",
    "composeDesc": "Projects come from validator nodes or Compose files already on this host. This page does not accept arbitrary YAML uploads.",
    "composeCta": "Open validator nodes",
    "volumes": "No volumes",
    "networks": "No networks"
  },
  "logs": {
    "empty": "No log output.",
    "follow": "Follow"
  },
  "deleteRunningWarn": "This container is still running or restarting. It will be force-removed.",
  "settings": {
    "logMaxSize": "Container log max size",
    "liveRestore": "Live restore (keep containers if the daemon restarts)",
    "mirrors": "Registry mirrors (one URL per line)",
    "insecure": "Insecure registries (one host per line)"
  },
  "about": {
    "body": "Docker is a first-class host service on YSK Server, like Nginx. Install via the panel (Ubuntu docker.io + docker-compose-v2). Validator nodes run as Compose projects named yskval-*.",
    "honesty": "Host changes need root and YSK_EXECUTE=1. Dry-run is the default. This page manages Docker on one host; use external Kubernetes for cluster orchestration.",
    "validators": "Open validator nodes"
  },
  "alerts": {
    "daemonTitle": "Docker daemon is down",
    "daemonBody": "The Docker engine is installed but docker.service is not active. Validator stacks cannot start."
  },
  "errors": {
    "notInstalled": "Docker is not installed",
    "daemonDown": "Docker daemon is not active",
    "needCompose": "docker compose (v2 plugin) is required",
    "badImage": "Invalid image reference",
    "badName": "Invalid name",
    "badPort": "Invalid port publish",
    "badEnv": "Invalid environment variable",
    "badVolume": "Invalid volume mount",
    "badNetwork": "Invalid network",
    "protectedNetwork": "Cannot remove a built-in Docker network",
    "badRestart": "Invalid restart policy",
    "badPrune": "Invalid prune scope",
    "needPruneConfirm": "Volume or system prune requires confirm=PRUNE",
    "badDaemon": "Invalid daemon setting",
    "composeMissing": "Compose file for this project was not found",
    "logsFailed": "Could not read container logs",
    "mutateFailed": "Docker command failed",
    "engineFailed": "Could not control docker.service",
    "badExec": "Exec is limited to allowlisted binaries and presets (no shell, no TTY)",
    "uninstallBusy": "Stop YSK-managed containers (including validator stacks) before uninstalling Docker",
    "badCommand": "Invalid command or entrypoint",
    "portBusy": "Host port {{bind}}:{{port}} is already in use",
    "nameInUse": "A container named {{name}} already exists. Remove it or pick another name.",
    "unpublished": "Container did not attach to a network or publish ports. Not treating this as started."
  },
  "notes": {
    "dryMutate": "Dry-run only. Pass --execute and YSK_EXECUTE=1 to change the host.",
    "dryPrune": "Prune preview (not applied).",
    "dryEngine": "Engine control is dry-run.",
    "dryDaemon": "Would write /etc/docker/daemon.json and restart docker.service.",
    "daemonWrote": "Wrote daemon.json",
    "start": "Container started",
    "stop": "Container stopped",
    "restart": "Container restarted",
    "remove": "Container removed",
    "ran": "Container started from image",
    "leftoverRemoved": "Removed leftover container {{name}} after bind failure",
    "pulled": "Image pulled",
    "exec": "Ran allowlisted exec",
    "imageRemoved": "Image removed",
    "volumeCreated": "Volume created",
    "volumeRemoved": "Volume removed",
    "networkCreated": "Network created",
    "networkRemoved": "Network removed",
    "pruned": "Prune finished",
    "compose": {
      "up": "Compose project started",
      "down": "Compose project stopped",
      "restart": "Compose project restarted",
      "rm": "Compose project removed"
    },
    "engine": {
      "start": "docker.service started",
      "stop": "docker.service stopped",
      "restart": "docker.service restarted"
    }
  },
  "ui": {
    "whatYouGet": "What this page does",
    "whatYouGetLead": "Install Docker Engine once. After that you can run a single container, pull images, and see validator Compose stacks that already live on this host.",
    "capEngine": "Engine",
    "capEngineDesc": "One-click install of docker.io and docker-compose-v2. Start and stop docker.service here.",
    "capWork": "Containers and images",
    "capWorkDesc": "Pick a common image, pull it, run it, then read logs or inspect the container.",
    "capStacks": "Validator stacks",
    "capStacksDesc": "Multi-service stacks are validator Compose projects (yskval-*). This page does not accept YAML uploads.",
    "cardEngine": "Engine",
    "cardDisk": "Disk",
    "cardWork": "On this host",
    "compose": "Compose",
    "cgroup": "cgroup",
    "used": "Used",
    "free": "Free",
    "running": "Running",
    "images": "Images",
    "volumes": "Volumes",
    "networks": "Networks",
    "goImages": "Images",
    "goValidators": "Validator nodes",
    "imagePickHint": "Choose a common image. Use Other only when you need a different reference.",
    "imageCustom": "Other",
    "driver": "Driver",
    "driverLocalOnly": "This panel creates local volumes only.",
    "netDefaultDriver": "New networks use Docker’s default bridge driver.",
    "pruneWhat": "What to remove",
    "pruneAck": "I understand unused data will be deleted and cannot be restored",
    "pruneAckDesc": "Volume and system prune cannot be undone. Stopped containers and unused images are removed for the selected scope.",
    "pruneNow": "Prune now",
    "useMirrors": "Use registry mirrors",
    "useInsecure": "Allow insecure registries",
    "publishPorts": "Publish ports to the host",
    "attachVolume": "Attach a volume",
    "setEnv": "Set environment variables",
    "defaultNet": "Default",
    "mountPath": "Mount path",
    "restartNo": "Never",
    "restartUnless": "Unless stopped",
    "restartAlways": "Always",
    "restartOnFail": "On failure",
    "needAck": "Confirm before pruning",
    "scopeContainers": "Stopped containers",
    "scopeImages": "Unused images",
    "scopeVolumes": "Unused volumes",
    "scopeBuilder": "Build cache",
    "scopeSystem": "Everything unused",
    "noVolumesYet": "No volumes yet — create one on the Volumes tab first.",
    "command": "Command",
    "commandHint": "Optional. Tokens after the image. Leave blank to use the image CMD.",
    "entrypoint": "Entrypoint",
    "entrypointHint": "Optional single binary. Leave blank to use the image ENTRYPOINT.",
    "portMap": "host:container",
    "portOccupied": "This host port is already in use",
    "validatorImage": "Managed by validator nodes",
    "newVolume": "New named volume",
    "loopbackUrl": "Local test URL",
    "nginxProxy": "Create Nginx reverse proxy",
    "intentPorts": "Requested (not published)",
    "customPort": "Another host port",
    "customPortHost": "Host port",
    "customPortContainer": "Container port",
    "pctUsed": "{{n}}% used",
    "customPortHint": "1–65535. Example: 9090 → 80.",
    "pickBridge": "Bridge network"
  },
  "deleteTitle": "Delete {{id}}",
  "deleteDesc": "This cannot be undone.",
  "deleteC1": "The resource is removed from this host.",
  "deleteComposeVal": "This is a validator stack — the validator instance is also deleted.",
  "pruneTitle": "Prune Docker resources",
  "pruneDesc": "Type PRUNE to confirm. Unused data cannot be restored.",
  "pruneC1": "Unused resources in the selected scope are deleted.",
  "pruneC2": "Volume and system prune permanently delete unused data volumes.",
  "pruneC3": "Stopped containers or unused images in this scope are removed."
}
