{
  "alert": {
    "memory_high": "Memory high",
    "load_high": "Load high",
    "disk_high": "Disk high"
  },
  "loadFailed": "Failed to load metrics",
  "projectUsageFailed": "Failed to load project usage",
  "procListFailed": "Process list failed",
  "streamEnded": "Stream ended ({{reason}})",
  "streamOpenFailed": "Could not open stream",
  "signalFailed": "Signal failed",
  "detailFailed": "Could not load details",
  "alertCount": "{{count}} alert(s)",
  "attention": "Needs attention",
  "normal": "OK",
  "disk": "Disk",
  "alerts": "Alerts",
  "auto5s": "Auto 5s",
  "hostSettings": "Host settings",
  "loading": "Loading metrics…",
  "tabs": {
    "overview": "Overview",
    "live": "Live processes",
    "disk": "Disk",
    "projectUsage": "Project usage",
    "alerts": "Alerts"
  },
  "load": "Load",
  "load1m": "Load 1m",
  "uptime": "Uptime",
  "filterCpu5": "≥5% CPU",
  "filterMem5": "≥5% memory",
  "signalHint": "Select a process, then send TERM or KILL.",
  "signalFromRow": "Select this process for TERM / KILL",
  "selectForSignal": "Select",
  "forceKillTitleNamed": "KILL PID {{pid}} ({{cmd}})?",
  "sendSigTitleNamed": "Send TERM to PID {{pid}} ({{cmd}})?",
  "min1": "1m",
  "min5": "5m",
  "min15": "15m",
  "loadHint": "Relative to {{cpus}} CPUs; above 1.0× may queue.",
  "memory": "Memory",
  "total": "Total",
  "available": "Available",
  "mainDisk": "Root disk",
  "path": "Path",
  "diskReadFail": "Could not read disk",
  "viewAllMounts": "View all {{count}} mounts →",
  "nAlerts": "{{count}} alerts",
  "details": "Details",
  "noThresholdAlerts": "No memory / load / disk threshold alerts",
  "projectDisk": "Project disk (real du)",
  "viewAllProjectUsage": "View all project usage →",
  "loadProjectDisk": "Load project disk usage (real du) →",
  "followSse": "Follow (SSE)",
  "interval": "Interval",
  "sort": "Sort",
  "rows": "Rows",
  "onceQuery": "One-shot query",
  "procSearchPh": "Search PID / USER / COMMAND",
  "procSearchAria": "Search processes",
  "filterAll": "All",
  "filterMine": "Non-system",
  "selectedN": "{{count}} selected",
  "showOf": " · showing {{shown}}/{{total}}",
  "topLoading": "Loading top summary… (/proc/stat dual sample)",
  "topAria": "top summary",
  "perCore": "Per-core",
  "noPerCore": "No per-core data",
  "uptimeDays": "{{d}} days, {{h}}:{{m}}",
  "used": "Used",
  "free": "Free",
  "signal": "Signal",
  "kill": "Kill",
  "send": "Send",
  "procDetail": "Process detail",
  "refreshProc": "Refresh processes",
  "noProcs": "No processes",
  "noProcsFilter": "No processes match filters",
  "mounts": "Mounts",
  "fs": "Filesystem",
  "mount": "Mount",
  "size": "Size",
  "usage": "Usage",
  "project": "Project",
  "quota": "Quota",
  "ratio": "Share",
  "unlimited": "Unlimited",
  "noProjects": "No projects yet",
  "noProjectsDesc": "Create a project to see real home usage here",
  "usageNote": "Usage from local du (not estimated). Quota is a control-plane soft limit; hard setquota needs apply-to-host.",
  "thresholdAlerts": "Threshold alerts",
  "alertsBuiltinOnly": "Built-in CPU / memory / disk thresholds only. No email, webhook, or Slack channel.",
  "lastEvaluated": "Last checked",
  "alertsOkTitle": "All clear",
  "alertsOkDesc": "No memory / load / disk threshold alerts.",
  "cpu": "CPU",
  "command": "Command",
  "user": "User",
  "clearSelection": "Clear selection",
  "batchSignal": "Batch signal",
  "liveHint": "Live process list (SSE or poll). Signals need root + YSK_EXECUTE.",
  "signalTo": "Signal {{sig}} → PID {{pid}}",
  "procAlive": "Process still alive (kill -0 ok)",
  "procGone": "Process ended",
  "procTable": "Processes ({{count}}{{more}})",
  "procTableDesc": "ps list · select for TERM/KILL (needs YSK_EXECUTE)",
  "selectAllAria": "Select all filtered",
  "selectPidAria": "Select PID {{pid}}",
  "controlPlane": "Control plane",
  "controlPlaneNoSignal": "The control-plane process cannot be signalled",
  "protectedPid": "PID 1 / init / systemd cannot be signalled from the panel",
  "sigTermTitle": "Send SIGTERM (ask process to exit)",
  "sigKillTitle": "Send SIGKILL (force kill — cannot be caught)",
  "batchTerm": "TERM",
  "batchKill": "KILL",
  "rawTopLabel": "Raw top (untranslated)",
  "followSseLabel": "Follow (live stream)",
  "alertsReadOnly": "Built-in CPU / memory / disk thresholds only. No email, webhook, or Slack channel.",
  "alertsGoNotifications": "Open notification centre",
  "lastCheck": "Last check",
  "rawTopHint": "Untranslated top(1) output",
  "detailShort": "Info",
  "procUnavailable": "Could not get processes",
  "noProcData": "No process data yet",
  "noProcFilter": "No processes match filters",
  "clickOnceOrFollow": "Run one-shot query or enable follow",
  "liveFootnote": "Like SSH top: /proc/stat dual sample for %Cpu (per-core = top “1”), Mem/Swap, Tasks; process table from ps. Not an interactive PTY. Kill needs YSK_EXECUTE; PID 1 and control plane are protected by default.",
  "forceKillTitle": "Force kill PID {{pid}} (SIGKILL)",
  "sendSigTitle": "Send SIG{{sig}} to PID {{pid}}",
  "forceKillDesc": "Cannot be caught; may lose data. Command: {{cmd}}",
  "termDesc": "Process may clean up and exit. Command: {{cmd}}",
  "forceKillBtn": "Force KILL",
  "sendTermBtn": "Send TERM",
  "procPidTitle": "Process PID {{pid}}",
  "readingProc": "Reading /proc…",
  "applyRenice": "Apply renice",
  "reniceHint": "-20 highest · 19 lowest (needs EXECUTE)",
  "noData": "No data",
  "shareOfMeasured": "{{pct}}% of measured",
  "mountsTitle": "Disk mounts ({{count}})",
  "mountsDesc": "Real disk usage (temporary filesystems filtered)",
  "noMounts": "No mount list",
  "noMountsDesc": "df unavailable or filtered. Root disk still on Overview.",
  "seeProjectUsage": "Project home usage is on the Project usage tab (real du · {{size}})",
  "measuringDu": "Measuring project homes (du)…",
  "projectUsageTitle": "Project disk usage ({{count}})",
  "projectUsageDesc": "Real du · total {{total}} · {{at}}",
  "projectUsageDescEmpty": "Run du on each project home_dir",
  "remeasure": "Re-measure",
  "usageNoteFull": "Usage from local du (not estimated). Quota is a control-plane soft limit; hard setquota needs apply-to-host.",
  "sseNeedLogin": "Not logged in; cannot open SSE",
  "sseSessionExpired": "Not logged in or session expired; cannot open SSE",
  "sseHttpError": "stream HTTP {{status}}",
  "colFilesystem": "Filesystem",
  "colMount": "Mount",
  "colSize": "Size",
  "colUsed": "Used",
  "colAvail": "Available",
  "colUsePct": "Used %",
  "colHome": "Home",
  "usageNoteLink": "Control-plane soft quota. Apply hard limits on the project Isolation tab.",
  "shareNoQuotaHint": "No quota set, so share is not a percentage. Set a quota on the project Isolation tab.",
  "setQuotaLink": "Set quota",
  "unusualHome": "Unusual path",
  "unusualHomeHint": "Not a /home/… project home. Canonical isolation is /home/ysk-server-{id}."
}
