mirror of
https://github.com/hansjone/netx.git
synced 2026-10-09 15:33:18 +08:00
feat(web): NetX workbench, UME-only UI, i18n, and header status
- Replace sidebar app with workbench home and module tabs (openOrFocusModule) - Remove legacy pages; add module registry, shared tab channel, WEB.md - Add zh/en i18n, global ToastProvider, restore oclaw bridge pill in header Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
664775927b
commit
282dbe75af
33 changed files with 1631 additions and 1677 deletions
138
web/src/i18n/en.ts
Normal file
138
web/src/i18n/en.ts
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
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",
|
||||
cards: {
|
||||
umeSync: "UME Sync",
|
||||
umeSyncDesc: "UME alarms, subscription & inventory",
|
||||
},
|
||||
},
|
||||
layout: {
|
||||
title: "UME Integration",
|
||||
titleUme: "UME Sync",
|
||||
navUme: "UME",
|
||||
netxApi: "netx api",
|
||||
oclawBridge: "oclaw bridge",
|
||||
language: "Language",
|
||||
moreMenu: "More",
|
||||
langZh: "中文",
|
||||
langEn: "English",
|
||||
},
|
||||
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;
|
||||
Loading…
Add table
Add a link
Reference in a new issue