-
Notifications
You must be signed in to change notification settings - Fork 785
Expand file tree
/
Copy pathen-US.json
More file actions
2882 lines (2882 loc) · 132 KB
/
Copy pathen-US.json
File metadata and controls
2882 lines (2882 loc) · 132 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"lang": {
"zhCN": "中文",
"enUS": "English",
"faIR": "فارسی"
},
"common": {
"ok": "OK",
"cancel": "Cancel",
"refresh": "Refresh",
"close": "Close",
"edit": "Edit",
"delete": "Delete",
"save": "Save",
"loading": "Loading…",
"search": "Search",
"clearSearch": "Clear search",
"noData": "No data",
"confirm": "Confirm",
"copy": "Copy",
"copied": "Copied",
"copyFailed": "Copy failed",
"view": "View",
"actions": "Actions",
"loadFailed": "Load failed",
"untitled": "Untitled",
"justNow": "Just now",
"minutesAgo": "{{n}} min ago",
"hoursAgo": "{{n}} h ago",
"daysAgo": "{{n}} d ago"
},
"header": {
"title": "CyberStrikeAI",
"apiDocs": "API Docs",
"github": "GitHub",
"logout": "Sign out",
"language": "Interface language",
"backToDashboard": "Back to dashboard",
"userMenu": "User menu",
"version": "Current version",
"toggleSidebar": "Collapse/expand sidebar"
},
"notifications": {
"title": "Notifications",
"empty": "No new events",
"markAllRead": "Mark all read",
"markSingleRead": "Read",
"itemDefaultTitle": "Notification"
},
"login": {
"title": "Sign in to CyberStrikeAI",
"titlePrefix": "Sign in to",
"subtitle": "Enter the access password from config",
"passwordLabel": "Password",
"passwordPlaceholder": "Enter password",
"submit": "Sign in"
},
"nav": {
"dashboard": "Dashboard",
"chat": "Chat",
"infoCollect": "Recon",
"tasks": "Tasks",
"projects": "Projects",
"vulnerabilities": "Vulnerabilities",
"webshell": "WebShell Management",
"chatFiles": "File Management",
"mcp": "MCP",
"mcpMonitor": "MCP Monitor",
"mcpManagement": "MCP Management",
"knowledge": "Knowledge",
"knowledgeRetrievalLogs": "Retrieval history",
"knowledgeManagement": "Knowledge Management",
"skills": "Skills",
"skillsMonitor": "Skills monitor",
"skillsManagement": "Skills Management",
"agents": "Agents",
"agentsManagement": "Agent management",
"roles": "Roles",
"rolesManagement": "Roles Management",
"settings": "System settings",
"hitl": "Human-in-the-loop",
"c2": "C2",
"c2Listeners": "Listeners",
"c2Sessions": "Sessions",
"c2Tasks": "Tasks",
"c2Payloads": "Payload",
"c2Events": "Events",
"c2Profiles": "Traffic profiles"
},
"dashboard": {
"title": "Dashboard",
"refresh": "Refresh",
"refreshData": "Refresh data",
"runningTasks": "Running tasks",
"vulnTotal": "Total vulnerabilities",
"toolCalls": "Tool invocations",
"successRate": "Tool success rate",
"clickToViewTasks": "Click to view tasks",
"clickToViewVuln": "Click to view vulnerabilities",
"clickToViewMCP": "Click to view MCP monitor",
"accessOverviewTitle": "Access overview",
"accessTabsAria": "C2 and WebShell",
"c2OverviewTitle": "C2 overview",
"c2GoManage": "Open C2 →",
"webshellGoManage": "Open WebShell →",
"webshellConnections": "Active connections",
"webshellClickConnections": "View connections",
"c2ListenersRunning": "Listeners running",
"c2SessionsOnline": "Sessions online",
"c2TasksPending": "Pending / queued tasks",
"c2ClickListeners": "View listeners",
"c2ClickSessions": "View sessions",
"c2ClickTasks": "View tasks",
"severityDistribution": "Vulnerability severity distribution",
"severityCritical": "Critical",
"severityHigh": "High",
"severityMedium": "Medium",
"severityLow": "Low",
"severityInfo": "Info",
"totalVulns": "Total vulnerabilities",
"riskLevel": "Risk level",
"riskScore": "Weighted risk score",
"riskSafe": "Safe",
"riskLow": "Low",
"riskMedium": "Medium",
"riskHigh": "High",
"riskSevere": "Severe",
"latestFound": "Latest found",
"noneYet": "None yet",
"runOverview": "Run overview",
"batchQueues": "Batch task queues",
"pending": "Pending",
"executing": "Running",
"completed": "Completed",
"toolInvocations": "Tool invocations",
"callsUnit": "calls",
"toolsUnit": "tools",
"knowledgeLabel": "Knowledge",
"knowledgeItems": "items",
"categoriesUnit": "categories",
"skillsLabel": "Skills",
"skillUnit": "Skills",
"quickLinks": "Quick links",
"toolsExecCount": "Tool execution count",
"ctaTitle": "Start your security journey",
"ctaSub": "Describe your target in chat, AI will assist with scanning and vulnerability analysis",
"goToChat": "Go to chat",
"noTasks": "No tasks",
"totalCount": "{{count}} total",
"notEnabled": "Disabled",
"enabled": "Enabled",
"toConfigure": "To configure",
"toUse": "To use",
"active": "Active",
"highFreq": "High frequency",
"noCallData": "No call data",
"severityClickHint": "Click to view",
"lastUpdated": "Last updated",
"viewAll": "View all →",
"recentVulns": "Recent vulnerabilities",
"recentFacts": "Recent facts",
"noVulnYet": "No recent vulnerabilities",
"noFactsYet": "No recent facts",
"noFactsDesc": "In project-bound chats, the agent records targets, findings, and attack chains",
"createFirstProjectBtn": "Create first project",
"factProjectMeta": "{{project}} · {{key}}",
"factsAcrossProjects_one": "{{count}} active project · {{facts}} facts",
"factsAcrossProjects_other": "{{count}} active projects · {{facts}} facts",
"capabilities": "Capabilities",
"mcpTools": "MCP tools",
"rolesLabel": "Roles",
"agentsLabel": "Agents",
"webshellLabel": "WebShell",
"pendingCountLabel": "{{count}} pending",
"highCountLabel": "High {{count}}",
"toolsCountLabel_one": "{{count}} tool",
"toolsCountLabel_other": "{{count}} tools",
"failedNCalls_one": "{{count}} failed",
"failedNCalls_other": "{{count}} failed",
"noCallYet": "No calls yet",
"allClear": "No new risks",
"allIdle": "System idle",
"executingNow": "Running",
"healthyStatus": "Healthy",
"normalStatus": "Mostly OK",
"degradedStatus": "Needs attention",
"alertTitle": "Heads up",
"alertWarningTitle": "Needs attention",
"alertDangerTitle": "Action required",
"alertCriticalReason_one": "{{count}} open critical vulnerability — please review immediately",
"alertCriticalReason_other": "{{count}} open critical vulnerabilities — please review immediately",
"alertFailedReason_one": "Tool success rate is low ({{count}} failed call) — check MCP monitor",
"alertFailedReason_other": "Tool success rate is low ({{count}} failed calls) — check MCP monitor",
"alertHitlReason_one": "{{count}} HITL request pending — Agent is waiting for your decision",
"alertHitlReason_other": "{{count}} HITL requests pending — Agent is waiting for your decision",
"alertMcpDownReason_one": "{{count}} External MCP server is down — related tools are unavailable",
"alertMcpDownReason_other": "{{count}} External MCP servers are down — related tools are unavailable",
"alertDismiss": "Dismiss (this session)",
"openHighCountLabel": "Open high {{count}}",
"allHandled": "All high severity handled",
"viewVulns": "View vulnerabilities",
"viewMonitor": "View monitor",
"viewHitl": "Approve",
"viewMcpManagement": "Manage MCP",
"statusOpen": "Open",
"statusConfirmed": "Confirmed",
"statusFixed": "Fixed",
"statusFalsePositive": "False positive",
"fixRate": "Fix rate",
"dataStale": "Data may be stale — please refresh",
"recommendedActions": "Recommended Actions",
"recommendedActionsHint": "Generated based on current state",
"recoFixCritical_one": "Fix {{count}} open critical vulnerability",
"recoFixCritical_other": "Fix {{count}} open critical vulnerabilities",
"recoFixCriticalDesc": "Critical-level vulnerabilities should be addressed first",
"recoApproveHitl_one": "Approve {{count}} HITL request",
"recoApproveHitl_other": "Approve {{count}} HITL requests",
"recoApproveHitlDesc": "Agent needs your decision to proceed",
"recoRestartMcp_one": "Check {{count}} stopped External MCP",
"recoRestartMcp_other": "Check {{count}} stopped External MCPs",
"recoRestartMcpDesc": "Related tools are unavailable until MCP recovers",
"recoCheckMonitor_one": "Investigate {{count}} failed tool call",
"recoCheckMonitor_other": "Investigate {{count}} failed tool calls",
"recoCheckMonitorDesc": "View failed request details in MCP monitor",
"recoSetupMcp": "Configure your first MCP tool",
"recoSetupMcpDesc": "Install MCP server before Agent can invoke specific capabilities",
"recoStartScan": "Start a scan from chat",
"recoStartScanDesc": "Describe your target in chat, AI will help execute",
"recentEvents": "Recent Events",
"eventUntitled": "Event",
"externalMcpServers": "External MCP",
"mcpAllRunning": "All running",
"mcpPartialDown_one": "{{count}} stopped",
"mcpPartialDown_other": "{{count}} stopped",
"mcpAllDown": "All stopped",
"noVulnDesc": "This list shows recent records; new results appear here when detection completes in chat",
"startScanBtn": "Go to chat to scan"
},
"projects": {
"title": "Projects",
"showArchived": "Show archived",
"newProjectCta": "+ New project",
"projectList": "Project list",
"searchProjectsPlaceholder": "Search projects…",
"paginationShow": "Show {{start}}-{{end}} of {{total}}",
"paginationRange": "{{start}}-{{end}}/{{total}}",
"paginationTotal": "{{total}} total",
"paginationPage": "{{page}}/{{total}}",
"paginationPerPage": "Per page",
"paginationPrev": "Previous",
"paginationNext": "Next",
"selectOrCreateTitle": "Select or create a project",
"selectOrCreateHint": "Projects share a cross-chat fact board; target, environment, auth and other facts are auto-injected in bound conversations.",
"createFirstProject": "Create first project",
"defaultProjectName": "Project",
"statusActive": "Active",
"statusArchived": "Archived",
"vulnerabilityManagement": "Vulnerability management",
"addFactCta": "+ Add fact",
"tabFacts": "Fact board",
"tabConversations": "Bound conversations",
"tabVulns": "Related vulnerabilities",
"tabSettings": "Settings",
"factToolbarHint": "Index includes key and summary only (must include what + where + how to verify); put attack chain / POC in body, and reproduce via get_project_fact.",
"searchFactsSr": "Search facts",
"searchFactsPlaceholder": "Search key, summary, body…",
"category": "Category",
"all": "All",
"confidence": "Confidence",
"confidenceConfirmed": "Confirmed",
"confidenceTentative": "Tentative",
"confidenceDeprecated": "Deprecated",
"displayOptions": "Display options",
"sparseOnly": "Sparse only",
"hideDeprecated": "Hide deprecated",
"summary": "Summary",
"updated": "Updated",
"boundConversationsHint": "Conversations bound to this project; click to open",
"titleLabel": "Title",
"projectVulnSummaryHint": "Vulnerability summary under this project",
"searchVulnsSr": "Search vulnerabilities",
"searchVulnsPlaceholder": "Search title, description, type, target…",
"noMatchingVulns": "No matching vulnerabilities, try adjusting filters",
"viewInVulnerabilityManagement": "View in vulnerability management",
"severity": "Severity",
"status": "Status",
"modalNewTitle": "New project",
"modalNewSubtitle": "After creation, bind conversations to share fact board across chats",
"projectName": "Project name",
"projectNamePlaceholder": "e.g. Client A Web pentest",
"projectDescription": "Project description",
"projectDescriptionPlaceholder": "Scope, authorization boundary, notes…",
"createProject": "Create project",
"newProject": "New project",
"chatSelectorButton": "Share fact board across chats after binding a project",
"selectProject": "Select project",
"noProject": "No project",
"factBodyEnvTitle": "Environment fact",
"factBodyHasDetail": "Has details",
"factBodySparseTitle": "Missing attack-chain/POC structure",
"factBodySparse": "Incomplete",
"factBodyReproducibleTitle": "Contains reproducible structure",
"factBodyReproducible": "Reproducible",
"factHintAttackSparse": "Attack-chain fact: fill complete body (steps, HTTP/command, response evidence); avoid conclusion-only notes. You can insert the attack-chain template.",
"factHintAttackReady": "Attack-chain fact: body is used for audit reproduction, keep original request/response and step-by-step flow.",
"factHintEnv": "Environment fact: body should include evidence source; for findings/exploitation use finding|chain|exploit|poc category.",
"confirmOverwriteBodyTemplate": "Overwrite current body content with template?",
"loadProjectsFailed": "Failed to load projects",
"restoreTitle": "Restore as tentative and re-index into board",
"restore": "Restore",
"deprecateTitle": "Mark as deprecated",
"deprecate": "Deprecate",
"editTitle": "Edit fields",
"viewBodyTitle": "View full body",
"details": "Details",
"deleteForeverTitle": "Delete permanently",
"noProjects": "No projects",
"noMatchingProjects": "No matching projects",
"pinned": "Pinned",
"archived": "Archived",
"statsFacts": "{{count}} facts",
"statsVulns": "{{count}} vulnerabilities",
"statsConversations": "{{count}} conversations",
"statsSparse": "{{count}} incomplete",
"projectNotFound": "Project not found",
"updatedPrefix": "Updated {{time}}",
"noMatchingFacts": "No matching facts, try adjusting filters",
"noFacts": "No facts yet. Click Add fact or let Agent write facts automatically",
"relatedVulnIdTitle": "Related vulnerability ID",
"noBoundConversations": "No bound conversations yet; select this project in chat to bind",
"untitledConversation": "Untitled conversation",
"open": "Open",
"unbindProjectTitle": "Unbind project",
"unbind": "Unbind",
"confirmUnbindConversation": "Unbind this conversation from current project?",
"unbindFailed": "Unbind failed",
"factMetaCategory": "Category: {{value}}",
"factMetaConfidence": "Confidence: {{value}}",
"factMetaUpdated": "Updated: {{time}}",
"factMetaRelatedVuln": "Related vulnerability: {{value}}",
"factMetaSourceConversation": "Source conversation: {{value}}",
"factMetaHasPrevious": "Has previous version",
"emptyBody": "(empty body)",
"factSparseWarn": "This fact belongs to attack-chain/exploit category, but body lacks reproducible structure (steps, HTTP/command, request/response, etc.). Edit and complete it for audit reproduction.",
"factPreviousMeta": "Archived at {{time}} · Summary: {{summary}} · Confidence: {{confidence}}",
"loadVulnerabilityListFailed": "Failed to load vulnerability list",
"noVulnerabilitiesInProject": "No vulnerabilities in this project yet. Create one first or let Agent record it.",
"promptLinkFactToVuln": "Enter index to link fact \"{{factKey}}\":\n\n{{lines}}",
"invalidIndex": "Invalid index",
"linkFailed": "Link failed",
"linkSuccess": "Linked vulnerability",
"promptConversationIdForVulnCreate": "Conversation ID is required to create vulnerability (can be source conversation):",
"cancelledNoConversationId": "Cancelled: conversation_id not provided",
"createVulnerabilityFailed": "Failed to create vulnerability",
"createVulnerabilityAndLinkSuccess": "Created vulnerability and linked: {{value}}",
"confirmDeprecateFact": "Mark fact {{factKey}} as deprecated?",
"operationFailed": "Operation failed",
"confirmRestoreFact": "Restore fact {{factKey}}? It will re-enter board index with tentative status.",
"noVulnerabilityRecords": "No vulnerability records in this project",
"viewRelatedFactsTitle": "View related facts",
"facts": "Facts",
"loadRelatedFactsFailed": "Failed to load related facts",
"noFactsForVulnerability": "This vulnerability has no related facts yet. Link vulnerability or generate vulnerability draft from fact detail.",
"promptChooseFactByIndex": "This vulnerability is linked to {{count}} facts. Enter index to view:\n{{lines}}",
"enterProjectName": "Please enter project name",
"saveFailed": "Save failed",
"invalidJson": "Invalid JSON format",
"scopeNoteAuthorizedWebOnly": "Authorized for Web application layer testing only",
"invalidScopeJson": "Invalid scope JSON, please fix it first or click Format",
"saved": "Saved",
"confirmArchiveProject": "After archiving, this project is hidden from active list by default. Continue?",
"confirmRestoreProjectActive": "Restore to active?",
"confirmDeleteProject": "Delete this project? Facts will be deleted and conversations unbound.",
"deleteFailed": "Delete failed",
"addFact": "Add fact",
"saveFact": "Save fact",
"editFact": "Edit fact",
"saveChanges": "Save changes",
"customCategoryOption": "{{value}} (custom)",
"selectProjectFirst": "Please select a project first",
"loadFactFailed": "Failed to load fact",
"factKeySummaryRequired": "fact_key and summary are required",
"confirmSaveSparseFact": "This fact is attack-chain/exploit related, but body does not contain reproducible structure (steps, HTTP/command, request/response).\nSave anyway? It's recommended to insert attack-chain template and fill POC first.",
"confirmDeleteFact": "Delete this fact?",
"notUpdatedYet": "Not updated yet",
"clearStaleProjectBindingFailed": "Failed to clear stale project binding",
"noProjectDescription": "No project binding",
"noProjectsClickCreate": "No projects yet, click New project below",
"sharedFactBoard": "Shared fact board",
"loadFailedRetry": "Load failed, please retry later",
"projectBound": "Project bound",
"projectUnbound": "Project unbound",
"updateProjectBindingFailed": "Failed to update project binding",
"basicInfoTitle": "Basic information",
"basicInfoHint": "Name and description are shown in project details",
"settingsIntroTitle": "Project settings",
"settingsIntroHint": "Configure project metadata and Agent authorization boundary; takes effect immediately for bound conversations after saving.",
"pinProject": "Pin project (show first in list)",
"pinFact": "Pin fact (prioritize in list and blackboard index)",
"editDescriptionPlaceholder": "Targets, authorization scope, contacts, notes…",
"scopeTitle": "Test scope",
"scopeHint": "JSON format for Agent authorization boundary and target assets",
"formatJson": "Format",
"example": "Example",
"scopeJsonLabel": "Scope JSON",
"scopeFootnote": "Supports targets, exclude, notes and more. Empty means no scope limit.",
"dangerZoneTitle": "Danger zone",
"dangerZoneHint": "Archived projects are hidden unless 'Show archived' is enabled; deletion removes all facts permanently.",
"archiveRestore": "Archive / Restore",
"deleteProject": "Delete project",
"saveChangesHint": "Click save to sync changes to server",
"saveSettings": "Save changes",
"factModalSubtitle": "Summary is indexed on board; body stores attack chain and POC for audit reproduction (separate from vulnerability records).",
"relatedVulnIdLabel": "Related vulnerability ID",
"optional": "Optional",
"factDetails": "Fact details",
"previousVersion": "Previous version",
"currentVersion": "Current version",
"linkVulnerability": "Link vulnerability",
"createVulnerabilityDraft": "Create vulnerability draft",
"generatedFromFact": "Generated from project fact {{factKey}}"
},
"chat": {
"newChat": "New chat",
"toggleConversationPanel": "Collapse/expand conversation list",
"searchHistory": "Search history...",
"conversationGroups": "Conversation groups",
"addGroup": "New group",
"recentConversations": "Recent conversations",
"batchManage": "Batch manage",
"paginationShow": "Show {{start}}-{{end}} of {{total}}",
"paginationRange": "{{start}}-{{end}}/{{total}}",
"paginationTotal": "{{total}} total",
"paginationPage": "{{page}}/{{total}}",
"paginationPerPage": "Per page",
"paginationPrev": "Previous",
"paginationNext": "Next",
"attackChain": "Attack chain",
"viewAttackChain": "View attack chain",
"selectRole": "Select role",
"defaultRole": "Default",
"inputPlaceholder": "Enter target or command... (type @ to select tools | Shift+Enter newline, Enter send)",
"selectFile": "Select file",
"uploadFile": "Upload file (multi-select or drag & drop)",
"readingAttachmentsDetail": "Reading attachment {{current}}/{{total}} · {{name}} · {{percent}}%",
"uploadingAttachmentsDetail": "Uploading attachments · {{done}}/{{total}} done · {{percent}}% overall",
"waitingAttachmentsUpload": "Waiting for attachments to finish uploading…",
"attachmentsUploadIncomplete": "Some attachments failed to upload. Remove the failed items or pick files again before sending.",
"attachmentUploading": "Uploading…",
"attachmentUploadFailed": "Failed",
"attachmentUploadAlert": "Upload failed: {{name}}",
"send": "Send",
"searchInGroup": "Search in group...",
"loadingTools": "Loading tools...",
"noMatchTools": "No matching tools",
"penetrationTestDetail": "Penetration test details",
"expandDetail": "Expand details",
"noProcessDetail": "No process details (execution may be too fast or no detailed events)",
"copyMessageTitle": "Copy message",
"deleteTurnTitle": "Delete this turn",
"deleteTurnConfirm": "Delete this entire turn (user message and assistant reply)? This cannot be undone. The next reply will use only the remaining messages; saved context snapshots will be cleared.",
"deleteTurnFailed": "Failed to delete turn",
"emptyGroupConversations": "This group has no conversations yet.",
"noMatchingConversationsInGroup": "No matching conversations found.",
"noHistoryConversations": "No conversation history yet",
"renameGroupPrompt": "Please enter new name:",
"deleteGroupConfirm": "Are you sure you want to delete this group? Conversations in the group will not be deleted, but will be removed from the group.",
"deleteConversationConfirm": "Are you sure you want to delete this conversation?",
"renameFailed": "Rename failed",
"downloadConversationFailed": "Failed to download conversation",
"viewAttackChainSelectConv": "Please select a conversation to view attack chain",
"viewAttackChainCurrentConv": "View attack chain of current conversation",
"executeFailed": "Execution failed",
"callOpenAIFailed": "Call OpenAI failed",
"systemReadyMessage": "System is ready. Please enter your test requirements, and the system will automatically perform the corresponding security tests.",
"addNewGroup": "+ New group",
"callNumber": "Call #{{n}}",
"iterationRound": "Iteration {{n}}",
"einoOrchestratorRound": "Orchestrator · round {{n}}",
"einoPlanExecuteRound": "Plan-Execute · round {{n}} · {{phase}}",
"planExecuteStreamPlanner": "Planning output",
"planExecuteStreamExecutor": "Execution output",
"planExecuteStreamReplanning": "Replanning output",
"planExecuteStreamPhase": "Phase output",
"einoSubAgentStep": "Sub-agent {{agent}} · step {{n}}",
"aiThinking": "AI thinking",
"reasoningChain": "Reasoning process",
"planning": "Planning",
"assistantStreamPhase": "Assistant output",
"toolCallsDetected": "Detected {{count}} tool call(s)",
"callTool": "Call tool: {{name}} ({{index}}/{{total}})",
"toolExecComplete": "Tool {{name}} completed",
"toolExecFailed": "Tool {{name}} failed",
"knowledgeRetrieval": "Knowledge retrieval",
"knowledgeRetrievalTag": "Knowledge retrieval",
"error": "Error",
"streamNetworkErrorHint": "Connection lost ({{detail}}). A long task may still be running on the server; check running tasks at the top or refresh this conversation later.",
"taskCancelled": "Task cancelled",
"userInterruptContinueTitle": "⏸️ User interrupt & continue",
"unknownTool": "Unknown tool",
"einoAgentReplyTitle": "Sub-agent reply",
"einoStreamErrorTitle": "⚠️ Eino stream interrupted ({{agent}})",
"einoStreamErrorMessage": "Streaming read failed; the system will retry or terminate according to policy.",
"einoRunRetryTitle": "🔁 Transient error retry",
"einoRunRetryErrorDetail": "Error detail",
"iterationLimitReachedTitle": "⛔ Iteration limit reached",
"iterationLimitReachedMessage": "Maximum iteration count reached; automatic iteration has stopped.",
"einoPendingOrphanedTitle": "🧹 Tool call reconciliation",
"einoPendingOrphanedMessage": "Detected {{count}} unclosed tool call(s); marked as failed and finalized automatically.",
"noDescription": "No description",
"noResponseData": "No response data",
"loading": "Loading...",
"loadFailed": "Load failed: {{message}}",
"noAttackChainData": "No attack chain data",
"copyFailedManual": "Copy failed, please select and copy manually",
"searching": "Searching...",
"loadFailedRetry": "Load failed, please retry",
"dataFormatError": "Data format error",
"progressInProgress": "Penetration test in progress...",
"scrollToBottom": "Scroll to bottom",
"scrollToBottomHasNew": "↓ New content below",
"scrollToBottomNew": "↓ {{count}} new update(s)",
"executionFailed": "Execution failed",
"penetrationTestComplete": "Penetration test complete",
"yesterday": "Yesterday",
"historyGroupToday": "Today",
"historyGroupLast7Days": "Past 7 days",
"historyGroupEarlier": "Older",
"agentModeSelectAria": "Choose conversation execution mode",
"agentModePanelTitle": "Conversation mode",
"agentModeEinoSingle": "Eino single (ADK)",
"agentModeEinoSingleHint": "Eino ChatModelAgent + Runner with MCP tools (/api/eino-agent)",
"agentModeDeep": "Deep (DeepAgent)",
"agentModeDeepHint": "Eino DeepAgent with task delegation to sub-agents",
"agentModePlanExecuteLabel": "Plan-Execute",
"agentModePlanExecuteHint": "Plan → execute → replan (single executor with tools)",
"agentModeSupervisorLabel": "Supervisor",
"agentModeSupervisorHint": "Supervisor coordinates via transfer to sub-agents",
"agentModeSingle": "Single-agent",
"agentModeMulti": "Multi-agent",
"agentModeSingleHint": "Eino ADK single-agent for chat and tool use",
"agentModeMultiHint": "Eino prebuilt orchestration (deep / plan_execute / supervisor) for complex tasks",
"reasoningModeLabel": "Model reasoning",
"reasoningEffortLabel": "Reasoning effort",
"reasoningModeDefault": "Use system default",
"reasoningModeOff": "Off",
"reasoningModeOn": "On",
"reasoningModeAuto": "Auto",
"reasoningEffortUnset": "Unspecified",
"reasoningCompactLabel": "Reasoning",
"reasoningCompactAria": "Open model reasoning options",
"reasoningPanelTitle": "Model reasoning",
"reasoningPanelHint": "Only Eino single- and multi-agent requests use these; merged with defaults in Settings.",
"reasoningSummaryFollow": "System",
"reasoningSummaryDash": "—",
"agentModeOrchPlanExecute": "Plan-Exec",
"agentModeOrchSupervisor": "Supervisor",
"hitlTitle": "Human-in-the-loop",
"hitlCardSubtitle": "Approvals & allowlist",
"hitlReviewer": "Review",
"hitlConfigTitle": "Collaboration mode config",
"hitlModeLabel": "Mode",
"hitlModeOff": "Off",
"hitlModeApproval": "Approval",
"hitlModeReviewEdit": "Review & Edit",
"hitlSensitiveTools": "Sensitive tools (comma-separated)",
"hitlWhitelistTools": "Whitelisted tools (skip approval, comma-separated)",
"hitlWhitelistPlaceholder": "e.g. read_file, grep or one tool per line (merged with global allowlist in config)",
"hitlWhitelistHint": "Separate with commas or new lines; shown merged with the global allowlist in config.",
"hitlApply": "Apply",
"hitlApplyOkSync": "HITL settings saved and synced to the server.",
"hitlApplyOkWhitelistYaml": "Tool whitelist merged into config.yaml and active. Mode and timeout still require selecting a conversation and clicking Apply to sync session settings to the server.",
"hitlApplyOkLocal": "Saved in this browser.",
"hitlApplyFail": "Failed to sync to server",
"hitlStatusOff": "Human-in-the-loop: Off"
},
"hitl": {
"pageTitle": "HITL approvals",
"pendingTitle": "Pending approvals",
"loading": "Loading...",
"emptyState": "No pending approvals",
"dismiss": "Dismiss",
"conversationLabel": "Conversation:",
"reviewEditHelp": "Review & edit mode: provide a JSON object to override tool arguments. Example: {\"command\":\"ls -la\"}",
"approvalHelp": "Approval mode: only approve/reject, argument editing is disabled.",
"commentHelp": "Comment (optional): briefly note the approval reason.",
"commentPlaceholder": "e.g. allow read-only command",
"reject": "Reject",
"approve": "Approve",
"loadFailed": "Failed to load",
"invalidJson": "Invalid JSON arguments",
"submitFailedPrefix": "Submit failed:"
},
"progress": {
"callingAI": "Calling AI model...",
"callingTool": "Calling tool: {{name}}",
"lastIterSummary": "Last iteration: generating summary and next steps...",
"summaryDone": "Summary complete",
"generatingFinalReply": "Generating final reply...",
"maxIterSummary": "Max iterations reached, generating summary...",
"analyzingRequestShort": "Analyzing your request...",
"analyzingRequestPlanning": "Analyzing your request and planning test strategy...",
"startingEinoDeepAgent": "Starting Eino DeepAgent...",
"startingEinoMultiAgent": "Starting Eino multi-agent...",
"einoAgent": "Eino agent: {{name}}",
"peAgentPlanner": "Planner",
"peAgentExecutor": "Executor",
"peAgentReplanning": "Replanner"
},
"timeline": {
"params": "Parameters:",
"executionResult": "Execution result:",
"executionId": "Execution ID:",
"noResult": "No result",
"running": "Running...",
"completed": "Completed",
"execFailed": "Execution failed"
},
"tasks": {
"title": "Task Management",
"stopTask": "Stop task",
"interruptModalTitle": "Interrupt current step",
"interruptReasonLabel": "Interrupt note",
"interruptModalHint": "When a tool is running: same as MCP monitor \"Stop tool\" — only that call is stopped and the run continues; your note can be merged into the tool result (USER INTERRUPT NOTE). When no tool is running (model thinking/streaming only): \"Interrupt & continue\" still works — current output pauses, your note is merged into context and the run resumes automatically; the progress timeline shows a \"User interrupt & continue\" entry. Use this instead of a full stop when you only want to steer; use \"Stop completely\" to end the whole task.",
"interruptReasonPlaceholder": "e.g. Tool is too slow—skip and summarize…",
"interruptReasonRequired": "Please enter a short note so the model can continue accordingly.",
"interruptSubmitting": "Submitting...",
"interruptConfirmContinue": "Interrupt & continue",
"interruptHardStop": "Stop completely",
"interruptModalClose": "Close",
"userInterruptTimelineTitle": "User interrupt note (continuing)",
"collapseDetail": "Collapse details",
"newTask": "New task",
"autoRefresh": "Auto refresh",
"historyHint": "Tip: Completed task history available. Check \"Show history\" to view.",
"statusRunning": "Running",
"statusCancelling": "Cancelling",
"statusFailed": "Failed",
"statusTimeout": "Timeout",
"statusCancelled": "Cancelled",
"statusCompleted": "Completed",
"historyBadge": "History",
"duration": "Duration",
"completedAt": "Completed at",
"startedAt": "Started at",
"clickToCopy": "Click to copy",
"unnamedTask": "Unnamed task",
"unknown": "Unknown",
"unknownTime": "Unknown time",
"clearHistoryConfirm": "Clear all task history?",
"cancelTaskFailed": "Cancel task failed",
"cancelFailed": "Cancel failed",
"taskInfoNotSynced": "Task info not synced yet, please try again later.",
"loadActiveTasksFailed": "Failed to load active tasks",
"cannotGetTaskStatus": "Cannot get task status",
"copiedToast": "Copied!",
"cancelling": "Cancelling...",
"enterTaskPrompt": "Enter at least one task",
"noValidTask": "No valid tasks",
"createBatchQueueFailed": "Failed to create batch task queue",
"noBatchQueues": "Currently there are no batch task queues",
"recentCompletedTasks": "Recently completed tasks (last 24 hours)",
"clearHistory": "Clear history",
"cancelTask": "Cancel task",
"viewConversation": "View conversation",
"viewVulnerabilities": "View vulnerabilities",
"viewVulnerabilitiesQueueTitle": "View vulnerabilities: open management filtered to this queue",
"retryTask": "Retry",
"conversationIdLabel": "Conversation ID",
"statusPending": "Pending",
"statusPaused": "Paused",
"statusCronCycleIdle": "Round done · scheduled loop",
"statusCronRunning": "Running · cron queue",
"cronNextRunLine": "Next run: {{time}}",
"cronRoundDoneProgressHint": "Cron queue: subtasks finished; next round starts on schedule",
"cronRunningProgressHint": "This round is running; the next full cycle follows Cron / next run time",
"cronPendingScheduled": "Cron scheduled · next {{time}}",
"cronPendingProgressNote": "Will start on schedule, or click Start to run a round now",
"cronRecurringCallout": "Cron queues start a new round at each scheduled time. Turn off \"Allow Cron auto-run\" to stop looping.",
"confirmCancelTasks": "Cancel {{n}} selected task(s)?",
"batchCancelResultPartial": "Batch cancel: {{success}} succeeded, {{fail}} failed",
"batchCancelResultSuccess": "Successfully cancelled {{n}} task(s)",
"taskCount": "{{count}} task(s)",
"queueIdLabel": "Queue ID",
"createdTimeLabel": "Created at",
"totalLabel": "Total",
"pendingLabel": "Pending",
"runningLabel": "Running",
"completedLabel": "Completed",
"failedLabel": "Failed",
"cancelledLabel": "Cancelled",
"loadingTasks": "Loading...",
"loadFailedRetry": "Load failed",
"loadTaskListFailed": "Failed to load task list",
"getQueueDetailFailed": "Failed to load queue details",
"startBatchQueueFailed": "Failed to start batch queue",
"pauseQueueFailed": "Failed to pause queue",
"pauseQueueConfirm": "Pause this batch queue? The current task will be stopped; remaining tasks will stay pending.",
"deleteQueueConfirm": "Delete this batch queue? This cannot be undone.",
"deleteQueueFailed": "Failed to delete batch queue",
"rerunQueueConfirm": "Rerun this batch queue? All tasks will be reset to pending and re-executed.",
"rerunQueueFailed": "Failed to rerun batch queue",
"batchQueueTitle": "Batch task queue",
"batchQueueUntitled": "Untitled queue",
"resumeExecute": "Resume",
"taskIncomplete": "Task information incomplete",
"cannotGetTaskMessageInput": "Cannot get task message input",
"taskMessageRequired": "Task message is required",
"saveTaskFailed": "Failed to save task",
"queueInfoMissing": "Queue information not found",
"addTaskFailed": "Failed to add task",
"confirmDeleteTask": "Delete this task?\n\nTask: {{message}}\n\nThis cannot be undone.",
"deleteTaskFailed": "Failed to delete task",
"paginationShow": "Show {{start}}-{{end}} of {{total}} records",
"paginationPerPage": "Per page",
"paginationFirst": "First",
"paginationPrev": "Previous",
"paginationNext": "Next",
"paginationLast": "Last",
"paginationPage": "Page {{current}} / {{total}}",
"deleteQueue": "Delete queue",
"retry": "Retry",
"noMatchingTasks": "No matching tasks",
"updateTaskFailed": "Failed to update task",
"durationSeconds": "s",
"durationMinutes": "m",
"durationHours": "h"
},
"infoCollect": {
"enterFofaQuery": "Enter FOFA query syntax",
"querying": "Querying...",
"queryFailed": "Query failed",
"enterNaturalLanguage": "Enter natural language description",
"cancelParse": "Cancel parse",
"clickToCancelParse": "Click to cancel AI parse",
"parseToFofa": "Parse natural language to FOFA query",
"parseResultEmpty": "Parse result empty: Please add/modify FOFA query in popup",
"queryPlaceholder": "e.g. app=\"Apache\" && country=\"CN\"",
"selectAll": "Select all/none",
"selectRow": "Select row",
"copyTarget": "Copy target",
"sendToChat": "Send to chat (editable; Ctrl/Cmd+click to send directly)",
"noTargetToCopy": "No target to copy",
"targetCopied": "Target copied",
"manualCopyHint": "Copy failed, please copy manually: ",
"cannotInferTarget": "Cannot infer scan target from row (include host/ip/port/domain in fields)",
"noSendMessage": "sendMessage() not found, please refresh and retry",
"filledToInput": "Filled to chat input, edit and send",
"noExportResult": "No results to export",
"xlsxNotLoaded": "XLSX library not loaded, please refresh and retry",
"noResults": "No results",
"selectRowsFirst": "Select rows to scan first",
"noScanTarget": "No scan targets inferred from selection (include host/ip/port/domain in fields)",
"batchScanFailed": "Batch scan failed",
"batchQueueCreated": "Batch scan queue created",
"field": "Field",
"parsePending": "AI parsing...",
"parsePendingClickCancel": "AI parsing... (click button to cancel)",
"parseSlow": "AI parse is taking a while, still processing…",
"parseDone": "AI parse complete",
"parseCancelled": "AI parse cancelled",
"parseFailed": "AI parse failed: ",
"parseResultTitle": "AI parse result",
"naturalLanguageLabel": "Natural language",
"fofaQueryEditable": "FOFA query (editable)",
"confirmBeforeQuery": "Confirm syntax and scope before running the query.",
"reminder": "Reminder",
"explanation": "Explanation",
"actions": "Actions",
"batchScanTitle": "FOFA batch scan",
"queueCreatedSkipped": "Queue created ({{n}} rows skipped, no target)",
"createQueueFailed": "Failed to create batch queue",
"loading": "Loading...",
"none": "None",
"truncated": "truncated",
"resultsMeta": "Total {{total}} · This page {{count}} · page={{page}} · size={{size}}",
"parseModalCancel": "Cancel",
"parseModalApply": "Fill into query",
"parseModalApplyRun": "Fill and query"
},
"vulnerability": {
"title": "Vulnerability Management",
"addVuln": "Add vulnerability",
"editVuln": "Edit vulnerability",
"loadFailed": "Failed to load vulnerabilities",
"deleteConfirm": "Delete this vulnerability?"
},
"webshell": {
"title": "WebShell Management",
"addConnection": "Add connection",
"connections": "Connections",
"noConnections": "No connections. Click \"Add connection\" to add one.",
"selectOrAdd": "Select a connection from the list or add a new WebShell connection.",
"url": "Shell URL",
"urlPlaceholder": "http(s)://target.com/shell.php",
"password": "Password / Key",
"passwordPlaceholder": "e.g. IceSword/AntSword connection password",
"method": "Request method",
"methodPost": "POST",
"methodGet": "GET",
"type": "Shell type",
"typePhp": "PHP",
"typeAsp": "ASP",
"typeAspx": "ASPX",
"typeJsp": "JSP",
"typeCustom": "Custom",
"cmdParam": "Command parameter name",
"cmdParamPlaceholder": "Leave empty for cmd; e.g. xxx for xxx=command",
"encoding": "Response encoding",
"encodingAuto": "Auto detect",
"encodingUtf8": "UTF-8",
"encodingGbk": "GBK (Simplified Chinese Windows)",
"encodingGb18030": "GB18030",
"encodingHint": "Switch to GBK or GB18030 if the Simplified Chinese Windows target shows garbled output.",
"os": "Target OS",
"osAuto": "Auto (infer from Shell type)",
"osLinux": "Linux / Unix",
"osWindows": "Windows",
"osHint": "Determines whether file manager / uploads use Linux or Windows commands. Choose Windows for PHP/JSP hosted on Windows.",
"remark": "Remark",
"remarkPlaceholder": "Friendly name for this connection",
"deleteConfirm": "Delete this connection?",
"editConnection": "Edit",
"editConnectionTitle": "Edit connection",
"tabTerminal": "Virtual terminal",
"tabFileManager": "File manager",
"tabAiAssistant": "AI Assistant",
"tabDbManager": "Database Manager",
"tabMemo": "Memo",
"dbType": "Database type",
"dbHost": "Host",
"dbPort": "Port",
"dbUsername": "Username",
"dbPassword": "Password",
"dbName": "Database name",
"dbSqlitePath": "SQLite file path",
"dbSqlPlaceholder": "Enter SQL, e.g. SELECT version();",
"dbRunSql": "Run SQL",
"dbTest": "Test connection",
"dbOutput": "Output",
"dbNoConn": "Please select a WebShell connection first",
"dbSqlRequired": "Please enter SQL",
"dbRunning": "Database command is running, please wait",
"dbCliHint": "If command not found appears, install mysql/psql/sqlite3/sqlcmd on the target host first",
"dbExecFailed": "Database execution failed",
"dbSchema": "Database Schema",
"dbLoadSchema": "Load Schema",
"dbNoSchema": "No schema yet, click Load Schema",
"dbSelectTableHint": "Click a table to expand columns and generate SQL",
"dbNoColumns": "No column details",
"dbResultTable": "Result Table",
"dbClearSql": "Clear SQL",
"dbTemplateSql": "SQL Template",
"dbRows": "rows",
"dbColumns": "columns",
"dbSchemaFailed": "Failed to load schema",
"dbSchemaLoaded": "Schema loaded successfully",
"dbAddProfile": "Add connection",
"dbExecSuccess": "SQL executed successfully",
"dbNoOutput": "Execution completed (no output)",
"dbRenameProfile": "Rename",
"dbDeleteProfile": "Delete connection",
"dbDeleteProfileConfirm": "Delete this database connection profile?",
"dbProfileNamePrompt": "Enter profile name",
"dbProfiles": "Database connections",
"aiSystemReadyMessage": "System is ready. Please enter your test requirements, and the system will automatically perform the corresponding security tests.",
"aiNewConversation": "New conversation",
"aiPreviousConversation": "Previous conversation",
"aiDeleteConversation": "Delete conversation",
"aiDeleteConversationConfirm": "Delete this conversation?",
"aiPlaceholder": "e.g. List files in the current directory",
"aiSend": "Send",
"aiMemo": "Memo",
"aiMemoPlaceholder": "Save key commands, testing ideas, and repro steps...",
"aiMemoClear": "Clear",
"aiMemoSaving": "Saving...",
"aiMemoSaved": "Saved locally",
"quickCommands": "Quick commands",
"downloadFile": "Download",
"terminalWelcome": "WebShell virtual terminal — type a command and press Enter (Ctrl+L clear)",
"filePath": "Current path",
"listDir": "List directory",
"readFile": "Read",
"editFile": "Edit",
"deleteFile": "Delete",
"saveFile": "Save",
"cancelEdit": "Cancel",
"parentDir": "Parent directory",
"execError": "Execution failed",
"testConnectivity": "Test connectivity",
"testSuccess": "Connection OK, shell is reachable",
"testFailed": "Connectivity test failed",
"testNoExpectedOutput": "Shell responded but expected output was not found. Check password and command parameter name.",
"clearScreen": "Clear",
"copyTerminalLog": "Copy log",
"terminalIdle": "Idle",
"terminalRunning": "Running",
"terminalCopyOk": "Log copied",
"terminalCopyFail": "Copy failed",
"terminalNewWindow": "New terminal",
"terminalWindowPrefix": "Terminal",
"running": "Running…",
"waitFinish": "Please wait for the current command to finish",
"newDir": "New directory",
"rename": "Rename",
"upload": "Upload",
"newFile": "New file",
"filterPlaceholder": "Filter by name",
"batchDelete": "Batch delete",
"batchDownload": "Batch download",
"refresh": "Refresh",
"selectAll": "Select all",
"searchPlaceholder": "Search connections...",
"noMatchConnections": "No matching connections",
"breadcrumbHome": "Root",
"dirTree": "Directory tree",
"back": "Back",
"moreActions": "More actions",
"batchProbe": "Batch probe",
"probeRunning": "Probing",
"probeOnline": "Online",
"probeOffline": "Offline",
"probeNoConnections": "No connections to probe",
"colModifiedAt": "Modified",
"colPerms": "Permissions",
"colOwner": "Owner",
"colGroup": "Group",
"colType": "Type"
},
"mcp": {
"monitorTitle": "MCP Status Monitor",
"execStats": "Execution stats",
"latestExecutions": "Latest executions",
"toolSearch": "Tool search",
"toolSearchPlaceholder": "Enter tool name...",
"statusFilter": "Status filter",
"filterAll": "All",
"filterEnabled": "Enabled",
"filterDisabled": "Disabled",
"selectedCount": "{{count}} selected",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"deleteSelected": "Batch delete",
"deleteExecConfirm": "Delete this execution record?",
"batchDeleteFailed": "Batch delete failed",
"managementTitle": "MCP Management",
"addExternal": "Add external MCP",
"toolConfig": "MCP tool config",
"saveToolConfig": "Save tool config",
"alwaysVisibleLabel": "Pinned",
"alwaysVisibleHint": "Always keep visible in Tool Search results",
"alwaysVisibleBuiltinLabel": "Builtin default",
"alwaysVisibleBuiltinHint": "Backend builtin tool is pinned by default and cannot be disabled",
"externalConfig": "External MCP config",
"loadingTools": "Loading tools...",
"loadToolsTimeout": "Tools load timeout. External MCP may be slow. Click Refresh to retry or check connection.",
"loadToolsFailed": "Failed to load tools",
"noTools": "No tools",
"externalBadge": "External",
"externalFrom": "External ({{name}})",
"externalToolFrom": "External MCP - Source: {{name}}",
"noDescription": "No description",
"paginationInfo": "{{start}}-{{end}} of {{total}} tools",
"perPage": "Per page:",
"firstPage": "First",
"prevPage": "Previous",
"nextPage": "Next",
"lastPage": "Last",
"pageInfo": "Page {{page}} of {{total}}",
"currentPageEnabled": "Enabled on current page",
"totalEnabled": "Total enabled",
"toolsConfigSaved": "Tool configuration saved!",
"saveToolsConfigFailed": "Failed to save tool config",
"getConfigFailed": "Failed to get config",
"noExternalMCP": "No external MCP configured",
"clickToAddExternal": "Click \"Add external MCP\" to configure",
"connected": "Connected",
"connecting": "Connecting...",
"connectionFailed": "Connection failed",
"disabled": "Disabled",
"disconnected": "Disconnected",
"stopConnection": "Stop connection",
"startConnection": "Start connection",
"stop": "Stop",
"start": "Start",
"editConfig": "Edit config",
"deleteConfig": "Delete config",
"transportMode": "Transport",
"toolCount": "Tool count",
"description": "Description",
"timeout": "Timeout",
"command": "Command",
"addExternalMCP": "Add external MCP",
"editExternalMCP": "Edit external MCP",
"jsonEmpty": "JSON cannot be empty",
"jsonError": "JSON format error",
"configMustBeObject": "Config error: Must be JSON object with name as key",
"configNeedOne": "Config error: At least one config item required",
"configNameEmpty": "Config error: Name cannot be empty",
"configMustBeObj": "Config error: \"{{name}}\" must be object",