feat: LAD A-Team CIS Compliance Report, React SPA, i18n, report management, explorer UX fixes
- Professional Oracle-format compliance report with RAG remediation from ADB vector store - React 19 SPA at /app/ (16 pages, TypeScript, Vite, Zustand, i18n pt/en 625 keys) - Report delete endpoint, embed individual report files into vector store - Terraform ZIP download (client-side, pure JS) - Explorer silent polling during start/stop (no flickering) - HTML report and compliance report sections start minimized - Token auth fix for compliance report CSV download links
This commit is contained in:
666
frontend-react/src/i18n/en.ts
Normal file
666
frontend-react/src/i18n/en.ts
Normal file
@@ -0,0 +1,666 @@
|
||||
const en: Record<string, string> = {
|
||||
// ── Sidebar ──
|
||||
'nav.principal': 'Main',
|
||||
'nav.config': 'Configuration',
|
||||
'nav.admin': 'Administration',
|
||||
'nav.chat': 'Chat Agent',
|
||||
'nav.terraform': 'Terraform',
|
||||
'nav.promptGen': 'Prompt Generator',
|
||||
'nav.workspaces': 'Workspaces',
|
||||
'nav.explorer': 'OCI Explorer',
|
||||
'nav.reports': 'Reports',
|
||||
'nav.ociCreds': 'OCI Credentials',
|
||||
'nav.genai': 'GenAI Config',
|
||||
'nav.mcp': 'MCP Servers',
|
||||
'nav.adb': 'ADB Vector',
|
||||
'nav.embeddings': 'Embeddings',
|
||||
'nav.embConsult': 'Query Embeddings',
|
||||
'nav.users': 'Users',
|
||||
'nav.mfa': 'MFA',
|
||||
'nav.audit': 'Audit Log',
|
||||
'sidebar.lightMode': 'Light mode',
|
||||
'sidebar.darkMode': 'Dark mode',
|
||||
'sidebar.logout': 'Logout',
|
||||
'sidebar.roleAdmin': 'Administrator',
|
||||
'sidebar.roleUser': 'User',
|
||||
'sidebar.subtitle': 'Infrastructure & Security',
|
||||
|
||||
// ── Login ──
|
||||
'login.subtitle': 'Infrastructure & Security Engineer',
|
||||
'login.userPlaceholder': 'Username',
|
||||
'login.passPlaceholder': 'Password',
|
||||
'login.mfaScanQr': 'Scan the QR code with your authenticator app:',
|
||||
'login.totpPlaceholder': 'TOTP Code',
|
||||
'login.loading': 'Signing in...',
|
||||
'login.verify': 'Verify',
|
||||
'login.submit': 'Sign in',
|
||||
'login.error': 'Login failed',
|
||||
|
||||
// ── Chat ──
|
||||
'chat.timeNow': 'now',
|
||||
'chat.today': 'Today',
|
||||
'chat.yesterday': 'Yesterday',
|
||||
'chat.last7': 'Last 7 days',
|
||||
'chat.last30': 'Last 30 days',
|
||||
'chat.older': 'Older',
|
||||
'chat.other': 'Other',
|
||||
'chat.history': 'History',
|
||||
'chat.newChat': 'New Chat',
|
||||
'chat.untitled': 'Untitled',
|
||||
'chat.noConversations': 'No conversations yet',
|
||||
'chat.selectModel': 'Select a model...',
|
||||
'chat.savedConfigs': 'Saved Configs',
|
||||
'chat.searchModel': 'Search model...',
|
||||
'chat.noModels': 'No models found',
|
||||
'chat.ociCred': 'OCI Credential...',
|
||||
'chat.settings': 'Settings',
|
||||
'chat.newChatTitle': 'New chat',
|
||||
'chat.emptyTitle': 'Start a conversation with the agent.',
|
||||
'chat.emptySubtitle': 'Select a model to get started.',
|
||||
'chat.thinking': 'Thinking...',
|
||||
'chat.retry': 'Retry',
|
||||
'chat.attachFile': 'Attach file',
|
||||
'chat.placeholder': 'Type your message... (Shift+Enter for new line)',
|
||||
'chat.send': 'Send',
|
||||
'chat.selectOciCred': 'Select an OCI credential to use direct models.',
|
||||
'chat.sendError': 'Failed to send message',
|
||||
'chat.requestFailed': 'The request failed.',
|
||||
'chat.timeout': 'Timeout: the response is taking too long. Try again.',
|
||||
'chat.toolsAvailable': 'tools available',
|
||||
'chat.ociCredLabel': 'OCI Credential',
|
||||
'chat.select': 'Select...',
|
||||
'chat.analyzeFiles': 'Analyze the attached files.',
|
||||
|
||||
// ── Terraform ──
|
||||
'tf.history': 'History',
|
||||
'tf.newChat': 'New',
|
||||
'tf.noConversations': 'No conversations',
|
||||
'tf.searchModel': 'Search model...',
|
||||
'tf.selectModel': 'Select model...',
|
||||
'tf.savedConfigs': 'Saved Configs',
|
||||
'tf.ociConfig': 'OCI Config...',
|
||||
'tf.settings': 'Settings',
|
||||
'tf.newConversation': 'New conversation',
|
||||
'tf.emptyTitle': 'Describe the OCI infrastructure',
|
||||
'tf.emptySubtitle': 'The agent will generate Terraform code based on your description.',
|
||||
'tf.thinking': 'Processing...',
|
||||
'tf.retry': 'Retry',
|
||||
'tf.placeholder': 'Describe the desired infrastructure... (Shift+Enter for new line)',
|
||||
'tf.send': 'Send',
|
||||
'tf.workspace': 'Workspace',
|
||||
'tf.files': 'Files',
|
||||
'tf.terminal': 'Terminal',
|
||||
'tf.resources': 'Resources',
|
||||
'tf.plan': 'Plan',
|
||||
'tf.apply': 'Apply',
|
||||
'tf.destroy': 'Destroy',
|
||||
'tf.cancel': 'Cancel',
|
||||
'tf.download': 'Download ZIP',
|
||||
'tf.createWs': 'Create Workspace',
|
||||
'tf.noFiles': 'No files generated',
|
||||
'tf.timeout': 'Timeout: generation is taking too long.',
|
||||
'tf.selectOci': 'Select an OCI credential',
|
||||
'tf.compartment': 'Compartment',
|
||||
'tf.region': 'Region',
|
||||
'tf.rollback': 'Rollback',
|
||||
'tf.copy': 'Copy',
|
||||
'tf.copied': 'Copied',
|
||||
'tf.noWs': 'No active workspace',
|
||||
'tf.deleteWs': 'Delete',
|
||||
|
||||
// ── Prompt Generator ──
|
||||
'pg.history': 'History',
|
||||
'pg.new': 'New',
|
||||
'pg.noConversations': 'No conversations',
|
||||
'pg.emptyTitle': 'Describe the OCI infrastructure you need',
|
||||
'pg.emptySubtitle': 'The agent will generate a structured, optimized prompt for the Terraform Agent.',
|
||||
'pg.loading': 'Generating prompt...',
|
||||
'pg.placeholder': 'Describe the desired infrastructure... (Shift+Enter for new line)',
|
||||
'pg.copy': 'Copy',
|
||||
'pg.copied': 'Copied',
|
||||
'pg.retry': 'Retry',
|
||||
'pg.timeout': 'Timeout: generation is taking too long.',
|
||||
'pg.search': 'Search...',
|
||||
'pg.selectModel': 'Select model...',
|
||||
|
||||
// ── Workspaces ──
|
||||
'ws.title': 'Terraform Workspaces',
|
||||
'ws.all': 'All',
|
||||
'ws.active': 'Active',
|
||||
'ws.draft': 'Draft',
|
||||
'ws.failed': 'Failed',
|
||||
'ws.destroyed': 'Destroyed',
|
||||
'ws.loading': 'Loading...',
|
||||
'ws.refresh': 'Refresh',
|
||||
'ws.noWs': 'No workspaces found',
|
||||
'ws.noWsHint': 'Create workspaces via the Terraform Agent',
|
||||
'ws.loadingWs': 'Loading workspaces...',
|
||||
'ws.open': 'Open',
|
||||
'ws.plan': 'Plan',
|
||||
'ws.apply': 'Apply',
|
||||
'ws.destroy': 'Destroy',
|
||||
'ws.delete': 'Delete',
|
||||
'ws.cancel': 'Cancel',
|
||||
'ws.hideOutput': 'hide',
|
||||
'ws.viewOutput': 'view output',
|
||||
'ws.confirmDestroy': 'Confirm Destroy',
|
||||
'ws.confirmDestroyMsg': 'This action will destroy all resources provisioned by this workspace.',
|
||||
'ws.typeDestroy': 'Type <strong>DESTROY</strong> to confirm:',
|
||||
'ws.deleteWs': 'Delete Workspace',
|
||||
'ws.deleteWsMsg': 'Delete this workspace permanently? Local files will be removed.',
|
||||
'ws.noDate': 'No date',
|
||||
|
||||
// ── Explorer ──
|
||||
'exp.title': 'OCI Explorer',
|
||||
'exp.subtitle': 'Explore your Oracle Cloud Infrastructure resources',
|
||||
'exp.search': 'Search resource...',
|
||||
'exp.refresh': 'Refresh',
|
||||
'exp.loading': 'Loading...',
|
||||
'exp.noResources': 'No resources found',
|
||||
'exp.selectResource': 'Select a resource type',
|
||||
'exp.compartment': 'Compartment',
|
||||
'exp.region': 'Region',
|
||||
'exp.allRegions': 'All regions',
|
||||
'exp.start': 'Start',
|
||||
'exp.stop': 'Stop',
|
||||
'exp.details': 'Details',
|
||||
'exp.total': 'Total',
|
||||
'exp.network': 'Network',
|
||||
'exp.observability': 'Observability',
|
||||
'exp.security': 'Security',
|
||||
'exp.selectRegions': 'Select regions',
|
||||
'exp.nRegions': '{0} regions',
|
||||
'exp.all': 'All',
|
||||
'exp.none': 'None',
|
||||
'exp.noCompartment': 'No compartments found',
|
||||
'exp.selectConfig': 'Select an OCI config',
|
||||
'exp.loadingResources': 'Loading resources...',
|
||||
'exp.clearFilter': 'Try clearing the search filter',
|
||||
'exp.resources': 'resources',
|
||||
'exp.updating': 'updating...',
|
||||
'exp.regions': 'region(s)',
|
||||
'exp.filter': 'Filter...',
|
||||
'exp.startAction': 'Start',
|
||||
'exp.stopAction': 'Stop',
|
||||
'exp.updatingState': 'Updating...',
|
||||
'exp.createdAt': 'Created at',
|
||||
'exp.public': 'Public',
|
||||
'exp.yesPublic': 'Yes',
|
||||
'exp.noPrivate': 'No (private)',
|
||||
'exp.freeTier': 'Free Tier',
|
||||
'exp.yes': 'Yes',
|
||||
'exp.no': 'No',
|
||||
'exp.noRestrictions': 'No restrictions (open)',
|
||||
'exp.updateNetworkAccess': 'Update Network Access',
|
||||
'exp.accessUpdated': 'Access updated: ',
|
||||
'exp.objects': 'Objects',
|
||||
'exp.size': 'Size',
|
||||
'exp.visibility': 'Visibility',
|
||||
'exp.private': 'Private',
|
||||
'exp.rules': 'Rules',
|
||||
'exp.routes': 'Routes',
|
||||
'exp.hideRules': 'Hide rules',
|
||||
'exp.viewRules': 'View rules',
|
||||
'exp.add': 'Add',
|
||||
'exp.direction': 'Direction',
|
||||
'exp.protocol': 'Protocol',
|
||||
'exp.originDest': 'Source/Dest',
|
||||
'exp.ports': 'Ports',
|
||||
'exp.description': 'Description',
|
||||
'exp.portMin': 'Port Min',
|
||||
'exp.portMax': 'Port Max',
|
||||
'exp.myIp': 'My IP',
|
||||
'exp.save': 'Save',
|
||||
'exp.cancel': 'Cancel',
|
||||
'exp.ruleAdded': 'Rule added.',
|
||||
'exp.enterCidr': 'Enter the CIDR.',
|
||||
'exp.removeRule': 'Remove this rule?',
|
||||
'exp.removeNsgRule': 'Remove this NSG rule?',
|
||||
'exp.ipDetected': 'IP detected: {0} — adjust port and click Save',
|
||||
'exp.ipDetectFailed': 'Could not detect IP.',
|
||||
'exp.destination': 'Destination',
|
||||
'exp.destType': 'Dest Type',
|
||||
'exp.version': 'Version',
|
||||
'exp.ha': 'HA',
|
||||
|
||||
// ── Reports ──
|
||||
'rpt.title': 'CIS Reports',
|
||||
'rpt.subtitle': 'Run CIS OCI Benchmark compliance scans',
|
||||
'rpt.startScan': 'Start Scan',
|
||||
'rpt.running': 'Running...',
|
||||
'rpt.cancel': 'Cancel',
|
||||
'rpt.tenancy': 'Tenancy',
|
||||
'rpt.level': 'Level',
|
||||
'rpt.region': 'Region',
|
||||
'rpt.allRegions': 'All regions',
|
||||
'rpt.noReports': 'No reports found',
|
||||
'rpt.noReportsHint': 'Run a scan to generate compliance reports.',
|
||||
'rpt.progress': 'Progress',
|
||||
'rpt.completed': 'Completed',
|
||||
'rpt.failed': 'Failed',
|
||||
'rpt.viewReport': 'View Report',
|
||||
'rpt.download': 'Download',
|
||||
'rpt.delete': 'Delete',
|
||||
'rpt.summary': 'Summary',
|
||||
'rpt.passed': 'Passed',
|
||||
'rpt.findings': 'Findings',
|
||||
'rpt.recommendations': 'Recommendations',
|
||||
'rpt.selectTenancy': 'Select a tenancy',
|
||||
'rpt.selectCredential': 'Select a credential',
|
||||
'rpt.loadingReports': 'Loading reports...',
|
||||
'rpt.refresh': 'Refresh',
|
||||
'rpt.pageTitle': 'CIS Reports',
|
||||
'rpt.pageSubtitle': 'CIS Benchmark 3.0 — Compliance Scan & Dashboard',
|
||||
'rpt.runScanCis': 'Run CIS Scan',
|
||||
'rpt.inExecution': 'Running',
|
||||
'rpt.configParams': 'Configure the parameters and run the CIS compliance scan.',
|
||||
'rpt.ociCredential': 'OCI Credential',
|
||||
'rpt.selectOciCred': 'Select OCI credential...',
|
||||
'rpt.cisLevel': 'CIS Level',
|
||||
'rpt.level1Desc': 'Essential security checks',
|
||||
'rpt.level2Desc': 'Complete checks (includes Level 1)',
|
||||
'rpt.regions': 'Regions',
|
||||
'rpt.leaveEmpty': 'Leave empty to scan all subscribed regions',
|
||||
'rpt.executeCompliance': 'Run CIS Compliance',
|
||||
'rpt.scanProgress': 'Scan Progress',
|
||||
'rpt.hideLog': 'Hide log',
|
||||
'rpt.showLog': 'View full log',
|
||||
'rpt.lines': 'lines',
|
||||
'rpt.cancelScan': 'Cancel Scan',
|
||||
'rpt.selectReport': 'Select Report',
|
||||
'rpt.selectCompletedReport': 'Select a completed report...',
|
||||
'rpt.searchTenancy': 'Search tenancy...',
|
||||
'rpt.searchByTenancy': 'Search by tenancy...',
|
||||
'rpt.noCredentials': 'No credentials found',
|
||||
'rpt.allRegionsDefault': 'All regions (default)',
|
||||
'rpt.searchRegion': 'Search region...',
|
||||
'rpt.loadingDashboard': 'Loading dashboard...',
|
||||
'rpt.complianceScore': 'Compliance Score',
|
||||
'rpt.compliant': 'Compliant',
|
||||
'rpt.nonCompliant': 'Non-Compliant',
|
||||
'rpt.ofTotal': 'of total',
|
||||
'rpt.compliantItems': 'compliant items',
|
||||
'rpt.totalFindings': 'total findings',
|
||||
'rpt.evaluated': 'Evaluated',
|
||||
'rpt.controlsVerified': 'Controls verified',
|
||||
'rpt.regionsCount': 'region(s)',
|
||||
'rpt.complianceDist': 'Compliance Distribution',
|
||||
'rpt.findingsBySection': 'Findings by Section',
|
||||
'rpt.generatedAt': 'Generated at',
|
||||
'rpt.htmlReport': 'HTML Report',
|
||||
'rpt.files': 'Files',
|
||||
'rpt.inSections': 'sections',
|
||||
'rpt.fullEmbedding': 'Full Embedding',
|
||||
'rpt.noActiveTables': 'No active tables',
|
||||
'rpt.executionHistory': 'Execution History',
|
||||
'rpt.reports': 'report(s)',
|
||||
'rpt.loading': 'Loading...',
|
||||
'rpt.firstScanHint': 'Run the first CIS scan above.',
|
||||
'rpt.selected': 'Selected',
|
||||
'rpt.deleteConfirm': 'Delete this report?',
|
||||
'rpt.deleteFailed': 'Failed to delete',
|
||||
'rpt.selectOciCredError': 'Select an OCI credential',
|
||||
'rpt.alreadyRunning': 'A scan is already running',
|
||||
'rpt.errorLoadReports': 'Error loading reports',
|
||||
'rpt.errorStartScan': 'Error starting scan',
|
||||
'rpt.selectAdb': 'Select an ADB connection.',
|
||||
'rpt.selectTable': 'Select a table.',
|
||||
'rpt.errorEmbedding': 'Error generating embedding',
|
||||
'rpt.cancelled': 'Cancelled',
|
||||
'rpt.completedAt': 'Completed:',
|
||||
|
||||
// ── Downloads ──
|
||||
'dl.title': 'Downloads',
|
||||
'dl.subtitle': 'Download generated CIS reports',
|
||||
'dl.allTenancies': 'All Tenancies',
|
||||
'dl.allSections': 'All sections',
|
||||
'dl.reports': 'report(s)',
|
||||
'dl.refresh': 'Refresh',
|
||||
'dl.loadError': 'Error loading reports',
|
||||
'dl.loading': 'Loading reports...',
|
||||
'dl.noReports': 'No completed reports.',
|
||||
'dl.noReportsHint': 'Run a scan in the Reports tab to generate reports.',
|
||||
'dl.files': 'file(s)',
|
||||
'dl.hide': 'Hide',
|
||||
'dl.viewFiles': 'View Files',
|
||||
'dl.loadingFiles': 'Loading files...',
|
||||
'dl.noFiles': 'No files found',
|
||||
'dl.filesInSections': 'file(s) in {0} sections',
|
||||
|
||||
// ── OCI Config ──
|
||||
'oci.title': 'OCI Credentials',
|
||||
'oci.subtitle': 'Manage Oracle Cloud Infrastructure credentials',
|
||||
'oci.registered': 'Registered Credentials',
|
||||
'oci.credential': 'credential',
|
||||
'oci.credentials': 'credentials',
|
||||
'oci.noCredentials': 'No credentials registered.',
|
||||
'oci.edit': 'Edit',
|
||||
'oci.test': 'Test',
|
||||
'oci.delete': 'Delete',
|
||||
'oci.yes': 'Yes',
|
||||
'oci.no': 'No',
|
||||
'oci.newCredential': 'New Credential',
|
||||
'oci.editCredential': 'Edit Credential',
|
||||
'oci.addDesc': 'Add your OCI account credentials to run reports and access services.',
|
||||
'oci.editing': 'Editing:',
|
||||
'oci.tenancyName': 'Tenancy Name',
|
||||
'oci.ocidTenancy': 'OCID Tenancy',
|
||||
'oci.region': 'Region',
|
||||
'oci.selectRegion': 'Select region...',
|
||||
'oci.searchRegion': 'Search region...',
|
||||
'oci.noRegion': 'No regions found',
|
||||
'oci.compartment': 'Compartment OCID',
|
||||
'oci.ocidUser': 'OCID User',
|
||||
'oci.fingerprint': 'Fingerprint',
|
||||
'oci.sessionToken': 'Session Token',
|
||||
'oci.sessionTokenHint': 'Paste the token file content generated by',
|
||||
'oci.sessionKeyLabel': 'Session Key (.pem)',
|
||||
'oci.privateKey': 'Private Key (.pem)',
|
||||
'oci.publicKey': 'Public Key (.pem)',
|
||||
'oci.keyPassphrase': 'Key Passphrase',
|
||||
'oci.keyPassphraseHint': 'Only if the private key is password protected',
|
||||
'oci.sshPublicKey': 'SSH Public Key',
|
||||
'oci.sshPublicKeyHint': 'SSH key for compute instance access (e.g. ssh-rsa AAAA...)',
|
||||
'oci.saveCredential': 'Save Credential',
|
||||
'oci.saveChanges': 'Save Changes',
|
||||
'oci.cancel': 'Cancel',
|
||||
'oci.saving': 'Saving credential...',
|
||||
'oci.saved': 'Credential saved successfully!',
|
||||
'oci.updated': 'Credential updated successfully!',
|
||||
'oci.deleting': 'Deleting credential...',
|
||||
'oci.deleted': 'Credential deleted successfully!',
|
||||
'oci.fillField': 'Fill in',
|
||||
'oci.fillOcidTenancy': 'Fill in OCID Tenancy',
|
||||
'oci.fillUserAndFP': 'Fill in OCID User and Fingerprint',
|
||||
'oci.pasteToken': 'Paste the Session Token',
|
||||
'oci.selectKey': 'Select the private key (.pem)',
|
||||
'oci.selectSessionKey': 'Select the session key (.pem)',
|
||||
'oci.changeHint': 'Fill to change. Current:',
|
||||
'oci.keepKey': 'Leave empty to keep current key',
|
||||
'oci.typeCannotChange': '(type cannot be changed)',
|
||||
'oci.sshNotConfigured': 'not configured',
|
||||
|
||||
// ── GenAI Config ──
|
||||
'genai.title': 'GenAI Models',
|
||||
'genai.subtitle': 'Configure generative AI models for the Chat Agent',
|
||||
'genai.configured': 'Configured Models',
|
||||
'genai.model': 'model',
|
||||
'genai.models': 'models',
|
||||
'genai.noModels': 'No models configured.',
|
||||
'genai.newModel': 'New GenAI Model',
|
||||
'genai.editModel': 'Edit Model',
|
||||
'genai.configName': 'Config Name',
|
||||
'genai.ociCredential': 'OCI Credential',
|
||||
'genai.modelSelect': 'Model',
|
||||
'genai.genaiRegion': 'GenAI Region',
|
||||
'genai.compartment': 'Compartment OCID',
|
||||
'genai.modelOcid': 'Model OCID',
|
||||
'genai.modelOcidHint': 'Paste the model OCID from OCI portal (optional)',
|
||||
'genai.customOcid': 'Custom (use OCID)',
|
||||
'genai.default': 'Default Model',
|
||||
'genai.setDefault': 'Set as Default',
|
||||
'genai.saveModel': 'Save Model',
|
||||
'genai.saveChanges': 'Save Changes',
|
||||
'genai.cancel': 'Cancel',
|
||||
'genai.saving': 'Saving model...',
|
||||
'genai.deleting': 'Deleting model...',
|
||||
'genai.addDesc': 'Add custom models or create presets with specific credentials.',
|
||||
'genai.fillName': 'Fill in config name',
|
||||
'genai.selectOci': 'Select an OCI credential',
|
||||
'genai.fillOcid': 'Enter Model OCID for custom model',
|
||||
|
||||
// ── MCP Servers ──
|
||||
'mcp.title': 'MCP Servers',
|
||||
'mcp.subtitle': 'MCP servers for tool integration and task execution',
|
||||
'mcp.registered': 'Registered Servers',
|
||||
'mcp.noServers': 'No MCP servers registered.',
|
||||
'mcp.edit': 'Edit',
|
||||
'mcp.activate': 'Activate',
|
||||
'mcp.deactivate': 'Deactivate',
|
||||
'mcp.active': 'Active',
|
||||
'mcp.inactive': 'Inactive',
|
||||
'mcp.delete': 'Delete',
|
||||
'mcp.yes': 'Yes',
|
||||
'mcp.no': 'No',
|
||||
'mcp.command': 'Command:',
|
||||
'mcp.url': 'URL:',
|
||||
'mcp.module': 'Module:',
|
||||
'mcp.adb': 'ADB:',
|
||||
'mcp.noAdb': 'None',
|
||||
'mcp.tools': 'Tools',
|
||||
'mcp.noTools': 'No tools registered',
|
||||
'mcp.discoverTools': 'Discover Tools',
|
||||
'mcp.discovering': 'Connecting to MCP server to discover tools...',
|
||||
'mcp.newServer': 'Register New Server',
|
||||
'mcp.editServer': 'Edit Server',
|
||||
'mcp.name': 'Name',
|
||||
'mcp.description': 'Description',
|
||||
'mcp.serverType': 'Server Type',
|
||||
'mcp.commandLabel': 'Command',
|
||||
'mcp.commandHint': 'Command to start the server',
|
||||
'mcp.argsLabel': 'Arguments (JSON)',
|
||||
'mcp.argsHint': 'Array of arguments passed to the command',
|
||||
'mcp.urlLabel': 'Server URL',
|
||||
'mcp.urlHint': 'MCP server SSE endpoint',
|
||||
'mcp.linkAdb': 'Link ADB Vector',
|
||||
'mcp.linkAdbHint': 'Optional — the MCP server can use this database as a tool.',
|
||||
'mcp.saveServer': 'Register Server',
|
||||
'mcp.saveChanges': 'Save Changes',
|
||||
'mcp.cancel': 'Cancel',
|
||||
'mcp.saving': 'Registering server...',
|
||||
'mcp.updating': 'Updating server...',
|
||||
'mcp.fillName': 'Fill in server name',
|
||||
'mcp.invalidArgs': 'Arguments must be a valid JSON array',
|
||||
'mcp.configDesc': 'Configure a new MCP server. Fields adjust based on the selected type.',
|
||||
|
||||
// ── ADB Config ──
|
||||
'adb.title': 'ADB Connections',
|
||||
'adb.subtitle': 'Oracle Autonomous Database connections via Wallet (mTLS)',
|
||||
'adb.registered': 'Registered Connections',
|
||||
'adb.connection': 'connection',
|
||||
'adb.connections': 'connections',
|
||||
'adb.noConnections': 'No ADB connections registered.',
|
||||
'adb.edit': 'Edit',
|
||||
'adb.test': 'Test',
|
||||
'adb.delete': 'Delete',
|
||||
'adb.yes': 'Yes',
|
||||
'adb.no': 'No',
|
||||
'adb.newConnection': 'New Connection',
|
||||
'adb.editConnection': 'Edit Connection',
|
||||
'adb.connName': 'Connection Name',
|
||||
'adb.walletZip': 'Wallet ZIP',
|
||||
'adb.walletHint': 'Upload wallet to extract DSNs from tnsnames.ora',
|
||||
'adb.walletEditHint': 'Upload new wallet or leave empty to keep current',
|
||||
'adb.analyze': 'Analyze',
|
||||
'adb.dsn': 'DSN (TNS Name)',
|
||||
'adb.dsnHint': 'Select or type the DSN. E.g. myatp_high',
|
||||
'adb.username': 'Username',
|
||||
'adb.password': 'Password',
|
||||
'adb.walletPassword': 'Wallet Password',
|
||||
'adb.genaiConfig': 'GenAI Config (Embeddings)',
|
||||
'adb.genaiConfigHint': 'OCI credentials used to generate embeddings via GenAI.',
|
||||
'adb.noRag': 'None (no RAG)',
|
||||
'adb.embeddingModel': 'Embedding Model',
|
||||
'adb.embeddingModelHint': 'OCI GenAI model to generate vectors.',
|
||||
'adb.saveConnection': 'Save Connection',
|
||||
'adb.saveChanges': 'Save Changes',
|
||||
'adb.cancel': 'Cancel',
|
||||
'adb.saving': 'Saving connection...',
|
||||
'adb.deleting': 'Deleting connection...',
|
||||
'adb.updateWallet': 'Update Wallet',
|
||||
'adb.adbConnection': 'ADB Connection',
|
||||
'adb.uploadWallet': 'Upload Wallet',
|
||||
'adb.connDesc': 'Connection via python-oracledb Thin mode with Wallet (mTLS) to Oracle Autonomous Database.',
|
||||
'adb.selectWallet': 'Select a wallet ZIP file.',
|
||||
'adb.selectConnection': 'Select an ADB connection.',
|
||||
'adb.fillName': 'Fill in connection name',
|
||||
'adb.fillDsn': 'Fill in DSN',
|
||||
'adb.fillUsername': 'Fill in username',
|
||||
'adb.fillPassword': 'Fill in password',
|
||||
|
||||
// ── Embeddings ──
|
||||
'emb.title': 'Embeddings',
|
||||
'emb.subtitle': 'Vector knowledge base — upload, import and management',
|
||||
'emb.noAdb': 'No ADB connection configured.',
|
||||
'emb.noAdbHint': 'Configure in ADB Vector.',
|
||||
'emb.noOci': 'No OCI credential configured.',
|
||||
'emb.noOciHint': 'Configure in Config → OCI.',
|
||||
'emb.existing': 'Existing Embeddings',
|
||||
'emb.existingDesc': 'Query documents stored in ADB embedding tables.',
|
||||
'emb.adbConnection': 'ADB Connection',
|
||||
'emb.table': 'Table',
|
||||
'emb.load': 'Load',
|
||||
'emb.noEmbeddings': 'No embeddings found.',
|
||||
'emb.total': 'Total: {0} documents',
|
||||
'emb.cisTitle': 'CIS Recommendations',
|
||||
'emb.cisDesc': 'Upload the latest PDF version to keep CIS Oracle Cloud recommendations updated in the vector database.',
|
||||
'emb.pdfFile': 'PDF File',
|
||||
'emb.uploadCis': 'Upload CIS Recommendations',
|
||||
'emb.kbTitle': 'Knowledge Base',
|
||||
'emb.kbDesc': 'Upload documents to feed the team knowledge base. Files will be vectorized and available for chat queries.',
|
||||
'emb.fileLabel': 'File (.txt, .pdf, .csv, .json, .md)',
|
||||
'emb.uploadFile': 'Upload File',
|
||||
'emb.urlLabel': 'URL (web page or PDF)',
|
||||
'emb.importUrl': 'Import URL',
|
||||
'emb.purgeTitle': 'Purge & Re-embed',
|
||||
'emb.purgeDesc': 'Clear embeddings from a table to free space or prepare for re-ingestion. This action is irreversible.',
|
||||
'emb.tenancyOptional': 'Tenancy (optional)',
|
||||
'emb.purge': 'Purge',
|
||||
'emb.confirm': 'Confirm',
|
||||
'emb.selectTable': 'Select a table.',
|
||||
'emb.selectAdbAndFile': 'Select ADB connection and file.',
|
||||
'emb.selectAdbAndUrl': 'Select ADB connection and enter URL.',
|
||||
'emb.processing': 'Processing PDF and generating embeddings...',
|
||||
'emb.uploading': 'Uploading and generating embeddings...',
|
||||
'emb.fetchingUrl': 'Fetching content and generating embeddings...',
|
||||
'emb.purging': 'Clearing embeddings...',
|
||||
|
||||
// ── EmbConsult ──
|
||||
'ec.title': 'Query Embeddings',
|
||||
'ec.subtitle': 'Ask about data stored in vector databases',
|
||||
'ec.clear': 'Clear',
|
||||
'ec.tableOptional': 'Table (optional)',
|
||||
'ec.allTables': 'All tables',
|
||||
'ec.emptyTitle': 'Make a query to search embeddings.',
|
||||
'ec.emptyHint': 'E.g. "findings for CIS 1.1", "networking recommendations", "how to fix MFA"',
|
||||
'ec.searching': 'Querying vector databases...',
|
||||
'ec.placeholder': 'Type your query...',
|
||||
'ec.submit': 'Query',
|
||||
'ec.sources': 'Consulted sources',
|
||||
'ec.noAnswer': 'No model response.',
|
||||
|
||||
// ── Users ──
|
||||
'usr.title': 'Users',
|
||||
'usr.activeCount': 'active',
|
||||
'usr.activesCount': 'active',
|
||||
'usr.inactiveCount': 'inactive',
|
||||
'usr.inactivesCount': 'inactive',
|
||||
'usr.total': 'total',
|
||||
'usr.newUser': 'New User',
|
||||
'usr.cancel': 'Cancel',
|
||||
'usr.createUser': 'Create New User',
|
||||
'usr.firstName': 'First Name',
|
||||
'usr.lastName': 'Last Name',
|
||||
'usr.username': 'Username',
|
||||
'usr.email': 'Email',
|
||||
'usr.password': 'Password',
|
||||
'usr.role': 'Role',
|
||||
'usr.creating': 'Creating...',
|
||||
'usr.create': 'Create User',
|
||||
'usr.noUsers': 'No users registered',
|
||||
'usr.noUsersHint': 'Click "New User" to create the first user.',
|
||||
'usr.name': 'Name',
|
||||
'usr.mfa': 'MFA',
|
||||
'usr.status': 'Status',
|
||||
'usr.lastLogin': 'Last Login',
|
||||
'usr.actions': 'Actions',
|
||||
'usr.active': 'Active',
|
||||
'usr.inactive': 'Inactive',
|
||||
'usr.never': 'Never',
|
||||
'usr.confirm': 'Confirm',
|
||||
'usr.deactivate': 'Deactivate user',
|
||||
'usr.created': 'User created successfully!',
|
||||
'usr.roleUpdated': 'Role updated',
|
||||
'usr.deactivated': 'User deactivated',
|
||||
'usr.requiredName': 'First and last name are required',
|
||||
'usr.requiredUsername': 'Username is required',
|
||||
'usr.requiredPassword': 'Password is required',
|
||||
|
||||
// ── MFA ──
|
||||
'mfa.title': 'MFA Authentication (TOTP)',
|
||||
'mfa.subtitle': 'Protect your account with two-factor authentication via Google Authenticator or Authy.',
|
||||
'mfa.enabled': 'MFA is enabled',
|
||||
'mfa.disabled': 'MFA is disabled',
|
||||
'mfa.enabledDesc': 'Your account is protected with two-factor authentication.',
|
||||
'mfa.disabledDesc': 'Enable MFA to add an extra layer of security.',
|
||||
'mfa.disableHint': 'To disable MFA, click the button below. This will reduce your account security.',
|
||||
'mfa.disableBtn': 'Disable MFA',
|
||||
'mfa.confirmDisable': 'Are you sure you want to disable MFA for your account?',
|
||||
'mfa.scanQr': 'Scan the QR Code or copy the secret',
|
||||
'mfa.openApp': 'Open your authenticator app (Google Authenticator, Authy, etc.)',
|
||||
'mfa.enterCode': 'Enter the code from your app',
|
||||
'mfa.activateMfa': 'Activate MFA',
|
||||
'mfa.generateSecret': 'Generate Secret',
|
||||
'mfa.generateHint': 'Click the button below to generate a TOTP secret. You will need an authenticator app to scan the QR Code.',
|
||||
'mfa.activated': 'MFA activated successfully!',
|
||||
'mfa.deactivated': 'MFA deactivated.',
|
||||
'mfa.invalidCode': 'Enter a 6-digit code',
|
||||
|
||||
// ── Audit ──
|
||||
'audit.title': 'Audit Log',
|
||||
'audit.subtitle': 'System activity monitoring, configurations and chat sessions.',
|
||||
'audit.tabAudit': 'Audit Log',
|
||||
'audit.tabConfig': 'Config Logs',
|
||||
'audit.tabChat': 'Chat Logs',
|
||||
'audit.records': 'records',
|
||||
'audit.refresh': 'Refresh',
|
||||
'audit.all': 'All',
|
||||
'audit.errors': 'Errors',
|
||||
'audit.success': 'Success',
|
||||
'audit.info': 'Info',
|
||||
'audit.loadingLogs': 'Loading logs...',
|
||||
'audit.noAudit': 'No audit records.',
|
||||
'audit.noConfig': 'No configuration logs recorded.',
|
||||
'audit.noChat': 'No chat logs recorded.',
|
||||
'audit.date': 'Date',
|
||||
'audit.user': 'User',
|
||||
'audit.action': 'Action',
|
||||
'audit.resource': 'Resource',
|
||||
'audit.details': 'Details',
|
||||
'audit.ip': 'IP',
|
||||
'audit.config': 'Config',
|
||||
'audit.status': 'Status',
|
||||
'audit.message': 'Message',
|
||||
'audit.session': 'Session',
|
||||
'audit.source': 'Source',
|
||||
|
||||
// ── Common ──
|
||||
'common.save': 'Save',
|
||||
'common.cancel': 'Cancel',
|
||||
'common.delete': 'Delete',
|
||||
'common.edit': 'Edit',
|
||||
'common.create': 'Create',
|
||||
'common.update': 'Refresh',
|
||||
'common.close': 'Close',
|
||||
'common.confirm': 'Confirm',
|
||||
'common.back': 'Back',
|
||||
'common.search': 'Search',
|
||||
'common.refresh': 'Refresh',
|
||||
'common.download': 'Download',
|
||||
'common.upload': 'Upload',
|
||||
'common.copy': 'Copy',
|
||||
'common.retry': 'Retry',
|
||||
'common.send': 'Send',
|
||||
'common.clear': 'Clear',
|
||||
'common.test': 'Test',
|
||||
'common.yes': 'Yes',
|
||||
'common.no': 'No',
|
||||
'common.loading': 'Loading...',
|
||||
'common.saving': 'Saving...',
|
||||
'common.select': 'Select...',
|
||||
'common.noData': 'No data found',
|
||||
'common.error': 'Error',
|
||||
'common.success': 'Success',
|
||||
};
|
||||
|
||||
export default en;
|
||||
Reference in New Issue
Block a user