netx/web/src/i18n/zh.ts
oliver 8915455b52 Record WebCRT device login/commands and NE exec in operation audit.
Make session lifecycle and typed CLI lines searchable in audit_log with password redaction, and surface summaries plus device filters in the ops UI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 21:36:44 +08:00

1923 lines
76 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const zh = {
common: {
help: "帮助说明",
refresh: "刷新",
refreshing: "刷新中…",
query: "查询",
clearFilters: "清除筛选",
prevPage: "上一页",
nextPage: "下一页",
perPage: "{{n}}/页",
pagerMeta: "共 {{total}} 条 · 第 {{page}}/{{pages}} 页",
jumpPage: "跳转到页",
pageSize: "每页条数",
exportCsv: "导出 CSV",
exporting: "导出中…",
exportOk: "已导出 {{count}} 条",
exportTruncated: "已导出前 {{count}} 条(共 {{total}},已截断)",
exportFailed: "导出失败",
opFailed: "操作失败",
empty: "-",
cancel: "取消",
},
workbench: {
title: "工作台",
modules: "可用模块",
sections: "功能分区",
moduleCount: "{{count}} 个模块",
backToWorkbench: "返回工作台",
openInNewTab: "在新标签页中打开",
openModule: "打开或切换到该模块页签",
monitoring: "系统对接",
operations: "运维",
system: "系统管理",
welcomeEyebrow: "工作台",
welcomeTitle: "欢迎回来,{{name}}",
welcomeSub: "在此总览同步、拓扑与后台任务状态。",
today: "今天 · {{date}}",
kpi: {
uptime: "API 运行时长",
health: "系统健康",
tasks: "进行中任务",
healthOk: "调度正常",
healthWarn: "请检查调度",
healthUnknown: "指标暂不可用",
},
statusTitle: "运行状态",
announceTitle: "系统公告",
recentTitle: "最近操作",
recentMore: "查看全部",
quickTitle: "快捷操作",
emptyRecent: "暂无操作记录。",
gauge: {
cpu: "CPU",
mem: "内存",
storage: "存储",
storageUsed: "已用",
storageUnavailable: "不可用",
cli: "CLI 并发",
db: "数据库连接",
webcrt: "WebCRT",
tasks: "活跃任务",
low: "低负载",
normal: "正常",
high: "繁忙",
},
quick: {
tasks: "任务概览",
logs: "操作日志",
users: "用户管理",
apiKeys: "API Key",
sessions: "登录会话",
},
announce: {
a1: "深色工作台已上线,其它模块将沿用同一套深色体系。",
a1Date: "2026-08-04",
a2: "LLDP 采集支持暂停/继续/停止;进程重启后会自动续跑。",
a2Date: "2026-08-04",
a3: "配置同步与 LLDP 看板在任务运行中可实时刷新 KPI。",
a3Date: "2026-08-03",
},
recentCols: {
action: "操作内容",
module: "模块",
time: "时间",
user: "用户",
},
cards: {
umeSync: "UME同步",
network: "网络管理",
managedNe: "网元管理",
collect: "批量采集",
webcrt: "WebCRT",
topology: "拓扑管理",
portTrafficWall: "流量大屏",
users: "用户管理",
audit: "操作审计",
apiKeys: "API Key",
sessions: "登录会话",
},
},
network: {
title: "网络管理",
nav: {
detail: "网络详情",
tasks: "监控任务",
topologyMgmt: "拓扑管理",
devices: "设备列表",
topology: "拓扑信息",
lldpLinks: "LLDP",
topoClassify: "分类",
alarms: "告警信息",
configs: "配置信息",
webcrt: "WebCRT",
collectTasks: "采集任务",
configSync: "配置同步",
portTraffic: "流量监控",
portTrafficWall: "流量大屏",
},
collapseNav: "折叠侧栏",
expandNav: "展开侧栏",
placeholder: {
title: "功能规划中",
body: "该能力尚未开放。",
},
},
portTraffic: {
title: "端口流量监控",
create: "添加设备监控",
backList: "返回列表",
created: "已添加设备监控",
createFailed: "创建失败",
updated: "已保存",
interfacesSaved: "接口已更新",
started: "已启动",
paused: "已暂停",
stopped: "已停止",
statusRunning: "运行中",
statusPaused: "已暂停",
statusStopped: "已停止",
statusDraft: "草稿",
collecting: "采集中",
deleted: "已删除",
confirmDelete: "删除该设备监控及其采样数据?",
empty: "暂无设备监控。请先选择网元并勾选接口。",
keywordPh: "名称 / IP / 备注 / ID",
allStatus: "全部状态",
exportDevicesName: "port-traffic-devices",
exportEventsName: "port-traffic-events",
wall: "监控大屏",
wallTitle: "端口流量大屏",
toDevices: "设备管理",
wallEmpty: "暂无监控设备。请先添加设备并勾选接口。",
fullscreen: "全屏",
exitFullscreen: "退出全屏",
board: "大屏",
boardPick: "选择大屏",
boardPickHint: "请选择或新建一张流量大屏。",
boardEmpty: "还没有大屏。可新建一张用于割接/值班监控。",
boardDefaultName: "未命名大屏",
boardName: "名称",
boardCols: "列数",
boardCreate: "新建大屏",
boardEdit: "编辑布局",
boardSave: "保存",
boardCancel: "取消",
boardSaved: "大屏已保存",
boardCreated: "大屏已创建",
boardDeleted: "大屏已删除",
boardConfirmDelete: "删除该大屏及其图格配置?",
boardUnsavedLeave: "有未保存的修改,确定离开?",
boardOpenTab: "新页签打开",
boardOpen: "打开大屏",
boardListHint: "点击条目在独立页签打开大屏;从工作台打开网络管理不会刷新已打开的大屏。",
boardPanelCount: "图格数",
boardUpdated: "更新时间",
boardClosedHint: "可关闭本页签;也可回到网络管理 → 流量大屏列表重新打开。",
boardAddPanel: "添加图格",
boardNoPanels: "该大屏还没有图格,请编辑并添加监控接口。",
boardPickDevice: "选择设备",
boardPanelSettings: "图格设置",
boardPanelTitle: "标题(可选)",
boardColSpan: "跨列",
boardPanelStale: "接口已失效或不存在,请重新选择。",
boardRetarget: "重选接口",
edit: "编辑",
save: "保存",
start: "启动",
pause: "暂停",
stop: "停止",
delete: "删除",
wizStep1: "选设备",
wizStep2: "选接口",
wizStep3: "参数",
step1: "参数",
step2: "选网元",
step3: "选接口",
step4: "确认",
prev: "上一步",
next: "下一步",
fieldTitle: "任务名称",
titlePh: "例如:接入侧上联",
titleRequired: "请填写任务名称",
portsRequired: "请至少选择一个接口",
interval: "周期(秒)",
retention: "保留(天)",
retentionHintWizard: "若需上周同日对比,建议 ≥8 天",
concurrency: "并发",
note: "备注",
notePh: "可选",
startNow: "创建后立即启动",
neKeywordPh: "名称 / IP / 厂商",
deepLinkHint: "已从拓扑跳转:网元 {{ne}}{{ifname}}。请确认选中后继续。",
deepLinkIfname: ",接口 {{ifname}}",
selectedNe: "已选 {{count}} 台网元",
selectedOneNe: "已选",
selectedPorts: "已选 {{count}} 个接口",
pickNeFirst: "请先选择一台网元",
discover: "拉取接口",
discoverDetail: "拉取详情",
discoverCommand: "命令",
discoverRaw: "原始日志",
discoverOk: "拉取成功",
discoverFail: "拉取失败",
confirmCreate: "开始监控",
wallTask: "任务",
wallDevice: "设备",
wallPort: "接口",
wallDeviceLabel: "网元",
pickPort: "选择接口",
range: "时间范围",
compare: "周期对比",
compareOff: "关闭",
compareDay: "昨日同时刻",
compareWeek: "上周同日",
compareShift: "前一窗",
compareCustom: "自定义偏移",
offsetHours: "偏移(小时)",
aheadHours: "向后延长(小时)",
aheadHoursHint:
"图表终点相对当前时刻再往后延长。开启周期对比时可看到对照曲线在「现在」之后的走势;0 表示截止到现在。",
mapBaselineHint: "映射基线可与周期对比叠加使用;需要昨日对照时请自行打开「昨日同时刻」。",
baseline: "基线",
baselineAt: "基线原时刻",
baselineDevice: "基线网元",
baselinePort: "基线接口",
seriesCurrentIn: "当前 In",
seriesCurrentOut: "当前 Out",
seriesBaselineIn: "基线 In",
seriesBaselineOut: "基线 Out",
mapBaselinePort: "映射基线接口",
mapBaselineTask: "映射基线任务",
mapBaselineNone: "不映射",
retentionHint: "周对比建议保留天数 ≥ 8;否则基线可能无数据。",
collectNow: "立即采集",
collectStarted: "已触发采集",
collectBusy: "采集进行中",
targetError: "接口最近错误",
waitSamples: "设备运行后会按周期写入样点;也可点「立即采集」。图会每几秒自动刷新。",
waitAfterError: "采集失败,请到「流量监控」操作中的日志查看详情,修复后可点「立即采集」重试。",
log: "日志",
logTitle: "采集日志",
logEmpty: "暂无日志。",
logDevice: "设备",
logLevel: "级别",
logTime: "时间",
logMessage: "内容",
logClose: "关闭",
logHasError: "有错误",
rebind: "重新绑定网元",
rebindTitle: "重新绑定网元",
rebindCurrent: "当前监控",
rebindOk: "已重新绑定网元,可继续采集",
rebindFailed: "重新绑定失败",
rebindHint: "请手动选择正确的网元并确认。同 IP 不一定是同一台设备,且 IP 可能不唯一;历史采样会保留。",
rebindEmpty: "没有可选网元,请先在设备管理中加回。",
rebindSameIp: "同 IP",
rebindSameIpHint: "与当前监控记录的 IP 相同,请仍核对手动选择",
rebindSubmit: "确认绑定",
rebindConfirm: "确认将监控绑定到 {{ne}}?绑定后将按该网元采集,历史采样保留。",
err: {
managedNeNotFound: "管理网元不存在(可能已删除后重建,ID 已变)。请点「重新绑定网元」手动选择。",
targetErrors: "{{count}} 个接口采集失败",
unsupportedVendor: "不支持的厂商/设备类型",
invalidSource: "无效的网元来源",
rebindPickFirst: "请先选择要绑定的网元",
rebindNeMissing: "所选网元不存在,请刷新列表后重选",
rebindSourceMismatch: "网元来源与监控不一致",
alreadyMonitored: "目标网元已有另一条监控,无法绑定",
},
kpiLatest: "最新",
kpiBw: "带宽",
latestAt: "最新样点",
hoverPoint: "光标位置",
wallLiveTitle: "实时流量",
filterView: "视图",
filterMap: "映射基线",
yMode: "纵轴",
yModeAuto: "自动(含基线)",
yModeCurrent: "按当前流量",
yModeUtil: "利用率 %",
kpi: {
tasks: "任务数",
devices: "监控设备",
running: "运行中",
ports: "监控接口",
samples24h: "24h 样点",
},
col: {
title: "任务",
device: "设备",
status: "状态",
ports: "接口",
interval: "周期",
last: "最近采集",
actions: "操作",
source: "来源",
name: "设备",
vendor: "厂商",
ifname: "接口",
bw: "带宽",
upDown: "Admin / Phy / Prot",
admin: "Admin",
phy: "Phy",
prot: "Prot",
description: "描述",
},
},
lldpLinks: {
title: "LLDP 链路",
collectNow: "立即采集",
retryFailed: "一键重试失败",
started: "已启动 LLDP 采集",
pause: "暂停",
resume: "继续",
stop: "停止",
confirmStop: "停止后将取消未扫描的网元,确定停止本轮采集?",
paused: "已暂停",
resumed: "已继续",
stopped: "已停止采集",
policyTitle: "采集策略",
policySaved: "策略已保存",
enabled: "启用周期调度",
autoAddUnmatched: "发现时自动入库未匹配网元(占位)",
autoAddUnmatchedHint: "周期采集与画布单点发现共用;关闭则未匹配邻居只记未匹配、不建占位网元。默认开启。",
intervalDays: "周期(天)",
interval: "采集周期",
intervalUnitDays: "天",
intervalUnitHours: "小时",
concurrency: "并发",
historyKeep: "任务保留数",
scope: "范围",
scopeAll: "全部网元(纳管+UME)",
scopeSelected: "指定网元",
savePolicy: "保存策略",
selectedCount: "已选 {{count}} 台",
targetKeywordPh: "名称 / IP / 厂商",
jobsTitle: "采集任务",
jobDetailTitle: "任务明细",
expand: "详情",
edgesTitle: "Fabric 链路",
edgeKeywordPh: "本端 / 对端名称或 IP",
edgeStatusAll: "全部状态",
edgeStatusActive: "活跃",
edgeStatusMissing: "未发现",
edgeSourceAll: "全部来源",
exportEdgesName: "lldp-fabric-edges",
exportJobsName: "lldp-collect-jobs",
exportItemsName: "lldp-job-items",
statusAll: "全部状态",
jobKeywordPh: "任务 ID / 错误 / 范围",
itemKeywordPh: "网元名称 / IP / 错误",
itemResultAll: "全部结果",
missCount: "未发现周期",
replacedBy: "已被替换",
kpi: {
nodes: "Fabric 网元",
edges: "活跃链路",
missing: "未发现",
running: "进行中",
idle: "空闲",
last: "最近任务",
nextDue: "下次调度",
},
col: {
source: "来源",
name: "设备",
vendor: "厂商",
trigger: "触发",
scope: "范围",
status: "状态",
progress: "进度",
edges: "链路",
missingDelta: "未发现/清理",
started: "开始",
ended: "结束",
neighbors: "邻居",
error: "错误",
aSide: "本端",
bSide: "对端",
aPort: "本端口",
bPort: "对端口",
lastSeen: "最近看见",
},
jobStatus: {
running: "运行中",
pending: "排队中",
paused: "已暂停",
done: "已完成",
failed: "失败",
cancelled: "已取消",
stopped: "已停止",
},
triggerMode: {
manual: "手动",
schedule: "周期",
topology: "拓扑画布",
retry_failed: "重试失败",
},
jobScope: {
all: "全部网元",
ne_ids: "指定网元",
selected: "指定网元",
},
itemResult: {
ok: "成功",
warn: "警告",
fail: "失败",
},
edgeSource: {
lldp: "LLDP",
manual: "手动",
stale: "陈旧",
},
},
configSync: {
title: "配置同步",
syncNow: "立即全量同步",
retryFailed: "一键重试失败",
pause: "暂停",
resume: "继续",
stop: "停止",
confirmStop: "停止后将取消未执行的网元任务,确定停止本轮同步?",
started: "已启动同步周期",
paused: "已暂停",
resumed: "已继续",
stopped: "已停止同步周期",
policyTitle: "同步策略",
policySaved: "策略已保存",
enabled: "启用周期调度",
intervalDays: "周期(天)",
concurrency: "并发",
historyKeep: "配置历史保留",
cycleKeep: "任务保留数",
scope: "范围",
scopeAll: "全部网元",
scopeSelected: "指定网元",
savePolicy: "保存策略",
selectedCount: "已选 {{count}} 台",
targetKeywordPh: "名称 / IP / 厂商",
cyclesTitle: "同步周期",
cyclesEmpty: "暂无同步周期",
tasksTitle: "周期任务",
taskKeywordPh: "名称 / IP / 消息",
keywordPh: "ID / 触发 / 消息",
statusAll: "全部状态",
allStatus: "全部状态",
exportCyclesName: "config-sync-cycles",
exportTasksName: "config-sync-tasks",
expand: "详情",
collapse: "收起",
kpi: {
snapshots: "配置覆盖数",
running: "进行中",
idle: "空闲",
last: "最近一轮",
nextDue: "下次调度",
},
col: {
source: "来源",
name: "设备",
vendor: "厂商",
trigger: "触发",
status: "状态",
progress: "进度",
started: "开始",
ended: "结束",
message: "消息",
actions: "操作",
},
},
networkDevices: {
title: "设备列表",
keywordPh: "名称 / IP / ID",
allSource: "全部来源",
empty: "暂无网元。",
exportName: "network-devices",
col: {
source: "来源",
name: "名称",
vendor: "厂商",
deviceType: "设备类型",
connect: "连通状态",
actions: "操作",
},
},
networkConfigs: {
title: "配置信息",
keywordPh: "名称 / IP / ID",
vendorPh: "厂商",
allSource: "全部来源",
empty: "暂无已同步配置。请先在「配置同步」执行采集。",
view: "查看",
export: "导出",
exportBoth: "导出全部",
exportOk: "配置已导出",
exportListName: "network-configs",
close: "关闭",
tabSet: "Set 格式",
tabHier: "层级格式",
col: {
name: "设备",
vendor: "厂商",
source: "来源",
size: "大小",
collected: "采集时间",
},
},
layout: {
title: "UME 对接",
titleUme: "UME同步",
titleNetwork: "网络管理",
titleManagedNe: "网元管理",
titleCollect: "批量采集",
titleWebcrt: "WebCRT",
titleTopology: "拓扑管理",
titlePortTrafficWall: "流量大屏",
titleUsers: "用户管理",
titleAudit: "操作审计",
titleApiKeys: "API Key",
titleSessions: "登录会话",
navUme: "UME 对接",
netxApi: "netx api",
oclawBridge: "oclaw WSS",
activeTasks: "活跃任务 {{count}}",
activeTasksHint: "打开操作审计 · 任务概览",
language: "语言",
switchLanguage: "切换语言 / Switch language",
moreMenu: "更多",
langZh: "中文",
langEn: "English",
},
auth: {
loginTitle: "登录",
username: "用户名",
password: "密码",
login: "登录",
loggingIn: "登录中…",
loginFailed: "登录失败",
logout: "退出",
sessionsTitle: "登录会话",
sessionsHint: "管理当前账号在各浏览器/设备上的登录。踢掉会话后对方需重新登录。",
sessionsEmpty: "当前没有活跃会话。",
revokeOtherSessions: "踢掉其他会话",
revokeSession: "踢掉",
sessionCurrent: "当前",
sessionRevoked: "会话已吊销",
sessionsRevokedOthers: "已踢掉 {{count}} 个其他会话",
revokeCurrentConfirm: "这是当前会话,踢掉后需要重新登录。继续?",
colSession: "会话",
colLastSeen: "最近活动",
colCreated: "创建时间",
usersTitle: "用户管理",
usersHint: "仅管理员可创建与管理本地账号。",
addUser: "添加用户",
role: "角色",
roleAdmin: "管理员",
roleUser: "普通用户",
status: "状态",
active: "启用",
disabled: "禁用",
enable: "启用",
disable: "禁用",
actions: "操作",
newPassword: "新密码",
resetPassword: "重置密码",
userCreated: "用户已创建",
userUpdated: "用户已更新",
auditTitle: "操作审计",
auditHintAdmin: "查看所有用户的登录与操作记录。",
auditHintUser: "查看你自己的操作记录。",
filterUsername: "用户名筛选",
filterAction: "动作筛选",
colTime: "时间",
colUser: "用户",
colAction: "动作",
colMethod: "方法",
colPath: "路径",
colStatus: "状态码",
colIp: "IP",
apiKeysTitle: "API Key 管理",
apiKeysHelp:
"网页登录不用 API Key,Key 给 MCP/脚本用。生成时默认 alarms:read + ne:read + ne:write + ne:exec,之后用「改权限」增减(保存即生效,不必重生明文)。明文仅创建时显示一次。管理员可代其他用户签发,权限不能超过所属用户已有能力;未接 MCP 的项为预留。",
tokenName: "名称",
expiresIn: "有效期",
expire7d: "7 天",
expire30d: "30 天",
expire90d: "90 天",
expire365d: "1 年",
expireNever: "永不过期",
tokenOwner: "所属用户",
tokenOwnerSelf: "自己({{user}})",
createToken: "生成 Key",
tokenCreated: "API Key 已生成",
tokenUpdated: "权限已更新",
tokenRevoked: "已吊销",
tokenOnceHint: "请立即复制保存,关闭后无法再次查看明文:",
copyToken: "复制",
tokenCopied: "已复制到剪贴板",
tokenCopyFailed: "复制失败",
expiresAt: "到期时间",
lastUsed: "最近使用",
tokenStatusActive: "有效",
tokenStatusExpired: "已过期",
tokenStatusRevoked: "已吊销",
revokeToken: "吊销",
revokeConfirm: "确定吊销该 API Key?",
editScopes: "改权限",
saveScopes: "保存权限",
scopesUnsetLegacy: "未限定(等同所属用户)",
scopesCol: "权限",
scopesRequired: "请至少勾选一项权限",
scopesNoneAvailable: "当前所属用户没有可授予的权限",
scopeAlarmsRead: "alarms:read — 告警只读(netx MCP)",
scopeNeRead: "ne:read — 网元/拓扑只读(MCP)",
scopeNeWrite: "ne:write — 网元/拓扑写入、画图(MCP)",
scopeNeExec: "ne:exec — 托管网元 CLI(netx MCP)",
scopeSql: "sql:query — UME SQL(netx MCP)",
scopeWebcrt: "webcrt:session — WebCRT(预留 MCP)",
scopeAdminUsers: "admin:users — 用户管理(预留 MCP)",
scopeOpsWrite: "ops:write — 运维写/订阅(预留 MCP)",
forceChangeTitle: "请修改初始密码",
forceChangeHint: "账号 {{user}} 仍在使用默认密码,登录前必须先修改。",
oldPassword: "当前密码",
confirmPassword: "确认新密码",
savePassword: "保存新密码",
savingPassword: "保存中…",
passwordTooShort: "新密码至少 8 位",
passwordMismatch: "两次输入的新密码不一致",
passwordMustChange: "新密码不能与默认/旧密码相同",
},
collect: {
statusAll: "全部状态",
keywordPh: "任务名称 / ID",
exportJobsName: "collect-jobs",
exportRunsName: "collect-runs",
policyTitle: "采集策略",
policyHint: "默认不启用周期(只采一次);勾选后按周期自动创建并执行。默认保留最近 3 次任务数据。",
policySaved: "策略已保存",
enabled: "启用周期调度",
interval: "采集周期",
intervalUnitDays: "天",
intervalUnitHours: "小时",
historyKeep: "任务保留数",
scope: "范围",
scopeAll: "全部网元(纳管+UME)",
scopeSelected: "仅选中网元",
savePolicy: "保存策略",
collectNow: "立即采集",
selectedCount: "已选 {{count}} 台",
colSource: "来源",
policyCommandsRequired: "启用周期或立即采集前,请先填写采集命令并保存策略",
policyTargetsRequired: "选定范围内没有可用网元,请调整范围或勾选网元",
create: {
title: "新建采集任务",
hint: "配置命令与网元后创建任务;创建后需在任务列表中点击「开始」执行采集。",
selectedTitle: "已选择网元",
selectedEmpty: "请从下方筛选并逐个添加网元。",
selectedCount: "共 {{count}} 台",
clearSelected: "清空已选",
remove: "移除",
pickTitle: "可选网元",
pickHint: "可选网元管理与 UME 清单中的全部网元(不限连通性状态)。UME 使用 CLI 连接模板凭据。",
pickEmpty: "没有匹配的网元。",
filterKeyword: "筛选",
filterKeywordPh: "名称 / IP / 厂商 / 设备类型",
add: "添加",
addBatch: "批量添加({{count}})",
added: "已添加",
create: "创建任务",
creating: "创建中…",
expand: "新建",
collapse: "关闭",
meta: "已选 {{ne}} 台网元 · {{cmd}} 条命令",
},
eligible: {
title: "可选网元",
hint: "可选网元管理与 UME 清单中的全部网元(不限连通性状态)。",
empty: "暂无网元。",
},
form: {
title: "采集配置",
jobTitle: "任务名称",
jobTitlePh: "留空则自动生成",
commands: "采集命令(每行一条,# 开头为注释)",
commandsPh: "display version\ndisplay current-configuration",
commandsHint: "命令将按顺序在每台设备上执行,输出合并为一份文本日志。",
meta: "已选 {{ne}} 台网元 · {{cmd}} 条命令",
start: "开始采集",
starting: "提交中…",
},
created: "采集任务已创建:{{id}}",
started: "采集已开始:{{id}}",
paused: "任务已暂停",
restarted: "已重新开始采集",
retryFailedDone: "已开始重采失败网元",
deleted: "任务已删除",
nothingToRetry: "没有可重试的失败网元",
neBusy: "部分网元正在被其他采集任务占用,请等待其完成后再开始",
jobRunning: "该任务已在执行中",
confirmDelete: "确定删除该采集任务?相关日志文件将一并删除。",
jobs: {
title: "采集任务",
listTitle: "任务列表",
col: {
title: "任务",
status: "状态",
progress: "进度",
created: "创建时间",
lastRun: "最近执行",
actions: "操作",
},
ok: "成功",
fail: "失败",
expand: "详情",
collapse: "收起",
detailTitle: "任务明细",
pause: "暂停",
start: "开始",
starting: "启动中…",
restart: "重新开始",
retryFailed: "重采失败网元",
downloadResults: "下载结果",
delete: "删除",
autoRefresh: "任务进行中,每 2 秒自动刷新",
runsInProgress: "部分网元仍在采集中,请稍候…",
},
kpi: {
jobs: "任务总数",
running: "进行中",
idle: "空闲",
last: "最近任务",
active: "活跃任务",
nextDue: "下次周期",
},
runs: {
status: "状态",
message: "说明",
download: "日志",
downloadFile: "下载",
filterStatus: "状态筛选",
filterDevice: "设备筛选",
deviceKeywordPh: "名称 / IP",
allStatus: "全部状态",
},
},
managedNe: {
title: "网元管理",
credsNotConfigured: "未配置 NETX_CREDENTIAL_SECRET_KEY,无法保存密码。请在 .env 中设置 Fernet 密钥后重启 API。",
add: "新增网元",
importBtn: "批量导入",
downloadTemplate: "下载导入模板",
importing: "导入中…",
edit: "编辑",
delete: "删除",
openTerminal: "终端",
confirmDelete:
"确定删除该网元?若拓扑中仅绑定此运维网元(无 UME),将同时删除对应 Fabric 节点及其直连链路。",
batchDelete: "批量删除",
batchDeleting: "删除中…",
batchDeleteConfirm:
"确定删除选中的 {{n}} 台网元?不可恢复。仅绑定运维侧的节点会级联清除 Fabric 节点与直连链路;仍绑 UME 的会保留拓扑。",
batchDeleteDone: "已删除 {{n}} 台网元",
batchDeleteSelectRequired: "请先勾选要删除的网元",
keywordPh: "名称 / IP / 用户名 / 标签",
allVendors: "全部厂商",
allConnectStatus: "全部连通状态",
stats: {
title: "统计",
total: "共 {{n}} 台网元",
pass: "已连通",
fail: "失败",
unknown: "未测试",
testing: "测试中",
batchProxy: "一键添加代理",
batchTest: "一键连通性测试",
tagFilter: "按标签筛选",
all: "全部",
allTag: "全部(无标签筛选)",
noTag: "无标签",
tagStats: "按标签统计(Top)",
confirm: "将对 {{n}} 台网元执行操作,确认继续?",
proxyDone: "已为 {{n}} 台网元提交代理配置",
testDone: "已提交 {{n}} 台网元连通性测试",
loadingIds: "加载中…",
},
col: {
name: "名称",
vendor: "厂商",
deviceType: "设备类型",
source: "来源",
ip: "管理地址",
port: "端口",
protocol: "协议",
user: "用户名",
password: "密码",
tags: "标签",
remark: "备注",
connect: "连通性",
testedAt: "测试时间",
actions: "操作",
},
source: {
manual: "手工",
ume_sync: "UME 同步",
webcrt: "WebCRT",
lldp: "LLDP 占位",
topology: "拓扑占位",
},
connect: {
run: "连通性测试",
running: "测试中…",
submitted: "已提交 {{n}} 台设备测试",
retest: "重新测试",
},
connectDetail: "详情",
connectDetailTitle: "连通性测试日志",
connectDetailEmpty: "暂无日志。请先执行连通性测试;失败时会记录完整错误与跳板上下文(不含密码)。",
umeSync: {
sync: "同步 UME 网元",
syncing: "同步中…",
delete: "删除 UME 网元",
deleting: "删除中…",
deleteConfirm:
"确定删除所有通过 UME 同步到网元管理中的网元?不可恢复。仅绑定这些 ManagedNE、且无 UME 投影的 Fabric 节点会连同直连链路一并清除。",
done: "UME 同步完成:新增 {{inserted}},更新 {{updated}},删除 {{deleted}},UME 清单共 {{total}} 台",
deletedDone: "已删除 {{n}} 台 UME 同步网元",
},
account: {
batchAdd: "一键添加账号",
batchByTag: "按标签添加账号",
batchTitle: "批量添加账号",
batchHint: "将以下账号信息应用到已选中的 {{n}} 台网元。",
batchByTagHint: "将以下账号信息应用到指定标签下的网元;密码可留空,仅更新用户名。",
batchDone: "已为 {{n}} 台网元更新账号",
selectRequired: "请先勾选要配置账号的网元",
applying: "应用中…",
apply: "应用到网元",
usernameOrPasswordRequired: "用户名和密码至少填写一项",
passwordOptionalBatch: "留空则不修改",
},
help:
"【批量导入】\n" +
"· 必填列:device_type、ip、username、port、protocol、name、vendor;可先下载模板。\n" +
"· password 可留空(直连需填;堡垒机托管或后续批量添加代理时可空)。\n" +
"· 推荐流程:先导入网元 → 勾选网元 → 点「批量添加代理」统一配置跳板/堡垒机。\n\n" +
"【跳板 / 堡垒机】\n" +
"· 堡垒机 SSH 用户名模板:{hop_user}@{target_user}@{target_ip}(堡垒机地址单独填在跳板地址);命令行等价:ssh 用户@目标@IP@堡垒机。\n" +
"· 堡垒机托管时填「跳板密码」(Vault 密码),目标密码可留空;手动模式需填目标密码。\n" +
"· JumpServer/CBH 常用跳板端口 2222,部分现场为 22。\n\n" +
"【连通性 / 编辑】\n" +
"· 保存密码需配置 NETX_CREDENTIAL_SECRET_KEY。\n" +
"· 编辑时密码留空表示不修改;连通性失败请点「详情」查看 hop 上下文(不含密码)。",
importResult: {
done: "导入完成:新增 {{inserted}},更新 {{updated}},失败 {{failed}} 行",
},
form: {
requiredHint: "带 * 为必填项",
nameConnectHint: "连通性测试成功后将自动更新为设备名称",
createTitle: "新增网元",
editTitle: "编辑网元",
save: "保存",
saving: "保存中…",
cancel: "取消",
created: "网元已创建",
updated: "网元已更新",
deleted: "网元已删除",
passwordRequired: "请填写密码",
passwordOptional: "留空则不修改",
},
hop: {
sectionTitle: "跳板 / 代理",
type: "跳板类型",
enable: "经跳板登录目标网元",
vendor: {
zte: "ZTE 设备(CLI 跳登)",
huawei: "华为设备(CLI 跳登)",
cisco: "思科设备(CLI 跳登)",
linux: "Linux 服务器(SSH 隧道)",
bastion: "堡垒机(SSH 协议代理)",
},
zteHint: "在 ZTE 设备上执行 ssh/telnet 命令跳转到目标,目标账号由二次认证输入。",
huaweiHint: "在华为设备上执行 telnet / stelnet(SSH)跳登;stelnet 即 SSH。目标账号由二次认证输入。",
ciscoHint: "在思科设备上执行 ssh -vrf / telnet /vrf 跳登,目标账号由二次认证输入。",
linuxHint: "先 SSH 登录 Linux 跳板,经 direct-tcpip 隧道连接目标 IP:端口(等同 ProxyJump)。",
bastionHint:
"SSH 复合用户名直连堡垒机(跳板地址可为 IP 或域名),由堡垒机协议代理到目标。示例:bastion-user@target-user@198.51.100.20@192.0.2.10 或 bastion-user@target-user@198.51.100.20@ssh-bastion.example.com;密码为 Vault/堡垒机密码。JumpServer/CBH 常用端口 2222。",
targetAuthMode: "目标凭据",
targetAuthBastionManaged: "堡垒机托管(目标密码可留空)",
targetAuthManual: "手动输入(连接后二次认证)",
targetAuthHint: "堡垒机托管时仅需堡垒机密码;手动模式需填写目标网元密码。",
usernameTemplate: "SSH 用户名模板",
templateHintBastion:
"默认 {hop_user}@{target_user}@{target_ip},堡垒机地址(IP 或域名)填「跳板地址」。命令行示例:ssh bastion-user@target-user@198.51.100.20@ssh-bastion.example.com。",
host: "跳板地址",
hostPlaceholderBastion: "192.0.2.10 或 ssh-bastion.example.com",
hostHintBastion:
"支持 IP 或 FQDN。也可粘贴完整 SSH 目标串(如 bastion-user@target-user@198.51.100.20@ssh-bastion.example.com),失焦后自动拆成跳板用户名与地址。",
port: "跳板端口",
protocol: "跳板协议",
protocolSshStelnet: "ssh(stelnet)",
username: "跳板用户名",
password: "跳板密码",
vrf: "管理 VRF(可选)",
vpnInstance: "VPN-Instance(可选)",
vrfCisco: "VRF(可选,如 MGMT)",
enterSystemView: "跳登前是否进入系统视图",
enterSystemViewNo: "不进入(用户视图,默认)",
enterSystemViewYes: "进入系统视图(system-view)",
enterSystemViewHint:
"部分华为跳板仅在系统视图下支持 stelnet/telnet。需自行选择;不会因失败自动重试。",
commandTemplate: "跳登命令模板",
templateHint:
"ZTE 常用:telnet {target_ip}、telnet {target_ip} vrf {vrf}、ssh {target_ip}、ssh {target_ip} vrf {vrf}。按跳板协议与 VRF 自动推荐;留空时后端同样规则。目标账号密码由二次认证提示输入。",
templateHintHuawei:
"华为常用:telnet {target_ip}、telnet vpn-instance {vrf} {target_ip}、stelnet {target_ip}、stelnet {target_ip} -vpn-instance {vrf}。SSH 协议对应 stelnet。留空时按协议与 VPN-Instance 自动推荐。",
templateHintCisco:
"思科常用:ssh {target_ip}、ssh -vrf {vrf} {target_ip}、telnet {target_ip}、telnet {target_ip} /vrf {vrf}。留空时按协议与 VRF 自动推荐。",
badge: {
zte: "ZTE跳板",
huawei: "华为跳板",
cisco: "思科跳板",
linux: "Linux跳板",
bastion: "堡垒机",
},
hostRequired: "请填写跳板地址",
userRequired: "请填写跳板用户名",
passwordRequired: "请填写跳板密码",
batchAdd: "添加代理",
batchTitle: "批量添加代理",
batchHint: "将以下跳板配置应用到已选中的 {{n}} 台网元(会覆盖原有跳板设置)。",
batchDone: "已为 {{n}} 台网元配置代理",
selectRequired: "请先勾选要配置的网元",
applying: "应用中…",
apply: "应用到选中网元",
},
},
ume: {
token: {
title: "UME Token 状态",
disconnected: "disconnected",
connected: "connected",
connectedRenew: "connected (需续期)",
expiresIn: "expires_in",
needsRenew: "需续期 / 0s",
preview: "preview",
refreshStatus: "刷新状态",
renewLogin: "手动续期/登录",
renewing: "续期中…",
disconnect: "断开 token",
disconnecting: "断开中…",
renewOkChanged: "续期成功,token 已更新",
renewOkSame: "续期完成(与此前一致)",
disconnectOk: "已断开 UME token",
renewHint: "库中 token 缺少有效过期时间或已过期,请点「手动续期/登录」或等待后台自动续期",
},
subscription: {
title: "UME 告警订阅(WebSocket)",
help:
"订阅需手动建立/取消;建立后(或重启后若库中仍有有效订阅)后台会自动连接 WSS 接收实时告警。后台任务 alarms_current_ws_consumer 的 pause/resume 会停止或恢复 WSS 连接(不会取消 UME 订阅)。",
sub: "订阅",
subActive: "已建立",
subInactive: "未建立",
wssPaused: "已暂停",
wssModeBanner:
"当前告警由 WSS 实时维护(模式: {{mode}}),定时 REST 全量同步已暂停。需要全量对账时请使用下方「同步当前告警」。",
serverLostBanner:
"UME 服务器侧告警订阅已丢失或已过期,本地记录可能仍显示「已建立」。请确认清除本地记录后重新订阅。",
establish: "建立告警订阅",
establishing: "建立订阅…",
reestablish: "清除本地并重新订阅",
reestablishing: "重新订阅…",
cancel: "取消告警订阅",
cancelling: "取消订阅…",
refreshStatus: "刷新订阅状态",
clearLocalOnly: "仅清除本地记录",
clearing: "清除中…",
opFailed: "订阅操作失败",
confirmClearDefault:
"UME 侧告警订阅已不存在或已过期(服务器订阅已丢失)。\n\n是否清除本地订阅记录?清除后可点击「建立告警订阅」重新订阅。",
confirmReestablish: "将清除本地订阅记录并在 UME 上重新建立告警订阅,是否继续?",
titleLoginFirst: "请先登录 UME token",
titleReestablish: "清除本地失效记录并重新向 UME 建立订阅",
establishInvalid: "建立订阅未返回有效 id/uri",
establishExists: "订阅已存在,未重复建立(WSS 将保持/恢复连接)",
establishOk: "告警订阅已建立,WSS 将自动连接",
clearLocalOk: "已清除本地订阅记录,可重新建立订阅",
serverLostMsg: "UME 侧告警订阅已丢失。请确认是否清除本地订阅记录后重新订阅。",
cancelFailed: "取消订阅失败:UME 侧订阅可能仍存在,请查看错误详情后重试",
cancelOkMissing: "本地已清除(UME 侧订阅此前已不存在)",
cancelOk: "告警订阅已取消",
wsLogs: "WSS 运行日志",
wsActivity: "最近活动 {{time}}",
wsAutoRefresh: "自动刷新",
wsLogsEmpty: "暂无日志(建立订阅并连接 WSS 后会出现连接、收包、重连等记录)",
},
keyAlert: {
title: "AI 告警监控",
showPanel: "详情",
hidePanel: "关闭",
help: "按 notificationId 精确匹配,或按告警描述关键字模糊匹配(不区分大小写,匹配 nativeProbableCause 等字段);可选限定 UME Inventory 中的网元类型 (ne_type),不选则匹配全部设备。经 OClaw WebSocket 推送到 WhatsApp 群。鉴权与 NETX_OCLAW_ANALYZE_TOKEN 共用。",
ws: "OClaw WSS",
wsConnected: "已连接",
wsDisconnected: "未连接",
wsDisabled: "未启用",
wsPaused: "已暂停",
publishedOk: "发布成功",
publishedFail: "发布失败",
queue: "待发队列",
matchType: "匹配方式",
matchNotificationId: "告警码 (notificationId)",
matchKeyword: "告警描述关键字",
matchValuePhNotificationId: "输入 notificationId",
matchValuePhKeyword: "输入匹配关键字(不区分大小写)",
label: "规则描述",
labelPh: "必填,如 BGP Down",
neTypesLabel: "设备类型(可选,多选)",
neTypesHint: "不选表示全部设备类型;选项来自 UME Inventory 同步后的 ne_type。",
neTypesEmpty: "暂无设备类型,请先同步 Inventory",
neTypesAll: "全部",
forwardOnClear: "告警清除时也推送",
forwardOnClearHelp: "全局开关:对所有监控规则生效。默认只在告警新增/更新时推送;勾选后,UME 上报告警已清除时也会向 WhatsApp 发送清除通知。",
add: "添加规则",
adding: "添加中…",
delete: "删除",
edit: "修改",
editTitle: "修改监控规则",
save: "保存",
saving: "保存中…",
cancel: "取消",
editOk: "规则已更新",
pickFromAlarms: "加载当前告警参考",
emptyRules: "尚未配置监控规则",
colType: "类型",
colMatch: "匹配内容",
colLabel: "描述",
colNeTypes: "设备类型",
colForwardClear: "清除推送",
colPublished: "发布次数",
colAttempts: "尝试次数",
colLast: "最近推送",
colActions: "操作",
colMonitor: "是否监控",
monitorOn: "开启",
monitorOff: "关闭",
filterKeywordPh: "筛选匹配内容 / 描述",
filterMatchAll: "全部类型",
filterEnabledAll: "全部状态",
filterEnabledOn: "监控中",
filterEnabledOff: "已暂停",
addOk: "已添加监控规则",
deleteOk: "已删除",
confirmDelete: "确定删除该监控规则?",
yes: "是",
no: "否",
},
sync: {
title: "UME 同步",
inventory: "同步 Inventory",
alarmsCurrent: "同步当前告警",
full: "全量同步",
failed: "同步失败",
},
tasks: {
currentTitle: "当前任务",
running: "running",
noRunning: "当前无运行中的任务",
runtimeTitle: "后台任务",
runtimeOpFailed: "后台任务操作失败",
noRuntime: "暂无后台任务状态",
intervalTitle: "Configured sleep between loop iterations (clamped at process start)",
lastRunTitle: "Last finished sync for scheduled tasks; refreshed at each loop tick",
deletedTitle: "全量对账删除条数:inventory 为网元行,alarms_current 为当前告警行,其余域多为 0",
lastErrorCol: "last_error",
runtimeError: {
startup_alarm_sync_before_ws: "启动中:正在同步当前告警(完成后连接 WSS)…",
startup_gate_waiting: "启动 REST 全量同步未完成,定时 REST 与 WSS 均待命",
wss_active_skip_rest: "WSS 实时接收中,已跳过 REST 同步",
pulling_alarms_current: "正在拉取 UME 当前告警…",
alarms_sync_in_progress_skip: "另一条当前告警 REST 同步进行中,已跳过",
pulling_inventory: "正在拉取 UME 网元清单…",
pulling_topology: "正在拉取 UME 拓扑(节点/链路)…",
topology_sync_busy: "拓扑同步进行中,已跳过",
ume_ws_disabled_no_base_url: "未启用或未配置 UME_BASE_URL",
oclaw_fwd_disabled: "未启用或未配置 NETX_OCLAW_ALARM_WS / token / url",
resumed_sync_soon: "已恢复:将跳过本轮周期等待并尽快同步",
resumed_wss_reconnect: "已恢复:将尽快重连 WSS",
resumed_oclaw_wss_reconnect: "已恢复:将尽快重连 OClaw WSS",
resumed: "已恢复",
keepalive_failed: "Token 保活失败",
},
wsState: {
init: "初始化",
connected: "已连接",
connecting: "连接中",
disconnected: "已断开",
no_subscription: "无订阅",
waiting_token: "等待 token",
paused: "已暂停",
error: "连接异常",
reconnecting: "重连等待",
subscription_lost: "UME 订阅已丢失",
disabled_no_base_url: "未启用或未配置 UME_BASE_URL",
},
fwdState: {
paused: "已暂停",
disabled: "未启用",
connecting: "连接中",
connected: "已连接",
connect_refused: "OClaw 网关未启动或 8787 拒绝连接",
connect_timeout: "连接 OClaw 网关超时",
auth_failed: "OClaw netx-bridge 鉴权失败(检查共享 token)",
disconnected: "OClaw WSS 已断开",
},
runtimeTask: {
token_keepalive: "UME Token 保活",
alarms_current_auto_sync: "当前告警定时同步",
alarms_current_ws_consumer: "UME 告警 WSS",
oclaw_alarm_forwarder: "OClaw 关键告警 WSS",
inventory_auto_sync: "Inventory 定时同步",
topology_auto_sync: "拓扑定时同步",
},
},
syncStatus: {
title: "同步状态",
showPanel: "详情",
hidePanel: "关闭",
empty: "暂无同步记录",
summary: "共 {{total}} 条记录,进行中 {{running}}",
fabricGapTitle: "拓扑码头已更新,但尚未灌入拓扑管理(Fabric / UME World)",
fabricGapHint:
"码头 ME {{dock}},Fabric UME {{fabric}};可一键应用(不拉 UME)。上次状态:{{status}}",
applyFabric: "应用到拓扑管理",
applyingFabric: "正在应用…",
applyFabricOk: "已应用到拓扑管理",
},
ne: {
title: "网元清单",
showPanel: "详情",
hidePanel: "关闭",
keywordPh: "keyword(ne_id/ne_name/user_label/ip/host_name)",
clearTitle: "清空 keyword,回到第 1 页",
expand: "详情",
collapse: "关闭",
cliConnect: "CLI 连通",
summary: "Inventory 网元 {{total}} 台",
},
tabs: {
main: "UME 同步",
cli: "CLI 连接",
},
cli: {
title: "UME CLI 连接配置",
showPanel: "详情",
hidePanel: "关闭",
hint: "为 UME 清单网元配置统一 SSH 凭据与跳板/堡垒机;OClaw MCP 可通过 ume_ne_id 直接执行 show 命令,无需逐台录入 managed_ne。",
statusReady: "CLI 配置已就绪,可对 UME 网元执行命令。",
statusNotReady: "请填写目标用户名,并配置跳板/堡垒机(若启用)。",
profileName: "配置名称",
targetUsername: "目标 SSH 用户名",
targetPassword: "目标 SSH 密码",
passwordKeep: "留空则不修改",
newProfile: "新建配置",
deleteConfirm: "确定删除该 CLI 配置?",
deleted: "配置已删除",
saved: "CLI 配置已保存",
connectTestTitle: "样本网元连通性测试",
sampleNePh: "ume_ne_id(从下方网元清单复制)",
sampleNeRequired: "请填写 ume_ne_id",
connectTestSubmitted: "已提交连通性测试",
connectTestWaiting: "等待测试结果…",
connectTestRunning: "连通性测试中…",
connectTestResult: "测试结果",
existingProfiles: "已有配置",
default: "默认",
},
alarms: {
title: "当前告警",
movedHint: "当前告警查询已迁至网络管理 →",
showPanel: "展开",
hidePanel: "收起",
keywordPh: "keyword(告警键/原因/ne_name/host_name/ip 等)",
hostNamePh: "host_name(含匹配)",
allSeverity: "全部级别",
clearedAll: "清除状态:全部",
clearedYes: "已清除",
clearedNo: "未清除",
clearTitle: "清空 keyword、host_name、级别、is_cleared,回到第 1 页",
filterByHost: "按该主机名筛选",
noHostName: "无 host_name(需先同步网元)",
col: {
time: "告警时间",
severity: "级别",
neId: "网元 ID",
hostName: "主机名",
neType: "网元类型",
cause: "原因",
},
},
},
webcrt: {
title: "WebCRT",
deviceList: "设备列表",
sessionManager: "设备列表",
connect: "连接",
hint: "选择网元,在浏览器中打开交互式终端。凭据由服务端解密,不会下发到前端。",
hintCrt: "在左侧点击网元即可打开终端;支持托管、会话与 UME;也可用菜单「新建会话」快速登录。",
filterKeyword: "筛选",
filterKeywordPh: "按名称 / IP / 标签筛选",
empty: "没有匹配的网元。可切换来源或调整搜索关键字。",
open: "打开终端",
opening: "连接中…",
opened: "已打开 {{name}}",
disconnect: "断开",
closed: "会话已断开",
termPlaceholder: "尚未打开终端会话",
sessionMeta: "{{name}} · {{ip}}",
source: {
all: "全部",
managed: "托管",
webcrt: "会话",
ume: "UME",
},
newSession: {
title: "新建会话",
claimTitle: "完善占位会话",
claimHint: "请填写可达地址;会话名默认使用占位名。连接成功后来源将更新为 WebCRT。",
connect: "连接",
connecting: "连接中…",
protocol: "协议",
host: "主机",
port: "端口",
sessionName: "会话名",
sessionNamePh: "可选,默认使用 IP",
authTitle: "SSH 登录",
savePassword: "保存密码",
ipRequired: "请填写主机地址",
userRequired: "请填写用户名",
passwordRequired: "请填写密码",
},
status: {
idle: "空闲",
connecting: "连接中",
connected: "已连接",
error: "错误",
closed: "已关闭",
},
phase: {
creating: "创建会话",
authenticating: "正在认证",
waitingPrompt: "等待设备提示符",
hint: "登录过程会实时显示在终端中;设备较慢时可能需要十几秒",
},
tabMenu: {
close: "关闭",
closeOthers: "关闭其他",
closeAll: "关闭全部",
copyIp: "复制 IP",
copyIpOk: "已复制 {{ip}}",
copyIpEmpty: "该标签没有 IP",
},
treeMenu: {
rename: "重命名",
renameLabel: "会话名",
renameSave: "保存",
renameRequired: "请填写会话名",
renamed: "会话已重命名",
delete: "删除会话",
deleteConfirm: "确定删除会话「{{name}}」?此操作不可恢复。",
deleted: "会话已删除",
},
keywordHl: {
title: "关键字突出显示",
enabled: "启用",
newKeyword: "新建关键字",
newKeywordPh: "输入关键字或正则",
regex: "正则表达式",
add: "添加",
colKeyword: "关键字",
colRegex: "正则",
empty: "尚未添加关键字",
moveUp: "上移",
moveDown: "下移",
remove: "删除",
caseSensitive: "区分大小写",
color: "字符颜色",
saved: "关键字突出显示已保存",
},
actions: {
reconnect: "重新连接",
recordLog: "记录日志",
clear: "清空",
copy: "拷贝",
recording: "记录中",
recordingOn: "已开始记录日志",
recordingSaved: "日志已保存",
copied: "已复制到剪贴板",
copyEmpty: "终端内容为空",
copyFailed: "复制失败",
break: "Break",
breakSent: "已发送 Break",
broadcast: "广播",
broadcastSent: "已广播到全部会话",
postLogin: "登录后命令",
},
favorites: "收藏",
recent: "最近",
favorite: "收藏/取消",
encoding: "编码",
fontSize: "字号",
theme: "主题",
themeDark: "深色",
themeLight: "浅色",
colorScheme: "配色方案",
backgroundColor: "背景色",
foregroundColor: "字体色",
scheme: {
dark: "深蓝(默认)",
blackWhite: "白底黑字",
whiteBlack: "黑底白字",
greenBlack: "黑底绿字",
amberBlack: "黑底琥珀",
custom: "自定义",
},
copyOnSelect: "选中即复制",
pasteDelay: "粘贴最大行间隔",
pasteDelayOff: "无延迟(整块发送)",
keepalive: "SSH Keepalive",
keepaliveOff: "关闭",
keepaliveSec: "{{n}} 秒",
options: "选项",
globalSessionOptions: "全局会话选项",
sessionOptionsSave: "保存",
sessionOptionsCancel: "取消",
sessionOptionsSaved: "已保存全局会话选项",
disconnectBanner: "会话已断开",
disconnectBannerError: "会话出错或连接中断",
broadcastPh: "发送到全部标签…",
buttonBarHint: "每行:按钮名|命令",
postLoginPrompt: "登录后自动执行(每行一条,仅本设备)",
postLoginSaved: "登录后命令已保存",
sftp: {
title: "SFTP",
refresh: "刷新",
up: "上级",
upload: "上传",
uploaded: "上传成功",
uploading: "上传 {{done}}/{{total}} · {{name}} {{pct}}",
downloading: "下载 {{done}}/{{total}} · {{name}} {{pct}}",
downloaded: "已下载 {{count}} 个文件",
downloadPartial: "下载完成 {{ok}} 个,失败 {{failed}} 个",
uploadPartial: "上传完成 {{ok}} 个,失败 {{failed}} 个",
retrying: "重试 {{name}}({{attempt}}/{{max}})…",
cancel: "取消",
dropHint: "松开以上传到当前目录",
dropEmpty: "未识别到可上传的文件",
mkdir: "新建",
mkdirPrompt: "新建目录名称",
mkdirInvalid: "目录名无效(不要包含 / 或 ..)",
mkdirOk: "目录已创建",
rename: "重命名",
renamePrompt: "新名称",
renameInvalid: "名称无效(不要包含 / 或 ..)",
renamed: "已重命名",
download: "下载",
chmod: "权限",
chmodPrompt: "权限模式(如 755 或 rwxr-xr-x)",
chmodOk: "权限已更新",
chmodPartial: "权限更新 {{ok}} 个,失败 {{failed}} 个",
delete: "删除",
deleteConfirm: "确定删除 {{name}}?",
deleteRecursiveConfirm: "{{name}} 含目录,非空目录将递归删除,是否继续?",
deletePartial: "删除完成 {{ok}} 个,失败 {{failed}} 个",
deleted: "已删除",
selectedCount: "已选 {{count}} 项",
empty: "当前目录为空",
listTruncated: "目录条目过多,仅显示前 {{count}} 项(上限 {{max}})",
dir: "目录",
loading: "正在加载…",
enterHint: "单击选中;Ctrl/Shift 多选;双击进入",
downloadHint: "单击选中;Ctrl/Shift 多选;双击下载",
colName: "名称",
colSize: "大小",
colMtime: "修改时间",
colOwner: "所有者",
colGroup: "组",
colMode: "权限",
resizeHint: "拖动调整 SFTP / 终端宽度",
colResizeHint: "拖动调整列宽",
},
term: {
findPh: "查找…",
findPrev: "上一个",
findNext: "下一个",
findClose: "关闭查找",
copy: "复制",
paste: "粘贴",
pasteEmpty: "剪贴板为空",
pasteFailed: "无法读取剪贴板(HTTP 远程请用下方粘贴框,或 Ctrl+V)",
pasteBridgeHint: "当前为非 HTTPS 访问,浏览器禁止直接读剪贴板。请在此框按 Ctrl+V 粘贴,内容会发送到终端。",
pasteBridgePh: "在此按 Ctrl+V…",
pasteBridgeCancel: "取消",
clear: "清空",
pasting: "粘贴中 {{done}}/{{total}} 行…",
wsError: "[WebSocket 错误]",
wsClosed: "[WebSocket 已关闭 code={{code}}]",
sessionStatus: "[会话 {{state}}{{detail}}]",
outputTruncated: "[输出过快,已丢弃 {{count}} 段]",
},
err: {
deviceType: "不支持的设备类型",
ipConflictRestart: "数据库仍限制 IP 唯一,请重启 netx API 后再试",
sessionLimit: "并发会话已达上限,请先关闭其他终端",
neNotFound: "网元不存在",
credsIncomplete: "网元账号或密码不完整",
authRejected: "用户名或密码错误,请重新输入",
cliProfile: "UME 网元需要先配置 CLI 连接模板(默认账号/跳板)",
connectFailed: "登录设备失败:{{detail}}",
sftpHop: "SFTP 暂不支持跳板设备,请使用直连 SSH",
sftpSsh: "SFTP 仅支持 SSH 协议",
sftpNeedPassword: "SFTP 需要已保存的 SSH 密码(会话弹窗密码不会用于文件传输)",
sftpUnsupported: "当前 SSH 会话未提供 SFTP(设备可能未开启)",
sftpTooLarge: "文件超过大小限制(默认 512MB)",
sftpChmodInvalid: "权限模式无效(请用 755 或 rwxr-xr-x)",
sftpAborted: "传输已取消",
queueDropped: "终端输出过快,已丢弃约 {{count}} 段,内容可能不完整",
websocket: "WebSocket 连接失败",
},
},
topology: {
title: "拓扑管理",
maps: "拓扑图",
tree: "拓扑树",
treeLoading: "加载拓扑树…",
treeLoadFailed: "拓扑树加载失败",
treeRetry: "重试",
graphLoading: "正在加载拓扑图…",
graphLoadFailed: "拓扑图加载失败",
graphRefreshing: "刷新中…",
canvasEmpty: "这张图上还没有网元",
canvasEmptyHint: "可用「添加网元」上图,或从左侧换到有设备的区域。",
treeHint: "顶级为「根」(导航);其下唯一「根图」为画布。点根图或子区域打开设备画布。",
treeSearch: "全拓扑搜索网元",
treeSearchPh: "名称 / IP",
treeSearchEmpty: "没有匹配的网元",
treeSearchNoViews: "未上图",
treeSearchNotOnMap: "该网元尚未出现在任何拓扑图上",
locateNotOnCanvas: "当前世界地图抽样中没有该网元,且缺少世界坐标,请到下级区域画布查找。",
treeSearchViewCount: "{{count}} 张图",
treeSearchTruncated: "仅显示前 30 条(共 {{total}})",
rootName: "根",
selectRegion: "请选择根或区域",
openMap: "打开本图",
openRegion: "打开",
kindPhysical: "物理拓扑",
kindCustom: "自定义图",
layerNodeHint: "{{count}} 个网元",
layerNodeEmpty: "点击创建并打开",
rootCanvasHint: "从左侧选择根进入目录。",
regionCanvasHint: "点击根图打开设备画布;可在根图上新建子区域。",
regionBrowseHint: "根目录:下方为唯一根图。点击打开。",
browserTitle: "拓扑目录",
browserRegionSub: "共 {{count}} 张拓扑图",
browserRegionsSub: "共 {{count}} 个",
browserEmptyMaps: "此根下还没有根图。",
addNe: "添加网元",
backUp: "返回",
newRegion: "新建根",
newRegionName: "新根",
newRegionPrompt: "根名称",
newSubRegion: "新建子区域",
newSubRegionName: "新子区域",
newSubRegionPrompt: "子区域名称",
subRegionNotOnFlat: "世界地图不支持子区域,请在 World 或下级区域画布上创建。",
worldMapNoDirectNes: "世界地图不能直接添加网元,请到某个子区域画布上添加。",
worldMapName: "世界地图",
worldMapOffline: "世界地图功能已暂时下线",
rootMapName: "根图",
worldHud: "世界 {{total}} · 近景 {{cached}} · z{{zoom}} · {{lod}}",
worldEmptyCoords: "世界地图还没有坐标",
worldEmptyCoordsHint: "码头已有 {{dock}} 个网元,但尚未灌入 Fabric / 世界坐标。可一键应用(不拉 UME)。",
worldApply: "应用到世界地图",
worldApplying: "正在应用…",
worldApplyOk: "已应用到世界地图",
subRegionNeedParent: "请先打开根图或区域画布,再新建子区域。",
regionCreated: "已创建",
regionDeleted: "已删除",
deleteRegion: "删除",
deleteRegionConfirm: "删除「{{name}}」?其下画布将一并删除。",
deleteUmeWorldConfirm:
"删除「{{name}}」?将级联删除其下全部 UME 区域与画布。之后若再跑 UME 拓扑同步/应用,可能重新生成。",
renameRegion: "重命名",
renameRegionPrompt: "名称",
regionRenamed: "已重命名",
collapseRegion: "折叠",
expandRegion: "展开",
newCustom: "自定义图",
newCustomName: "自定义拓扑",
newCustomPrompt: "自定义拓扑图名称",
folderHint: "新建根时自动创建唯一「根图」。子区域请在根图画布上创建。",
folderHintShort: "根目录",
outsidePeers: "图外对端 {{count}} 个(有链路未上图)",
outsidePeersView: "未上图网元 {{count}}",
outsidePeersTitle: "图外对端",
outsidePeersHint: "与画布有链路但未上图。勾选后按需添加,不必一次全部投影。",
outsidePeersVia: "经 {{name}}",
outsidePeersFilterPh: "筛选:名称 / IP / 经谁",
outsidePeersEmpty: "没有匹配的图外对端",
projectNeighbors: "投影邻居上图",
projectedNeighbors: "已投影 {{count}} 个邻居上图",
localBrowserOnly: "仅本浏览器",
deleteEdgeConfirm: "从画布移除选中链路?仅在点击「保存」后才会从 Fabric 删除;LLDP 下次采集若仍存在可能再次出现。",
edgeDeleted: "已标记删除 {{count}} 条链路(保存后生效)",
discoverCancelled: "发现已取消",
truncatedMembership: "视图已达成员上限,部分邻居未上图。可去分类页或新建视图。",
truncatedFrozen: "当前视图已冻结成员,无法投影邻居。请在分类流程中处理或新建视图。",
truncatedNodes: "画布节点过多已截断显示。建议新建视图或收紧成员范围。",
truncatedEdges: "画布链路过多已截断显示。建议筛选状态或新建视图。",
truncatedGeneric: "图数据已截断显示。建议收紧范围或新建视图。",
deleteSelectionConfirm:
"从本图移除 {{nodes}} 个网元、删除 {{edges}} 条链路?移出与链路删除均在点击「保存」后生效。",
selectionDeleted: "已标记:移除 {{nodes}} 个网元、删除 {{edges}} 条链路(保存后生效)",
newMap: "新建",
newMapName: "新拓扑图",
rename: "重命名",
renamePrompt: "拓扑图名称",
renameHint: "双击可重命名",
renamed: "拓扑图已重命名",
deleteMap: "删除图",
deleteMapConfirm: "删除拓扑图「{{name}}」?节点与链路会一并删除。",
emptyMaps: "还没有根,先点「新建根」。",
palette: "网元库",
paletteHint: "勾选后批量添加;也可拖到画布添加单台",
paletteDragHint: "拖到画布添加",
selectAllVisible: "全选当前列表",
addSelected: "添加选中({{count}})",
addSelectedDone: "已添加 {{count}} 台网元",
addingNe: "添加中…",
filterPh: "输入即筛:名称 / IP / 厂商",
save: "保存",
saveDirty: "保存 *",
unsavedConfirm: "有未保存的更改,确定丢弃并切换吗?",
saving: "保存中…",
saved: "拓扑已保存",
saveFailed: "保存失败:{{detail}}",
readOnlyBanner: "只读模式(需要 ne:write 权限才能编辑)",
readOnlyHint: "只读模式,无编辑权限",
discoverTimeout: "发现任务超时,请稍后在 LLDP 任务页查看进度",
policySyncFailed: "同步 LLDP 策略失败,本地开关仍对本页发现生效",
discover: "发现链路",
discovering: "发现中…",
discoverOne: "发现链路",
discovered: "发现完成:新增 {{added}},更新 {{updated}},未发现 {{stale}}",
discoverFail: "发现失败:{{detail}}",
discoverOneNeedNe: "该节点未关联可扫描网元",
selectMap: "请选择或新建一张拓扑图",
renameNode: "重命名",
renameNodePrompt: "网元显示名称",
sourcePort: "本端端口",
targetPort: "对端端口",
endpointA: "端点 A",
endpointB: "端点 B",
port: "端口",
expandPhysicalLinks: "展开物理链路",
scaleBundleWidth: "聚合线按条数加粗",
linkMembers: "物理成员({{count}})",
canvasHint:
"左侧为区域目录(需自行添加画布);打开本图后进入设备画布,用「添加网元」上图并保存。",
selected: "已选节点",
selectedEdge: "已选链路",
selectedCount: "已选 {{count}}",
toolModes: "编辑模式",
toolSelect: "选择",
toolPan: "平移",
toolDrag: "拖动",
toolConnect: "连线",
layout: "布局",
layoutHierarchicalTb: "层次 · 自上而下",
layoutHierarchicalLr: "层次 · 从左到右",
layoutForce: "力导向",
layoutGrid: "网格",
layoutRadial: "环形",
layoutSelected: "仅布局选中(层次)",
layoutNeedSelection: "请先选中要布局的节点",
align: "对齐",
alignLeft: "左对齐",
alignRight: "右对齐",
alignTop: "顶对齐",
alignBottom: "底对齐",
alignHCenter: "水平居中",
alignVCenter: "垂直居中",
alignHDistribute: "水平分布",
alignVDistribute: "垂直分布",
alignNeedSelection: "请至少选中两个节点",
snapGrid: "网格吸附",
autoLayoutDiscover: "发现后自动布局",
discoverAutoAddUnmatched: "发现时自动入库未匹配网元(占位)",
discoverProjectNeighbors: "发现后将本次扫描网元的直连邻居加入画布(需保存才永久保留)",
undo: "撤销",
redo: "重做",
discoverSelected: "发现链路({{count}})",
removeSelected: "移除选中 ({{count}})",
openWebcrt: "打开终端",
openNe: "网元详情",
openAlarms: "查看告警",
noAlarmLink: "该节点无法定位告警过滤条件",
removeNode: "从画布移除",
deletePlaceholder: "删除占位网元",
deletePlaceholderConfirm: "永久删除此占位网元(含库存记录与 Fabric 直连链路)?画布撤销无法恢复。",
deletePlaceholderDone: "占位网元已删除",
removeEdge: "删除链路",
nodeMenu: "网元",
paneMenu: "画布",
edgeMenu: "链路",
createNe: "新建网元",
createNeModeHint: "选择创建正式运维网元,或仅建拓扑占位(可稍后完善登录信息)。",
createNeManaged: "正式网元",
createNeManagedHint: "与网元管理相同的完整表单;创建后自动上图。",
createNePlaceholder: "占位网元",
createNePlaceholderHint: "仅名称/IP,来源为拓扑占位,适合先构图再补齐凭据。",
createNeTitle: "新建拓扑占位网元",
createNeHint: "来源为拓扑占位;完善登录信息后可在 WebCRT 连接,或在网元管理升级为手工。",
createNeName: "名称",
createNeNamePh: "例如 SW-CORE-01",
createNeNameRequired: "请填写网元名称",
createNeIp: "IP(可选)",
createNeIpPh: "可稍后在完善时填写",
createNeDone: "已新建占位网元 {{name}}",
createManagedNeDone: "已创建网元并上图 {{name}}",
createManagedNePlaceFailed:
"网元 {{name}} 已写入库存,但上图失败:{{error}}。请从网元管理或侧栏再次添加。",
createManagedNePosFailed: "网元 {{name}} 已上图,但未能移到点击位置(保留默认布局坐标)",
createNeBusy: "创建中…",
connectTest: "连通性测试",
connectTestSelected: "连通性测试 ({{count}})",
connectTestNeedManaged: "该节点未绑定运维网元,无法做连通性测试",
connectTestSkipped: "跳过 {{count}} 台无运维绑定",
selectionMenu: "多选",
edgeStyle: "链路样式",
edgeColor: "颜色",
edgeLineStyle: "线型",
edgeLineSolid: "实线",
edgeLineDashed: "虚线",
edgeLineDotted: "点线",
edgeWidth: "粗细",
edgeStyleReset: "恢复默认",
edgeDefaults: "默认链路样式",
edgeDefaultsReset: "恢复出厂",
noNeLink: "未关联托管网元",
completeNeFirst:
"该网元登录信息不完整(厂家、代理跳转等需在网元管理填写)。请先完善后再打开终端。",
edgeManual: "人工",
edgeUme: "UME",
edgeDiscovered: "LLDP 发现",
edgeStale: "未发现",
fit: "适应画布",
export: "导出",
exportSvg: "SVG 矢量",
exportXml: "XML 数据",
exporting: "导出中…",
exportEmpty: "画布上没有可导出的内容",
exportedSvg: "已导出 SVG",
exportedXml: "已导出 XML",
exportFailed: "导出失败:{{detail}}",
liveSync: "实时同步",
liveSyncOn: "同步中…",
liveSyncHint: "开启后约每 5 秒刷新左侧树、每 3 秒刷新当前画布(观看 MCP 建图/画拓扑);默认关闭",
fullscreen: "全屏显示",
exitFullscreen: "退出全屏",
display: "显示",
canvasBg: "画布背景",
canvasBgColor: "背景色",
canvasBgReset: "恢复默认",
textColors: "文字颜色",
textColorsReset: "恢复默认",
labelColor: "网元名称",
edgeLabelColor: "链路数字",
vendorColors: "厂商图标色",
vendorColorsReset: "恢复默认",
vendorTone: {
cisco: "Cisco",
huawei: "华为",
zte: "中兴",
juniper: "Juniper",
nokia: "Nokia",
ericsson: "Ericsson",
h3c: "H3C",
ruijie: "锐捷",
mikrotik: "MikroTik",
gray: "未知/未托管",
},
hideIp: "隐藏 IP",
hideVendor: "隐藏厂商",
showPlaceholderBadge: "显示占位角标(TOPO/LLDP)",
showConnectStatus: "显示连通状态点",
showAlarmOverlay: "显示告警叠层",
showLevelColors: "按分类层级着色",
levelUnmatched: "未分类",
level: {
external: "外部",
core: "核心",
aggregation: "汇聚",
access: "接入",
edge: "边缘",
},
hidePorts: "隐藏端口",
edgeFlow: "链路流动",
collapseSidebar: "折叠侧栏",
expandSidebar: "展开侧栏",
resizeSidebar: "拖动调整侧栏宽度",
hideAdded: "隐藏已添加",
paletteEmpty: "没有匹配的网元。",
paletteHiddenAll: "已添加网元已隐藏;取消勾选可重新显示。",
paletteSource: "网元来源",
paletteManaged: "托管网元",
paletteUme: "UME 网元",
paletteLoading: "加载中…",
discoverReport: "发现进度",
discoverClose: "关闭",
discoverCancel: "取消发现",
discoverProgress: "正在扫描画布上 {{count}} 台托管网元(串行登录采集 LLDP,请稍候)…",
discoverProgressLive: "正在扫描 {{index}}/{{total}}:{{name}}",
discoverSummary: "扫描 {{scanned}} 台 · 新增 {{added}} · 更新 {{updated}} · 未发现 {{stale}} · 失败 {{failed}}",
discoverNeOk: "邻居 {{neighbors}} · 新增 {{added}} · 更新 {{updated}}",
discoverNeFail: "采集失败",
discoverUnmatched: "未匹配 {{count}}",
discoverUnmatchedMore: "另有 {{count}} 条未列出",
discoverVendorRequired: "未设置厂商/设备类型,已跳过下发 LLDP 命令",
discoverParserStub: "厂商解析器「{{parser}}」仍为 stub,已采集到输出但未能解析邻居",
discoverNoTargets: "画布上没有可扫描网元。请添加托管网元,或添加已配置 CLI 凭据的 UME 网元。",
discoverViewDetail: "详情",
discoverLinkCount: "链路 {{count}}",
discoverLinksTitle: "匹配链路({{count}})",
discoverLinksEmpty: "本次未匹配到画布上的对端网元链路。",
discoverUnmatchedTitle: "未匹配邻居({{count}})",
discoverUnmatchedEmpty: "无未匹配邻居。",
discoverColPeer: "对端网元",
discoverColRemote: "邻居",
discoverColLocalPort: "本端端口",
discoverColRemotePort: "对端端口",
discoverColProtocol: "协议",
discoverColAction: "结果",
discoverLinkAdded: "新增",
discoverLinkUpdated: "更新",
discoverLinkKeptManual: "保留人工",
discoverLocatePeer: "定位对端",
discoverLocateNe: "定位本端",
discoverRawPreview: "采集原文预览(过长会截断,不影响解析)",
discoverGoLldp: "查看详情 → LLDP 链路",
findNode: "定位",
findNodePh: "输入即搜:名称 / IP / 厂商",
findNoMatch: "画布上没有匹配的节点",
findMore: "另有 {{count}} 条匹配…",
locateOnCanvas: "点击定位到画布",
openPortTraffic: "打开端口流量",
removeStale: "清除未发现 ({{count}})",
removeStaleHint: "标记删除红色未发现链路(保存后生效);周期采集连续 4 次未发现也会自动清理",
staleRemoved: "已标记删除 {{count}} 条未发现链路(保存后生效)",
connectHint: "连线模式:从网元中心锚点拖到目标网元(Esc 或切回选择退出)",
},
topoClassify: {
title: "分类",
openTopo: "拓扑画布",
inventory: "网元清单",
keywordPh: "关键字筛选名称/IP",
filterLevelAll: "全部层级",
filterRegionAll: "全部区域",
filterUnmatchedOff: "不过滤未分类",
kindAny: "层级或区域未填",
kindLevel: "层级未填",
kindRegion: "区域未填",
filterLinkAll: "全部关联",
filterLinkLinked: "已关联库存",
filterLinkOrphaned: "已解绑",
colLink: "关联",
linkManaged: "托管",
linkUme: "UME",
linkBoth: "托管+UME",
linkOrphaned: "已解绑",
levelExternal: "L0 外部",
levelCore: "L1 核心",
levelCoreSub: "L1.1 次核心",
levelAgg: "L2 汇聚",
levelAggSub: "L2.1 二级汇聚",
levelAccess: "L3 接入",
levelAccessSub: "L3.1 更深接入",
levelInvalid: "层级无效(0–99.9,一位小数)",
sourceManual: "手动",
sourceUmeSync: "UME 同步",
sourceLldp: "LLDP 占位",
sourceTopology: "拓扑占位",
sourceWebcrt: "WebCRT",
regexTitle: "正则查找",
patternPh: "正则,如 ^CORE- 或 -BJ-",
fieldName: "名称",
fieldNameIp: "名称+IP",
findMatches: "查找匹配",
matchOk: "匹配 {{count}} 条,已勾选",
matchHint: "当前匹配 {{count}} 条",
assignLevel: "只改层级",
assignRegion: "只改区域",
assignBoth: "层级+区域",
clearRegion: "清空区域",
confirmAssign: "确认写入",
bulkConfirm: "将给已选/匹配的 {{count}} 条网元写入分类,确定?",
bulkOk: "已更新 {{count}} 条",
selectedCount: "已选 {{count}}",
selectPage: "全选本页",
colNe: "网元",
colLevel: "层级",
colRegion: "区域",
colActions: "操作",
edit: "编辑",
save: "保存",
cancel: "取消",
delete: "删除",
deleteSelected: "删除节点 ({{count}})",
deleteConfirm: "将从拓扑 Fabric 删除 {{count}} 个节点(含上图与边),不影响网元管理/UME 清单。确定?",
deleteOk: "已删除 {{count}} 个节点",
deleteHint: "仅可删除已解绑节点,或 LLDP/WebCRT 等非实际管理占位;仅 UME / 实际管理网元不可删",
deleteBlocked: "仅 UME 或仍关联实际管理网元,不可在此删除",
rowSaved: "已保存",
loading: "加载中…",
empty: "没有网元。",
},
audit: {
title: "操作审计",
logsTitle: "操作日志",
colSummary: "摘要",
colDetail: "详情",
showDetail: "展开",
hideDetail: "收起",
filterAll: "全部",
filterWebcrt: "设备终端",
filterNeExec: "设备执行",
filterAuth: "登录认证",
summary: {
connecting: "正在登录 {{device}}",
loginOk: "登录 {{device}}",
loginFail: "登录失败 {{device}}:{{error}}",
logout: "断开 {{device}}",
logoutReason: "断开 {{device}}({{reason}})",
command: "{{device}} · 命令: {{command}}",
neExec: "{{device}} · 执行: {{commands}}",
neExecBatch: "批量执行 {{n}} 台(成功 {{ok}} / 失败 {{fail}})",
},
nav: {
tasks: "任务概览",
logs: "操作日志",
},
tasks: {
title: "任务概览",
hint: "汇总当前系统中正在运行或挂起的各类后台任务;发起人优先取近期审计记录,调度类任务显示为 scheduler/system。",
empty: "当前没有可展示的任务。",
open: "打开",
inflight: "进行中 {{n}}",
kpiActive: "活跃/在途",
kpiTotal: "条目总数",
kpiKinds: "按类型",
kpiStatuses: "按状态",
colKind: "类型",
colTitle: "任务",
colStatus: "状态",
colActor: "发起人",
colTrigger: "触发",
colProgress: "进度",
colStarted: "开始",
colUpdated: "更新",
colLink: "入口",
kind: {
port_traffic: "端口流量",
config_sync: "配置同步",
ne_collect: "批量采集",
lldp_discover: "LLDP 发现",
ume_sync: "UME 同步",
ne_connect: "连通性测试",
ume_runtime: "UME 后台",
webcrt: "WebCRT",
},
trigger: {
manual: "手动",
schedule: "调度",
topology: "拓扑",
system: "系统",
retry_failed: "重试失败",
},
status: {
collecting: "采集中",
running: "运行中",
testing: "测试中",
connecting: "登录中",
ready: "已连接",
detached: "已断开(宽限)",
pending: "排队",
paused: "暂停",
idle: "空闲",
error: "错误",
failed: "失败",
},
},
},
};
export default zh;