Files
A-Team-Security-Infra-Agent…/frontend-react/src/i18n/pt.ts
nogueiraguh f22bb54e25 feat: Oracle IAM OIDC, force password change, security hardening
- OIDC: authorization code flow, JWKS validation, JIT provisioning, group-to-role mapping, dual auth (local/oidc/both)
- Force password change: random admin password on first install, modal blocks UI until changed
- APP_SECRET required in docker-compose (fail if missing), .env.example improved
- Login page: Oracle IAM button (conditional), hide form in oidc-only mode
- OracleIamPage: test connection via backend, masked client_secret handling
- UsersPage: OIDC badge, auth_provider in list
- i18n: login.oidcButton, login.or (pt/en/es)
- README v3.1: Terminal, User Management, Security, OIDC endpoints, versioning
2026-04-02 10:26:00 -03:00

815 lines
32 KiB
TypeScript

const pt: Record<string, string> = {
// ── Sidebar ──
'nav.principal': 'Principal',
'nav.admin': 'Administração',
'nav.chat': 'Chat Agent',
'nav.terraform': 'Terraform',
'nav.promptGen': 'Prompt Generator',
'nav.workspaces': 'Workspaces',
'nav.explorer': 'OCI Explorer',
'nav.ociServices': 'OCI Services',
'svc.title': 'OCI Services Status',
'svc.subtitle': 'Verifique e configure o status dos servicos de seguranca OCI por tenancy',
'svc.redetect': 'Re-detect',
'svc.checking': 'Verificando servicos OCI...',
'svc.save': 'Salvar',
'nav.reports': 'Relatórios',
'nav.ociCreds': 'Credenciais OCI',
'nav.genai': 'GenAI Config',
'nav.mcp': 'MCP Servers',
'nav.adb': 'ADB Vector',
'nav.embeddings': 'Embeddings',
'nav.embConsult': 'Consultar Embeddings',
'nav.terminal': 'Terminal',
'nav.userMgmt': 'Gestão de Usuários',
'nav.users': 'Usuários',
'nav.mySettings': 'Minhas Configurações',
'nav.oracleIam': 'Oracle IAM',
'nav.audit': 'Audit Log',
'sidebar.lightMode': 'Modo claro',
'sidebar.darkMode': 'Modo escuro',
'sidebar.logout': 'Sair',
'sidebar.settings': 'Configurações',
'sidebar.backToMenu': 'Voltar ao menu',
'sidebar.roleAdmin': 'Administrador',
'sidebar.roleUser': 'Usuário',
'sidebar.subtitle': 'Infrastructure & Security',
// ── Login ──
'login.subtitle': 'Infrastructure & Security Engineer',
'login.userPlaceholder': 'Usuario',
'login.passPlaceholder': 'Senha',
'login.mfaScanQr': 'Escaneie o QR code no seu app autenticador:',
'login.totpPlaceholder': 'Codigo TOTP',
'login.loading': 'Entrando...',
'login.verify': 'Verificar',
'login.submit': 'Entrar',
'login.error': 'Erro ao fazer login',
'login.or': 'ou',
'login.oidcButton': 'Login com Oracle IAM',
// ── Chat ──
'chat.timeNow': 'agora',
'chat.today': 'Hoje',
'chat.yesterday': 'Ontem',
'chat.last7': 'Ultimos 7 dias',
'chat.last30': 'Ultimos 30 dias',
'chat.older': 'Anteriores',
'chat.other': 'Outras',
'chat.history': 'Historico',
'chat.newChat': 'Nova Conversa',
'chat.untitled': 'Sem titulo',
'chat.noConversations': 'Nenhuma conversa ainda',
'chat.selectModel': 'Selecione um modelo...',
'chat.savedConfigs': 'Configs Salvas',
'chat.searchModel': 'Buscar modelo...',
'chat.noModels': 'Nenhum modelo encontrado',
'chat.ociCred': 'Credencial OCI...',
'chat.settings': 'Configuracoes',
'chat.newChatTitle': 'Nova conversa',
'chat.emptyTitle': 'Inicie uma conversa com o agente.',
'chat.emptySubtitle': 'Selecione um modelo para comecar.',
'chat.thinking': 'Pensando...',
'chat.retry': 'Reenviar',
'chat.attachFile': 'Anexar arquivo',
'chat.placeholder': 'Digite sua mensagem... (Shift+Enter para nova linha)',
'chat.send': 'Enviar',
'chat.selectOciCred': 'Selecione uma credencial OCI para usar modelos diretos.',
'chat.sendError': 'Falha ao enviar mensagem',
'chat.requestFailed': 'A requisicao falhou.',
'chat.timeout': 'Timeout: a resposta esta demorando muito. Tente novamente.',
'chat.toolsAvailable': 'tools disponiveis',
'chat.ociCredLabel': 'Credencial OCI',
'chat.select': 'Selecionar...',
'chat.analyzeFiles': 'Analise os arquivos anexados.',
// ── Terraform ──
'tf.history': 'Historico',
'tf.newChat': 'Nova',
'tf.noConversations': 'Nenhuma conversa',
'tf.searchModel': 'Buscar modelo...',
'tf.selectModel': 'Selecione modelo...',
'tf.savedConfigs': 'Configs Salvas',
'tf.ociConfig': 'OCI Config...',
'tf.settings': 'Configuracoes',
'tf.newConversation': 'Nova conversa',
'tf.emptyTitle': 'Descreva a infraestrutura OCI',
'tf.emptySubtitle': 'O agente vai gerar codigo Terraform baseado na sua descricao.',
'tf.thinking': 'Processando...',
'tf.retry': 'Reenviar',
'tf.placeholder': 'Descreva a infraestrutura desejada... (Shift+Enter para nova linha)',
'tf.send': 'Enviar',
'tf.workspace': 'Workspace',
'tf.files': 'Arquivos',
'tf.terminal': 'Terminal',
'tf.resources': 'Recursos',
'tf.plan': 'Plan',
'tf.apply': 'Apply',
'tf.destroy': 'Destroy',
'tf.cancel': 'Cancelar',
'tf.download': 'Download ZIP',
'tf.createWs': 'Criar Workspace',
'tf.noFiles': 'Nenhum arquivo gerado',
'tf.timeout': 'Timeout: a geracao esta demorando muito.',
'tf.selectOci': 'Selecione uma credencial OCI',
'tf.compartment': 'Compartimento',
'tf.region': 'Regiao',
'tf.rollback': 'Rollback',
'tf.copy': 'Copiar',
'tf.copied': 'Copiado',
'tf.noWs': 'Nenhum workspace ativo',
'tf.deleteWs': 'Excluir',
'tf.noFilesToPlan': 'Nenhum arquivo para planejar',
'tf.selectOciConfig': 'Selecione OCI Config e Compartment',
'tf.running': 'Executando...',
'tf.terminalTitle': 'Terminal de saida do Terraform',
'tf.terminalHint': 'Execute Plan, Apply ou Destroy para ver os resultados aqui',
'tf.autoFix': 'Auto-corrigir',
'tf.editSystemPrompt': 'Editar System Prompt',
'tf.refreshReference': 'Refresh Reference',
// ── Prompt Generator ──
'pg.history': 'Historico',
'pg.new': 'Nova',
'pg.noConversations': 'Nenhuma conversa',
'pg.emptyTitle': 'Descreva a infraestrutura OCI que voce precisa',
'pg.emptySubtitle': 'O agente vai gerar um prompt estruturado e otimizado para o Terraform Agent.',
'pg.loading': 'Gerando prompt...',
'pg.placeholder': 'Descreva a infraestrutura desejada... (Shift+Enter para nova linha)',
'pg.copy': 'Copiar',
'pg.copied': 'Copiado',
'pg.retry': 'Reenviar',
'pg.timeout': 'Timeout: a geracao esta demorando muito.',
'pg.search': 'Buscar...',
'pg.selectModel': 'Selecione modelo...',
// ── Workspaces ──
'ws.title': 'Terraform Workspaces',
'ws.all': 'Todos',
'ws.active': 'Ativos',
'ws.draft': 'Draft',
'ws.failed': 'Falha',
'ws.destroyed': 'Destruídos',
'ws.loading': 'Carregando...',
'ws.refresh': 'Atualizar',
'ws.noWs': 'Nenhum workspace encontrado',
'ws.noWsHint': 'Crie workspaces pelo Terraform Agent',
'ws.loadingWs': 'Carregando workspaces...',
'ws.open': 'Abrir',
'ws.plan': 'Plan',
'ws.apply': 'Apply',
'ws.destroy': 'Destroy',
'ws.delete': 'Excluir',
'ws.cancel': 'Cancelar',
'ws.hideOutput': 'ocultar',
'ws.viewOutput': 'ver output',
'ws.confirmDestroy': 'Confirmar Destroy',
'ws.confirmDestroyMsg': 'Esta acao ira destruir todos os recursos provisionados por este workspace.',
'ws.typeDestroy': 'Digite <strong>DESTROY</strong> para confirmar:',
'ws.deleteWs': 'Excluir Workspace',
'ws.deleteWsMsg': 'Deseja excluir este workspace permanentemente? Arquivos locais serao removidos.',
'ws.noDate': 'Sem data',
// ── Explorer ──
'exp.title': 'OCI Explorer',
'exp.subtitle': 'Explore recursos da sua infraestrutura Oracle Cloud',
'exp.search': 'Buscar recurso...',
'exp.refresh': 'Atualizar',
'exp.loading': 'Carregando...',
'exp.noResources': 'Nenhum recurso encontrado',
'exp.selectResource': 'Selecione um tipo de recurso',
'exp.compartment': 'Compartimento',
'exp.region': 'Regiao',
'exp.allRegions': 'Todas as regioes',
'exp.start': 'Start',
'exp.stop': 'Stop',
'exp.details': 'Detalhes',
'exp.total': 'Total',
'exp.network': 'Rede',
'exp.observability': 'Observabilidade',
'exp.security': 'Seguranca',
'exp.selectRegions': 'Selecionar regioes',
'exp.nRegions': '{0} regioes',
'exp.all': 'Todas',
'exp.none': 'Nenhuma',
'exp.noCompartment': 'Nenhum compartment encontrado',
'exp.selectConfig': 'Selecione uma config OCI',
'exp.loadingResources': 'Carregando recursos...',
'exp.clearFilter': 'Tente limpar o filtro de busca',
'exp.resources': 'recursos',
'exp.updating': 'atualizando...',
'exp.regions': 'regiao(oes)',
'exp.filter': 'Filtrar...',
'exp.startAction': 'Iniciar',
'exp.stopAction': 'Parar',
'exp.updatingState': 'Atualizando...',
'exp.createdAt': 'Criado em',
'exp.public': 'Publico',
'exp.yesPublic': 'Sim',
'exp.noPrivate': 'Nao (privada)',
'exp.freeTier': 'Free Tier',
'exp.yes': 'Sim',
'exp.no': 'Nao',
'exp.noRestrictions': 'Sem restricoes (aberto)',
'exp.updateNetworkAccess': 'Atualizar Acesso de Rede',
'exp.accessUpdated': 'Acesso atualizado: ',
'exp.objects': 'Objetos',
'exp.size': 'Tamanho',
'exp.visibility': 'Visibilidade',
'exp.private': 'Privado',
'exp.rules': 'Regras',
'exp.routes': 'Rotas',
'exp.hideRules': 'Ocultar regras',
'exp.viewRules': 'Ver regras',
'exp.add': 'Adicionar',
'exp.direction': 'Direcao',
'exp.protocol': 'Protocolo',
'exp.originDest': 'Origem/Destino',
'exp.ports': 'Portas',
'exp.description': 'Descricao',
'exp.portMin': 'Porta Min',
'exp.portMax': 'Porta Max',
'exp.myIp': 'Meu IP',
'exp.save': 'Salvar',
'exp.cancel': 'Cancelar',
'exp.ruleAdded': 'Regra adicionada.',
'exp.enterCidr': 'Informe o CIDR.',
'exp.removeRule': 'Remover esta regra?',
'exp.removeNsgRule': 'Remover esta regra do NSG?',
'exp.ipDetected': 'IP detectado: {0} — ajuste porta e clique Salvar',
'exp.ipDetectFailed': 'Nao foi possivel detectar o IP.',
'exp.destination': 'Destino',
'exp.destType': 'Tipo Destino',
'exp.version': 'Versao',
'exp.ha': 'HA',
// ── Reports ──
'rpt.title': 'CIS Reports',
'rpt.subtitle': 'Execute scans de conformidade CIS OCI Benchmark',
'rpt.startScan': 'Iniciar Scan',
'rpt.running': 'Executando...',
'rpt.cancel': 'Cancelar',
'rpt.tenancy': 'Tenancy',
'rpt.level': 'Level',
'rpt.region': 'Regiao',
'rpt.allRegions': 'Todas as regioes',
'rpt.noReports': 'Nenhum relatorio encontrado',
'rpt.noReportsHint': 'Execute um scan para gerar relatorios de conformidade.',
'rpt.progress': 'Progresso',
'rpt.completed': 'Concluido',
'rpt.failed': 'Falhou',
'rpt.viewReport': 'Ver Relatorio',
'rpt.download': 'Download',
'rpt.delete': 'Excluir',
'rpt.summary': 'Resumo',
'rpt.passed': 'Passou',
'rpt.findings': 'Findings',
'rpt.recommendations': 'Recomendacoes',
'rpt.selectTenancy': 'Selecione uma tenancy',
'rpt.selectCredential': 'Selecione uma credencial',
'rpt.loadingReports': 'Carregando relatorios...',
'rpt.refresh': 'Atualizar',
'rpt.pageTitle': 'Relatorios CIS',
'rpt.pageSubtitle': 'CIS Benchmark 3.0 — Compliance Scan & Dashboard',
'rpt.runScanCis': 'Executar Scan CIS',
'rpt.inExecution': 'Em execucao',
'rpt.configParams': 'Configure os parametros e execute o scan de compliance CIS.',
'rpt.ociCredential': 'Credencial OCI',
'rpt.selectOciCred': 'Selecione a credencial OCI...',
'rpt.cisLevel': 'CIS Level',
'rpt.level1Desc': 'Verificacoes essenciais de seguranca',
'rpt.level2Desc': 'Verificacoes completas (inclui Level 1)',
'rpt.regions': 'Regioes',
'rpt.leaveEmpty': 'Deixe vazio para escanear todas as regioes subscritas',
'rpt.executeCompliance': 'Executar CIS Compliance',
'rpt.scanProgress': 'Progresso do Scan',
'rpt.hideLog': 'Ocultar log',
'rpt.showLog': 'Ver log completo',
'rpt.lines': 'linhas',
'rpt.cancelScan': 'Cancelar Scan',
'rpt.selectReport': 'Selecionar Relatorio',
'rpt.selectCompletedReport': 'Selecione um relatorio concluido...',
'rpt.searchTenancy': 'Buscar tenancy...',
'rpt.searchByTenancy': 'Buscar por tenancy...',
'rpt.noCredentials': 'Nenhuma credencial encontrada',
'rpt.allRegionsDefault': 'Todas as regioes (padrao)',
'rpt.searchRegion': 'Buscar regiao...',
'rpt.loadingDashboard': 'Carregando dashboard...',
'rpt.complianceScore': 'Score de Compliance',
'rpt.compliant': 'Conforme',
'rpt.nonCompliant': 'Nao Conforme',
'rpt.ofTotal': 'do total',
'rpt.compliantItems': 'itens conformes',
'rpt.totalFindings': 'achados totais',
'rpt.evaluated': 'Avaliados',
'rpt.controlsVerified': 'Controles verificados',
'rpt.regionsCount': 'regiao(oes)',
'rpt.complianceDist': 'Distribuicao de Compliance',
'rpt.findingsBySection': 'Achados por Secao',
'rpt.generatedAt': 'Gerado em',
'rpt.htmlReport': 'Relatorio HTML',
'rpt.files': 'Arquivos',
'rpt.inSections': 'secoes',
'rpt.fullEmbedding': 'Embedding Completo',
'rpt.noActiveTables': 'Sem tabelas ativas',
'rpt.executionHistory': 'Historico de Execucoes',
'rpt.reports': 'relatorio(s)',
'rpt.loading': 'Carregando...',
'rpt.firstScanHint': 'Execute o primeiro scan CIS acima.',
'rpt.selected': 'Selecionado',
'rpt.deleteConfirm': 'Excluir este relatorio?',
'rpt.deleteFailed': 'Falha ao excluir',
'rpt.selectOciCredError': 'Selecione uma credencial OCI',
'rpt.alreadyRunning': 'Ja existe um scan em execucao',
'rpt.errorLoadReports': 'Erro ao carregar relatorios',
'rpt.errorStartScan': 'Erro ao iniciar scan',
'rpt.selectAdb': 'Selecione uma conexao ADB.',
'rpt.selectTable': 'Selecione uma tabela.',
'rpt.errorEmbedding': 'Erro ao gerar embedding',
'rpt.cancelled': 'Cancelado',
'rpt.completedAt': 'Concluido:',
'rpt.complianceGenerating': 'Gerando Compliance Report...',
'rpt.complianceFetchingKB': 'Buscando remediações na Knowledge Base CIS',
'rpt.complianceNotGenerated': 'Report ainda não gerado',
'rpt.complianceGenerate': 'Gerar Compliance Report',
'rpt.complianceRegenerate': 'Regenerar',
'rpt.complianceDownloadZip': 'Download ZIP',
'rpt.complianceRemediation': '+ Remediation',
'rpt.complianceGeneratingShort': 'Gerando...',
'rpt.complianceTitle': 'LAD A-Team CIS Compliance Report',
// ── OCI Config ──
'oci.title': 'Credenciais OCI',
'oci.subtitle': 'Gerencie credenciais Oracle Cloud Infrastructure',
'oci.registered': 'Credenciais Registradas',
'oci.credential': 'credencial',
'oci.credentials': 'credenciais',
'oci.noCredentials': 'Nenhuma credencial registrada.',
'oci.edit': 'Editar',
'oci.test': 'Testar',
'oci.delete': 'Excluir',
'oci.yes': 'Sim',
'oci.no': 'Nao',
'oci.newCredential': 'Nova Credencial',
'oci.editCredential': 'Editar Credencial',
'oci.addDesc': 'Adicione as credenciais da sua conta OCI para executar reports e acessar servicos.',
'oci.editing': 'Editando:',
'oci.tenancyName': 'Tenancy Name',
'oci.ocidTenancy': 'OCID Tenancy',
'oci.region': 'Region',
'oci.selectRegion': 'Selecione a regiao...',
'oci.searchRegion': 'Buscar regiao...',
'oci.noRegion': 'Nenhuma regiao encontrada',
'oci.compartment': 'Compartment OCID',
'oci.ocidUser': 'OCID User',
'oci.fingerprint': 'Fingerprint',
'oci.sessionToken': 'Session Token',
'oci.sessionTokenHint': 'Cole o conteudo do arquivo token gerado por',
'oci.sessionKeyLabel': 'Chave de Sessao (.pem)',
'oci.privateKey': 'Private Key (.pem)',
'oci.publicKey': 'Public Key (.pem)',
'oci.keyPassphrase': 'Key Passphrase',
'oci.keyPassphraseHint': 'Apenas se a chave privada for protegida por senha',
'oci.sshPublicKey': 'SSH Public Key',
'oci.sshPublicKeyHint': 'Chave SSH para acesso a instancias compute (ex: ssh-rsa AAAA...)',
'oci.saveCredential': 'Salvar Credencial',
'oci.saveChanges': 'Salvar Alteracoes',
'oci.cancel': 'Cancelar',
'oci.saving': 'Salvando credencial...',
'oci.saved': 'Credencial salva com sucesso!',
'oci.updated': 'Credencial atualizada com sucesso!',
'oci.deleting': 'Excluindo credencial...',
'oci.deleted': 'Credencial excluida com sucesso!',
'oci.fillField': 'Preencha o',
'oci.fillOcidTenancy': 'Preencha o OCID Tenancy',
'oci.fillUserAndFP': 'Preencha OCID User e Fingerprint',
'oci.pasteToken': 'Cole o Session Token',
'oci.selectKey': 'Selecione a chave privada (.pem)',
'oci.selectSessionKey': 'Selecione a chave de sessao (.pem)',
'oci.changeHint': 'Preencha para alterar. Atual:',
'oci.keepKey': 'Deixe vazio para manter a chave atual',
'oci.typeCannotChange': '(tipo nao pode ser alterado)',
'oci.sshNotConfigured': 'nao configurada',
// ── GenAI Config ──
'genai.title': 'Modelos GenAI',
'genai.subtitle': 'Configure modelos de IA generativa para o Chat Agent',
'genai.configured': 'Modelos Configurados',
'genai.model': 'modelo',
'genai.models': 'modelos',
'genai.noModels': 'Nenhum modelo configurado.',
'genai.newModel': 'Novo Modelo GenAI',
'genai.editModel': 'Editar Modelo',
'genai.configName': 'Nome da Config',
'genai.ociCredential': 'Credencial OCI',
'genai.modelSelect': 'Modelo',
'genai.genaiRegion': 'Regiao GenAI',
'genai.compartment': 'Compartment OCID',
'genai.modelOcid': 'Model OCID',
'genai.modelOcidHint': 'Cole o OCID do modelo do portal OCI (opcional)',
'genai.customOcid': 'Personalizado (usar OCID)',
'genai.default': 'Modelo Padrao',
'genai.setDefault': 'Definir como Padrao',
'genai.saveModel': 'Salvar Modelo',
'genai.saveChanges': 'Salvar Alteracoes',
'genai.cancel': 'Cancelar',
'genai.saving': 'Salvando modelo...',
'genai.deleting': 'Excluindo modelo...',
'genai.addDesc': 'Adicione modelos personalizados ou crie presets com credenciais especificas.',
'genai.fillName': 'Preencha o nome da config',
'genai.selectOci': 'Selecione uma credencial OCI',
'genai.fillOcid': 'Informe o Model OCID para modelo personalizado',
// ── MCP Servers ──
'mcp.title': 'MCP Servers',
'mcp.subtitle': 'Servidores MCP para integracao com ferramentas e execucao de tarefas',
'mcp.registered': 'Servidores Registrados',
'mcp.noServers': 'Nenhum MCP server registrado.',
'mcp.edit': 'Editar',
'mcp.activate': 'Ativar',
'mcp.deactivate': 'Desativar',
'mcp.active': 'Ativo',
'mcp.inactive': 'Inativo',
'mcp.delete': 'Excluir',
'mcp.yes': 'Sim',
'mcp.no': 'Nao',
'mcp.command': 'Comando:',
'mcp.url': 'URL:',
'mcp.module': 'Modulo:',
'mcp.adb': 'ADB:',
'mcp.noAdb': 'Nenhum',
'mcp.tools': 'Tools',
'mcp.noTools': 'Nenhuma tool registrada',
'mcp.discoverTools': 'Descobrir Tools',
'mcp.discovering': 'Conectando ao MCP server para descobrir tools...',
'mcp.newServer': 'Registrar Novo Server',
'mcp.editServer': 'Editar Server',
'mcp.name': 'Nome',
'mcp.description': 'Descricao',
'mcp.serverType': 'Tipo de Servidor',
'mcp.commandLabel': 'Comando',
'mcp.commandHint': 'Comando para iniciar o servidor',
'mcp.argsLabel': 'Argumentos (JSON)',
'mcp.argsHint': 'Array de argumentos passados ao comando',
'mcp.urlLabel': 'URL do Servidor',
'mcp.urlHint': 'Endpoint SSE do servidor MCP',
'mcp.linkAdb': 'Vincular ADB Vector',
'mcp.linkAdbHint': 'Opcional — o MCP server podera usar este banco como ferramenta.',
'mcp.saveServer': 'Registrar Server',
'mcp.saveChanges': 'Salvar Alteracoes',
'mcp.cancel': 'Cancelar',
'mcp.saving': 'Registrando servidor...',
'mcp.updating': 'Atualizando servidor...',
'mcp.fillName': 'Preencha o nome do server',
'mcp.invalidArgs': 'Argumentos deve ser um JSON array valido',
'mcp.configDesc': 'Configure um novo servidor MCP. Os campos se ajustam ao tipo selecionado.',
// ── ADB Config ──
'adb.title': 'ADB Connections',
'adb.subtitle': 'Conexoes com Oracle Autonomous Database via Wallet (mTLS)',
'adb.registered': 'Conexoes Registradas',
'adb.connection': 'conexao',
'adb.connections': 'conexoes',
'adb.noConnections': 'Nenhuma conexao ADB registrada.',
'adb.edit': 'Editar',
'adb.test': 'Testar',
'adb.delete': 'Excluir',
'adb.yes': 'Sim',
'adb.no': 'Nao',
'adb.newConnection': 'Nova Conexao',
'adb.editConnection': 'Editar Conexao',
'adb.connName': 'Nome da Conexao',
'adb.walletZip': 'Wallet ZIP',
'adb.walletHint': 'Envie o wallet para extrair os DSNs do tnsnames.ora',
'adb.walletEditHint': 'Envie novo wallet ou deixe vazio para manter o atual',
'adb.analyze': 'Analisar',
'adb.dsn': 'DSN (TNS Name)',
'adb.dsnHint': 'Selecione ou digite o DSN. Ex: myatp_high',
'adb.username': 'Username',
'adb.password': 'Password',
'adb.walletPassword': 'Wallet Password',
'adb.genaiConfig': 'Config GenAI (Embeddings)',
'adb.genaiConfigHint': 'Credenciais OCI usadas para gerar embeddings via GenAI.',
'adb.noRag': 'Nenhum (sem RAG)',
'adb.embeddingModel': 'Modelo de Embedding',
'adb.embeddingModelHint': 'Modelo OCI GenAI para gerar vetores.',
'adb.saveConnection': 'Salvar Conexao',
'adb.saveChanges': 'Salvar Alteracoes',
'adb.cancel': 'Cancelar',
'adb.saving': 'Salvando conexao...',
'adb.deleting': 'Excluindo conexao...',
'adb.updateWallet': 'Atualizar Wallet',
'adb.adbConnection': 'Conexao ADB',
'adb.uploadWallet': 'Upload Wallet',
'adb.connDesc': 'Conexao via python-oracledb Thin mode com Wallet (mTLS) para Oracle Autonomous Database.',
'adb.selectWallet': 'Selecione um arquivo wallet ZIP.',
'adb.selectConnection': 'Selecione uma conexao ADB.',
'adb.fillName': 'Preencha o nome da conexao',
'adb.fillDsn': 'Preencha o DSN',
'adb.fillUsername': 'Preencha o username',
'adb.fillPassword': 'Preencha a senha',
// ── Embeddings ──
'emb.title': 'Embeddings',
'emb.subtitle': 'Base de conhecimento vetorial — upload, importacao e gerenciamento',
'emb.noAdb': 'Nenhuma conexao ADB configurada.',
'emb.noAdbHint': 'Configure em ADB Vector.',
'emb.noOci': 'Nenhuma credencial OCI configurada.',
'emb.noOciHint': 'Configure em Config → OCI.',
'emb.existing': 'Embeddings Existentes',
'emb.existingDesc': 'Consulte os documentos armazenados nas tabelas de embeddings do ADB.',
'emb.adbConnection': 'Conexao ADB',
'emb.table': 'Tabela',
'emb.load': 'Carregar',
'emb.noEmbeddings': 'Nenhum embedding encontrado.',
'emb.total': 'Total: {0} documentos',
'emb.cisTitle': 'CIS Recommendations',
'emb.cisDesc': 'Envie a versao mais recente do PDF para manter as recomendacoes CIS Oracle Cloud atualizadas na base vetorial.',
'emb.pdfFile': 'Arquivo PDF',
'emb.uploadCis': 'Upload CIS Recommendations',
'emb.kbTitle': 'Base de Conhecimento',
'emb.kbDesc': 'Envie documentos para alimentar a base de conhecimento da equipe. Os arquivos serao vetorizados e disponibilizados para consulta via chat.',
'emb.fileLabel': 'Arquivo (.txt, .pdf, .csv, .json, .md)',
'emb.uploadFile': 'Upload Arquivo',
'emb.urlLabel': 'URL (pagina web ou PDF)',
'emb.importUrl': 'Importar URL',
'emb.purgeTitle': 'Purge & Re-embed',
'emb.purgeDesc': 'Limpe os embeddings de uma tabela para liberar espaco ou preparar para re-ingestao. Esta acao e irreversivel.',
'emb.tenancyOptional': 'Tenancy (opcional)',
'emb.purge': 'Purge',
'emb.confirm': 'Confirmar',
'emb.selectTable': 'Selecione uma tabela.',
'emb.selectAdbAndFile': 'Selecione conexao ADB e arquivo.',
'emb.selectAdbAndUrl': 'Selecione conexao ADB e informe a URL.',
'emb.processing': 'Processando PDF e gerando embeddings...',
'emb.uploading': 'Enviando e gerando embeddings...',
'emb.fetchingUrl': 'Buscando conteudo e gerando embeddings...',
'emb.purging': 'Limpando embeddings...',
// ── EmbConsult ──
'ec.title': 'Consultar Embeddings',
'ec.subtitle': 'Pergunte sobre os dados armazenados nas bases vetoriais',
'ec.clear': 'Limpar',
'ec.tableOptional': 'Tabela (opcional)',
'ec.allTables': 'Todas as tabelas',
'ec.emptyTitle': 'Faca uma consulta para pesquisar nos embeddings.',
'ec.emptyHint': 'Ex: "findings para CIS 1.1", "recomendacoes de networking", "como corrigir MFA"',
'ec.searching': 'Consultando bases vetoriais...',
'ec.placeholder': 'Digite sua consulta...',
'ec.submit': 'Consultar',
'ec.sources': 'Fontes consultadas',
'ec.noAnswer': 'Sem resposta do modelo.',
// ── Users ──
'usr.title': 'Usuarios',
'usr.activeCount': 'ativo',
'usr.activesCount': 'ativos',
'usr.inactiveCount': 'inativo',
'usr.inactivesCount': 'inativos',
'usr.total': 'total',
'usr.newUser': 'Novo Usuario',
'usr.cancel': 'Cancelar',
'usr.createUser': 'Criar Novo Usuario',
'usr.firstName': 'Nome',
'usr.lastName': 'Sobrenome',
'usr.username': 'Usuario (login)',
'usr.email': 'Email',
'usr.password': 'Senha',
'usr.role': 'Role',
'usr.creating': 'Criando...',
'usr.create': 'Criar Usuario',
'usr.noUsers': 'Nenhum usuario cadastrado',
'usr.noUsersHint': 'Clique em "Novo Usuario" para criar o primeiro usuario.',
'usr.name': 'Nome',
'usr.mfa': 'MFA',
'usr.status': 'Status',
'usr.lastLogin': 'Ultimo Login',
'usr.actions': 'Acoes',
'usr.active': 'Ativo',
'usr.inactive': 'Inativo',
'usr.never': 'Nunca',
'usr.confirm': 'Confirmar',
'usr.deactivate': 'Desativar usuario',
'usr.created': 'Usuario criado com sucesso!',
'usr.roleUpdated': 'Role atualizada',
'usr.deactivated': 'Usuario desativado',
'usr.requiredName': 'Nome e sobrenome sao obrigatorios',
'usr.requiredUsername': 'Usuario (login) e obrigatorio',
'usr.requiredPassword': 'Senha e obrigatoria',
// ── MFA ──
'mfa.title': 'Autenticacao MFA (TOTP)',
'mfa.subtitle': 'Proteja sua conta com autenticacao em dois fatores via Google Authenticator ou Authy.',
'mfa.enabled': 'MFA esta ativado',
'mfa.disabled': 'MFA esta desativado',
'mfa.enabledDesc': 'Sua conta esta protegida com autenticacao de dois fatores.',
'mfa.disabledDesc': 'Ative o MFA para adicionar uma camada extra de seguranca.',
'mfa.disableHint': 'Para desativar o MFA, clique no botao abaixo. Isso reduzira a seguranca da sua conta.',
'mfa.disableBtn': 'Desativar MFA',
'mfa.confirmDisable': 'Deseja realmente desativar o MFA da sua conta?',
'mfa.scanQr': 'Escaneie o QR Code ou copie o secret',
'mfa.openApp': 'Abra seu app autenticador (Google Authenticator, Authy, etc.)',
'mfa.enterCode': 'Insira o codigo gerado pelo app',
'mfa.activateMfa': 'Ativar MFA',
'mfa.generateSecret': 'Gerar Secret',
'mfa.generateHint': 'Clique no botao abaixo para gerar um secret TOTP. Voce precisara de um app autenticador para escanear o QR Code.',
'mfa.activated': 'MFA ativado com sucesso!',
'mfa.deactivated': 'MFA desativado.',
'mfa.invalidCode': 'Informe um codigo de 6 digitos',
'mfa.configure': 'Configurar',
// ── Audit ──
'audit.title': 'Log de Auditoria',
'audit.subtitle': 'Monitoramento de atividades do sistema, configuracoes e sessoes de chat.',
'audit.tabAudit': 'Audit Log',
'audit.tabConfig': 'Config Logs',
'audit.tabChat': 'Chat Logs',
'audit.records': 'registros',
'audit.refresh': 'Atualizar',
'audit.all': 'Todos',
'audit.errors': 'Erros',
'audit.success': 'Sucesso',
'audit.info': 'Info',
'audit.loadingLogs': 'Carregando logs...',
'audit.noAudit': 'Nenhum registro de auditoria.',
'audit.noConfig': 'Nenhum log de configuracao registrado.',
'audit.noChat': 'Nenhum log de chat registrado.',
'audit.date': 'Data',
'audit.user': 'Usuario',
'audit.action': 'Acao',
'audit.resource': 'Recurso',
'audit.details': 'Detalhes',
'audit.ip': 'IP',
'audit.config': 'Config',
'audit.status': 'Status',
'audit.message': 'Mensagem',
'audit.session': 'Sessao',
'audit.source': 'Origem',
// ── Hardcoded fixes ──
'common.errorPrefix': 'Erro: ',
'common.errorSave': 'Erro ao salvar',
'common.errorDelete': 'Erro ao excluir',
'common.errorUnknown': 'Erro desconhecido',
'common.errorLoad': 'Erro ao carregar',
'oci.tableHeaders': 'Tenancy,Tipo,Region,Detalhes,Acoes',
'oci.thTenancy': 'Tenancy',
'oci.thType': 'Tipo',
'oci.thRegion': 'Region',
'oci.thDetails': 'Detalhes',
'oci.thActions': 'Acoes',
'genai.thConfig': 'Config',
'genai.thModel': 'Modelo',
'genai.thOciConfig': 'OCI Config',
'genai.thRegion': 'Regiao',
'genai.thActions': 'Acoes',
'genai.savedSuccess': 'Modelo salvo com sucesso!',
'genai.updatedSuccess': 'Modelo atualizado com sucesso!',
'genai.deletedSuccess': 'Modelo excluido com sucesso!',
'genai.editingLabel': 'Editando:',
'genai.regionFilled': 'Regiao e Compartment preenchidos de <strong>{0}</strong>',
'mcp.savedSuccess': 'Server registrado com sucesso!',
'mcp.updatedSuccess': 'Server atualizado com sucesso!',
'mcp.deletingServer': 'Excluindo server...',
'mcp.deletedSuccess': 'Server excluido com sucesso!',
'mcp.discoveredTools': '{0} tool(s) descoberta(s), {1} total',
'mcp.errorDiscoverTools': 'Erro ao descobrir tools',
'mcp.removeToolConfirm': 'Remover tool "{0}"?',
'mcp.editingLabel': 'Editando:',
'adb.thName': 'Nome',
'adb.thDsn': 'DSN',
'adb.thUser': 'User',
'adb.thTables': 'Tabelas',
'adb.thMtls': 'mTLS',
'adb.thWallet': 'Wallet',
'adb.thEmbed': 'Embed',
'adb.thActions': 'Acoes',
'adb.thTable': 'Tabela',
'adb.thDescription': 'Descricao',
'adb.thActive': 'Ativa',
'adb.thTableActions': 'Acoes',
'adb.walletParsed': 'Wallet analisado! {0} DSN(s): <strong>{1}</strong>. Arquivos: {2}',
'adb.savedSuccess': 'Conexao salva!',
'adb.updatedSuccess': 'Conexao atualizada!',
'adb.walletIncluded': ' Wallet incluido.',
'adb.deletedSuccess': 'Conexao excluida com sucesso!',
'adb.walletSending': 'Enviando wallet...',
'adb.walletSent': 'Wallet enviada! Arquivos: {0}',
'adb.enterTableName': 'Digite o nome da tabela.',
'adb.tableRegistered': 'Tabela {0} registrada!',
'adb.confirmRemoveTable': 'Excluir esta tabela do registro?',
'adb.tableRemoved': 'Tabela removida.',
'adb.editingLabel': 'Editando:',
'emb.errorLoadEmb': 'Erro ao carregar embeddings',
'emb.confirmDeleteEmb': 'Excluir este embedding?',
'emb.totalDocs': 'Total: {0} documentos',
'ec.errorPrefix': 'Erro: ',
'ec.errorUnknown': 'Erro desconhecido',
'ec.docs': 'documentos',
'usr.errorLoadUsers': 'Erro ao carregar usuarios',
'usr.errorCreateUser': 'Erro ao criar usuario',
'usr.errorUpdateRole': 'Erro ao atualizar role',
'usr.errorDeactivate': 'Erro ao desativar usuario',
'usr.mfaSelfOnly': 'MFA so pode ser ativado pelo proprio usuario.',
'usr.myTimezone': 'Meu Timezone',
'ws.typeDestroyLabel': 'Digite <strong>DESTROY</strong> para confirmar:',
'exp.tempAccess': 'Acesso temporario - ',
'exp.optional': 'Opcional',
'exp.ipPrompt': 'IP para liberar acesso (CIDR):',
'exp.nsgType': 'Tipo',
// ── Common ──
'common.save': 'Salvar',
'common.cancel': 'Cancelar',
'common.delete': 'Excluir',
'common.edit': 'Editar',
'common.create': 'Criar',
'common.update': 'Atualizar',
'common.close': 'Fechar',
'common.confirm': 'Confirmar',
'common.back': 'Voltar',
'common.search': 'Buscar',
'common.refresh': 'Atualizar',
'common.download': 'Download',
'common.upload': 'Upload',
'common.copy': 'Copiar',
'common.retry': 'Tentar novamente',
'common.send': 'Enviar',
'common.clear': 'Limpar',
'common.test': 'Testar',
'common.yes': 'Sim',
'common.no': 'Nao',
'common.loading': 'Carregando...',
'common.saving': 'Salvando...',
'common.select': 'Selecione...',
'common.noData': 'Nenhum dado encontrado',
'common.error': 'Erro',
'common.success': 'Sucesso',
// ── My Settings ──
'settings.title': 'Minhas Configurações',
'settings.timezone': 'Timezone',
'settings.tzDesc': 'Define o fuso horário para exibição de datas e horários.',
'settings.tzChanged': 'Timezone alterado com sucesso',
'settings.language': 'Idioma',
'settings.langDesc': 'Selecione o idioma da interface.',
'settings.changePassword': 'Alterar Senha',
'settings.currentPw': 'Senha Atual',
'settings.newPw': 'Nova Senha',
'settings.confirmPw': 'Confirmar Nova Senha',
'settings.savePw': 'Alterar Senha',
'settings.saving': 'Salvando...',
'settings.pwChanged': 'Senha alterada com sucesso',
'settings.pwRequired': 'Preencha todos os campos',
'settings.pwMismatch': 'As senhas não conferem',
'settings.pwMinLength': 'A nova senha deve ter pelo menos 8 caracteres',
'settings.federatedInfo': 'Senha e MFA são gerenciados pelo Oracle IAM Identity Domain. Configure diretamente no portal OCI.',
'settings.mfa': 'Autenticação Multi-Fator (MFA)',
// ── Terminal ──
'term.title': 'OCI CLI Terminal',
'term.subtitle': 'Execute comandos OCI CLI diretamente no navegador',
'term.config': 'Configuração',
'term.selectConfig': 'Selecione uma configuração OCI',
'term.welcome': 'Digite comandos OCI CLI. Ex: oci iam user list --compartment-id <ocid>',
'term.clearHint': 'para limpar',
'term.historyHint': 'para navegar no histórico',
'term.executing': 'Executando...',
'term.noOutput': 'Comando executado sem output',
// ── Oracle IAM ──
'iam.title': 'Oracle IAM Identity Domains',
'iam.subtitle': 'Integração OIDC para autenticação corporativa',
'iam.authMode': 'Modo de Autenticação',
'iam.authModeDesc': 'Define como os usuários se autenticam no sistema.',
'iam.modeLocal': 'Local',
'iam.modeLocalDesc': 'Usuários locais com senha',
'iam.modeOidc': 'Oracle IAM',
'iam.modeOidcDesc': 'Somente SSO corporativo',
'iam.modeBoth': 'Ambos',
'iam.modeBothDesc': 'Local + Oracle IAM',
'iam.oidcConfig': 'Configuração OIDC',
'iam.testConnection': 'Testar Conexão',
'iam.issuerUrl': 'Issuer URL (Identity Domain)',
'iam.clientId': 'Client ID',
'iam.clientSecret': 'Client Secret',
'iam.redirectUri': 'Redirect URI',
'iam.groupMapping': 'Mapeamento de Grupos',
'iam.groupMappingDesc': 'Mapeie os grupos do OCI Identity Domain para as roles do sistema.',
'iam.save': 'Salvar Configuração',
'iam.saving': 'Salvando...',
'iam.saved': 'Configuração salva com sucesso',
'iam.issuerRequired': 'Issuer URL é obrigatório',
'iam.testOk': 'Conexão OK',
'iam.testInvalid': 'Resposta inválida do discovery endpoint',
'iam.testFail': 'Falha na conexão',
};
export default pt;