mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-13 02:26:36 +08:00
chore(i18n): simplify cleanup and previewPublish labels in ops files
This commit is contained in:
@@ -1,673 +0,0 @@
|
||||
{
|
||||
"dashboard": {
|
||||
"title": "Overview",
|
||||
"generatedAt": "Generated at {time}",
|
||||
"refresh": "Refresh",
|
||||
"loadingTitle": "Loading overview",
|
||||
"loadingDesc": "Aggregating node health, traffic, and capacity metrics...",
|
||||
"loadFailed": "Failed to load overview: {error}",
|
||||
"emptyTitle": "No overview data",
|
||||
"emptyDesc": "The system is running, but there is no aggregated overview to show yet.",
|
||||
"requestFailed": "Request failed. Please try again later.",
|
||||
"stats": {
|
||||
"requests24h": "24h requests",
|
||||
"requestsMeta": "24h unique visitors {visitors} · errors {errors} · estimated QPS {qps}",
|
||||
"clusterCapacity": "Cluster capacity",
|
||||
"avgMemoryHighLoad": "Avg memory {memory} · high-load nodes CPU {cpu} / memory {memoryNodes} / storage {storage}",
|
||||
"nodeOverview": "Node overview",
|
||||
"onlineOf": "/ {total} online",
|
||||
"pending": "Pending {count}",
|
||||
"unhealthyOffline": "Unhealthy {unhealthy} · offline {offline}"
|
||||
},
|
||||
"world": {
|
||||
"title": "Global stage",
|
||||
"description": "Summarizes node distribution, source-country heat, and recent runtime status.",
|
||||
"legendSource": "Source",
|
||||
"legendHealthy": "Healthy",
|
||||
"legendPressure": "Under load",
|
||||
"legendUnhealthy": "Unhealthy",
|
||||
"modeVisitorSource": "Visitor sources",
|
||||
"modeNodeCoords": "Node coordinates",
|
||||
"modeCoverage": "Coverage signal",
|
||||
"onlineCoverage": "Online coverage",
|
||||
"onlineHint": "{online}/{total} online",
|
||||
"runHealth": "Runtime health",
|
||||
"unhealthyCount": "{count} unhealthy",
|
||||
"requests24h": "24h requests",
|
||||
"qpsReported": "QPS {qps} · {count} nodes reporting",
|
||||
"nodeCoords": "Node coordinates",
|
||||
"sourceCountries": "{count} source countries",
|
||||
"fallbackPins": "Preset pins are used when coordinates are missing",
|
||||
"avgCpu": "Avg CPU",
|
||||
"highCount": "{count} high",
|
||||
"avgMemory": "Avg memory",
|
||||
"highStorage": "High storage",
|
||||
"offlinePending": "{offline} offline · {pending} pending",
|
||||
"mapPreparing": "Preparing map",
|
||||
"mapPreparingDesc": "Loads when it enters the viewport",
|
||||
"noNodesOverlay": "No nodes yet. Geographic distribution will appear after nodes join."
|
||||
},
|
||||
"map": {
|
||||
"sourceRequests": "Source requests in the last 24 hours {count}",
|
||||
"presetPin": "Preset pin",
|
||||
"requestsErrors": "Requests {requests} · errors {errors}",
|
||||
"eventsStatus": "Active events {events} · node status {status}",
|
||||
"openrestyStatus": "OpenResty status {status}",
|
||||
"loadFailed": "Failed to load world map",
|
||||
"loading": "Loading world map",
|
||||
"loadFailedDesc": "The ECharts world map failed to register. Refresh and try again.",
|
||||
"loadingDesc": "Initializing the world map after the first screen is ready.",
|
||||
"measuring": "Measuring map container size..."
|
||||
},
|
||||
"trafficTrend": {
|
||||
"title": "24-hour request trend",
|
||||
"description": "Hourly request totals and 2xx/4xx/5xx counts to spot abnormal status spikes.",
|
||||
"summaryHint": "Last 24 hours",
|
||||
"requests": "Requests",
|
||||
"status2xx": "2xx requests",
|
||||
"status4xx": "4xx requests",
|
||||
"status5xx": "5xx requests"
|
||||
},
|
||||
"capacityTrend": {
|
||||
"title": "24-hour capacity trend",
|
||||
"description": "Hourly CPU and memory usage to see whether cluster capacity stays tight.",
|
||||
"avgCpu": "Avg CPU",
|
||||
"avgMemory": "Avg memory"
|
||||
},
|
||||
"trafficCapacity": {
|
||||
"title": "24-hour traffic and capacity trend",
|
||||
"networkHint": "Last 24 hours · from access logs",
|
||||
"received": "Data received",
|
||||
"provided": "Data served",
|
||||
"capacityHint": "Last 24 hours · host capacity · average"
|
||||
},
|
||||
"distributions": {
|
||||
"sourceTitle": "Source distribution",
|
||||
"sourceDesc": "Top source countries over the last 24 hours.",
|
||||
"sourceEmpty": "No source distribution data",
|
||||
"statusTitle": "Status code distribution",
|
||||
"statusDesc": "Check whether successful responses still dominate and whether errors are rising.",
|
||||
"statusEmpty": "No status code distribution",
|
||||
"httpLabel": "HTTP {code}",
|
||||
"domainTitle": "Top Domain",
|
||||
"domainDesc": "See which domains concentrate most of the traffic.",
|
||||
"domainEmpty": "No domain distribution"
|
||||
},
|
||||
"nodeHealth": {
|
||||
"title": "Node health",
|
||||
"description": "Sorted by active incidents and resource pressure.",
|
||||
"openNodes": "Open nodes",
|
||||
"emptyTitle": "No nodes",
|
||||
"emptyDesc": "After nodes join, this list will show health and capacity summaries.",
|
||||
"colNode": "Node",
|
||||
"colStatus": "Status",
|
||||
"colCpuMem": "CPU / Memory",
|
||||
"colReqErr": "Requests / Errors",
|
||||
"colEvents": "Active incidents",
|
||||
"colHeartbeat": "Last heartbeat",
|
||||
"colActions": "Actions",
|
||||
"noGeo": "Map point not configured",
|
||||
"wsConnected": "WS connected",
|
||||
"na": "N/A",
|
||||
"detail": "Details"
|
||||
},
|
||||
"nodeRank": {
|
||||
"title": "Top nodes",
|
||||
"traffic": "Highest traffic",
|
||||
"trafficEmpty": "No traffic ranking",
|
||||
"pressure": "Highest capacity pressure",
|
||||
"pressureEmpty": "No capacity pressure data"
|
||||
}
|
||||
},
|
||||
"nodes": {
|
||||
"title": "Nodes",
|
||||
"applyLogs": "Apply logs",
|
||||
"create": "Add node",
|
||||
"listTitle": "Node list",
|
||||
"refreshNow": "Refresh now",
|
||||
"loadingList": "Loading nodes...",
|
||||
"emptyAll": "No nodes yet. Create one to get started.",
|
||||
"emptyFilter": "No nodes match the current filter",
|
||||
"updated": "Node updated",
|
||||
"created": "Node created",
|
||||
"deleted": "Node deleted",
|
||||
"deleteTitle": "Delete node",
|
||||
"deleteDesc": "Delete node “{name}”? You will need to recreate and rejoin it.",
|
||||
"deleting": "Deleting...",
|
||||
"confirmDelete": "Delete",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"refresh": "Refresh",
|
||||
"detail": "Details",
|
||||
"na": "N/A",
|
||||
"wsConnected": "WS connected",
|
||||
"wsEstablished": "WebSocket connection established",
|
||||
"requestFailed": "Request failed. Please try again later.",
|
||||
"unknown": "Unknown",
|
||||
"running": "Running",
|
||||
"liveConfig": "Live config",
|
||||
"notApplied": "Not applied",
|
||||
"enabled": "Enabled",
|
||||
"manual": "Manual",
|
||||
"lockedSuffix": " (locked)",
|
||||
"noGeo": "Map point not configured",
|
||||
"notConfigured": "Not configured",
|
||||
"ipLine": "IP: {ip}",
|
||||
"locationLine": "Location: {location}",
|
||||
"backToList": "Back to nodes",
|
||||
"missingId": "Missing node ID. Open details from the node list.",
|
||||
"loadingDetail": "Loading node details...",
|
||||
"notFound": "Node not found. It may have been deleted or the ID is invalid.",
|
||||
"syncing": "Syncing...",
|
||||
"forceSync": "Force sync",
|
||||
"dispatching": "Dispatching...",
|
||||
"viewUpgrade": "View upgrade",
|
||||
"tabOverview": "Overview",
|
||||
"tabManage": "Status & deploy",
|
||||
"kpiNodeId": "Node ID",
|
||||
"kpiLastSeen": "Last heartbeat",
|
||||
"kpiCurrentConfig": "Current config",
|
||||
"filter": {
|
||||
"all": "All nodes",
|
||||
"descAll": "Showing all nodes.",
|
||||
"descRelay": "Showing Relay nodes only.",
|
||||
"descTunnel": "Showing Tunnel nodes only.",
|
||||
"descEdge": "Showing Edge nodes only."
|
||||
},
|
||||
"status": {
|
||||
"online": "Online",
|
||||
"pending": "Pending",
|
||||
"offline": "Offline",
|
||||
"running": "Running",
|
||||
"wsConnected": "WS connected"
|
||||
},
|
||||
"apply": {
|
||||
"success": "Success",
|
||||
"warning": "Warning",
|
||||
"failed": "Failed",
|
||||
"none": "N/A"
|
||||
},
|
||||
"health": {
|
||||
"healthy": "Healthy",
|
||||
"unhealthy": "Unhealthy",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"relative": {
|
||||
"justNow": "Just now",
|
||||
"minutesAgo": "{count} minutes ago",
|
||||
"hoursAgo": "{count} hours ago",
|
||||
"daysAgo": "{count} days ago",
|
||||
"monthsAgo": "{count} months ago"
|
||||
},
|
||||
"uptime": {
|
||||
"daysHours": "{days}d {hours}h",
|
||||
"hoursMinutes": "{hours}h {minutes}m",
|
||||
"minutes": "{minutes}m"
|
||||
},
|
||||
"channel": {
|
||||
"preview": "preview",
|
||||
"stable": "stable"
|
||||
},
|
||||
"table": {
|
||||
"node": "Node",
|
||||
"status": "Status",
|
||||
"version": "Version",
|
||||
"runHealth": "Runtime health",
|
||||
"currentVersion": "Current version",
|
||||
"latestApply": "Latest apply",
|
||||
"lastSeen": "Last heartbeat",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"editor": {
|
||||
"editTitle": "Edit node",
|
||||
"createTitle": "Add node",
|
||||
"description": "After creating a node, open its details for a dedicated token and deploy command.",
|
||||
"nodeType": "Node type",
|
||||
"typeEdge": "Edge node",
|
||||
"typeRelay": "Relay node",
|
||||
"typeTunnel": "Tunnel node",
|
||||
"name": "Node name",
|
||||
"namePlaceholder": "e.g. edge-hk-01",
|
||||
"ip": "Node IP",
|
||||
"ipPlaceholder": "Optional; reported automatically after join",
|
||||
"lockIp": "Lock IP",
|
||||
"lockIpDesc": "When enabled, the control plane will not overwrite the IP",
|
||||
"autoUpdate": "Auto-update Agent",
|
||||
"autoUpdateDesc": "When enabled, the node pulls stable updates automatically",
|
||||
"bindPort": "Bind port",
|
||||
"vhostPort": "VHost port",
|
||||
"manualGeo": "Manual map point",
|
||||
"manualGeoDesc": "Used on the overview map",
|
||||
"geoName": "Location name",
|
||||
"latitude": "Latitude",
|
||||
"longitude": "Longitude",
|
||||
"saving": "Saving...",
|
||||
"saveEdit": "Save changes",
|
||||
"createAction": "Add node",
|
||||
"errName": "Enter a node name",
|
||||
"errLockIp": "A node IP is required when IP is locked",
|
||||
"errBindPort": "Enter a valid bind port",
|
||||
"errVhostPort": "Enter a valid VHost port"
|
||||
},
|
||||
"install": {
|
||||
"edgeTitle": "Edge node deploy",
|
||||
"edgeDesc": "Use the Agent Token to join an edge node to the control plane.",
|
||||
"relayTitle": "Relay deploy command",
|
||||
"relayDesc": "Use the Discovery Token to join an frps relay node to the control plane.",
|
||||
"tunnelTitle": "Tunnel deploy command",
|
||||
"tunnelDesc": "Use the Tunnel Token to join an openflared client to the control plane.",
|
||||
"agentToken": "Agent Token",
|
||||
"discoveryToken": "Discovery Token",
|
||||
"tunnelToken": "Tunnel Token",
|
||||
"scriptLabel": "One-line script (Linux / macOS)",
|
||||
"dockerLabel": "Docker container deploy",
|
||||
"copyFailed": "Copy failed. Select the command text manually.",
|
||||
"copiedScript": "Deploy script copied",
|
||||
"copiedDocker": "Docker deploy command copied",
|
||||
"copyScript": "Copy script",
|
||||
"copyDocker": "Copy Docker",
|
||||
"nodeId": "Node ID",
|
||||
"serverUrl": "Server URL (control plane)",
|
||||
"serverUrlHint": "The script and container will use this address to reach the OpenFlare control plane.",
|
||||
"noToken": "This node has no access token yet. Refresh later.",
|
||||
"needServerUrl": "Enter a valid Server URL to generate the deploy command."
|
||||
},
|
||||
"update": {
|
||||
"title": "Agent upgrade",
|
||||
"description": "Check GitHub releases and dispatch an upgrade. The node runs it after the next heartbeat.",
|
||||
"currentVersion": "Current version",
|
||||
"channel": "Release channel",
|
||||
"updateStatus": "Update status",
|
||||
"waitingPreview": "Waiting for preview update",
|
||||
"waitingUpdate": "Waiting for update",
|
||||
"notRequested": "Not dispatched",
|
||||
"checking": "Checking releases...",
|
||||
"hasUpdate": "Update available",
|
||||
"upToDate": "Already up to date",
|
||||
"previewRelease": "Preview release",
|
||||
"stableRelease": "Stable release",
|
||||
"targetVersion": "Target version",
|
||||
"notFound": "Not found",
|
||||
"publishedAt": "Published",
|
||||
"noNotes": "No release notes",
|
||||
"viewRelease": "View release",
|
||||
"checkStable": "Check stable",
|
||||
"checkPreview": "Check preview",
|
||||
"upgradePreview": "Upgrade to preview",
|
||||
"upgradeStable": "Upgrade to stable"
|
||||
},
|
||||
"edge": {
|
||||
"upgrade": "Upgrade Agent",
|
||||
"restartOpenresty": "Restart OpenResty",
|
||||
"runStatus": "Runtime status",
|
||||
"runStatusDesc": "Node online state and OpenResty health",
|
||||
"openrestyHealth": "OpenResty health",
|
||||
"lastSeen": "Last heartbeat",
|
||||
"ip": "IP address",
|
||||
"geo": "Map point",
|
||||
"syncTitle": "Config sync",
|
||||
"syncDesc": "Version catch-up and latest apply result",
|
||||
"currentVersion": "Current config version",
|
||||
"latestApply": "Latest apply",
|
||||
"latestApplyAt": "Latest apply time",
|
||||
"agentVersion": "Agent version",
|
||||
"nginxVersion": "Nginx version",
|
||||
"autoUpdate": "Auto update",
|
||||
"runtimeMessages": "Runtime messages",
|
||||
"runtimeMessagesDesc": "Status notes reported by OpenResty and Agent",
|
||||
"openrestyMessage": "OpenResty status message",
|
||||
"noExtraError": "No extra error reported.",
|
||||
"restartPending": "Waiting for the node to restart OpenResty after the next heartbeat.",
|
||||
"kpiAgent": "Agent version",
|
||||
"connectionHint": "Current OpenResty connections",
|
||||
"toastUpdated": "Node updated",
|
||||
"toastForceSync": "Force-sync dispatched to node {name}",
|
||||
"toastRestart": "OpenResty restart dispatched to node {name}",
|
||||
"toastUpgrade": "{channel} upgrade dispatched to node {name}",
|
||||
"toastDeleted": "Node deleted"
|
||||
},
|
||||
"relay": {
|
||||
"upgrade": "Upgrade Relay",
|
||||
"runStatus": "Relay runtime",
|
||||
"runStatusDesc": "frps online state and load summary",
|
||||
"health": "Relay health",
|
||||
"connections": "Active connections / proxies",
|
||||
"portsTitle": "Network ports",
|
||||
"portsDesc": "frps control plane and HTTP vhost settings",
|
||||
"bindPort": "Control bind port",
|
||||
"vhostPort": "VHost HTTP port",
|
||||
"agentAddr": "Agent access address",
|
||||
"relayVersion": "Relay version",
|
||||
"frpsVersion": "frps core version",
|
||||
"webuiTitle": "FRPS WebUI",
|
||||
"webuiDesc": "Enable the built-in frps web console and set its listen port",
|
||||
"enableWebui": "Enable web console",
|
||||
"enableWebuiHint": "When on, the node starts the built-in frps admin service.",
|
||||
"webuiPort": "Web console port",
|
||||
"webuiPortPlaceholder": "e.g. 17500",
|
||||
"actualPort": "Currently listening on {port} (takes effect on the next heartbeat; default is bind port + 500).",
|
||||
"openWebui": "Open FRPS WebUI",
|
||||
"copiedLink": "Link copied",
|
||||
"copyLink": "Copy link",
|
||||
"webuiDisabled": "WebUI is disabled or the bind port is not set.",
|
||||
"metadata": "Node metadata",
|
||||
"createdAt": "Created",
|
||||
"updatedAt": "Updated",
|
||||
"kpiFrps": "frps core",
|
||||
"connectionHint": "Relay active connections",
|
||||
"invalidPort": "Port must be between 1 and 65535",
|
||||
"portSaveFailed": "Failed to update port",
|
||||
"toastPortSaved": "FRPS WebUI port updated",
|
||||
"toastUpdated": "Relay node updated",
|
||||
"toastWebui": "FRPS WebUI setting updated",
|
||||
"toastForceSync": "Force-sync dispatched to relay {name}",
|
||||
"toastUpgrade": "{channel} upgrade dispatched to relay {name}",
|
||||
"toastDeleted": "Relay node deleted",
|
||||
"deleteTitle": "Delete relay node",
|
||||
"deleteDesc": "Delete relay node “{name}”? You will need to recreate and rejoin it."
|
||||
},
|
||||
"tunnel": {
|
||||
"upgrade": "Upgrade openflared",
|
||||
"runStatus": "Tunnel runtime",
|
||||
"runStatusDesc": "openflared connection and online state",
|
||||
"flaredStatus": "flared status",
|
||||
"autoUpdate": "Auto update",
|
||||
"syncTitle": "Config sync",
|
||||
"syncDesc": "Tunnel client config catch-up",
|
||||
"currentVersion": "Current config version",
|
||||
"latestApply": "Latest apply",
|
||||
"latestApplyAt": "Latest apply time",
|
||||
"fileCount": "Synced files",
|
||||
"fileCountValue": "{count}",
|
||||
"upgradeStatus": "Upgrade status",
|
||||
"credentials": "Join credentials",
|
||||
"credentialsDesc": "Token required by the tunnel client",
|
||||
"tunnelToken": "Tunnel Token",
|
||||
"createdAt": "Created",
|
||||
"updatedAt": "Updated",
|
||||
"kpiOpenflared": "openflared",
|
||||
"connectionHint": "Tunnel concurrent connections",
|
||||
"toastUpdated": "Tunnel node updated",
|
||||
"toastForceSync": "Force-sync dispatched to tunnel {name}",
|
||||
"toastUpgrade": "{channel} upgrade dispatched to tunnel {name}",
|
||||
"toastDeleted": "Tunnel node deleted",
|
||||
"deleteTitle": "Delete tunnel node",
|
||||
"deleteDesc": "Delete tunnel node “{name}”? You will need to recreate and rejoin it."
|
||||
},
|
||||
"obs": {
|
||||
"hostname": "Hostname",
|
||||
"os": "Operating system",
|
||||
"kernelArch": "Kernel / arch",
|
||||
"uptime": "Uptime",
|
||||
"cpu": "CPU",
|
||||
"cpuCores": "{count} cores",
|
||||
"totalMemory": "Total memory",
|
||||
"totalStorage": "Total storage",
|
||||
"reportedAt": "Reported at",
|
||||
"eventsTitle": "Health event timeline",
|
||||
"eventsDesc": "Keeps active and recovered events to help judge runtime health.",
|
||||
"cleanupLogs": "Clean logs",
|
||||
"filterAll": "All events",
|
||||
"filterActive": "Active",
|
||||
"filterResolved": "Recovered",
|
||||
"filterEmpty": "No health events for this filter.",
|
||||
"noMessage": "No detailed message",
|
||||
"firstTriggered": "First triggered:",
|
||||
"lastTriggered": "Last triggered:",
|
||||
"resolvedAt": "Recovered:",
|
||||
"noEvents": "This node has not reported any health events yet.",
|
||||
"cleaned": "Cleaned {count} health event logs",
|
||||
"nothingToClean": "No health event logs to clean",
|
||||
"loading": "Loading observability data...",
|
||||
"diag": "Runtime diagnosis",
|
||||
"activeIssues": "{count} active incidents",
|
||||
"stable": "Stable",
|
||||
"noActiveEvents": "No active health events",
|
||||
"systemCore": "System core",
|
||||
"uptimeFromProfile": "From the node system profile",
|
||||
"profileTitle": "System profile",
|
||||
"profileDesc": "Host and hardware info reported by the node",
|
||||
"noProfile": "The node has joined but has not reported a full system profile yet.",
|
||||
"noProfileLong": "The node has joined but has not reported a full system profile yet.",
|
||||
"snapshotTitle": "Live resource snapshot",
|
||||
"snapshotDesc": "Latest metrics report",
|
||||
"realtimeResources": "Live resources",
|
||||
"memory": "Memory",
|
||||
"storage": "Storage",
|
||||
"connections": "Connections",
|
||||
"snapshotAgo": "Snapshot {time}",
|
||||
"noSnapshot": "The node has joined but has not reported a resource snapshot yet.",
|
||||
"noSnapshotLong": "The node has joined but has not reported a resource snapshot yet.",
|
||||
"cleanupTitle": "Clean health event logs",
|
||||
"cleanupDesc": "This deletes all health diagnosis history recorded for this node on the control plane. New events will still be reported.",
|
||||
"cleaning": "Cleaning...",
|
||||
"confirmCleanup": "Clean",
|
||||
"windowRequests": "Window requests",
|
||||
"windowVisitorsHint": "Window unique visitors {visitors} · error rate {rate}%",
|
||||
"noWindowSummary": "No request window summary",
|
||||
"capacityPressure": "Capacity pressure",
|
||||
"needsAttention": "Needs attention",
|
||||
"normalRange": "Normal",
|
||||
"cpuStorage": "CPU {cpu} · storage {storage}",
|
||||
"noResourceSnapshot": "No resource snapshot",
|
||||
"sourceSignal": "Source signal",
|
||||
"requestTimes": "{count} requests",
|
||||
"noSourceDist": "No source distribution data",
|
||||
"systemInfo": "System info",
|
||||
"networkTraffic": "Network traffic",
|
||||
"noActiveIssue": "No active incidents",
|
||||
"openrestyConn": "OpenResty connections",
|
||||
"currentConn": "Current connections:",
|
||||
"throughputHint": "See access-log trends for business throughput (served / received)",
|
||||
"windowVisitors": "Window unique visitors",
|
||||
"reqQps": "Requests {requests} · estimated QPS {qps}",
|
||||
"noTrafficSummary": "No window traffic summary",
|
||||
"windowErrors": "Window errors",
|
||||
"errorRate": "Error rate {rate}%",
|
||||
"noErrorSummary": "No error-rate summary",
|
||||
"noNetworkSnapshot": "The node has joined but has not reported a network traffic snapshot yet.",
|
||||
"trafficTrendDesc": "Hourly request and error counts for this node.",
|
||||
"capacityTrendDesc": "CPU and memory usage for this node over 24 hours.",
|
||||
"structureTitle": "Request structure",
|
||||
"structureDesc": "Last 24 hours: which status codes and domains concentrate traffic and errors.",
|
||||
"mainStatus": "Top status code",
|
||||
"times": "{count} times",
|
||||
"noStatusDist": "No status code distribution",
|
||||
"topDomain": "Top Domain",
|
||||
"noDomainDist": "No domain distribution",
|
||||
"resolvedEvents": "Recovered events",
|
||||
"resolvedHint": "Health events recovered in the last 24 hours",
|
||||
"statusDist": "Status code distribution",
|
||||
"distEmpty": "No distribution data",
|
||||
"unknownLabel": "Unknown"
|
||||
},
|
||||
"networkTrend": {
|
||||
"title": "24-hour network trend",
|
||||
"description": "Hourly data served / received from access logs; summary is the last-24h total.",
|
||||
"summaryHint": "Last 24 hours",
|
||||
"received": "Data received",
|
||||
"provided": "Data served"
|
||||
},
|
||||
"diskIo": {
|
||||
"title": "24-hour disk IO trend",
|
||||
"description": "Hourly disk read/write rate (B/s) to spot log amplification, cache jitter, or disk pressure.",
|
||||
"summaryHint": "Last 24 hours · average rate",
|
||||
"read": "Disk read",
|
||||
"write": "Disk write"
|
||||
}
|
||||
},
|
||||
"performance": {
|
||||
"title": "Performance",
|
||||
"description": "Manage global OpenResty performance settings. Saving enters the unified config publish flow.",
|
||||
"preview": "View config preview",
|
||||
"saved": "Performance settings saved",
|
||||
"saveFailed": "Save failed",
|
||||
"loadingAuth": "Loading permissions...",
|
||||
"forbiddenTitle": "Insufficient permissions",
|
||||
"forbiddenDesc": "Only administrators can access performance settings.",
|
||||
"loading": "Loading performance settings...",
|
||||
"runtimeTitle": "Connections and events",
|
||||
"runtimeDesc": "Workers, timeouts, and request body size",
|
||||
"proxyTitle": "Proxy buffers and timeouts",
|
||||
"proxyDesc": "Upstream connections, buffers, and WebSocket/HTTP3 switches",
|
||||
"gzipTitle": "Compression",
|
||||
"cacheTitle": "Cache",
|
||||
"cacheDesc": "Single-node reverse-proxy cache",
|
||||
"errors": {
|
||||
"workerProcesses": "worker_processes must be auto or an integer greater than 0",
|
||||
"timeouts": "Timeout and connection values must be integers greater than 0",
|
||||
"statusCode": "Default server return status must be between 100 and 999",
|
||||
"bodySize": "Invalid client_max_body_size format",
|
||||
"headerBuffers": "large_client_header_buffers must look like \"4 16k\"",
|
||||
"proxyTimeouts": "Proxy timeouts must be integers greater than 0 seconds",
|
||||
"proxyBuffers": "proxy_buffers must look like \"16 16k\"",
|
||||
"bufferSize": "Buffer sizes must be integers or values with k/m/g units",
|
||||
"gzipMinLength": "gzip_min_length must be an integer greater than 0",
|
||||
"gzipLevel": "gzip_comp_level must be between 1 and 9",
|
||||
"cachePath": "proxy_cache_path is required when cache is enabled",
|
||||
"cacheFormat": "Invalid cache levels, inactive, max_size, or lock_timeout format",
|
||||
"cacheKey": "A cache key template is required when cache is enabled"
|
||||
}
|
||||
},
|
||||
"applyLogs": {
|
||||
"title": "Apply logs",
|
||||
"description": "Inspect successful, warning, and failed config applies. Filter by node_id.",
|
||||
"refresh": "Refresh",
|
||||
"clear": "Clear logs",
|
||||
"backToNodes": "Back to nodes",
|
||||
"totalRecords": "Total records",
|
||||
"currentPage": "Current page",
|
||||
"totalPages": "Total pages",
|
||||
"pageNodes": "Nodes on this page",
|
||||
"nodeId": "Node ID",
|
||||
"nodePlaceholder": "Filter apply logs by node_id",
|
||||
"pageSize": "Page size",
|
||||
"pageSizeOption": "{count}",
|
||||
"filter": "Filter",
|
||||
"reset": "Reset filters",
|
||||
"emptyTitle": "No apply logs",
|
||||
"emptyDesc": "No apply records match the current filters.",
|
||||
"colNodeId": "Node ID",
|
||||
"colVersion": "Version",
|
||||
"colResult": "Result",
|
||||
"colChecksum": "Checksum",
|
||||
"colTime": "Time",
|
||||
"colMessage": "Message",
|
||||
"colActions": "Actions",
|
||||
"detail": "Details",
|
||||
"pageInfo": "Page {current} / {total}, {count} records.",
|
||||
"prev": "Previous",
|
||||
"next": "Next",
|
||||
"loadFailed": "Load failed",
|
||||
"cleared": "Apply logs cleared",
|
||||
"clearedDesc": "Deleted {count} records",
|
||||
"clearFailed": "Failed to clear apply logs",
|
||||
"unknownError": "Unknown error",
|
||||
"clearTitle": "Clear all apply logs?",
|
||||
"clearDesc": "This deletes all {count} apply log records and cannot be undone. Nodes will continue to report new apply results.",
|
||||
"clearing": "Clearing...",
|
||||
"confirmClear": "Clear",
|
||||
"success": "Success",
|
||||
"warning": "Warning",
|
||||
"failed": "Failed",
|
||||
"sheetTitle": "Apply log details",
|
||||
"sheetDesc": "Full result and checksum details for this apply log.",
|
||||
"versionBadge": "Version: {version}",
|
||||
"createdAt": "Created",
|
||||
"targetChecksum": "Target Checksum",
|
||||
"mainChecksum": "Main config digest",
|
||||
"routeChecksum": "Route config digest",
|
||||
"supportFiles": "Support files",
|
||||
"message": "Message",
|
||||
"close": "Close"
|
||||
},
|
||||
"configVersions": {
|
||||
"title": "Config versions",
|
||||
"description": "Browse historical snapshots, preview pending diffs, and reactivate an older version when needed.",
|
||||
"refresh": "Refresh",
|
||||
"cleanupOld": "Clean",
|
||||
"viewDiff": "Diff",
|
||||
"forcePublish": "Force publish",
|
||||
"previewPublish": "Publish",
|
||||
"emptyTitle": "No history",
|
||||
"emptyDesc": "There are no published versions yet. Publish a config first.",
|
||||
"colVersion": "Version",
|
||||
"colStatus": "Status",
|
||||
"colAuthor": "Created by",
|
||||
"colChecksum": "Checksum",
|
||||
"colCreatedAt": "Created",
|
||||
"colActions": "Actions",
|
||||
"active": "Active",
|
||||
"history": "History",
|
||||
"system": "System",
|
||||
"snapshot": "Snapshot",
|
||||
"activate": "Activate",
|
||||
"loadFailed": "Load failed",
|
||||
"previewLoadFailed": "Failed to load preview",
|
||||
"diffLoadFailed": "Failed to load diff",
|
||||
"publishSuccess": "Published",
|
||||
"publishSuccessDesc": "Version {version}",
|
||||
"publishFailed": "Publish failed",
|
||||
"activateSuccess": "Activated",
|
||||
"activateSuccessDesc": "Version {version}",
|
||||
"activateFailed": "Activate failed",
|
||||
"cleanupDone": "Cleanup complete",
|
||||
"cleanupDoneDesc": "Deleted {count} historical snapshots",
|
||||
"cleanupFailed": "Cleanup failed",
|
||||
"unknownError": "Unknown error",
|
||||
"confirmPublishTitle": "Publish config",
|
||||
"confirmPublishDesc": "This creates a new version from the pending config and marks it active. Nodes will pull the update next.",
|
||||
"confirmPublish": "Publish",
|
||||
"confirmForceTitle": "Force publish",
|
||||
"confirmForceDesc": "This ignores the change check and immediately creates a new version. Confirm you really need to republish.",
|
||||
"confirmActivateTitle": "Activate version",
|
||||
"confirmActivateDesc": "Set version {version} as the active version?",
|
||||
"confirmActivate": "Activate",
|
||||
"previewTitle": "Publish preview",
|
||||
"previewDesc": "Rendered pending config and support files.",
|
||||
"loadingPreview": "Loading preview...",
|
||||
"routeCount": "{count} routes",
|
||||
"websiteCount": "{count} websites",
|
||||
"mainConfig": "Main config",
|
||||
"routeConfig": "Route config",
|
||||
"supportFiles": "Support files ({count})",
|
||||
"noSupportFiles": "This publish has no extra support files.",
|
||||
"noChanges": "Pending routes match the active version, so it cannot be published again.",
|
||||
"close": "Close",
|
||||
"publishing": "Publishing...",
|
||||
"diffTitle": "Config diff",
|
||||
"diffDesc": "Differences between the pending config and the active version.",
|
||||
"loadingDiff": "Loading diff...",
|
||||
"activeVersion": "Active version",
|
||||
"none": "None",
|
||||
"addedDomains": "Added domains",
|
||||
"removedDomains": "Removed domains",
|
||||
"modifiedDomains": "Modified domains",
|
||||
"itemCount": "{count}",
|
||||
"noChange": "No changes",
|
||||
"emptyValue": "empty",
|
||||
"mainChanged": "Main config changed",
|
||||
"mainUnchanged": "Main config unchanged",
|
||||
"wafChanged": "WAF changed",
|
||||
"wafUnchanged": "WAF unchanged",
|
||||
"websiteDelta": "Websites {from} → {to}",
|
||||
"optionKey": "Option",
|
||||
"activeValue": "Active value",
|
||||
"pendingValue": "Pending value",
|
||||
"noOptionChanges": "No OpenResty option changes.",
|
||||
"snapshotTitle": "Version snapshot",
|
||||
"snapshotVersion": "Version {version}",
|
||||
"snapshotDesc": "Full snapshot of this historical config version.",
|
||||
"loadingSnapshot": "Loading snapshot...",
|
||||
"createdBy": "Created by",
|
||||
"createdAt": "Created",
|
||||
"snapshotLoadFailed": "Failed to load version snapshot",
|
||||
"cleanupTitle": "Clean historical snapshots",
|
||||
"cleanupDesc": "Delete older snapshots. The currently active version is always protected.",
|
||||
"keepCount": "Keep latest snapshots",
|
||||
"keepHint": "Default 10, minimum 3.",
|
||||
"keepMin": "Keep at least 3 historical snapshots",
|
||||
"cleaning": "Cleaning...",
|
||||
"confirmCleanup": "Clean"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user