mirror of
https://github.com/hansjone/netx.git
synced 2026-10-09 00:50:46 +08:00
Create collection jobs without auto-running; add /start for first run and re-run. Merge create form with filterable NE picker and selected list. Co-authored-by: Cursor <cursoragent@cursor.com>
276 lines
10 KiB
TypeScript
276 lines
10 KiB
TypeScript
const en = {
|
|
common: {
|
|
help: "Help",
|
|
refresh: "Refresh",
|
|
refreshing: "Refreshing…",
|
|
query: "Search",
|
|
clearFilters: "Clear filters",
|
|
prevPage: "Previous",
|
|
nextPage: "Next",
|
|
perPage: "{{n}}/page",
|
|
pagerMeta: "{{total}} items · page {{page}}/{{pages}}",
|
|
opFailed: "Operation failed",
|
|
empty: "-",
|
|
},
|
|
workbench: {
|
|
title: "Workbench",
|
|
backToWorkbench: "Back to Workbench",
|
|
openInNewTab: "Open in new tab",
|
|
openModule: "Open or switch to this module tab",
|
|
monitoring: "Monitoring",
|
|
operations: "Operations",
|
|
cards: {
|
|
umeSync: "UME Sync",
|
|
umeSyncDesc: "UME alarms, subscription & inventory",
|
|
managedNe: "NE Management",
|
|
managedNeDesc: "Multi-vendor SSH/Telnet NEs & connectivity test",
|
|
collect: "Batch Collect",
|
|
collectDesc: "Run custom CLI commands on connected NEs and save logs",
|
|
},
|
|
},
|
|
layout: {
|
|
title: "UME Integration",
|
|
titleUme: "UME Sync",
|
|
titleManagedNe: "NE Management",
|
|
titleCollect: "Batch Collect",
|
|
navUme: "UME",
|
|
netxApi: "netx api",
|
|
oclawBridge: "oclaw bridge",
|
|
language: "Language",
|
|
moreMenu: "More",
|
|
langZh: "中文",
|
|
langEn: "English",
|
|
},
|
|
collect: {
|
|
create: {
|
|
title: "New collection job",
|
|
hint: "Configure commands and NEs, then create the job. Click Start in the job list to run collection.",
|
|
selectedTitle: "Selected NEs",
|
|
selectedEmpty: "Filter below and add NEs one by one.",
|
|
selectedCount: "{{count}} selected",
|
|
clearSelected: "Clear selection",
|
|
remove: "Remove",
|
|
pickTitle: "Eligible NEs (connectivity passed)",
|
|
pickHint: "Only NEs with connect_status=pass. Run connectivity test in NE Management first.",
|
|
pickEmpty: "No matching NEs.",
|
|
filterKeyword: "Filter",
|
|
filterKeywordPh: "Name / IP / vendor / device type",
|
|
add: "Add",
|
|
added: "Added",
|
|
create: "Create job",
|
|
creating: "Creating…",
|
|
meta: "{{ne}} NE(s) selected · {{cmd}} command(s)",
|
|
},
|
|
eligible: {
|
|
title: "Eligible NEs (connectivity passed)",
|
|
hint: "Only NEs with connect_status=pass. Run connectivity test in NE Management first.",
|
|
empty: "No NEs with passed connectivity test.",
|
|
},
|
|
form: {
|
|
title: "Collection setup",
|
|
jobTitle: "Job title",
|
|
jobTitlePh: "Auto-generated if empty",
|
|
commands: "Commands (one per line, # for comments)",
|
|
commandsPh: "display version\ndisplay current-configuration",
|
|
commandsHint: "Commands run in order on each device; output is saved as a text log (legacy NetX format).",
|
|
meta: "{{ne}} NE(s) selected · {{cmd}} command(s)",
|
|
start: "Start collection",
|
|
starting: "Submitting…",
|
|
},
|
|
created: "Collection job created: {{id}}",
|
|
started: "Collection started: {{id}}",
|
|
paused: "Job paused",
|
|
restarted: "Collection restarted",
|
|
retryFailedDone: "Retrying failed devices",
|
|
deleted: "Job deleted",
|
|
nothingToRetry: "No failed devices to retry",
|
|
confirmDelete: "Delete this collection job and its log files?",
|
|
jobs: {
|
|
title: "Collection jobs",
|
|
col: {
|
|
title: "Job",
|
|
status: "Status",
|
|
progress: "Progress",
|
|
created: "Created",
|
|
lastRun: "Last run",
|
|
actions: "Actions",
|
|
},
|
|
ok: "ok",
|
|
fail: "fail",
|
|
expand: "Details",
|
|
collapse: "Hide",
|
|
pause: "Pause",
|
|
start: "Start",
|
|
starting: "Starting…",
|
|
restart: "Restart",
|
|
retryFailed: "Retry failed",
|
|
downloadResults: "Download results",
|
|
delete: "Delete",
|
|
autoRefresh: "Auto-refresh every 2s while jobs are running",
|
|
runsInProgress: "Some devices are still being collected…",
|
|
},
|
|
runs: {
|
|
status: "Status",
|
|
message: "Message",
|
|
download: "Log",
|
|
downloadFile: "Download",
|
|
filterStatus: "Status filter",
|
|
filterDevice: "Device filter",
|
|
deviceKeywordPh: "Name / IP",
|
|
allStatus: "All statuses",
|
|
},
|
|
},
|
|
managedNe: {
|
|
title: "Network Elements",
|
|
credsNotConfigured:
|
|
"NETX_CREDENTIAL_SECRET_KEY is not set. Configure a Fernet key in .env and restart the API to store passwords.",
|
|
add: "Add NE",
|
|
importBtn: "Import",
|
|
downloadTemplate: "Download template",
|
|
importing: "Importing…",
|
|
edit: "Edit",
|
|
delete: "Delete",
|
|
confirmDelete: "Delete this network element?",
|
|
keywordPh: "name / IP / user / tags",
|
|
allVendors: "All vendors",
|
|
allConnectStatus: "All connect status",
|
|
col: {
|
|
name: "Name",
|
|
vendor: "Vendor",
|
|
deviceType: "Device type",
|
|
ip: "Management IP",
|
|
port: "Port",
|
|
protocol: "Protocol",
|
|
user: "Username",
|
|
password: "Password",
|
|
tags: "Tags",
|
|
remark: "Remark",
|
|
connect: "Connect",
|
|
testedAt: "Tested at",
|
|
actions: "Actions",
|
|
},
|
|
connect: {
|
|
run: "Connectivity test",
|
|
running: "Testing…",
|
|
submitted: "Submitted tests for {{n}} device(s)",
|
|
},
|
|
importResult: {
|
|
done: "Import done: {{inserted}} inserted, {{updated}} updated, {{failed}} failed row(s)",
|
|
},
|
|
form: {
|
|
requiredHint: "Fields marked with * are required",
|
|
nameConnectHint: "After a successful connectivity test, name is replaced with the device hostname",
|
|
createTitle: "Add network element",
|
|
editTitle: "Edit network element",
|
|
save: "Save",
|
|
saving: "Saving…",
|
|
cancel: "Cancel",
|
|
created: "Network element created",
|
|
updated: "Network element updated",
|
|
deleted: "Network element deleted",
|
|
passwordRequired: "Password is required",
|
|
passwordOptional: "leave blank to keep unchanged",
|
|
},
|
|
},
|
|
ume: {
|
|
token: {
|
|
title: "UME Token",
|
|
disconnected: "disconnected",
|
|
connected: "connected",
|
|
connectedRenew: "connected (renew required)",
|
|
expiresIn: "expires_in",
|
|
needsRenew: "renew / 0s",
|
|
preview: "preview",
|
|
refreshStatus: "Refresh status",
|
|
renewLogin: "Renew / login",
|
|
renewing: "Renewing…",
|
|
disconnect: "Disconnect token",
|
|
disconnecting: "Disconnecting…",
|
|
renewOkChanged: "Token renewed and updated",
|
|
renewOkSame: "Renew completed (unchanged)",
|
|
disconnectOk: "UME token disconnected",
|
|
renewHint: "Token missing expiry or expired. Use Renew / login or wait for background keepalive.",
|
|
},
|
|
subscription: {
|
|
title: "UME alarm subscription (WebSocket)",
|
|
help:
|
|
"Subscriptions must be created/cancelled manually. After establish (or on restart if a valid subscription exists in DB), the backend auto-connects WSS for live alarms. Pause/resume on runtime task alarms_current_ws_consumer stops/resumes WSS only (does not cancel the UME subscription).",
|
|
sub: "subscription",
|
|
subActive: "active",
|
|
subInactive: "inactive",
|
|
wssPaused: "paused",
|
|
wssModeBanner:
|
|
"Current alarms are maintained via WSS (mode: {{mode}}); scheduled REST full sync is paused. Use Sync current alarms below for full reconcile.",
|
|
serverLostBanner:
|
|
"UME server subscription is missing or expired; local state may still show active. Clear local record and re-subscribe.",
|
|
establish: "Establish subscription",
|
|
establishing: "Establishing…",
|
|
reestablish: "Clear local & re-subscribe",
|
|
reestablishing: "Re-subscribing…",
|
|
cancel: "Cancel subscription",
|
|
cancelling: "Cancelling…",
|
|
refreshStatus: "Refresh subscription",
|
|
clearLocalOnly: "Clear local only",
|
|
clearing: "Clearing…",
|
|
opFailed: "Subscription operation failed",
|
|
confirmClearDefault:
|
|
"UME alarm subscription no longer exists or has expired.\n\nClear local subscription record? You can establish again afterwards.",
|
|
confirmReestablish: "Clear local record and re-establish subscription on UME. Continue?",
|
|
titleLoginFirst: "Log in to UME token first",
|
|
titleReestablish: "Clear stale local record and re-establish on UME",
|
|
establishInvalid: "Establish did not return a valid id/uri",
|
|
establishExists: "Subscription already exists (WSS will stay/connect)",
|
|
establishOk: "Subscription established; WSS will connect",
|
|
clearLocalOk: "Local subscription cleared; you can establish again",
|
|
serverLostMsg: "UME subscription lost. Clear local record and re-subscribe?",
|
|
cancelFailed: "Cancel failed: subscription may still exist on UME",
|
|
cancelOkMissing: "Local cleared (UME subscription was already missing)",
|
|
cancelOk: "Subscription cancelled",
|
|
wsLogs: "WSS runtime log",
|
|
wsActivity: "Last activity {{time}}",
|
|
wsAutoRefresh: "Auto refresh",
|
|
wsLogsEmpty: "No logs yet (connect WSS after establishing subscription)",
|
|
},
|
|
sync: {
|
|
title: "UME sync",
|
|
inventory: "Sync inventory",
|
|
alarmsCurrent: "Sync current alarms",
|
|
full: "Full sync",
|
|
failed: "Sync failed",
|
|
},
|
|
tasks: {
|
|
currentTitle: "Running jobs",
|
|
running: "running",
|
|
noRunning: "No running jobs",
|
|
runtimeTitle: "Background tasks",
|
|
runtimeOpFailed: "Background task operation failed",
|
|
noRuntime: "No background task status",
|
|
intervalTitle: "Configured sleep between loop iterations (clamped at process start)",
|
|
lastRunTitle: "Last finished sync for scheduled tasks; refreshed at each loop tick",
|
|
deletedTitle: "Reconcile deletes: inventory = NE rows; alarms_current = current alarm rows",
|
|
},
|
|
syncStatus: {
|
|
title: "Sync history",
|
|
empty: "No sync records",
|
|
},
|
|
ne: {
|
|
title: "Network elements",
|
|
keywordPh: "keyword(ne_id/ne_name/user_label/ip/host_name)",
|
|
clearTitle: "Clear keyword and reset to page 1",
|
|
expand: "Expand details",
|
|
collapse: "Collapse details",
|
|
},
|
|
alarms: {
|
|
title: "Current alarms",
|
|
keywordPh: "keyword(alarm key/cause/ne_name/host_name/ip…)",
|
|
hostNamePh: "host_name (contains)",
|
|
allSeverity: "All severities",
|
|
clearedAll: "is_cleared: all",
|
|
clearTitle: "Clear filters and reset to page 1",
|
|
filterByHost: "Filter by this host",
|
|
noHostName: "No host_name (sync inventory first)",
|
|
},
|
|
},
|
|
};
|
|
|
|
export default en;
|