netxops/src/client/locales.ts
oliver 2caa3c98d7 Register KB pack skills from operator-subset _skills (P2).
Load hasSkills packs onto preset/public planes with groupKb toggles; unify content has* keys and keep netx-ops pure.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 11:46:31 +08:00

222 lines
8 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.

/** Locale keys for the Netx Ops settings section. */
export type NetxopsLocaleKey =
| 'title'
| 'description'
| 'sectionConnection'
| 'sectionCapabilities'
| 'sectionKnowledge'
| 'sectionAlarms'
| 'sectionExport'
| 'apiUrl'
| 'apiUrlHint'
| 'lang'
| 'langHint'
| 'capabilityGroups'
| 'nmsProvider'
| 'nmsProviderHint'
| 'groupOps'
| 'groupTopology'
| 'groupKb'
| 'groupInPreset'
| 'groupPublic'
| 'kbRoot'
| 'kbRootHint'
| 'kbBrowse'
| 'kbBrowseUnavailable'
| 'kbBrowseFailed'
| 'kbSaveHint'
| 'kbStatusConfigured'
| 'kbStatusUnconfigured'
| 'kbStatusError'
| 'alarmPushEnabled'
| 'alarmPushStatus'
| 'alarmPushPhaseDisabled'
| 'alarmPushPhaseIdle'
| 'alarmPushPhaseConnecting'
| 'alarmPushPhaseAuthenticating'
| 'alarmPushPhaseConnected'
| 'alarmPushPhaseReconnecting'
| 'alarmPushPhaseAuthFailed'
| 'alarmPushPhaseError'
| 'alarmDeliverDsh'
| 'alarmDeliverIm'
| 'imTargetNone'
| 'imTargetSelectedCount'
| 'imCatalogUnavailable'
| 'apiToken'
| 'apiTokenHint'
| 'apiTokenUnavailable'
| 'apiTokenSet'
| 'apiTokenUnset'
| 'sessionsExport'
| 'sessionsExportCount'
| 'sessionsExportUnavailable'
| 'sessionsExportNoPersistence'
| 'sessionsExportNoRawArtifacts'
| 'sessionsExportListFailed'
| 'sessionsExportRpcUnavailable'
| 'sessionsExportRpcFailed'
| 'sessionsExportHttpFailed'
| 'sessionsExportEmpty'
| 'sessionsExportButton'
| 'sessionsExportBusy'
| 'sessionsExportDone'
| 'overridden'
| 'reset'
| 'invalid'
| 'unsaved'
| 'readOnly'
| 'saveFailed'
| 'discard'
| 'save'
| 'saving'
| 'configSaved'
export const en: Record<NetxopsLocaleKey, string> = {
title: 'Netx Ops',
description: 'API, token, capabilities, knowledge base, and alarm delivery.',
sectionConnection: 'Connection',
sectionCapabilities: 'Capability groups',
sectionKnowledge: 'Knowledge base',
sectionAlarms: 'Key-alarm delivery',
sectionExport: 'Session export',
apiUrl: 'API URL',
apiUrlHint: 'e.g. http://127.0.0.1:8890',
lang: 'Language',
langHint: 'zh / en',
capabilityGroups: 'Capability groups',
nmsProvider: 'NMS provider',
nmsProviderHint: 'zte-ume',
groupOps: 'ops',
groupTopology: 'topology',
groupKb: 'Knowledge skills',
groupInPreset: 'In Netx Ops preset',
groupPublic: 'Publish to other presets',
kbRoot: 'Package root',
kbRootHint: 'Folder with MANIFEST.json (operator-subset v1.0). Browse auto-saves. Pack skills load from _skills/ when hasSkills.',
kbBrowse: 'Browse…',
kbBrowseUnavailable: 'Directory picker unavailable — paste an absolute folder path, then Save.',
kbBrowseFailed: 'Browse failed: {detail}',
kbSaveHint: 'Browse writes and saves automatically. Manual paste still needs Save.',
kbStatusConfigured: 'Knowledge base: {operator} ({country}) v{version}',
kbStatusUnconfigured: 'Knowledge base: not configured (pure netx)',
kbStatusError: 'Knowledge base: error — {detail}',
alarmPushEnabled: 'Key-alarm push',
alarmPushStatus: 'Status',
alarmPushPhaseDisabled: 'Off',
alarmPushPhaseIdle: 'Idle',
alarmPushPhaseConnecting: 'Connecting…',
alarmPushPhaseAuthenticating: 'Authenticating…',
alarmPushPhaseConnected: 'Connected',
alarmPushPhaseReconnecting: 'Reconnecting…',
alarmPushPhaseAuthFailed: 'Auth failed',
alarmPushPhaseError: 'Error',
alarmDeliverDsh: 'Deliver to DSH session',
alarmDeliverIm: 'Deliver to WhatsApp / IM',
imTargetNone: 'No delivery targets yet — create one in IM delivery settings.',
imTargetSelectedCount: '{count} selected',
imCatalogUnavailable: 'Cannot load IM targets (install/update dsh-im-ops).',
apiToken: 'API token',
apiTokenHint: 'Stored as NETX_API_TOKEN. Leave blank to keep current.',
apiTokenUnavailable: 'remote.credentials unavailable — set NETX_API_TOKEN via script.',
apiTokenSet: 'Configured',
apiTokenUnset: 'Not set',
sessionsExport: 'Export all sessions',
sessionsExportCount: '{count} sessions',
sessionsExportUnavailable: 'Export unavailable',
sessionsExportNoPersistence: 'Session store unavailable (JSONL backend required).',
sessionsExportNoRawArtifacts: 'This persistence backend cannot export raw session files.',
sessionsExportListFailed: 'Failed to list sessions: {detail}',
sessionsExportRpcUnavailable: 'Cannot reach Host RPC for export status.',
sessionsExportRpcFailed: 'Export status RPC failed.',
sessionsExportHttpFailed: 'Export failed: HTTP {status}{detail}',
sessionsExportEmpty: 'Export failed: empty ZIP body.',
sessionsExportButton: 'Download ZIP',
sessionsExportBusy: 'Preparing…',
sessionsExportDone: 'Downloaded: {file}',
overridden: 'Overridden',
reset: 'Reset',
invalid: 'Invalid',
unsaved: 'Unsaved changes',
readOnly: 'Read-only',
saveFailed: 'Save failed',
discard: 'Discard',
save: 'Save',
saving: 'Saving…',
configSaved: 'Saved',
}
export const zh: Record<NetxopsLocaleKey, string> = {
title: 'Netx Ops',
description: 'API、Token、能力组、知识库与告警投递。',
sectionConnection: '连接',
sectionCapabilities: '能力组',
sectionKnowledge: '知识库',
sectionAlarms: '关键告警投递',
sectionExport: '会话导出',
apiUrl: 'API 地址',
apiUrlHint: '例如 http://127.0.0.1:8890',
lang: '语言',
langHint: 'zh / en',
capabilityGroups: '能力组',
nmsProvider: 'NMS 提供方',
nmsProviderHint: 'zte-ume',
groupOps: 'ops',
groupTopology: 'topology',
groupKb: '知识库技能',
groupInPreset: '在 Netx Ops 预设中启用',
groupPublic: '对其他预设公开',
kbRoot: '知识包根目录',
kbRootHint: '含 MANIFEST.json 的运营商子集包(v1.0)。浏览选目录后会自动保存;hasSkills 时加载 _skills/。',
kbBrowse: '浏览…',
kbBrowseUnavailable: '目录选择器不可用 — 请粘贴绝对目录路径后点保存。',
kbBrowseFailed: '浏览失败:{detail}',
kbSaveHint: '点「浏览」选目录后会自动写入并保存;若是手粘路径仍需点保存。',
kbStatusConfigured: '知识库: {operator}({country}) v{version}',
kbStatusUnconfigured: '知识库: 未配置(纯 netx)',
kbStatusError: '知识库: 错误 — {detail}',
alarmPushEnabled: '关键告警推送',
alarmPushStatus: '状态',
alarmPushPhaseDisabled: '未开启',
alarmPushPhaseIdle: '空闲',
alarmPushPhaseConnecting: '连接中…',
alarmPushPhaseAuthenticating: '鉴权中…',
alarmPushPhaseConnected: '已连接',
alarmPushPhaseReconnecting: '重连中…',
alarmPushPhaseAuthFailed: '鉴权失败',
alarmPushPhaseError: '异常',
alarmDeliverDsh: '投递到 DSH 会话',
alarmDeliverIm: '投递到 WhatsApp / IM',
imTargetNone: '暂无投递目标 — 请先在 IM「投递设置」新建。',
imTargetSelectedCount: '已选 {count} 个',
imCatalogUnavailable: '无法加载投递目标(请安装/更新 dsh-im-ops)。',
apiToken: 'API Token',
apiTokenHint: '写入凭据 NETX_API_TOKEN;留空表示保留已有。',
apiTokenUnavailable: '未提供 remote.credentials — 请用脚本写入 NETX_API_TOKEN。',
apiTokenSet: '已配置',
apiTokenUnset: '未设置',
sessionsExport: '导出全部会话',
sessionsExportCount: '{count} 个会话',
sessionsExportUnavailable: '无法导出',
sessionsExportNoPersistence: '会话持久化不可用(需要 JSONL 后端)。',
sessionsExportNoRawArtifacts: '当前持久化后端不支持导出原始会话文件。',
sessionsExportListFailed: '列出会话失败:{detail}',
sessionsExportRpcUnavailable: '无法通过 Host RPC 查询导出状态。',
sessionsExportRpcFailed: '导出状态 RPC 失败。',
sessionsExportHttpFailed: '导出失败:HTTP {status}{detail}',
sessionsExportEmpty: '导出失败:ZIP 为空。',
sessionsExportButton: '下载 ZIP',
sessionsExportBusy: '准备中…',
sessionsExportDone: '已下载:{file}',
overridden: '已覆盖',
reset: '重置',
invalid: '无效',
unsaved: '有未保存更改',
readOnly: '只读',
saveFailed: '保存失败',
discard: '丢弃',
save: '保存',
saving: '保存中…',
configSaved: '已保存',
}