{
  "serviceSettings": "Service settings",
  "installedOk": "{{engine}} installed",
  "startedOk": "{{engine}} started",
  "installFirst": "Install {{engine}} first",
  "softwareMissing": "{{engine}} software is not installed",
  "serviceOverview": "Service overview",
  "readonlyStatus": "Read-only status",
  "readonlyProbe": "Read-only probe",
  "systemChange": "System changes",
  "opened": "Enabled",
  "notOpened": "Disabled",
  "admin": "Admin",
  "client": "Client",
  "hasClient": "Yes",
  "noClient": "No",
  "canProvision": "Can create DBs",
  "dumpOk": "Dump complete",
  "dumpFailed": "Dump failed",
  "noDumpToImport": "No dump file to import",
  "expiredTempUsersProcessed": "Expired temporary users processed",
  "dumpFirstDb": "Dump first DB",
  "importLatestDump": "Import latest dump",
  "cleanupExpiredTempUsers": "Clean expired temp users",
  "adminerEntry": "DB browser project",
  "browserProjectTitle": "Create DB browser project",
  "browserTool": "Tool",
  "browserNameHint": "Creates a PHP project; name must be unique",
  "browserNameTaken": "Project name already exists: {{name}}",
  "browserProjectCreated": "DB browser project created",
  "createBrowserProject": "Create project and deploy",
  "downloadPhpMyAdmin": "Download phpMyAdmin (needs system-change + network)",
  "createDatabase": "Create database",
  "installBannerHint": "Use the banner above to install {{engine}}.",
  "exclusiveMariaHint": "This host runs MariaDB. Use the MariaDB page or one-click switch (type SWITCH).",
  "exclusiveMysqlHint": "This host runs MySQL. Use the MySQL page or one-click switch (type SWITCH).",
  "openMaria": "MariaDB",
  "openMysql": "MySQL",
  "openMariaService": "MariaDB service",
  "openMysqlService": "MySQL service",
  "startService": "Start service",
  "openServiceConsole": "Open service console",
  "opsResult": "Ops result",
  "tempPasswordOnce": "Temporary read-only password (shown once):",
  "tabDatabases": "Databases ({{count}})",
  "tabUsers": "Users ({{count}})",
  "tabTemp": "Temp read-only ({{count}})",
  "tabRemote": "Remote hosts ({{count}})",
  "dbList": "Database list",
  "charset": "Charset",
  "noDatabasesYet": "No databases yet",
  "emptyDbInstallFirst": "Install {{engine}} via the banner, then Create database",
  "emptyDbCannotProvision": "Cannot create databases on the server right now",
  "emptyDbCreateHint": "Use Create database, then Apply",
  "emptyDbHostHasRows": "The host already has databases that are not in this control-plane list.",
  "registeredVsHostHint": "Registered in the panel / found on the host",
  "registeredCount": "Registered",
  "hostCount": "On host",
  "registeredUsers": "Registered users",
  "registeredUsersHint": "Panel registrations only — not every MySQL account",
  "hostStillExists": "Still on host",
  "expiresLabel": "Expires",
  "dumpNeedRegistered": "Register a database in the panel first",
  "dumpFirstDbTitle": "Export the first registered database",
  "importNeedRegistered": "Register a database in the panel first",
  "importLatestNeedConfirm": "Needs confirmation — imports into the registered database",
  "hostHasUntracked": "{{count}} host databases are not registered in the panel",
  "hostInventoryHint": "The table is control-plane rows only. Live names come from SHOW DATABASES.",
  "userList": "Users",
  "userListDesc": "Grant users access to databases",
  "createUserBtn": "+ Create user",
  "noUsersYet": "No users yet",
  "tempReadonlyUsers": "Temporary read-only users",
  "tempReadonlyDesc": "Expired accounts are dropped from the server when this page loads (needs EXECUTE + root). Rows left below still exist on the host.",
  "dbName": "Database name",
  "ttlHours": "TTL (hours)",
  "ttlHoursHint": "Marked invalid after expiry",
  "createReadonlyUser": "Create read-only user",
  "tempUserCreated": "Temporary read-only user created",
  "expiresAt": "Expires",
  "revokeRegistration": "Revoke registration",
  "remoteDbHosts": "Remote database hosts",
  "remoteDbHostsDesc": "Register connection targets (password not echoed back). Saved ≠ reachable until Test connection.",
  "remoteTest": "Test connection",
  "remoteTestDone": "Remote host probe finished",
  "remoteTestOk": "reachable",
  "remoteTestFail": "unreachable",
  "remoteNotChecked": "not tested",
  "remoteDeleteTitle": "Remove this registration only",
  "remoteDeleteConfirm": "Remove registration {{name}}? The remote server is not changed.",
  "displayName": "Display name",
  "prodReplicaPlaceholder": "Production replica",
  "remoteHostSaved": "Remote host saved",
  "createDbTitle": "Create {{engine}} database",
  "createDbDesc": "After control-plane registration, Apply to write on the server",
  "dbNameHint": "Lowercase alnum and underscore; apply to system after create",
  "alsoCreateUser": "Also create user",
  "alsoCreateUserDesc": "Create a login that can connect to this database",
  "passwordMin8": "At least 8 characters",
  "passwordMin8chars": "At least 8 characters",
  "allowConnectHost": "Allowed host",
  "allowConnectHostHint": "Often % (any) or localhost",
  "allowConnectHostHintShort": "Often % or localhost",
  "createDbHint": "Writes control-plane only; Apply runs CREATE DATABASE on the server.",
  "createUserTitle": "Create {{engine}} user",
  "createUserDesc": "Apply after create",
  "bindDatabase": "Bind database",
  "bindDatabaseHint": "Optional; grant privileges on this DB",
  "noneOption": "— none —",
  "importDumpTitle": "Import dump?",
  "importDumpDesc": "Import {{dump}} into {{db}}",
  "import": "Import",
  "importOk": "Import complete",
  "importFailed": "Import failed",
  "deleteDbTitle": "Remove control-plane registration (does not DROP the server database)",
  "deleteDbDesc": "Removes control-plane record only; does not DROP the server database.",
  "deleteUserTitle": "Delete user registration?",
  "deleteUserDesc": "Removes control-plane record only.",
  "adminerTitle": "Adminer database browser",
  "adminerDesc": "Download Adminer + write Nginx conf; apply to system runs nginx -t + reload",
  "adminerWritten": "Adminer written to management files",
  "adminerApplied": "Adminer applied",
  "writeOnly": "Write only (written)",
  "applyToSystem": "Apply to system",
  "adminerRisk": "Public Adminer is risky — restrict source IPs or add HTTP auth. Needs PHP-FPM socket (default php8.2).",
  "vhostName": "Virtual host name",
  "vhostHint": "Point DNS A to this host for external access",
  "downloadAdminer": "Download Adminer PHP (needs YSK_EXECUTE + outbound net)",
  "downloadAdminerDesc": "Off = use already downloaded file only",
  "adminerWriteHint": "Write only = management written;",
  "pgInstallBanner": "Install PostgreSQL via the banner first",
  "pgEmptyCreateHint": "After create, Apply to system to write on the server",
  "pgNoDbs": "No PostgreSQL databases yet",
  "pgCreateTitle": "Create PostgreSQL database",
  "pgCreateDesc": "Control-plane registration; Apply to system runs CREATE DATABASE",
  "pgAlsoCreateRole": "Also create role",
  "pgAlsoCreateRoleDesc": "Create a login role and grant this database",
  "roleName": "Role name",
  "roleHint": "PostgreSQL role / login user",
  "pgDeleteDbDesc": "Removes control-plane record (does not auto DROP unless a revoke apply is run).",
  "update": "Update",
  "alsoCreateRole": "Also create role",
  "cluster": {
    "standaloneOtherEngines": "This engine is standalone. Other engines have clusters: {{names}}.",
    "roleUnassigned": "No role assigned",
    "title": "Cluster",
    "description": "Plan → write management files → apply → probe → distribute to peers / fleet. Default is dry-run (no host restart).",
    "redirectedFromCluster": "You were redirected here from /cluster. This is the database cluster tab.",
    "notApplied": "Not applied",
    "plannedAt": "Created {{when}}",
    "clearStalePlans": "Clear stale plans",
    "clearStalePlansTitle": "Delete stale planned clusters?",
    "clearStalePlansDesc": "Deletes {{n}} planned/draft registration(s) older than 7 days. Does not apply or push. System conf is not touched.",
    "landingTitle": "Database cluster",
    "landingDesc": "All planned and applied database clusters on this host. Open an engine to create or apply.",
    "landingNoneInstalled": "MySQL, MariaDB, PostgreSQL, and Redis are not installed. Install an engine first.",
    "openEngine": "Open {{engine}}",
    "overviewPill": "Clusters {{n}}",
    "enginesInstalled": "Engines",
    "plannedCount": "Planned",
    "overviewList": "Clusters ({{count}})",
    "overviewEmpty": "No cluster registrations yet.",
    "engine": "Engine",
    "kind": "Kind",
    "members": "Members",
    "kindGalera": "Simple Galera",
    "kindMysqlReplica": "MySQL primary/replica",
    "kindPgReplica": "PostgreSQL streaming replica",
    "kindRedisReplica": "Redis primary/replica",
    "createGalera": "Create simple Galera",
    "createMysqlReplica": "Create primary/replica",
    "createPgReplica": "Create streaming replica",
    "createSentinel": "Create Sentinel",
    "createRedisReplica": "Create Redis replica",
    "needRealIps": "Enter real local and peer IPs/hostnames",
    "hostInvalid": "Enter a valid IPv4, IPv6, or hostname.",
    "statusNote": "Status: {{status}} (plan success ≠ cluster health)",
    "artifactNote": "Artifacts: {{dir}}",
    "planGenerated": "Plan generated (dry-run)",
    "planUpdated": "Plan updated",
    "manageWritten": "Management files written (dry-run)",
    "bootstrapTried": "Bootstrap attempted",
    "applyTried": "System conf apply attempted",
    "localOk": "Local OK",
    "localProbeFail": "Local probe failed",
    "probedWithPeers": "Probed (incl. peers)",
    "probedLocal": "Probed local",
    "peerTarNote": "Peer bundle downloaded (.tar.gz) — extract and install conf on peer",
    "downloaded": "Downloaded",
    "peerPushed": "Pushed to peer",
    "pushPlanGenerated": "Push plan generated",
    "registrationDeleted": "Registration deleted",
    "nodes": "Nodes",
    "remoteInstallPlan": "Remote install plan",
    "fleetSession": "Fleet agent session id",
    "fleetSessionHint": "Optional. Pick a registered fleet session (uses fleet, not SSH). Leave empty for SSH scp.",
    "fleetSessionPh": "Agents page session UUID",
    "fleetSessionNone": "None — use SSH",
    "fleetSessionOpenAgents": "Open /agents to register a session",
    "createWizardTitle": "Opens the plan wizard. Needs a local IP and ≥1 peer. Writes panel artifacts only (dry-run). Does not restart the engine until you apply.",
    "bootstrap": "Bootstrap",
    "fleetApply": "Fleet apply",
    "planTitle": "Regenerate the cluster plan (no host change)",
    "writeFileTitle": "Write management files under the panel data dir (dry-run)",
    "probeLocalTitle": "Probe this host only",
    "probeAllTitle": "Probe every registered member",
    "bootstrapTitle": "Install local drop-in and bootstrap the first node",
    "remoteInstallPlanTitle": "Preview remote install (no execute)",
    "downloadBundleTitle": "Download peer conf bundle (.tar.gz)",
    "pushPlanTitle": "Preview push to peer (no scp)",
    "fleetSyncPlanTitle": "Preview fleet sync (no execute)",
    "fleetApplyTitle": "Enqueue apply on fleet members?",
    "status": {
      "healthy": "Healthy",
      "planned": "Planned",
      "partial": "Partial",
      "failed": "Failed",
      "draft": "Draft",
      "degraded": "Degraded",
      "applied": "Applied"
    },
    "fleetSyncPlan": "Fleet sync plan",
    "standaloneTitle": "Currently: standalone",
    "standaloneRepl": "No replica registered. Set primary/master + replica to generate conf and scripts.",
    "standaloneHa": "No HA registered. Add at least one peer, generate a conf plan, then bootstrap the first node and join the others.",
    "recentProbe": "Recent probe (local wsrep)",
    "probeRequired": "healthy requires a passing probe",
    "planPreview": "Plan preview",
    "planPreviewDesc": "dry-run · success only means steps/conf generated",
    "files": "Files",
    "systemChangeNeed": "Required on apply",
    "planModalDesc": "Pick nodes → generate plan (does not change peer systems)",
    "generatePlan": "Generate plan",
    "clusterName": "Cluster name",
    "localIp": "Local IP / host",
    "primaryIpHint": "Control-plane host (primary/master + access=local)",
    "localIpHint": "Control-plane host (access=local)",
    "ipExample1": "e.g. 10.0.0.1",
    "ipExample2": "e.g. 10.0.0.2",
    "ipExample3": "e.g. 10.0.0.3",
    "replicaIp": "Replica IP / host",
    "peerIp": "Peer IP / host",
    "replicaHint": "Replica node",
    "peerHint": "Second node (Galera prefers 3)",
    "thirdNode": "3rd node (optional)",
    "thirdNodeHint": "Recommended for Galera / multi-replica",
    "sstMethod": "SST method",
    "forbidDemoIp": "No demo IPs (203.0.113.x).",
    "fwGalera": "Open internal 3306 / 4567 / 4444 / 4568.",
    "fwPg": "Streaming needs internal 5432; change CHANGE_ME passwords in scripts.",
    "fwRedis": "Redis internal 6379 (sentinel 26379).",
    "fwRepl": "Replicas need matching internal ports; change CHANGE_ME passwords.",
    "needExecuteRoot": "Applying system conf needs YSK_EXECUTE=1 + root.",
    "topology": "Topology: {{kind}}",
    "applyLocalTitle": "Apply local system conf?",
    "applyBootstrapDesc": "Installs Galera drop-in and bootstrap (galera_new_cluster)",
    "applyJoinDesc": "Installs Galera drop-in and systemctl restart mariadb",
    "confirmApply": "Confirm apply",
    "deleteClusterTitle": "Delete cluster registration {{name}} ({{engine}})?",
    "remoteInstallTitle": "Remote-install peer?",
    "pushTitle": "Push to peer?",
    "fleetSyncTitle": "Fleet sync?",
    "confirmOp": "Confirm",
    "deleteClusterDesc": "Delete the {{engine}} cluster registration “{{name}}”. System conf is not auto-cleared (v1).",
    "remoteInstallDesc": "Install conf + restart on peer. Needs YSK_EXECUTE + SSH.",
    "pushDesc": "scp files to peer /tmp?",
    "fleetSyncDesc": "Sync cluster snapshot to fleet edge, then apply.",
    "fleetApplyDesc": "Enqueue apply to fleet members.",
    "remoteInstalled": "Remote installed",
    "fleetSynced": "Fleet sync queued",
    "fleetApplyQueued": "Fleet apply queued",
    "engineNotInstalled": "{{engine}} is not installed on this host — install it first, or open the engine that is actually running.",
    "plan": "Plan",
    "writeFile": "Write files",
    "applyLocal": "Apply local",
    "probeAll": "Probe all nodes",
    "remoteInstall": "Remote install",
    "downloadBundle": "Download bundle",
    "pushPlan": "Push plan",
    "pushExecute": "Push execute",
    "fleetSync": "Fleet sync",
    "localConfPreview": "Local conf preview",
    "refresh": "Refresh",
    "close": "Close",
    "cancel": "Cancel",
    "delete": "Delete",
    "probe": "Probe",
    "name": "Name",
    "type": "Type"
  },
  "console": {
    "dataBrowse": "Browse data",
    "dbManage": "Database admin",
    "realtime": "Live",
    "reload": "Reload",
    "needRestart": "Restart required",
    "affectsProjects": "Sites and services that use this engine will be interrupted.",
    "lifecycle": "Lifecycle",
    "overview": "Overview",
    "actionDone": "{{action}} done",
    "installDone": "Install complete",
    "noChanges": "Nothing to apply",
    "settingsApplied": "Settings applied",
    "notReadFromService": "Not read from service",
    "applyMode": "Apply mode: {{mode}}",
    "dirtyNotApplied": "Modified, not applied",
    "highRisk": "High-risk settings",
    "engine": "Engine",
    "bootEnabled": "Start on boot",
    "uptimeSec": "Uptime (s)",
    "currentConnections": "Connections",
    "changes": "Changes",
    "serviceTitle": "{{title}} service",
    "softwareMissing": "{{title}} software is not installed",
    "overviewDesc": "Read-only info from probe (not form fields)",
    "lifecycleDesc": "Install, start, stop, and enable on boot",
    "about": "About",
    "cluster": "Cluster",
    "noSettings": "No settings in this category (or unsupported in this version)",
    "applyHint": "Live can change online;",
    "applyCategory": "Apply category",
    "applyAll": "Apply all changes",
    "applyCatCount": "Apply category ({{n}})",
    "applyAllCount": "Apply all ({{n}})",
    "lifecycleNote": "On Settings, Live changes online; restart-required needs Lifecycle restart after apply.",
    "installEngine": "Use the banner above to install {{title}}.",
    "reloadConfig": "Reload config",
    "disableBoot": "Disable on boot",
    "disableBootConfirm": "The engine will not start after reboot until you enable it again.",
    "needRights": "Needs system-change rights and admin. Failures show reasons — never fake success.",
    "noneFetched": "— none —"
  },
  "expiresLabel": "Expires",
  "importEntry": "Entry: {{url}}",
  "adminerRiskFull": "Public Adminer is risky — restrict source IPs or add HTTP auth. Needs PHP-FPM socket (default php8.2).",
  "adminerWriteHintFull": "Write only = management written;",
  "pgInstalled": "PostgreSQL installed",
  "pgStarted": "PostgreSQL started",
  "notInstalledShort": "Not installed",
  "serviceConsole": "Service console",
  "installPgFirst": "Install PostgreSQL first",
  "pgSoftwareMissing": "PostgreSQL software is not installed",
  "installPgBanner": "Use the banner above to install PostgreSQL.",
  "createPlus": "+ Create",
  "dbNameHintPg": "Lowercase alnum and underscore; apply after create",
  "deleteNotePg": "Deleting registration does not DROP the server DB; apply success means DDL ran on host.",
  "tabDatabasesSimple": "Databases ({{count}})",
  "frozenTitle": "Database service needs repair",
  "frozenBody": "Issues detected (freeze mode: {{mode}};",
  "unfreezeBtn": "Diagnose and repair",
  "unfreezeConfirmTitle": "Repair {{engine}}?",
  "unfreezeConfirmDesc": "Runs a generic repair plan from diagnostics (stop, clear freeze, sanitize config, init emp",
  "unfreezeConfirmBtn": "Confirm repair",
  "unfreezeOk": "{{engine}} repair complete",
  "startAfterUnfreeze": "Start service (auto-runs repair plan on failure)",
  "serviceDownTitle": "Database service is down",
  "serviceDownBody": "Service is unhealthy",
  "adoptHostDb": "Register in panel (no create): {{name}}",
  "adoptHostDbTitle": "Registers the name in the control plane only — does not change host data",
  "cleanupExpiredTempUsersTitle": "Drops panel-issued temporary users that have expired",
  "invalidSqlIdent": "Use a lowercase identifier: start with a letter, then letters, digits, or underscore.",
  "remoteHostRequired": "Enter a remote host.",
  "remoteTestUnsaved": "Save this host first, then Test connection. Or fill host and save.",
  "serverNotInstalled": "This engine is not installed on the server.",
  "dumpNeedEngine": "Install the engine before exporting a database.",
  "unboundDatabase": "Database registration removed",
  "userGoneRefresh": "That user is gone. The list was refreshed."
}
