{
  "a2aDashboard": {
    "loading": "Carregando painel A2A...",
    "confirmCancelTask": "Cancelar tarefa {taskId}?",
    "cancelTaskFailed": "Falha ao cancelar tarefa.",
    "cancelTaskSuccess": "Tarefa {taskId} cancelada.",
    "smokeSendFailed": "Falha no smoke test de message/send.",
    "smokeSendSuccessWithTask": "message/send ok (tarefa {taskId}).",
    "smokeSendSuccess": "message/send ok.",
    "smokeStreamFailed": "Falha no smoke test de message/stream.",
    "smokeStreamSuccessWithTask": "message/stream ok (tarefa {taskId}{stateSuffix}).",
    "smokeStreamNoTaskId": "message/stream finalizado sem task id.",
    "health": "Saúde",
    "ok": "ok",
    "totalTasks": "Total de tarefas",
    "activeStreams": "Streams ativos",
    "lastTask": "Última tarefa",
    "taskStateOverview": "Visão de estados das tarefas",
    "state": {
      "submitted": "submetida",
      "working": "executando",
      "completed": "concluída",
      "failed": "falhou",
      "cancelled": "cancelada"
    },
    "agentCard": "Cartão do agente",
    "agentCardPath": "/.well-known/agent.json",
    "version": "Versão",
    "url": "URL",
    "capabilities": "Capacidades",
    "agentCardNotAvailable": "Cartão do agente indisponível.",
    "quickValidation": "Validação rápida",
    "quickValidationDescription": "Executa chamadas de smoke pelo endpoint `/a2a` em produção.",
    "runMessageSend": "Executar message/send",
    "runMessageStream": "Executar message/stream",
    "taskManagement": "Gestão de tarefas",
    "taskSummary": "{total} tarefas | página {page} de {totalPages}",
    "allStates": "todos",
    "allSkills": "todas as skills",
    "loadingTasks": "Carregando tarefas...",
    "noTasksForFilters": "Nenhuma tarefa encontrada para os filtros atuais.",
    "tableTask": "Tarefa",
    "tableSkill": "Skill",
    "tableState": "Estado",
    "tableUpdated": "Atualizada",
    "tableActions": "Ações",
    "view": "Ver",
    "cancel": "Cancelar",
    "previous": "Anterior",
    "next": "Próxima",
    "taskDetail": "Detalhe da tarefa",
    "close": "Fechar",
    "metadata": "Metadados",
    "events": "Eventos",
    "artifacts": "Artefatos",
    "tablePhase": "Table Phase",
    "offset": "Offset",
    "limit": "Limit",
    "skill": "Skill",
    "rpcEndpoint": "POSTAR /a2a",
    "rpcMethodSend": "mensagem/enviar",
    "rpcMethodStream": "mensagem/fluxo",
    "rpcMethodGet": "tarefas/obter",
    "rpcMethodCancel": "tarefas/cancelar",
    "serviceLabel": "A2A",
    "online": "Online",
    "offline": "Offline",
    "disableLabel": "Desativar {label}",
    "enableLabel": "Ativar {label}",
    "a2aDisabledTitle": "O A2A está desativado",
    "a2aDisabledDesc": "Ative o A2A acima para visualizar a telemetria de tarefas, detalhes do agente e ferramentas de validação.",
    "a2aIntro": "Endpoint Agent2Agent JSON-RPC 2.0 — envie tarefas, transmita respostas, cancele trabalhos em andamento.",
    "a2aStep1": "Descubra o cartão do agente em {code}.",
    "a2aStep2": "Envie JSON-RPC para {code1} usando {code2} ou {code3}.",
    "a2aStep3": "Rastreie e cancele tarefas com {code1} and {code2}."
  },
  "agents": {
    "title": "Agentes CLI",
    "description": "Descubra agentes CLI instalados no seu sistema. Adicione agentes customizados para auto-detecção.",
    "refresh": "Atualizar",
    "installed": "Instalado",
    "notFound": "Não encontrado",
    "builtIn": "Nativo",
    "custom": "Customizado",
    "remove": "Remover",
    "addCustomAgent": "Adicionar Agente Customizado",
    "addCustomAgentDesc": "Registre qualquer ferramenta CLI para detecção. Ela será verificada automaticamente ao atualizar.",
    "agentName": "Nome do Agente",
    "binaryName": "Nome do Binário",
    "versionCommand": "Comando de Versão",
    "spawnArgs": "Argumentos",
    "addAgent": "Adicionar Agente",
    "scanning": "Scanning system for CLI agents...",
    "opencodeIntegration": "OpenCode Integration",
    "opencodeDetected": "opencode {version} detected",
    "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.",
    "downloadConfig": "Download {file}",
    "downloaded": "Downloaded!",
    "setupGuideTitle": "Setup guide",
    "openCliTools": "Open CLI Tools",
    "setupGuideDetectCliTitle": "Detect installed CLIs",
    "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.",
    "setupGuideCustomAgentTitle": "Register custom binary",
    "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.",
    "setupGuideCommandMissingTitle": "Fix 'command not found'",
    "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.",
    "cliToolsRedirectTitle": "Procurando configuração de cliente?",
    "cliToolsRedirectDesc": "Use CLI Tools quando quiser que seu editor ou cliente de terminal chame o OmniRoute por HTTP em vez de ser iniciado localmente.",
    "spawnArgsPlaceholder": "ex.: --quiet, --json",
    "binaryNamePlaceholder": "ex.: meu-worker",
    "versionCommandPlaceholder": "ex.: meu-worker --version",
    "architectureTitle": "Fluxo de execução ACP",
    "flowLocalBinary": "Binário local",
    "flowOmniRoute": "OmniRoute",
    "agentNamePlaceholder": "ex.: Meu Worker Customizado",
    "architectureDescription": "Esta tela é para binários que o OmniRoute inicia localmente como workers. O OmniRoute detecta o binário, faz o spawn e o usa como endpoint final de execução.",
    "flowExecute": "Executa tarefa",
    "flowSpawn": "Inicia worker",
    "cliToolsRedirectCta": "Ir para CLI Tools",
    "comparisonTitle": "Ferramentas CLI versus alvos de agente – Qual é a diferença?",
    "comparisonCliToolsLabel": "Página de ferramentas CLI",
    "comparisonCliToolsTitle": "Seu IDE envia solicitações através do OmniRoute",
    "comparisonCliToolsDesc": "Configure Claude Code, Codex, Cursor e outros IDEs para usar OmniRoute como URL base da API. OmniRoute atua como um proxy, roteando solicitações para seus provedores configurados.",
    "comparisonAgentsLabel": "Esta página (alvos do agente)",
    "comparisonAgentsTitle": "OmniRoute envia solicitações para ferramentas CLI locais",
    "comparisonAgentsDesc": "OmniRoute pode gerar binários CLI locais (claude, codex, goose) como backends de execução. A ferramenta CLI processa a solicitação usando sua própria autenticação e retorna o resultado.",
    "comparisonSummary": "Resumindo: CLI Tools = você configura ferramentas para apontar para OmniRoute. Destinos do agente = OmniRoute usa ferramentas como pontos de extremidade.",
    "agentUseCaseHint": "Pode ser usado como alvo de execução via protocolo ACP",
    "flowDiagramClient": "Aplicativo cliente",
    "flowDiagramClientDesc": "SDK, API ou serviço upstream",
    "flowDiagramOmniRoute": "OmniRoute",
    "flowDiagramOmniRouteDesc": "Recebe solicitação e seleciona alvo",
    "flowDiagramSpawn": "Processo de geração",
    "flowDiagramSpawnDesc": "Lança o binário CLI via stdio",
    "flowDiagramCli": "Agente CLI",
    "flowDiagramCliDesc": "Processos com autenticação/modelo próprio",
    "fingerprintSettingsHint": "A correspondência de impressão digital CLI (solicitações disfarçadas como ferramentas CLI específicas) pode ser configurada em",
    "settingsRoutingLink": "Configurações/Roteamento",
    "openSettings": "Configurações",
    "copyRawUrlTitle": "Copie o URL bruto para a área de transferência",
    "copied": "Copiado!",
    "copyUrl": "Copiar URL",
    "startHere": "Comece aqui",
    "badgeNew": "Novo",
    "viewOnGithub": "Ver no GitHub",
    "howToUse": "Como usar",
    "browseAllSkillsOnGithub": "Procure todas as habilidades no GitHub",
    "apiSkills": "Habilidades de API",
    "cliSkills": "Habilidades CLI",
    "apiSkillsSubtitle": "{count} skills — controle o OmniRoute via REST / HTTP",
    "cliSkillsSubtitle": "{count} skills — controle o OmniRoute via o binário terminal omniroute",
    "howToUseStep1": "Clique em <bold>{copyUrl}</bold> na habilidade que você deseja que seu agente conheça.",
    "howToUseStep2": "No seu agente de IA (Claude, Cursor, Cline…), diga:",
    "howToUseStep2Code": "Use a habilidade em [pasted-url]",
    "howToUseStep3": "O agente busca o SKILL.md e aprende a API ou CLI do OmniRoute — sem necessidade de manuais."
  },
  "analytics": {
    "title": "Análises",
    "usageAnalyticsTitle": "Análise de Uso",
    "diversityScoreTitle": "Diversidade de Provedores",
    "diversityScoreDesc": "Instantâneo da concentração de provedores para a janela de tráfego recente.",
    "diversityShannonEntropy": "Entropia de Shannon",
    "diversityWindow": "Janela: {count} reqs · Últimos {mins} mins",
    "diversityHealthy": "Distribuição Saudável",
    "diversityRiskHigh": "Alto Risco de Lock-in de Fornecedor",
    "diversityRiskModerate": "Distribuição Moderada",
    "diversityScoreLabel": "score",
    "diversityHigherExplanation": "Valores mais altos significam que o tráfego está espalhado por múltiplos provedores.",
    "diversityNoData": "Nenhum dado de uso recente disponível.",
    "chartRequests": "Solicitações",
    "chartInput": "Entrada",
    "chartOutput": "Saída",
    "chartTotal": "Total",
    "chartCost": "Custo",
    "chartShare": "Participação",
    "chartServiceTier": "Nível de Serviço",
    "chartServiceTierSplit": "Divisão de custo Fast / Standard",
    "chartCostPct": "{pct}% do custo",
    "chartUsageDetail": "Detalhes de Uso",
    "chartCacheRead": "Leitura de cache",
    "chartCostByProvider": "Custo por Provedor",
    "chartNoCostData": "Sem dados de custo",
    "chartModelUsageOverTime": "Uso de Modelos ao Longo do Tempo",
    "chartNoData": "Sem dados",
    "chartWeekly": "Semanal",
    "chartModelBreakdown": "Detalhamento por Modelo",
    "chartModel": "Modelo",
    "chartProvider": "Provedor",
    "chartProviderBreakdown": "Detalhamento por Provedor",
    "filterAllKeys": "Todas as Chaves",
    "filterSearchKeys": "Buscar chaves…",
    "filterNoKeysMatch": "Nenhuma chave corresponde",
    "filterOneKey": "1 chave",
    "filterMultipleKeys": "{count} chaves",
    "rangeToday": "Hoje",
    "rangeYesterday": "Ontem",
    "rangeLast3Days": "Últimos 3 dias",
    "rangeThisWeek": "Esta semana",
    "rangeLast14Days": "Últimos 14 dias",
    "rangeThisMonth": "Este mês",
    "rangeQuickSelect": "Seleção Rápida",
    "rangeStart": "Início",
    "rangeEnd": "Fim",
    "rangeCancel": "Cancelar",
    "rangeApply": "Aplicar",
    "rangeErrorInvalid": "O início deve ser anterior ao fim",
    "period1D": "1D",
    "period7D": "7D",
    "period30D": "30D",
    "period90D": "90D",
    "periodYTD": "YTD",
    "periodAll": "Tudo",
    "totalTokens": "Total de Tokens",
    "inputTokens": "Tokens de Entrada",
    "outputTokens": "Tokens de Saída",
    "estCost": "Custo Est.",
    "infraTitle": "Infraestrutura",
    "infraAccounts": "Contas",
    "infraProviders": "Provedores",
    "infraApiKeys": "Chaves de API",
    "infraModels": "Modelos",
    "perfTitle": "Desempenho",
    "perfAvgTokens": "Média de Tokens/Req",
    "perfCostReq": "Custo/Req",
    "perfIoRatio": "Taxa E/S",
    "perfFastReq": "Solicitações Rápidas",
    "highlightsTitle": "Destaques",
    "highlightsTopModel": "Modelo Top",
    "highlightsTopProvider": "Provedor Top",
    "highlightsBusiestDay": "Dia Mais Atarefado",
    "highlightsDiversity": "Diversidade",
    "highlightsFallbackRate": "Taxa de Fallback",
    "customRange": "Personalizado",
    "overviewDescription": "Monitore padrões de uso da API, consumo de tokens, custos e tendências de atividade em todos os provedores e modelos.",
    "evalsDescription": "Execute suítes de avaliação para testar e validar seus endpoints LLM. Compare qualidade de modelos, detecte regressões e faça benchmarks de latência.",
    "overview": "Visão Geral",
    "evals": "Avaliações",
    "utilization": "Utilização",
    "utilizationDescription": "Tendências de uso de cota do provedor e rastreamento de limites de taxa",
    "modelStatus": "Status do modelo",
    "modelStatusCooldown": "Recarga",
    "modelStatusUnavailable": "Indisponível",
    "modelStatusError": "Erro",
    "comboHealth": "Saúde do Combo",
    "comboHealthDescription": "Cota em nível de combo, distribuição de uso e métricas de desempenho",
    "compressionAnalyticsTitle": "Compression Analytics",
    "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.",
    "autoRoutingTotalAutoRequests": "Total de solicitações automáticas",
    "autoRoutingAvgSelectionScore": "Pontuação média de seleção",
    "autoRoutingExplorationRate": "Taxa de Exploração",
    "autoRoutingLkgpHitRate": "Taxa de acerto LKGP",
    "autoRoutingRequestsByVariant": "Solicitações por variante",
    "autoRoutingTopRoutedProviders": "Principais provedores roteados",
    "comboHealthWorstQuotaLeft": "Pior cota restante",
    "comboHealthUsageSkew": "Distorção de uso",
    "comboHealthSuccessRate": "Taxa de sucesso",
    "comboHealthQuotaHealth": "Integridade da cota",
    "comboHealthRequests": "Solicitações",
    "comboHealthTokens": "Fichas",
    "comboHealthAvgLatency": "Latência média",
    "comboHealthTotalRequests": "Total de solicitações",
    "comboHealthExecutionTargets": "Metas de execução",
    "comboHealthSuccess": "Sucesso",
    "comboHealthLatency": "Latência",
    "comboHealthQuota": "Cota",
    "comboHealthTitle": "Saúde combinada",
    "comboHealthUnableToLoad": "Não foi possível carregar a saúde do combo",
    "comboHealthGettingStarted": "Primeiros passos",
    "compressionAnalyticsTotalRequests": "Total de solicitações",
    "compressionAnalyticsTokensSaved": "Tokens salvos",
    "compressionAnalyticsAvgSavings": "Economia média",
    "compressionAnalyticsAvgDuration": "Duração média",
    "compressionAnalyticsReceipts": "Recibos",
    "compressionAnalyticsFallbacks": "Alternativos",
    "compressionAnalyticsPromptTokens": "Tokens de prompt",
    "compressionAnalyticsCompletionTokens": "Tokens de conclusão",
    "compressionAnalyticsTotalTokens": "Totais de fichas",
    "compressionAnalyticsCacheTokens": "Tokens de cache",
    "compressionAnalyticsNoDataYet": "Ainda não há dados de compactação",
    "searchAnalyticsTotalSearches": "Total de pesquisas",
    "searchAnalyticsCacheHitRate": "Taxa de acertos do cache",
    "searchAnalyticsTotalCost": "Custo total",
    "searchAnalyticsAvgResponse": "Resposta média",
    "searchAnalyticsNoSearchesYet": "Nenhuma pesquisa ainda",
    "providerUtilizationTitle": "Utilização do provedor",
    "providerUtilizationFailedToLoad": "Falha ao carregar dados de utilização",
    "providerUtilizationNoData": "Não há dados de utilização disponíveis",
    "providerUtilizationGettingStarted": "Primeiros passos",
    "providerUtilizationLatestSnapshot": "Instantâneo de cota mais recente",
    "providerUtilizationRemainingCapacity": "Capacidade restante"
  },
  "apiManager": {
    "title": "Chaves de API",
    "createKey": "Criar Chave de API",
    "key": "Chave",
    "revokeKey": "Revogar Chave",
    "revokeConfirm": "Tem certeza que deseja revogar esta chave de API?",
    "noKeys": "Nenhuma chave de API ainda",
    "noKeysDesc": "Crie sua primeira chave de API para autenticar requisições ao seu endpoint",
    "keyLabel": "Rótulo da Chave",
    "permissions": "Permissões",
    "expiresAt": "Expira",
    "never": "Nunca",
    "revoke": "Revogar",
    "showKey": "Mostrar Chave",
    "hideKey": "Ocultar Chave",
    "copyKey": "Copiar Chave de API",
    "allModels": "Todos os modelos",
    "selectedModels": "Modelos Selecionados",
    "readOnly": "Somente Leitura",
    "fullAccess": "Acesso Total",
    "keyManagement": "Gerenciamento de Chaves de API",
    "keyManagementDesc": "Crie e gerencie chaves de API para autenticar requisições ao seu endpoint",
    "totalKeys": "Total de Chaves",
    "restricted": "Restrita",
    "totalRequests": "Total de Requisições",
    "modelsAvailable": "Modelos Disponíveis",
    "registeredKeys": "Chaves Registradas",
    "keysRegistered": "{count} chaves registradas",
    "keyRegistered": "{count} chave registrada",
    "keysSecurityNote": "Cada chave isola o rastreamento de uso e pode ser revogada independentemente. As chaves são mascaradas após a criação por segurança.",
    "createFirstKey": "Crie Sua Primeira Chave",
    "name": "Nome",
    "usage": "Uso",
    "created": "Criado",
    "actions": "Ações",
    "reqs": "reqs",
    "neverUsed": "Nunca usada",
    "deleteConfirm": "Excluir esta chave de API?",
    "usageTips": "Dicas de Uso",
    "tipAuth": "Use chaves de API no cabeçalho Authorization como Bearer SUA_CHAVE",
    "tipSecure": "As chaves são mostradas apenas uma vez durante a criação — armazene-as com segurança",
    "tipSeparate": "Crie chaves separadas para diferentes clientes ou ambientes",
    "tipRestrict": "Restrinja chaves a modelos específicos para maior segurança e controle de custos",
    "keyName": "Nome da Chave",
    "keyNamePlaceholder": "ex: Chave de Produção",
    "keyNameDesc": "Escolha um nome descritivo para identificar o propósito desta chave",
    "managementAccessDesc": "Permitir que esta chave de API gerencie a configuração do OmniRoute.",
    "selfServiceVisibility": "Visibilidade de autoatendimento",
    "selfServiceVisibilityDesc": "Controla o que esta chave pode ver sobre o próprio uso e a cota upstream compartilhada.",
    "ownUsageVisibility": "Custo próprio e uso de tokens",
    "ownUsageVisibilityDesc": "Permitir que esta chave chame seu endpoint de status para ver o próprio uso em USD, percentual do orçamento e totais de tokens.",
    "sharedAccountQuotaVisibility": "Cota de conta compartilhada",
    "sharedAccountQuotaVisibilityDesc": "Permitir que esta chave veja a cota da conta upstream compartilhada quando uma conexão explícita estiver configurada.",
    "keyCreated": "Chave de API Criada",
    "keyCreatedSuccess": "Chave criada com sucesso!",
    "keyCreatedNote": "Copie e armazene esta chave agora — ela não será mostrada novamente.",
    "done": "Pronto",
    "savePermissions": "Salvar Permissões",
    "endpointRestrictions": "Endpoints Permitidos",
    "allEndpointsAllowed": "Esta chave pode acessar todos os endpoints de API.",
    "endpointsRestricted": "Restrito a {count} endpoint{count, plural, one {} other {s}}.",
    "autoResolve": "Auto-Resolve",
    "autoResolveDesc": "Resolve automaticamente nomes ambíguos de modelo para o provedor nativo desta API key.",
    "keyActive": "Chave Ativa",
    "keyActiveDesc": "Ativa ou desativa esta API key. Chaves desativadas são bloqueadas com 403.",
    "accessSchedule": "Horário de Acesso",
    "accessScheduleDesc": "Restrinja o acesso a horários e dias da semana específicos.",
    "scheduleFrom": "Das",
    "scheduleUntil": "Até",
    "scheduleDays": "Dias",
    "scheduleTimezone": "Fuso Horário",
    "scheduleTimezoneHint": "Use nomes IANA, ex: America/Sao_Paulo",
    "scheduleActive": "Agenda",
    "disabled": "Desativada",
    "daySun": "Dom",
    "dayMon": "Seg",
    "dayTue": "Ter",
    "dayWed": "Qua",
    "dayThu": "Qui",
    "dayFri": "Sex",
    "daySat": "Sáb",
    "allowAll": "Permitir Tudo",
    "restrict": "Restringir",
    "allowAllInfo": "Esta chave pode acessar todos os modelos disponíveis.",
    "restrictInfo": "Esta chave pode acessar {selected} de {total} modelos.",
    "selected": "{count} selecionados",
    "all": "Todos",
    "clear": "Limpar",
    "searchModels": "Buscar modelos por nome ou provedor...",
    "noModelsFound": "Nenhum modelo encontrado",
    "keyNameRequired": "Nome da chave é obrigatório",
    "keyNameTooLong": "Nome da chave deve ter {max} caracteres ou menos",
    "keyNameInvalid": "Nome da chave pode conter apenas letras, números, espaços, hífens e sublinhados",
    "invalidKeyName": "Nome de chave inválido",
    "failedCreateKey": "Falha ao criar chave",
    "failedCreateKeyRetry": "Falha ao criar chave. Tente novamente.",
    "invalidKeyId": "ID de chave inválido",
    "failedDeleteKey": "Falha ao excluir chave",
    "failedDeleteKeyRetry": "Falha ao excluir chave. Tente novamente.",
    "invalidModelsSelection": "Seleção de modelos inválida",
    "cannotSelectMoreThanModels": "Não é possível selecionar mais de {max} modelos",
    "failedUpdatePermissions": "Falha ao atualizar permissões",
    "failedUpdatePermissionsRetry": "Falha ao atualizar permissões. Tente novamente.",
    "unknownProvider": "desconhecido",
    "copyMaskedKey": "Copiar chave mascarada",
    "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key",
    "modelsCount": "{count, plural, one {# modelo} other {# modelos}}",
    "lastUsedOn": "Último: {date}",
    "editPermissions": "Editar permissões",
    "deleteKey": "Excluir chave",
    "regenerateKey": "Chave regenerada",
    "regenerateConfirm": "Tem certeza de que deseja regenerar esta chave de API? A chave antiga será imediatamente invalidada.",
    "failedRegenerateKey": "Falha ao regenerar a chave de API",
    "failedRegenerateKeyRetry": "Falha ao regenerar a chave de API. Por favor, tente novamente.",
    "model": "{count} modelo",
    "models": "{count} modelos",
    "permissionsTitle": "Permissões: {name}",
    "allowAllDesc": "Esta chave pode acessar todos os modelos disponíveis.",
    "restrictDesc": "Esta chave pode acessar {selectedCount} de {totalModels} modelos.",
    "selectedCount": "{count} selecionados",
    "maxActiveSessions": "Máximo de sessões ativas",
    "apiManagerCustomRateLimits": "Limites de taxas personalizadas",
    "apiManagerCustomRateLimitsDesc": "Substitua os limites padrão globais. Deixe em branco para usar os padrões.",
    "apiManagerRateLimitRequestsPlaceholder": "Solicitações",
    "apiManagerRateLimitReqPer": "solicitação /",
    "apiManagerRateLimitSecondsPlaceholder": "Segundos",
    "apiManagerRemoveLimitTitle": "Remover limite",
    "apiManagerTimezonePlaceholder": "América/São_Paulo",
    "noLogPayloadPrivacy": "Privacidade de carga útil sem registro",
    "bannedStatus": "Status banido",
    "managementApiAccess": "Acesso à API de gerenciamento",
    "expirationDate": "Data de expiração",
    "managementAccess": "Acesso de gerenciamento",
    "allowedConnections": "Conexões permitidas",
    "searchPlaceholder": "Buscar por nome ou token...",
    "activeOnly": "Apenas ativas",
    "filterStatus": "STATUS",
    "filterType": "TIPO",
    "filterAll": "Todas",
    "filterStatusActive": "Ativa",
    "filterStatusDisabled": "Desativada",
    "filterStatusBanned": "Banida",
    "filterStatusExpired": "Expirada",
    "filterTypeStandard": "Padrão",
    "filterTypeManage": "Gerenciamento",
    "filterTypeRestricted": "Restrita",
    "shownOf": "{shown} de {total} exibidas",
    "emptyFilterTitle": "Nenhuma chave corresponde aos filtros",
    "emptyFilterClear": "Limpar filtros",
    "normalKeysSection": "Chaves normais",
    "quotaKeysSection": "Chaves de cota",
    "quotaPill": "QUOTA",
    "quotaModeOnly": "só-qtSd"
  },
  "auditLog": {
    "title": "Log de Auditoria",
    "searchPlaceholder": "Buscar ações...",
    "action": "Ação",
    "actor": "Autor",
    "target": "Alvo",
    "ipAddress": "Endereço IP",
    "timestamp": "Data/Hora",
    "noEntries": "Nenhum registro de auditoria",
    "filterByAction": "Filtrar por ação...",
    "filterByActor": "Filtrar por autor...",
    "filterEntriesAria": "Filtrar entradas do log de auditoria",
    "filterByActionTypeAria": "Filtrar por tipo de ação",
    "filterByActorAria": "Filtrar por autor",
    "refreshAuditLogAria": "Atualizar log de auditoria",
    "tableAria": "Entradas do log de auditoria",
    "failedFetchAuditLog": "Falha ao carregar log de auditoria",
    "notAvailable": "—",
    "description": "Ações administrativas e eventos de segurança",
    "showing": "Mostrando {count} entradas (offset {offset})",
    "previous": "Anterior"
  },
  "auth": {
    "welcome": "Bem-vindo",
    "signIn": "Entrar",
    "enterPassword": "Digite sua senha para continuar",
    "password": "Senha",
    "unifiedProxy": "Proxy Unificado de API de IA",
    "unifiedAiApiProxy": "Proxy Unificado de API de IA",
    "unifiedAiApiProxyDesc": "Roteie requisições para múltiplos provedores de IA por um único endpoint. Balanceamento de carga, failover e rastreamento de uso integrados.",
    "passwordNotEnabled": "Proteção por senha não está ativada",
    "loading": "Carregando...",
    "invalidPassword": "Senha inválida",
    "errorOccurredRetry": "Ocorreu um erro. Tente novamente.",
    "configureInstance": "Vamos configurar sua instância OmniRoute",
    "runOnboardingWizard": "Execute o assistente de onboarding para definir sua senha e conectar seu primeiro provedor de IA.",
    "startOnboarding": "Iniciar Onboarding",
    "secureYourInstance": "Proteja sua Instância",
    "setPasswordDescription": "Defina uma senha para proteger seu painel e garantir que seus endpoints de API não sejam acessados sem autorização.",
    "configurePassword": "Configurar Senha",
    "continue": "Continuar",
    "windowWillClose": "Esta janela será fechada automaticamente...",
    "closeTabNow": "Você já pode fechar esta aba.",
    "copyUrlManual": "Copie a URL da barra de endereços e cole no aplicativo.",
    "accessDeniedDescription": "Você não tem permissão para acessar este recurso. Verifique sua chave de API ou contate o administrador.",
    "goToDashboard": "Ir para o Painel",
    "featureMultiProviderTitle": "Multi-Provedor",
    "featureMultiProviderDesc": "OpenAI, Anthropic, Google e outros",
    "featureLoadBalancingTitle": "Balanceamento de Carga",
    "featureLoadBalancingDesc": "Distribua requisições de forma inteligente",
    "featureUsageTrackingTitle": "Rastreamento de Uso",
    "featureUsageTrackingDesc": "Monitore custos e tokens",
    "resetPassword": "Redefinir Senha",
    "resetDescription": "Escolha um método para recuperar acesso ao painel",
    "stopServer": "Pare o servidor OmniRoute",
    "processing": "Processando...",
    "pleaseWait": "Aguarde enquanto completamos a autorização.",
    "authSuccess": "Autorização bem-sucedida!",
    "copyUrl": "Copiar esta URL",
    "accessDenied": "Acesso Negado",
    "methodCliTitle": "Método 1: Reset via CLI",
    "methodCliDescription": "Execute o comando abaixo no servidor onde o OmniRoute está em execução:",
    "methodCliHint": "Isso solicitará que você defina uma nova senha. O servidor deve ser parado antes.",
    "methodManualTitle": "Método 2: Reset Manual",
    "methodManualDescription": "Remova a senha do banco de dados e defina uma nova na inicialização:",
    "setPasswordInYour": "Defina uma nova senha no seu",
    "fileLabelSuffix": "arquivo:",
    "newPasswordPlaceholder": "sua_nova_senha",
    "deleteSettingsFile": "Exclua",
    "orRemovePasswordHashField": "ou remova o campo passwordHash",
    "restartServerWithNewPassword": "Reinicie o servidor - ele usará a nova senha",
    "backToLogin": "Voltar para o Login",
    "forgotPassword": "Esqueceu a senha?",
    "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)",
    "Authorization": "Autorização",
    "Content-Disposition": "Disposição de conteúdo",
    "waitingForAuthorization": "Aguardando autorização...",
    "waitingForGoogleAuthorization": "Aguardando autorização do Google...",
    "waitingForOpenAIAuthorization": "Aguardando autorização do OpenAI...",
    "waitingForAntigravityAuthorization": "Aguardando autorização antigravidade...",
    "waitingForQoderAuthorization": "Aguardando autorização do Qoder...",
    "exchangingCodeForTokens": "Trocando código por tokens...",
    "nodeIncompatibleTitle": "Incompatible Node.js Version",
    "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.",
    "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release",
    "nodeIncompatibleHint": "OmniRoute requires Node.js 20.20.2+ (20.x LTS), 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended."
  },
  "cache": {
    "title": "Cache Management",
    "description": "Monitor and manage semantic response cache, hit rates, and token savings.",
    "refresh": "Refresh",
    "clearAll": "Clear All",
    "memoryEntries": "Memory Entries",
    "memoryEntriesSub": "In-memory LRU",
    "dbEntries": "DB Entries",
    "dbEntriesSub": "Persisted (SQLite)",
    "cacheHits": "Cache Hits",
    "cacheHitsSub": "of {total} total",
    "tokensSaved": "Tokens Saved",
    "tokensSavedSub": "Estimated from hits",
    "hitRate": "Hit Rate",
    "performance": "Cache Performance",
    "autoRefresh": "Auto-refreshes every {seconds}s",
    "hits": "Hits",
    "misses": "Misses",
    "total": "Total",
    "behavior": "Cache Behavior",
    "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.",
    "behaviorBypass": "Bypass with header {header}.",
    "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).",
    "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.",
    "idempotency": "Idempotency Layer",
    "activeDedupKeys": "Active Dedup Keys",
    "dedupWindow": "Dedup Window",
    "clearSuccess": "Cache cleared. {count} expired entries removed.",
    "clearError": "Failed to clear cache.",
    "unavailable": "Cache unavailable",
    "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.",
    "loadingCacheAria": "Carregando cache",
    "promptCache": "Prompt Cache (Provider-Side)",
    "semanticCache": "Semantic Cache",
    "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.",
    "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.",
    "cachedRequests": "Cached Requests",
    "cachedRequests24h": "Cached Requests (24h)",
    "cacheHitRate": "Cache Hit Rate",
    "cacheRate": "Cache Rate",
    "cacheRateDesc": "of total requests",
    "cachedTokens": "Cached Tokens",
    "cacheCreationTokens": "Cache Creation Tokens",
    "cacheMetrics": "Prompt Cache Metrics",
    "withCacheControl": "With Cache Control",
    "cachedTokensRead": "Cached Tokens (Read)",
    "cacheCreationWrite": "Cache Creation (Write)",
    "cacheReuseRatio": "Cache Reuse Ratio",
    "cacheReuseRatioDesc": "Cached tokens / Total input tokens",
    "estCostSaved": "Est. Cost Saved",
    "lastUpdated": "Last updated",
    "hoursTracked": "hours tracked",
    "busiestHour": "Busiest Hour",
    "peakCacheRate": "Peak Cache Rate",
    "trendHour": "Hour",
    "activityVolume": "Activity",
    "requestsShort": "reqs",
    "inputShort": "In",
    "cachedShort": "Cached",
    "writeShort": "Write",
    "resetting": "Resetting...",
    "resetMetrics": "Reset Metrics",
    "byProvider": "Breakdown by Provider",
    "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.",
    "provider": "Provider",
    "requests": "Requests",
    "inputTokens": "Input Tokens",
    "cachedTokensCol": "Cached",
    "cacheCreation": "Creation",
    "trend24h": "Cache Trend (24h)",
    "peakCached": "Peak cached",
    "cached": "Cached",
    "overview": "Overview",
    "tableProvider": "Provedor",
    "tableModel": "Modelo",
    "performanceTitle": "Desempenho",
    "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.",
    "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.",
    "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.",
    "searchEntries": "Search entries...",
    "search": "Search",
    "loading": "Loading...",
    "entriesLoadError": "Failed to load semantic cache entries.",
    "noEntries": "No cache entries found",
    "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.",
    "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.",
    "signature": "Signature",
    "model": "Model",
    "created": "Created",
    "expires": "Expires",
    "actions": "Actions",
    "deduplicatedRequests": "Requisições Desduplicadas",
    "savedCalls": "Chamadas API Poupadas",
    "totalProcessed": "Total Processado",
    "disabled": "Disabled",
    "totalRequests": "Total Requests",
    "reasoningCache": "Repetição do raciocínio",
    "reasoningCacheDesc": "Preserva o pensamento do modelo para fluxos de chamada de ferramentas multivoltas",
    "reasoningEntries": "Entradas ativas",
    "reasoningReplayRate": "Taxa de repetição",
    "reasoningReplays": "Total de repetições",
    "reasoningCharsCached": "Personagens em cache",
    "reasoningMisses": "Perdas de cache",
    "reasoningByProvider": "Por provedor",
    "reasoningByModel": "Por modelo",
    "reasoningRecentEntries": "Entradas recentes",
    "reasoningToolCallId": "ID de chamada da ferramenta",
    "reasoningChars": "Personagens",
    "reasoningAge": "Idade",
    "reasoningView": "Ver",
    "reasoningDetail": "Conteúdo de raciocínio",
    "reasoningBehavior": "Comportamento",
    "reasoningBehaviorCapture": "Captura reasoning_content de respostas de streaming",
    "reasoningBehaviorReplay": "Reinjeta no próximo turno quando o cliente o omite",
    "reasoningBehaviorFallback": "Memória em primeiro lugar com substituto SQLite para recuperação de falhas",
    "reasoningBehaviorTtl": "TTL: 2 horas | Entradas máximas: 2.000 (memória)",
    "reasoningBehaviorModels": "Suportado: DeepSeek, Kimi, Qwen-Thinking, GLM",
    "reasoningClearAll": "Limpar cache de raciocínio",
    "reasoningClearSuccess": "Entradas de cache de raciocínio {count} apagadas",
    "reasoningClearError": "Falha ao limpar o cache de raciocínio",
    "reasoningNoData": "Nenhuma entrada de raciocínio armazenada em cache ainda. As entradas aparecem quando os modelos de pensamento usam chamada de ferramenta.",
    "cachePerformanceRetry": "Tentar novamente",
    "cachePerformanceHitRate": "Taxa de acerto",
    "cachePerformanceAvgLatency": "Latência média (ms)",
    "cachePerformanceP95Latency": "Latência p95 (ms)",
    "retry": "Tentar novamente",
    "reasoningAvgChars": "Média de caracteres",
    "tableShare": "Participação",
    "justNow": "agora mesmo",
    "minutesAgo": "{minutes}m atrás",
    "hoursAgo": "{hours}h atrás",
    "daysAgo": "{days}d atrás",
    "entries": "Entries"
  },
  "cliTools": {
    "title": "Ferramentas CLI",
    "noActiveProviders": "Nenhum provedor ativo",
    "noActiveProvidersDesc": "Adicione e conecte provedores primeiro para configurar as ferramentas CLI.",
    "mapModels": "Mapear Modelos",
    "testConnection": "Testar Conexão",
    "connectionStatus": "Status da Conexão",
    "configureEndpoint": "Configurar Endpoint",
    "instructions": "Instruções",
    "modelMapping": "Mapeamento de Modelos",
    "baseUrl": "URL Base",
    "apiKey": "Chave de API",
    "configured": "Configurado",
    "notConfigured": "Não configurado",
    "notInstalled": "Não instalado",
    "custom": "Customizado",
    "unknown": "Desconhecido",
    "lastSavedAt": "Último salvamento: {date}",
    "never": "Nunca",
    "justNow": "agora mesmo",
    "minutesAgoShort": "{count} min atrás",
    "hoursAgoShort": "{count} h atrás",
    "daysAgoShort": "{count} d atrás",
    "monthsAgoShort": "{count} mês(es) atrás",
    "yearsAgoShort": "{count} ano(s) atrás",
    "runtimeCheckFailed": "Falha ao verificar runtime",
    "yourApiKeyPlaceholder": "sua-api-key",
    "modelPlaceholder": "provedor/modelo-id",
    "configurationSaved": "Configuração salva com sucesso.",
    "failedToSave": "Falha ao salvar configuração.",
    "noApiKeysCreateOne": "Sem chaves de API - crie uma na página Chaves",
    "defaultOmnirouteKey": "sk_omniroute (padrão)",
    "selectModel": "Selecionar Modelo",
    "selectModelForAlias": "Selecionar modelo para {alias}",
    "selectModelForTool": "Selecionar Modelo para {tool}",
    "select": "Selecionar",
    "clear": "Limpar",
    "comingSoon": "Em breve",
    "checkingRuntime": "Verificando status de runtime...",
    "guideOnlyIntegration": "Integração apenas por guia (não requer runtime local)",
    "cliRuntimeDetected": "Runtime de CLI detectado e pronto",
    "cliFoundNotRunnable": "CLI encontrado, mas não executável{reason}",
    "cliRuntimeNotDetected": "Runtime de CLI não detectado",
    "binary": "Binário",
    "configPath": "Caminho de config",
    "configPathShort": "Config",
    "failedCheckRuntimeStatus": "Falha ao verificar status de runtime.",
    "copy": "Copiar",
    "copied": "Copiado",
    "copyConfig": "Copiar Config",
    "saveConfig": "Salvar Config",
    "selectionSaved": "Seleção salva",
    "guide": "Guia",
    "detected": "Detectado",
    "notReady": "Não pronto",
    "active": "Ativo",
    "inactive": "Inativo",
    "startMitm": "Iniciar MITM",
    "stopMitm": "Parar MITM",
    "mitmStarted": "MITM iniciado com sucesso!",
    "mitmStopped": "MITM parado com sucesso!",
    "failedStart": "Falha ao iniciar MITM",
    "failedStop": "Falha ao parar MITM",
    "saveMappings": "Salvar Mapeamentos",
    "mappingsSaved": "Mapeamentos salvos!",
    "failedSaveMappings": "Falha ao salvar mapeamentos",
    "howItWorks": "Como funciona:",
    "antigravityHowWorksDesc": "O Antigravity envia requisições para o endpoint do Google. O MITM intercepta e redireciona para o OmniRoute.",
    "antigravityStep1": "1. Inicie o MITM para rotear as requisições pelo OmniRoute.",
    "antigravityStep2Prefix": "2. Adicione",
    "antigravityStep2Suffix": "ao arquivo hosts como 127.0.0.1.",
    "antigravityStep3": "3. Abra o Antigravity e as requisições serão proxyadas.",
    "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.",
    "mitmStep1": "1. Start MITM to route requests through OmniRoute.",
    "mitmStep2Prefix": "2. Add",
    "mitmStep2Suffix": "to your hosts file as 127.0.0.1.",
    "mitmStep3": "3. Open {toolName} and requests will be proxied.",
    "sudoPasswordRequiredTitle": "Senha sudo necessária",
    "sudoPasswordHint": "A senha de administrador é necessária para modificar hosts e configurações de proxy do sistema.",
    "enterSudoPassword": "Digite a senha sudo",
    "sudoPasswordRequiredError": "A senha sudo é obrigatória.",
    "cancel": "Cancelar",
    "confirm": "Confirmar",
    "settingsApplied": "Configurações aplicadas com sucesso!",
    "failedApplySettings": "Falha ao aplicar configurações",
    "settingsReset": "Configurações resetadas com sucesso!",
    "failedResetSettings": "Falha ao resetar configurações",
    "backupRestored": "Backup restaurado!",
    "failedRestore": "Falha ao restaurar",
    "checkingCli": "Verificando CLI {tool}...",
    "cliNotRunnable": "CLI {tool} instalado, mas não executável",
    "cliNotInstalled": "CLI {tool} não instalado",
    "cliNotDetected": "CLI {tool} não detectado",
    "cliDetectedReady": "CLI {tool} detectado e pronto",
    "cliFoundFailedHealthcheck": "CLI {tool} foi encontrado, mas falhou no healthcheck de runtime{reason}.",
    "installCliPrompt": "Instale o CLI {tool} para usar este recurso.",
    "installCodexPrompt": "Instale o Codex CLI para usar a aplicação automática.",
    "hide": "Ocultar",
    "howToInstall": "Como instalar",
    "installationGuide": "Guia de instalação",
    "platforms": "macOS / Linux / Windows:",
    "afterInstallationRun": "Após a instalação, execute",
    "toVerify": "para verificar.",
    "current": "Atual",
    "baseUrlPlaceholder": "https://.../v1",
    "resetToDefault": "Redefinir para padrão",
    "providerModelPlaceholder": "provedor/modelo-id",
    "apply": "Aplicar",
    "reset": "Resetar",
    "manualConfig": "Configuração manual",
    "backups": "Backups",
    "configBackups": "Backups de configuração",
    "noBackupsYet": "Ainda não há backups. Backups são criados automaticamente antes de cada Aplicar ou Resetar.",
    "restore": "Restaurar",
    "backupRestoredReloading": "Backup restaurado! Recarregando status...",
    "failedRestoreBackup": "Falha ao restaurar backup",
    "applied": "Aplicado!",
    "failed": "Falhou",
    "resetDone": "Resetado!",
    "omnirouteConfiguredOpenAiCompatible": "OmniRoute está configurado como provedor compatível com OpenAI",
    "provider": "Provedor",
    "model": "Modelo",
    "providers": "Provedores",
    "auth": "Autenticação",
    "noApiKeysAvailable": "Nenhuma chave de API disponível",
    "usingDefaultOmniroute": "Usando padrão: sk_omniroute",
    "updateConfig": "Atualizar config",
    "applyConfig": "Aplicar config",
    "noBackupsAvailable": "Nenhum backup disponível.",
    "profileSaved": "Perfil \"{name}\" salvo!",
    "failedSaveProfile": "Falha ao salvar perfil",
    "profileActivated": "Perfil ativado!",
    "failedActivateProfile": "Falha ao ativar perfil",
    "profiles": "Perfis",
    "savedProfiles": "Perfis salvos",
    "noProfilesYet": "Nenhum perfil salvo ainda. Salve a configuração atual como perfil abaixo.",
    "activate": "Ativar",
    "deleteProfile": "Excluir perfil",
    "profileNamePlaceholder": "Nome do perfil (ex: Conta Pessoal)",
    "saveCurrent": "Salvar atual",
    "codexAuthNotePrefix": "Codex usa",
    "codexAuthNoteMiddle": "com",
    "codexAuthNoteSuffix": "Clique em \"Aplicar\" para configurar automaticamente.",
    "claudeManualConfiguration": "Claude CLI - Configuração manual",
    "codexManualConfiguration": "Codex CLI - Configuração manual",
    "droidManualConfiguration": "Factory Droid - Configuração manual",
    "openClawManualConfiguration": "Open Claw - Configuração manual",
    "clineManualConfiguration": "Configuração manual do Cline",
    "kiloManualConfiguration": "Configuração manual do Kilo Code",
    "whenToUseLabel": "Quando usar",
    "openToolDocs": "Abrir documentos de ferramentas",
    "toolUseCases": {
      "claude": "Use quando desejar fluxos de trabalho de planejamento robustos e refatorações longas de vários arquivos com Claude Code.",
      "codex": "Use quando sua equipe estiver padronizada em fluxos OpenAI Codex CLI e autenticação baseada em perfil.",
      "droid": "Use quando precisar de um agente de terminal leve focado em codificação rápida e loops de execução de comandos.",
      "openclaw": "Use quando desejar um agente de codificação no estilo Open Claw, mas roteado por meio de políticas OmniRoute.",
      "cline": "Use quando você configura agentes de codificação dentro de editores e deseja configuração guiada com modelos OmniRoute.",
      "kilo": "Use quando seu fluxo de trabalho depender de comandos Kilo Code e edições iterativas rápidas.",
      "cursor": "Use ao codificar no Cursor e você precisar de modelos personalizados compatíveis com OpenAI por meio do OmniRoute.",
      "continue": "Use ao executar Continue em IDEs e você precisar de uma configuração de provedor portátil baseada em JSON.",
      "opencode": "Use quando preferir execuções de agentes nativos de terminal e automação com script via OpenCode.",
      "kiro": "Use ao integrar o Kiro e controlar o roteamento do modelo centralmente no OmniRoute.",
      "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.",
      "antigravity": "Use quando o tráfego Antigravity/Kiro deve ser interceptado através do MITM e roteado para OmniRoute.",
      "copilot": "Use quando desejar UX no estilo de bate-papo do Copilot enquanto impõe chaves OmniRoute e regras de roteamento.",
      "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.",
      "qwen": "Use quando precisar do Alibaba Qwen Code CLI para tarefas de programação.",
      "hermes": "Use quando precisar de um assistente leve de IA nativo do terminal para tarefas rápidas.",
      "hermes-agent": "Use quando precisar do Hermes Agent (pela Nousresearch) com modelos padrão, delegação, visão e auxiliares roteados pelo OmniRoute.",
      "custom": "Use quando seu CLI ou SDK não estiver hardcoded no OmniRoute, mas ainda aceitar base URL, chave de API e model string compatíveis com OpenAI."
    },
    "toolDescriptions": {
      "antigravity": "Google Antigravity IDE com MITM",
      "claude": "CLI Claude Code da Anthropic",
      "codex": "CLI Codex da OpenAI",
      "droid": "Assistente de IA Factory Droid",
      "openclaw": "Assistente de IA Open Claw",
      "cline": "CLI assistente de codificação Cline",
      "kilo": "CLI assistente de IA Kilo Code",
      "cursor": "Editor de código com IA Cursor",
      "continue": "Assistente de IA Continue",
      "opencode": "OpenCode AI coding agent (Terminal)",
      "kiro": "Amazon Kiro — IDE com IA",
      "windsurf": "Windsurf — Editor de Código com IA",
      "copilot": "GitHub Copilot — Assistente de IA",
      "qwen": "Alibaba Qwen Code CLI",
      "amp": "CLI do assistente de codificação Sourcegraph Amp",
      "hermes": "Assistente de Terminal Hermes AI",
      "hermes-agent": "Hermes Agent (by Nousresearch) - IA de terminal avançada com suporte multi-modelo (delegação, visão, compressão, etc.)",
      "custom": "Gerador genérico de configuração para CLI ou SDK OpenAI-compatible"
    },
    "guides": {
      "cursor": {
        "notes": {
          "0": "Requer conta Cursor Pro para usar este recurso.",
          "1": "O Cursor roteia requisições pelo próprio servidor, então endpoint local não é suportado. Ative o Cloud Endpoint em Configurações."
        },
        "steps": {
          "1": {
            "title": "Abrir Configurações",
            "desc": "Vá em Configurações -> Modelos"
          },
          "2": {
            "title": "Ativar OpenAI API",
            "desc": "Ative a opção \"OpenAI API key\""
          },
          "3": {
            "title": "URL Base"
          },
          "4": {
            "title": "Chave de API"
          },
          "5": {
            "title": "Adicionar Modelo Customizado",
            "desc": "Clique em \"View All Model\" -> \"Add Custom Model\""
          },
          "6": {
            "title": "Selecionar Modelo"
          }
        }
      },
      "continue": {
        "steps": {
          "1": {
            "title": "Abrir Config",
            "desc": "Abra o arquivo de configuração do Continue"
          },
          "2": {
            "title": "Chave de API"
          },
          "3": {
            "title": "Selecionar Modelo"
          },
          "4": {
            "title": "Adicionar Config de Modelo",
            "desc": "Adicione a configuração abaixo ao array de modelos:"
          }
        },
        "notes": {
          "0": "Continuar usa o arquivo de configuração JSON."
        }
      },
      "opencode": {
        "steps": {
          "1": {
            "title": "Install OpenCode",
            "desc": "Install via npm: npm install -g opencode-ai"
          },
          "2": {
            "title": "API Key"
          },
          "3": {
            "title": "Set Base URL",
            "desc": "opencode config set baseUrl {baseUrl}"
          },
          "4": {
            "title": "Select Model"
          },
          "5": {
            "title": "Use Thinking Variant",
            "desc": "For thinking models, run with --variant high/low/max (example command below)."
          }
        },
        "notes": {
          "0": "OpenCode requer configuração de chave API.",
          "1": "Configure a URL base para seu endpoint do OmniRoute."
        }
      },
      "kiro": {
        "steps": {
          "1": {
            "title": "Open Kiro Settings",
            "desc": "Go to Settings → AI Provider"
          },
          "2": {
            "title": "Base URL",
            "desc": "Paste your OmniRoute endpoint URL"
          },
          "3": {
            "title": "API Key"
          },
          "4": {
            "title": "Select Model"
          }
        },
        "notes": {
          "0": "Kiro requer uma conta Amazon."
        }
      },
      "windsurf": {
        "steps": {
          "1": {
            "title": "Open AI Settings",
            "desc": "Click the AI Settings icon in Windsurf or go to Settings"
          },
          "2": {
            "title": "Add Custom Provider",
            "desc": "Select \"Add custom provider\" (OpenAI-compatible)"
          },
          "3": {
            "title": "Base URL",
            "desc": "http://127.0.0.1:20128/v1"
          },
          "4": {
            "title": "API Key",
            "desc": "Select your OmniRoute API key"
          },
          "5": {
            "title": "Select Model",
            "desc": "Choose a model from the dropdown"
          }
        }
      }
    },
    "autoConfiguredTab": "Auto-configurados",
    "toolCategoriesDesc": "Agrupe CLIs pelo modo como o OmniRoute os configura ou intercepta para deixar esta página mais fácil de escanear.",
    "allToolsTab": "Todas as ferramentas",
    "guidedClientsTab": "Clientes guiados",
    "mitmClientsTab": "Clientes MITM",
    "customCliTab": "Custom CLI",
    "toolCategories": "Categorias de Ferramentas",
    "visibleToolsCount": "{count} ferramentas visíveis",
    "customCliBuilderTitle": "Construtor CLI compatível com OpenAI",
    "customCliBuilderDescription": "Gere env vars e snippets JSON para qualquer CLI ou SDK que aceite um URL base, chave de API e ID de modelo compatível com OpenAI.",
    "customCliNoModels": "Conecte pelo menos um provedor para preencher os seletores de modelo.",
    "customCliNameLabel": "Nome da CLI",
    "customCliNamePlaceholder": "por exemplo Minha equipe CLI",
    "customCliDefaultModelLabel": "Modelo padrão",
    "customCliDefaultModelHelp": "Use qualquer ID de modelo ou combinação do OmniRoute. A maioria das CLIs compatíveis com OpenAI só precisa da URL base /v1 mais uma string de modelo.",
    "customCliKeyHelper": "Para instalações locais, o OmniRoute pode usar sk_omniroute. No modo nuvem, escolha uma das suas chaves de API de gerenciamento.",
    "customCliAliasMappingsLabel": "Mapeamentos de alias",
    "customCliAliasMappingsHelp": "Aliases auxiliares opcionais para scripts wrapper ou arquivos de configuração que desejam nomes abreviados estáveis.",
    "customCliAddAlias": "Adicionar alias",
    "customCliNoMappings": "Ainda não há mapeamentos de alias. Adicione um se seu wrapper ou scripts de equipe usarem nomes abreviados estáveis.",
    "customCliAliasPlaceholder": "por exemplo revisão",
    "customCliTargetModelLabel": "Modelo de destino",
    "customCliEndpointHintLabel": "Como conectar o endpoint",
    "customCliEndpointHint": "Aponte qualquer cliente compatível com OpenAI para a URL base OmniRoute /v1. O endpoint bruto de conclusões do chat é {endpoint}. Use o bloco JSON quando a ferramenta desejar um objeto provedor ou o script env quando ler variáveis ​​OPENAI_*.",
    "customCliEnvBlockTitle": "Fragmento de ambiente/shell",
    "customCliJsonBlockTitle": "Bloco JSON do provedor",
    "copilotConfigGenerator": "Gerador de configuração do GitHub Copilot",
    "copilotApiKey": "Chave de API",
    "copilotFilterModelsPlaceholder": "Filtrar modelos...",
    "copilotMaxInputTokens": "Máximo de tokens de entrada",
    "copilotMaxOutputTokens": "Máximo de tokens de saída",
    "copilotToolCalling": "Chamada de ferramenta",
    "copilotPasteInto": "Cole em: ",
    "wireApiChatCompletions": "Conclusões de bate-papo (/chat/completions)",
    "wireApiResponses": "API de respostas (/respostas)"
  },
  "cloudAgents": {
    "title": "Agentes de nuvem",
    "description": "Gerenciar agentes de codificação autônomos (Jules, Devin, Codex Cloud)",
    "loading": "Carregando tarefas...",
    "aboutTitle": "Sobre agentes de nuvem",
    "aboutDescription": "Os agentes de nuvem são assistentes remotos de codificação de IA que podem executar tarefas de forma autônoma. Eles funcionam de maneira diferente dos agentes CLI locais – você interage com eles por meio da API do OmniRoute.",
    "howItWorksTitle": "Como funciona:",
    "howItWorksDesc": "Crie uma tarefa → Agente analisa e propõe um plano → Você aprova → Agente executa → Resultados retornados",
    "newTaskTitle": "Criar nova tarefa",
    "newTaskDescription": "Inicie uma nova tarefa com um agente de nuvem",
    "selectAgent": "Selecione Agente",
    "taskDescription": "Descrição da tarefa",
    "taskDescriptionPlaceholder": "Descreva o que você deseja que o agente faça...",
    "startTask": "Iniciar tarefa",
    "tasks": "Tarefas",
    "taskDetail": "Detalhe da tarefa",
    "noTasks": "Nenhuma tarefa ainda. Crie um para começar.",
    "noTasksTitle": "Nenhuma tarefa ainda",
    "noTasksDesc": "Crie sua primeira tarefa para começar.",
    "tasksTab": "Tarefas",
    "agentsTab": "Agentes",
    "settingsTab": "Configurações",
    "agentsEnabled": "Ativado",
    "agentsDisabled": "Desativado",
    "filterAllProviders": "Todos os Provedores",
    "filterAll": "Todos",
    "autoRefreshing": "Atualização automática",
    "viewPR": "Ver Pull Request",
    "connected": "Conectado",
    "notConnected": "Não conectado",
    "configure": "Configurar",
    "settingsTitle": "Configurações de Agentes de Nuvem",
    "settingsDesc": "Configure as preferências locais para agentes de nuvem.",
    "settingEnableAgents": "Ativar agentes de nuvem",
    "settingEnableAgentsDesc": "Permitir que o OmniRoute orquestre agentes de codificação autônomos.",
    "settingAutoPR": "Criar PR automaticamente",
    "settingAutoPRDesc": "Quando uma tarefa for concluída, cria automaticamente um Pull Request com as alterações.",
    "settingRequireApproval": "Exigir aprovação de plano",
    "settingRequireApprovalDesc": "Sempre aguardar aprovação manual antes que um agente execute um plano proposto.",
    "untitledTask": "Tarefa sem título",
    "created": "Criado",
    "conversation": "Conversa",
    "result": "Resultado",
    "error": "Erro",
    "planReady": "Plano pronto para aprovação",
    "approvePlan": "Aprovar plano",
    "rejectPlan": "Rejeitar e cancelar",
    "sendMessagePlaceholder": "Envie uma mensagem para o agente...",
    "cancel": "Cancelar",
    "delete": "Excluir",
    "selectTaskPrompt": "Selecione uma tarefa para ver detalhes",
    "statusPending": "Pendente",
    "statusRunning": "Correndo",
    "statusWaitingApproval": "Aguardando aprovação",
    "statusCompleted": "Concluído",
    "statusFailed": "Falha",
    "statusCancelled": "Cancelado",
    "repositoryName": "Nome do repositório",
    "repositoryUrl": "URL do repositório",
    "branch": "Filial"
  },
  "combos": {
    "title": "Combos",
    "description": "Crie combos de modelos com roteamento ponderado e suporte a fallback",
    "autoCatalogTitle": "Catálogo de roteamento automático",
    "autoCatalogTemplateCount": "{count} modelos",
    "autoCatalogDescription": "Combos automáticos/* integrados resolvidos dinamicamente a partir de provedores conectados. Use qualquer um desses IDs como campo de modelo — nenhuma configuração é necessária.",
    "autoCatalogExpand": "Expanda o catálogo de roteamento automático",
    "autoCatalogCollapse": "Recolher catálogo de roteamento automático",
    "createCombo": "Criar Combo",
    "editCombo": "Editar Combo",
    "deleteCombo": "Excluir Combo",
    "noModels": "Sem modelos",
    "noModelsYet": "Nenhum modelo adicionado",
    "addModel": "Adicionar Modelo",
    "addModelToCombo": "Adicionar Modelo ao Combo",
    "routingStrategy": "Estratégia de Roteamento",
    "maxRetries": "Máximo de Tentativas",
    "timeout": "Timeout (ms)",
    "healthcheck": "Verificação de Saúde",
    "priority": "Prioridade",
    "fallback": "Fallback",
    "roundRobin": "Round Robin",
    "random": "Aleatório",
    "leastLatency": "Menor Latência",
    "comboName": "Nome do Combo",
    "comboNamePlaceholder": "meu-combo",
    "deleteConfirm": "Excluir este combo?",
    "noCombosYet": "Nenhum combo ainda",
    "comboCreated": "Combo criado com sucesso",
    "comboUpdated": "Combo atualizado com sucesso",
    "comboDeleted": "Combo excluído",
    "failedCreate": "Falha ao criar combo",
    "failedUpdate": "Falha ao atualizar combo",
    "errorCreating": "Erro ao criar combo",
    "errorUpdating": "Erro ao atualizar combo",
    "errorDeleting": "Erro ao excluir combo",
    "testFailed": "Requisição de teste falhou",
    "failedToggle": "Falha ao alternar combo",
    "testResults": "Resultados do Teste — {name}",
    "resolvedBy": "Resolvido por:",
    "more": "+{count} mais",
    "reqs": "reqs",
    "success": "sucesso",
    "proxyConfigured": "Proxy configurado",
    "copyComboName": "Copiar nome do combo",
    "enableCombo": "Ativar combo",
    "disableCombo": "Desativar combo",
    "testCombo": "Testar combo",
    "duplicate": "Duplicar",
    "proxyConfig": "Configuração de proxy",
    "nameRequired": "Nome é obrigatório",
    "nameInvalid": "Apenas letras, números, -, _, / e . permitidos",
    "nameHint": "Letras, números, -, _, / e . permitidos",
    "priorityDesc": "Fallback sequencial: tenta modelo 1 primeiro, depois 2, etc.",
    "weightedDesc": "Distribui tráfego por porcentagem de peso com fallback",
    "roundRobinDesc": "Distribuição circular: cada requisição vai para o próximo modelo na rotação",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Preserva a continuidade da sessão com resumos de handoff quando as contas giram",
    "randomDesc": "Seleção aleatória uniforme, depois fallback para modelos restantes",
    "leastUsedDesc": "Escolhe o modelo com menos requisições, equilibrando carga ao longo do tempo",
    "costOptimizedDesc": "Roteia para o modelo mais barato primeiro baseado em preços",
    "resetAware": "RR com reconhecimento de redefinição",
    "resetAwareDesc": "Equilibra a cota restante com redefinições de 5h e semanais e, em seguida, faz um round-robin de pontuações semelhantes",
    "strictRandom": "Aleatório Estrito",
    "strictRandomDesc": "Baralho embaralhado — usa cada modelo uma vez antes de reembaralhar",
    "models": "Modelos",
    "autoBalance": "Auto-balancear",
    "advancedSettings": "Configurações Avançadas",
    "retryDelay": "Intervalo de Tentativa (ms)",
    "concurrencyPerModel": "Concorrência / Modelo",
    "queueTimeout": "Timeout da Fila (ms)",
    "contextRelayHandoffThreshold": "Limite de Handoff",
    "contextRelayHandoffThresholdHelp": "Quando o uso de quota atinge este limite, o OmniRoute gera um resumo estruturado antes de a conta ativa esgotar.",
    "contextRelayMaxMessages": "Máx. de Mensagens no Resumo",
    "contextRelayMaxMessagesHelp": "Limita quanto histórico recente será condensado no resumo de relay.",
    "contextRelaySummaryModel": "Modelo do Resumo",
    "contextRelaySummaryModelHelp": "Modelo opcional usado apenas para gerar o resumo de handoff. Deixe vazio para reutilizar o modelo ativo do combo.",
    "contextRelayProviderNote": "O Context Relay atualmente gera handoffs para rotação de contas Codex. Combine com múltiplas contas do mesmo provedor para melhor continuidade.",
    "advancedHint": "Deixe vazio para usar padrões globais. Estes substituem configurações por provedor.",
    "failoverBeforeRetry": "Failover antes de tentar novamente",
    "maxSetRetries": "Máximo de tentativas definidas",
    "setRetryDelayMs": "Definir atraso de nova tentativa (ms)",
    "moveUp": "Mover para cima",
    "moveDown": "Mover para baixo",
    "removeModel": "Remover",
    "saving": "Salvando...",
    "weighted": "Ponderado",
    "leastUsed": "Menos Usado",
    "costOpt": "Custo-Otim",
    "strategyGuideTitle": "Como usar esta estratégia",
    "strategyGuideWhen": "Quando usar",
    "strategyGuideAvoid": "Evite quando",
    "strategyGuideExample": "Exemplo",
    "strategyGuide": {
      "priority": {
        "when": "Você tem um modelo principal e quer fallback apenas em falha.",
        "avoid": "Você precisa distribuir requisições entre modelos.",
        "example": "Modelo principal para código e backup mais barato para indisponibilidade."
      },
      "weighted": {
        "when": "Você precisa dividir tráfego com percentuais controlados.",
        "avoid": "Você não consegue manter os pesos atualizados.",
        "example": "80% modelo estável + 20% modelo canário."
      },
      "round-robin": {
        "when": "Você quer distribuição previsível e equilibrada.",
        "avoid": "Os modelos têm custo ou latência muito diferentes.",
        "example": "Mesmo modelo em múltiplas contas para espalhar throughput."
      },
      "random": {
        "when": "Você quer distribuição simples com baixa configuração.",
        "avoid": "Você precisa de garantias rígidas de distribuição.",
        "example": "Protótipos rápidos com modelos equivalentes."
      },
      "least-used": {
        "when": "Você quer balanceamento adaptativo baseado no uso recente.",
        "avoid": "Seu volume é baixo e não se beneficia dessa adaptação.",
        "example": "Workloads mistos onde um modelo tende a ficar sobrecarregado."
      },
      "cost-optimized": {
        "when": "Redução de custo é a prioridade principal.",
        "avoid": "A base de preços está ausente ou desatualizada.",
        "example": "Jobs em lote ou segundo plano focados em menor custo."
      },
      "reset-aware": {
        "when": "Você roteia várias contas com telemetria de cota e diferentes janelas de redefinição.",
        "avoid": "A telemetria de cota não está disponível para a maioria das contas.",
        "example": "Prefira uma redefinição semanal de 60% da conta amanhã a uma redefinição de 80% da conta mais tarde."
      },
      "strict-random": {
        "when": "Você quer distribuição perfeitamente uniforme — cada modelo é usado uma vez antes de repetir.",
        "avoid": "Os modelos têm qualidade ou latência muito diferentes e a ordem importa.",
        "example": "Múltiplas contas do mesmo modelo para distribuir uso de forma equilibrada."
      },
      "p2c": {
        "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.",
        "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.",
        "example": "Example: High-throughput inference across 4+ equivalent model endpoints."
      },
      "context-relay": {
        "when": "Use when long sessions must survive account rotation without losing the working context.",
        "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.",
        "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion."
      },
      "fill-first": {
        "when": "Use quando quiser esgotar totalmente a cota de um provedor antes de passar para o próximo.",
        "avoid": "Evite quando precisar de balanceamento de carga em nível de solicitação entre provedores.",
        "example": "Exemplo: Use todos os créditos Deepgram de $ 200 antes de voltar para Groq."
      },
      "auto": {
        "when": "Use quando precisar de roteamento de pontuação multifatorial com base em custo, latência e qualidade.",
        "avoid": "Evite quando precisar de ordem de prioridade estrita ou persistência histórica.",
        "example": "Exemplo: equilibre solicitações entre modelos com diferentes intensidades."
      },
      "lkgp": {
        "when": "Use quando desejar rotear com base em taxas de sucesso e desempenho históricos.",
        "avoid": "Evite quando os dados históricos são limitados ou não confiáveis.",
        "example": "Exemplo: Direcione para modelos com bom histórico em tarefas específicas."
      },
      "context-optimized": {
        "when": "Use quando precisar otimizar o uso da janela de contexto entre modelos.",
        "avoid": "Evite quando os modelos têm comprimentos de contexto semelhantes ou as tarefas são simples.",
        "example": "Exemplo: Distribua longas conversas entre modelos com janelas de contexto maiores."
      }
    },
    "advancedHelp": {
      "maxRetries": "Quantas tentativas serão feitas antes de falhar a requisição.",
      "retryDelay": "Espera inicial entre tentativas. Valores maiores reduzem picos.",
      "timeout": "Tempo máximo da requisição antes de cancelar.",
      "healthcheck": "Ignora modelos/provedores não saudáveis no roteamento.",
      "concurrencyPerModel": "Máximo de requisições simultâneas por modelo no round-robin.",
      "queueTimeout": "Tempo máximo em fila antes de expirar no round-robin.",
      "failoverBeforeRetry": "Quando ativado, qualquer erro upstream aciona o failover imediato para o próximo destino combinado, ignorando todas as novas tentativas e URLs substitutos.",
      "maxSetRetries": "Número de vezes para tentar novamente o destino completo definido quando todos os alvos falharem. 0 = nenhuma nova tentativa de nível definido.",
      "setRetryDelayMs": "Atraso entre novas tentativas de nível definido, dando tempo para que problemas transitórios sejam resolvidos."
    },
    "templatesTitle": "Templates rápidos",
    "templatesDescription": "Aplique um perfil inicial e depois ajuste modelos e configuração.",
    "templateApply": "Aplicar template",
    "templateHighAvailability": "Alta disponibilidade",
    "templateHighAvailabilityDesc": "Roteamento por prioridade com healthcheck e retries seguros.",
    "templateCostSaver": "Economia de custo",
    "templateCostSaverDesc": "Roteamento custo-otimizado para workloads com foco em orçamento.",
    "templateBalanced": "Carga balanceada",
    "templateBalancedDesc": "Roteamento por menos uso para distribuir demanda ao longo do tempo.",
    "usageGuideHide": "Ocultar",
    "usageGuideDontShowAgain": "Não mostrar novamente",
    "usageGuideShow": "Mostrar guia",
    "quickTestTitle": "Combo pronto para validar",
    "quickTestDescription": "Rode um teste agora para confirmar fallback e latência.",
    "testNow": "Testar agora",
    "pricingCoverage": "Cobertura de preços",
    "pricingCoverageHint": "Custo-otimizado funciona melhor quando todos os modelos têm preço configurado.",
    "pricingAvailable": "Preço disponível",
    "pricingMissing": "Sem preço",
    "pricingAvailableShort": "com-preço",
    "pricingMissingShort": "sem-preço",
    "warningRoundRobinSingleModel": "Round-robin é mais útil com pelo menos 2 modelos.",
    "warningCostOptimizedPartialPricing": "Apenas {priced} de {total} modelos têm preço. O roteamento pode ficar parcialmente orientado a custo.",
    "warningCostOptimizedNoPricing": "Não há dados de preço para este combo. Custo-otimizado pode rotear de forma inesperada.",
    "filterAll": "All",
    "filterIntelligent": "Intelligent",
    "filterDeterministic": "Deterministic",
    "filterEmptyTitle": "No combos match this strategy filter.",
    "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.",
    "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.",
    "readinessTitle": "Pronto para salvar?",
    "readinessDescription": "Revise a lista de verificação antes de criar ou atualizar este combo.",
    "readinessCheckName": "O nome do combo é válido",
    "readinessCheckModels": "Pelo menos um modelo está selecionado",
    "readinessCheckWeights": "O total dos pesos é 100%",
    "readinessCheckWeightsOptional": "Regra de pesos não obrigatória",
    "readinessCheckPricing": "Dados de preços disponíveis",
    "readinessCheckPricingOptional": "Regra de preços não obrigatória",
    "saveBlockedTitle": "O salvamento está bloqueado até corrigir os itens abaixo:",
    "saveBlockName": "Defina um nome para o combo.",
    "saveBlockModels": "Adicione pelo menos um modelo.",
    "saveBlockWeighted": "Ajuste os pesos para 100% (atual: {total}%).",
    "saveBlockPricing": "Adicione preço para pelo menos um modelo ou escolha outra estratégia.",
    "recommendationsLabel": "Recommended setup",
    "applyRecommendations": "Apply recommendations",
    "recommendationsUpdated": "Recommendations updated for {strategy}.",
    "recommendationsApplied": "Recommendations applied to this combo.",
    "intelligentPanelTitle": "Intelligent Routing Dashboard",
    "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.",
    "configOnlyStatus": "Visualização de Configuração",
    "configOnlyHint": "Este painel mostra apenas as entradas de roteamento. O estado em tempo real do disjuntor está disponível na página de Saúde.",
    "routingInputs": "Entradas de Roteamento",
    "routingInputsHint": "Pacote de modo e ponderação ficam aqui; o estado em tempo real do disjuntor fica na página de Saúde.",
    "emailVisibilityHint": "Os emails da conta aqui seguem a opção de privacidade global.",
    "emailVisibilityTooltip": "Use o ícone de olho para revelar ou ocultar os emails da conta globalmente nas telas de combos, provedores e cotas.",
    "manualModel": "Modelo manual",
    "manualModelInvalid": "Insira um modelo como provedor/modelo.",
    "manualModelUnknownProvider": "Prefixo de provedor desconhecido.",
    "builderDynamicAccountShort": "Conta dinâmica",
    "builderNeedValidName": "Defina um nome de combo válido antes de continuar.",
    "statusOverview": "Status Overview",
    "normalOperation": "Normal Operation",
    "allProvidersHealthy": "Providers are reporting healthy routing conditions.",
    "incidentMode": "Incident Mode",
    "highCircuitBreakerRate": "High circuit breaker trip rate detected.",
    "activeModePack": "Active Mode Pack",
    "modePackUpdated": "Mode pack updated to {pack}.",
    "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.",
    "providerScores": "Provider Scores",
    "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.",
    "excludedProviders": "Excluded Providers",
    "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.",
    "noExcludedProviders": "No providers are currently excluded.",
    "cooldownMinutes": "Cooldown: {minutes}m",
    "builderIntelligentTitle": "Intelligent Routing Configuration",
    "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.",
    "candidatePoolLabel": "Candidate Pool",
    "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.",
    "candidatePoolEmpty": "No active providers available yet.",
    "candidatePoolAllProviders": "All providers",
    "modePackLabel": "Mode Pack",
    "routerStrategyLabel": "Router Strategy",
    "strategyRules": "Rules (6-Factor Scoring)",
    "explorationRateLabel": "Exploration Rate",
    "explorationRateHint": "{percent}% of requests can explore non-optimal providers.",
    "budgetCapLabel": "Budget Cap (USD / request)",
    "budgetCapPlaceholder": "No limit",
    "advancedWeightsTitle": "Advanced: Scoring Weights",
    "weightQuota": "Quota",
    "weightHealth": "Health",
    "weightCostInv": "Cost",
    "weightLatencyInv": "Latency",
    "weightTaskFit": "Task Fit",
    "weightStability": "Stability",
    "weightTierPriority": "Tier",
    "reviewIntelligentTitle": "Intelligent Routing Config",
    "strategyRecommendations": {
      "priority": {
        "title": "Fail-safe básico",
        "description": "Use um modelo principal e mantenha a cadeia de fallback curta e confiável.",
        "tip1": "Coloque o modelo mais confiável em primeiro.",
        "tip2": "Mantenha 1-2 modelos de backup com qualidade similar.",
        "tip3": "Use retries seguros para absorver falhas transitórias do provedor."
      },
      "weighted": {
        "title": "Divisão controlada de tráfego",
        "description": "Ótimo para rollouts canário e migração gradual entre modelos.",
        "tip1": "Comece com divisão conservadora tipo 90/10.",
        "tip2": "Mantenha o total em 100% e rebalanceie após mudanças.",
        "tip3": "Monitore sucesso e latência antes de aumentar o peso canário."
      },
      "round-robin": {
        "title": "Distribuição previsível de carga",
        "description": "Melhor quando os modelos são equivalentes e você precisa de distribuição uniforme.",
        "tip1": "Use pelo menos 2 modelos.",
        "tip2": "Configure limites de concorrência para evitar sobrecarga.",
        "tip3": "Use timeout de fila para falhar rápido sob saturação."
      },
      "random": {
        "title": "Distribuição rápida com baixa configuração",
        "description": "Use quando precisar de distribuição simples sem garantias rígidas.",
        "tip1": "Use modelos com perfis de latência semelhantes.",
        "tip2": "Mantenha retries habilitados para absorver falhas aleatórias.",
        "tip3": "Prefira para experimentação, não para SLAs rígidos."
      },
      "least-used": {
        "title": "Balanceamento adaptativo",
        "description": "Roteia para modelos menos usados para reduzir hotspots ao longo do tempo.",
        "tip1": "Funciona melhor sob tráfego contínuo.",
        "tip2": "Combine com health checks para balanceamento mais seguro.",
        "tip3": "Acompanhe uso por modelo para validar ganhos na distribuição."
      },
      "cost-optimized": {
        "title": "Roteamento por orçamento",
        "description": "Roteia para modelos mais baratos quando metadados de preço estão disponíveis.",
        "tip1": "Garanta cobertura de preços para todos os modelos selecionados.",
        "tip2": "Mantenha um fallback de qualidade para prompts difíceis.",
        "tip3": "Use para jobs em lote/background onde custo é o KPI principal."
      },
      "reset-aware": {
        "title": "Rotação de conta com reconhecimento de redefinição",
        "description": "Equilibra a cota restante do provedor em relação ao tempo de redefinição.",
        "tip1": "Use etapas de conta explícitas ou roteamento de tags de conta para provedores com telemetria de cota.",
        "tip2": "Ajuste a sessão versus pesos semanais quando a exaustão de curto prazo for mais arriscada.",
        "tip3": "Mantenha a faixa de amarração pequena para que contas equivalentes ainda girem de forma justa."
      },
      "strict-random": {
        "title": "Distribuição estritamente uniforme",
        "description": "Cada modelo é usado exatamente uma vez antes de reembaralhar o baralho.",
        "tip1": "Ideal para múltiplas contas do mesmo modelo.",
        "tip2": "Garante que nenhuma conta é repetida antes de todas serem usadas.",
        "tip3": "Combine com health checks para pular contas indisponíveis sem quebrar o ciclo."
      },
      "fill-first": {
        "description": "Esgotar as cotas do provedor sequencialmente antes de voltar atrás.",
        "tip1": "Use para roteamento baseado em cotas com cadeias de fallback claras.",
        "tip2": "Defina cotas com precisão para evitar retrocessos prematuros.",
        "tip3": "Funciona melhor com provedores que oferecem níveis gratuitos ou pacotes de crédito.",
        "title": "Esgotamento de cotas"
      },
      "auto": {
        "description": "Rota baseada na pontuação em tempo real de custo, latência, qualidade e integridade.",
        "tip1": "Deixe o motor equilibrar vários fatores automaticamente.",
        "tip2": "Monitore quais fatores orientam as decisões de roteamento nos logs.",
        "tip3": "Use para cargas de trabalho complexas onde nenhum fator único domina.",
        "title": "Otimização multifatorial"
      },
      "lkgp": {
        "description": "Rota baseada em desempenho histórico e padrões de sucesso.",
        "tip1": "Requer histórico de solicitações suficiente para previsões precisas.",
        "tip2": "Bom para cargas de trabalho com padrões de desempenho de modelo consistentes.",
        "tip3": "Monitore a precisão da previsão e ajuste os pesos conforme necessário.",
        "title": "Roteamento baseado em histórico"
      },
      "context-optimized": {
        "description": "Otimize o roteamento com base no uso da janela de contexto e na eficiência do token.",
        "tip1": "Encaminhe conversas longas para modelos com janelas de contexto maiores.",
        "tip2": "Monitore a utilização do contexto para evitar desperdício de tokens.",
        "tip3": "Melhor para IA conversacional que exige ampla retenção de contexto.",
        "title": "Otimização de Contexto"
      },
      "context-relay": {
        "description": "Melhor quando a rotação de conta é esperada e a próxima conta deve herdar um resumo de tarefa simplificado.",
        "tip1": "Use com provedores que alternam contas para a mesma família de modelos.",
        "tip2": "Defina o limite de transferência abaixo dos limites rígidos de cota para o tempo de geração do resumo.",
        "tip3": "Defina um modelo de resumo dedicado apenas se o primário for muito caro ou instável.",
        "title": "Prioridade de continuidade da sessão"
      },
      "p2c": {
        "description": "Direcione para o provedor com a carga atual mais baixa com base em métricas em tempo real.",
        "tip1": "Monitore as métricas de integridade do provedor para uma avaliação precisa da carga.",
        "tip2": "Funciona melhor com pools de provedores homogêneos.",
        "tip3": "Ajuste a sensibilidade para evitar oscilações durante picos de tráfego.",
        "title": "Poder de Duas Escolhas"
      }
    },
    "templateFreeStack": "Free Stack ($0)",
    "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models), Gemini CLI. Zero cost, never stops coding.",
    "auto": "Auto Combo",
    "autoDesc": "Pool de roteamento inteligente (Otimizado)",
    "lkgp": "Modo LKGP",
    "lkgpDesc": "Último Provedor Bom Conhecido (Resiliência previsível)",
    "wizardGuideTitle": "Getting Started with Combos",
    "wizardGuideDesc": "Create model combos to route AI traffic intelligently",
    "wizardGuideHint": "or click + Create Combo above",
    "createFirstCombo": "Create Your First Combo",
    "wizardStep1Title": "Name Your Combo",
    "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules",
    "wizardStep2Title": "Add Models",
    "wizardStep2Desc": "Select AI models and arrange their fallback priority order",
    "wizardStep3Title": "Choose Strategy",
    "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available",
    "wizardStep4Title": "Review & Save",
    "wizardStep4Desc": "Review your configuration and activate the combo",
    "emailVisibilityStateOn": "On",
    "emailVisibilityStateOff": "Off",
    "reorderHandle": "Drag to reorder",
    "failedReorder": "Failed to reorder models",
    "builderFlowTitle": "Combo Builder Flow",
    "builderStage": {
      "basics": {
        "label": "Basics",
        "description": "Name and starting template"
      },
      "steps": {
        "label": "Steps",
        "description": "Provider, model, and account selection"
      },
      "strategy": {
        "label": "Strategy",
        "description": "Routing behavior and advanced settings"
      },
      "intelligent": {
        "label": "Smart Routing",
        "description": "Auto-routing candidate pool, presets, and scoring"
      },
      "review": {
        "label": "Review",
        "description": "Final validation before saving"
      }
    },
    "builderStageVisited": "Stage completed",
    "builderStageCurrent": "Current stage",
    "builderStagePending": "Pending",
    "builderStageLocked": "Locked — complete previous stage first",
    "builderTitle": "Build a Combo",
    "builderBrowseCatalog": "Browse catalog",
    "builderProvider": "Provider",
    "builderLoadingProviders": "Loading providers...",
    "builderSelectProvider": "Select provider",
    "builderModel": "Model",
    "builderSelectModel": "Select model",
    "builderProviderFirst": "Pick provider first",
    "builderAccount": "Account",
    "builderPreview": "Preview",
    "builderAddStep": "Add step",
    "builderDuplicateExact": "Esta etapa exata de provedor/modelo/conta já está no combo.",
    "builderComboRef": "Combo Ref",
    "builderAddComboRef": "Add combo reference",
    "builderComboRefStep": "Add combo reference",
    "builderPinnedAccount": "Pinned Account",
    "builderLegacyEntry": "Legacy entry",
    "reviewName": "Name",
    "reviewStrategy": "Strategy",
    "reviewSteps": "Steps",
    "reviewAccounts": "Accounts",
    "reviewProviders": "Providers",
    "reviewComboRefs": "Combo References",
    "reviewAdvanced": "Advanced Settings",
    "reviewAgentFlags": "Agent Flags",
    "reviewSequence": "Model Sequence",
    "reviewNoSteps": "No steps configured",
    "builderStagesDescription": "Conclua cada etapa para definir combos, construir etapas, selecionar estratégia de roteamento e revisar resultados.",
    "builderStepsDescription": "Crie cada etapa do combo em ordem: provedor, modelo e conta. Isso permite reutilizar o mesmo provedor e modelo em contas diferentes.",
    "selectProvider": "Selecione o provedor",
    "selectProviderPlaceholder": "Selecione um provedor",
    "selectModel": "Selecione o modelo",
    "selectModelPlaceholder": "Selecione um provedor primeiro",
    "selectAccount": "Selecione a conta",
    "selectComboToReference": "Selecione o combo para referência",
    "comboReference": "Referência de combinação",
    "addComboReference": "Adicionar referência de combinação",
    "addStepBeforeContinue": "Adicione pelo menos uma etapa antes de prosseguir para a próxima etapa.",
    "previewNextStep": "Pré-visualizar o próximo passo",
    "autoSelectAccount": "Selecionar conta automaticamente em tempo de execução",
    "modePackBalanced": "Equilibrado",
    "modePackBudget": "Orçamento",
    "modePackPerformance": "Desempenho",
    "modePackCustom": "Personalizado",
    "browseLegacyCatalog": "Navegue pelo catálogo combinado legado",
    "agentFeaturesTitle": "Recursos do agente",
    "agentFeaturesDescription": "Habilite recursos avançados para agentes usando esta combinação",
    "agentFeaturesSystemMessageOverride": "Substituir mensagem do sistema",
    "agentFeaturesSystemMessagePlaceholder": "Você é um assistente especialista...",
    "agentFeaturesSystemMessageHint": "Substituição de mensagens do sistema para agentes",
    "agentFeaturesToolFilterRegex": "/padrão-regex/",
    "agentFeaturesToolFilterHint": "Regex de filtro de ferramenta para agentes",
    "agentFeaturesContextCacheHint": "Habilitar cache no contexto para ferramentas de agente",
    "agentFeaturesContextCacheProtection": "Proteja o cache contra mutações da ferramenta do agente",
    "agentFeaturesContextLength": "Comprimento do contexto",
    "agentFeaturesContextLengthPlaceholder": "por exemplo 128.000",
    "agentFeaturesContextLengthHint": "Define a janela de contexto para este combo em /v1/models.",
    "agentFeaturesContextLengthErrorInteger": "O comprimento do contexto precisa ser um número inteiro válido",
    "agentFeaturesContextLengthErrorRange": "O comprimento do contexto precisa estar entre 1.000 e 2.000.000",
    "compressionOverride": "Substituição de compactação",
    "modePack": "Pacote de modos"
  },
  "common": {
    "save": "Salvar",
    "cancel": "Cancelar",
    "delete": "Excluir",
    "loading": "Carregando...",
    "error": "Ocorreu um erro",
    "success": "Sucesso",
    "confirm": "Tem certeza?",
    "refresh": "Atualizar",
    "close": "Fechar",
    "add": "Adicionar",
    "edit": "Editar",
    "search": "Pesquisar",
    "back": "Voltar",
    "next": "Próximo",
    "submit": "Enviar",
    "reset": "Resetar",
    "copy": "Copiar",
    "copied": "Copiado!",
    "enabled": "Ativado",
    "disabled": "Desativado",
    "active": "Ativo",
    "inactive": "Inativo",
    "noData": "Nenhum dado disponível",
    "nothingHere": "Nothing here yet",
    "configure": "Configurar",
    "manage": "Gerenciar",
    "name": "Nome",
    "actions": "Ações",
    "status": "Status",
    "type": "Tipo",
    "model": "Modelo",
    "models": "modelos",
    "provider": "Provedor",
    "account": "Conta",
    "time": "Tempo",
    "details": "Detalhes",
    "created": "Criado",
    "lastUsed": "Last Refreshed",
    "loadMore": "Carregar Mais",
    "noResults": "Nenhum resultado encontrado",
    "reloadPage": "Recarregar Página",
    "connected": "Conectado",
    "disconnected": "Desconectado",
    "notConfigured": "Não configurado",
    "testConnection": "Testar Conexão",
    "enable": "Ativar",
    "disable": "Desativar",
    "columns": "Colunas",
    "newest": "Mais Recente",
    "oldest": "Mais Antigo",
    "all": "Todos",
    "none": "Nenhum",
    "yes": "Sim",
    "no": "Não",
    "on": "LIGADO",
    "off": "DESLIGADO",
    "warning": "Aviso",
    "note": "Nota",
    "free": "Gratuito",
    "skipToContent": "Pular para conteúdo",
    "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.",
    "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...",
    "accept": "Aceitar",
    "accountId": "ID da conta",
    "alias": "Alias",
    "apiKeyId": "ID da chave de API",
    "apiKeyName": "Nome da chave de API",
    "apiKeySecret": "Segredo da chave API",
    "authorization": "Autorização",
    "content-type": "Tipo de conteúdo",
    "content-length": "Comprimento do conteúdo",
    "cookie": "Biscoito",
    "file": "Arquivo",
    "host": "Anfitrião",
    "id": "ID",
    "import": "Importar",
    "limit": "Limite",
    "offset": "Deslocamento",
    "open": "Abrir",
    "origin": "Origem",
    "promptTokens": "Tokens de prompt",
    "completionTokens": "Tokens de conclusão",
    "totalTokens": "Total de fichas",
    "rawModel": "Modelo Bruto",
    "scope": "Escopo",
    "skill": "Habilidade",
    "sortBy": "Classificar por",
    "sortOrder": "Ordem de classificação",
    "tab": "Guia",
    "text": "Texto",
    "textarea": "Área de texto",
    "tool": "Ferramenta",
    "toolId": "ID da ferramenta",
    "web": "Rede",
    "whereUsed": "Onde usado",
    "whitelist": "Lista de permissões",
    "blacklist": "Lista negra",
    "resolve": "Resolver",
    "force": "Força",
    "base64url": "URL Base64",
    "hex": "Feitiço",
    "range": "Alcance",
    "component": "Componente",
    "redirect_uri": "Redirecionar URI",
    "idempotency-key": "Chave de Idempotência",
    "error_description": "Descrição do erro",
    "code": "Código",
    "compatible": "Compatível",
    "chat-completions": "Conclusões de bate-papo",
    "oauth": "OAuth",
    "auth_token": "Token de autenticação",
    "crypto": "Criptografia",
    "hours": "Horas",
    "selfsigned": "Autoassinado",
    "proxy_id": "ID do proxy",
    "proxyId": "ID do proxy",
    "connectionId": "ID de conexão",
    "resolveConnectionId": "Resolver ID de conexão",
    "resolve_connection_id": "Resolver ID de conexão",
    "scope_id": "ID do escopo",
    "scopeId": "ID do escopo",
    "jwtSecret": "Segredo JWT",
    "keytar": "Keytar",
    "better-sqlite3": "melhor-sqlite3",
    "undici": "unici",
    "builder-id": "ID do construtor",
    "musicDesc": "Descrição da música",
    "musicGeneration": "Geração Musical",
    "idc": "CDI",
    "cloud-status-changed": "Status da nuvem alterado",
    "where_used": "Onde usado",
    "windowMs": "Janela (ms)",
    "social-github": "GitHub",
    "social-google": "Google",
    "TOOL_ALLOWLIST": "Lista de permissões de ferramentas",
    "TOOL_DENYLIST": "Lista de bloqueios de ferramentas",
    "Failed to save pricing": "Falha ao salvar o preço",
    "Failed to reset pricing": "Falha ao redefinir o preço",
    "apikey": "Chave de API",
    "http": "HTTP",
    "goToDashboard": "Go to Dashboard",
    "checkSystemStatus": "Check System Status",
    "selectModel": "Selecione o modelo",
    "combos": "Combos",
    "noModelsFound": "Nenhum modelo encontrado",
    "clear": "Claro",
    "done": "Feito",
    "errorOccurred": "Error Occurred",
    "comboDeleted": "Combo Deleted",
    "hide": "Hide",
    "creating": "Creating",
    "comboCreated": "Combo Created",
    "swapFormats": "Swap Formats",
    "daysAgo": "Days Ago",
    "retries": "Retries",
    "errorDuringRestore": "Error During Restore",
    "eventsAppearHint": "Events Appear Hint",
    "noLockouts": "No Lockouts",
    "webSearchDesc": "Web Search Desc",
    "audioProvidersHeading": "Audio Providers Heading",
    "cloudAgentProviders": "Provedores de agentes em nuvem",
    "minutesAgo": "Minutes Ago",
    "a": "A",
    "liveAutoRefreshing": "Live Auto Refreshing",
    "webSearch": "Web Search",
    "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder",
    "addModelToCombo": "Add Model To Combo",
    "failedToLoad": "Failed To Load",
    "categoryMedia": "Category Media",
    "enableCloud": "Enable Cloud",
    "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon",
    "retry": "Retry",
    "embeddings": "Embeddings",
    "errorCount": "Error Count",
    "backupReasonManual": "Backup Reason Manual",
    "safeSearchModerate": "Safe Search Moderate",
    "activeLimiters": "Active Limiters",
    "a2aCardTitle": "A2A Card Title",
    "cloudWorkerUnreachable": "Cloud Worker Unreachable",
    "testFailed": "Test Failed",
    "compatibleBaseUrlHint": "Compatible Base Url Hint",
    "usageTracking": "Usage Tracking",
    "disableCloudTitle": "Disable Cloud Title",
    "noConnections": "No Connections",
    "providerHealth": "Provider Health",
    "confirmDbImport": "Confirm Db Import",
    "notAvailableSymbol": "Not Available Symbol",
    "backupsAvailable": "Backups Available",
    "providerAuto": "Provider Auto",
    "newProviderNamePlaceholder": "New Provider Name Placeholder",
    "a2aQuickStartStep2": "A2A Quick Start Step2",
    "ok": "Ok",
    "available": "Available",
    "noBackupYet": "No Backup Yet",
    "more": "More",
    "noCompatibleYet": "No Compatible Yet",
    "multiProvider": "Multi Provider",
    "repairEnvHint": "Repair Env Hint",
    "disablingCloud": "Disabling Cloud",
    "testBench": "Test Bench",
    "valid": "Valid",
    "cloudBenefitShare": "Cloud Benefit Share",
    "mcpCardTitle": "Mcp Card Title",
    "disableConfirm": "Disable Confirm",
    "filters": "Filters",
    "expirationBannerExpiredDesc": "Expiration Banner Expired Desc",
    "saveComboDefaults": "Save Combo Defaults",
    "cloudConnectedVerified": "Cloud Connected Verified",
    "uptime": "Uptime",
    "compatibleProdPlaceholder": "Compatible Prod Placeholder",
    "fallbackChainsTitle": "Fallback Chains Title",
    "oauthLabel": "Oauth Label",
    "a2aCardDescription": "A2A Card Description",
    "okShort": "Ok Short",
    "maintenance": "Maintenance",
    "formatConverter": "Format Converter",
    "zedImportNetworkError": "Zed Import Network Error",
    "apiKeyLabel": "Api Key Label",
    "noModelsForProvider": "No Models For Provider",
    "mcpCardDescription": "Mcp Card Description",
    "apiTypeLabel": "Api Type Label",
    "configuredProvidersLabel": "Configured Providers Label",
    "maxRetriesLabel": "Max Retries Label",
    "title": "Title",
    "output": "Output",
    "prefixHint": "Prefix Hint",
    "skipWizard": "Skip Wizard",
    "failedCount": "Failed Count",
    "confirmDbImportDesc": "Confirm Db Import Desc",
    "entries": "Entries",
    "until": "Until",
    "disableCombo": "Disable Combo",
    "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix",
    "runningCount": "Running Count",
    "noActiveConnectionsInGroup": "No Active Connections In Group",
    "savedSuccessfully": "Saved Successfully",
    "systemStorage": "System Storage",
    "videoDesc": "Video Desc",
    "maxResults": "Max Results",
    "timeRangeMonth": "Time Range Month",
    "testSummary": "Test Summary",
    "failedSetPassword": "Failed Set Password",
    "audio": "Audio",
    "restore": "Restore",
    "disableWarning": "Disable Warning",
    "moderationsDesc": "Moderations Desc",
    "providerHealthStatusAria": "Provider Health Status Aria",
    "modelNamePlaceholder": "Model Name Placeholder",
    "mcpQuickStartStep2": "Mcp Quick Start Step2",
    "quickStart": "Quick Start",
    "fullExportFailedWithError": "Full Export Failed With Error",
    "loadingBackups": "Loading Backups",
    "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder",
    "description": "Description",
    "noProviderFound": "No Provider Found",
    "auto": "Auto",
    "protocolsDescription": "Protocols Description",
    "cloudSessionNote": "Cloud Session Note",
    "advancedSettings": "Advanced Settings",
    "defaultStrategy": "Default Strategy",
    "purgeExpiredLogs": "Purge Expired Logs",
    "justNow": "Just Now",
    "providerTestFailed": "Provider Test Failed",
    "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder",
    "image": "Image",
    "failedCreateChain": "Failed Create Chain",
    "importDatabase": "Import Database",
    "allDataLocal": "All Data Local",
    "sectionTitle": "Section Title",
    "failedToggle": "Failed Toggle",
    "editCombo": "Edit Combo",
    "testResults": "Test Results",
    "searchQuery": "Search Query",
    "addCcCompatible": "Add Cc Compatible",
    "duplicate": "Duplicate",
    "createCombo": "Create Combo",
    "searchTypeWeb": "Search Type Web",
    "addChain": "Add Chain",
    "prefixLabel": "Prefix Label",
    "listModelsDesc": "List Models Desc",
    "databaseSize": "Database Size",
    "chainCreated": "Chain Created",
    "providerTestTimeout": "Provider Test Timeout",
    "routingStrategy": "Routing Strategy",
    "translateAction": "Translate Action",
    "exportFailed": "Export Failed",
    "connectedVerificationPending": "Connected Verification Pending",
    "a2aQuickStartTitle": "A2A Quick Start Title",
    "couldNotTest": "Could Not Test",
    "testAllCompatible": "Test All Compatible",
    "anthropicCompatibleName": "Anthropic Compatible Name",
    "disabling": "Disabling",
    "failedEnable": "Failed Enable",
    "categoryUtility": "Category Utility",
    "customUrlOptional": "Custom Url Optional",
    "localProviders": "Local Providers",
    "comboNamePlaceholder": "Combo Name Placeholder",
    "memoryRss": "Memory Rss",
    "disableProvider": "Disable Provider",
    "welcomeDesc": "Welcome Desc",
    "nameLabel": "Name Label",
    "allOperational": "All Operational",
    "backupNow": "Backup Now",
    "providerMaxRetriesAria": "Provider Max Retries Aria",
    "textToSpeechDesc": "Text To Speech Desc",
    "machineId": "Machine Id",
    "globalProxy": "Global Proxy",
    "hitsMisses": "Hits Misses",
    "testDesc": "Test Desc",
    "chatDesc": "Chat Desc",
    "importSuccess": "Import Success",
    "chat": "Chat",
    "a2aQuickStartStep1": "A2A Quick Start Step1",
    "importFailed": "Import Failed",
    "inputPlaceholder": "Input Placeholder",
    "providerModelsTitle": "Provider Models Title",
    "lastBackup": "Last Backup",
    "yourEndpoint": "Your Endpoint",
    "autoDisableThresholdDesc": "Auto Disable Threshold Desc",
    "rerankDesc": "Rerank Desc",
    "modelsPathPlaceholder": "Models Path Placeholder",
    "noCombosYet": "No Combos Yet",
    "connectedVerificationPendingWithError": "Connected Verification Pending With Error",
    "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1",
    "enableCloudTitle": "Enable Cloud Title",
    "configuredProvidersHint": "Configured Providers Hint",
    "paused": "Paused",
    "llmProviders": "Llm Providers",
    "enableCombo": "Enable Combo",
    "removeProviderOverrideAria": "Remove Provider Override Aria",
    "nodeVersion": "Node Version",
    "openai": "Openai",
    "exportFailedWithError": "Export Failed With Error",
    "proxyConfigured": "Proxy Configured",
    "concurrencyPerModel": "Concurrency Per Model",
    "protocolTasksLabel": "Protocol Tasks Label",
    "oauthProviders": "Oauth Providers",
    "lockedCount": "Locked Count",
    "deleteChainConfirm": "Delete Chain Confirm",
    "recentTranslations": "Recent Translations",
    "zedImportButton": "Zed Import Button",
    "responsesDesc": "Responses Desc",
    "testedCount": "Tested Count",
    "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder",
    "signatureDefaults": "Signature Defaults",
    "errorCreating": "Error Creating",
    "timeRangeYear": "Time Range Year",
    "compatibleLabel": "Compatible Label",
    "cloudDisabledSuccess": "Cloud Disabled Success",
    "deleteConfirm": "Delete Confirm",
    "check": "Check",
    "safeSearch": "Safe Search",
    "protocolLastActivity": "Protocol Last Activity",
    "openMcpDashboard": "Open Mcp Dashboard",
    "testBenchTab": "Test Bench Tab",
    "chatPathLabel": "Chat Path Label",
    "retryDelay": "Retry Delay",
    "errorUpdating": "Error Updating",
    "ideCliIntegrations": "Ide Cli Integrations",
    "imageGeneration": "Image Generation",
    "apiKeyRequired": "Api Key Required",
    "resetAllTitle": "Reset All Title",
    "connectionError": "Connection Error",
    "modelName": "Model Name",
    "apiKeyForCheck": "Api Key For Check",
    "cloudRequestTimeout": "Cloud Request Timeout",
    "showConfiguredOnly": "Show Configured Only",
    "showFreeOnly": "Somente grátis",
    "addFirstProvider": "Adicione seu primeiro provedor",
    "addFirstProviderDesc": "Conecte um provedor de IA para começar a rotear solicitações por meio do OmniRoute. Você pode usar provedores gratuitos, chaves de API ou contas OAuth.",
    "learnMore": "Saiba mais",
    "includeDomains": "Include Domains",
    "promptCache": "Prompt Cache",
    "cloudConnected": "Cloud Connected",
    "deleteChain": "Delete Chain",
    "chatPathPlaceholder": "Chat Path Placeholder",
    "databasePath": "Database Path",
    "usingLocalServer": "Using Local Server",
    "globalComboConfig": "Global Combo Config",
    "backupFailed": "Backup Failed",
    "tabProtocols": "Tab Protocols",
    "continue": "Continue",
    "categorySearch": "Category Search",
    "rateLimitStatus": "Rate Limit Status",
    "repairEnvSuccess": "Repair Env Success",
    "nameRequired": "Name Required",
    "country": "Country",
    "trackMetricsDesc": "Track Metrics Desc",
    "durationSecondsShort": "Duration Seconds Short",
    "formatConverterDescription": "Format Converter Description",
    "cloudBenefitAccess": "Cloud Benefit Access",
    "maxRetries": "Max Retries",
    "queueTimeout": "Queue Timeout",
    "addProvider": "Add Provider",
    "realtime": "Realtime",
    "totalTranslations": "Total Translations",
    "protocolActiveStreamsLabel": "Protocol Active Streams Label",
    "repairEnv": "Repair Env",
    "modelsCount": "Models Count",
    "viewBackups": "View Backups",
    "responsesApi": "Responses Api",
    "copyComboName": "Copy Combo Name",
    "failures": "Failures",
    "failedUpdate": "Failed Update",
    "imageDesc": "Image Desc",
    "failedCreate": "Failed Create",
    "remainingOfLimit": "Remaining Of Limit",
    "protocolsTitle": "Protocols Title",
    "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc",
    "source": "Source",
    "failed": "Failed",
    "apiKeyMgmt": "Api Key Mgmt",
    "mcpQuickStartStep1": "Mcp Quick Start Step1",
    "runTest": "Run Test",
    "loadingFallbackChains": "Loading Fallback Chains",
    "healthy": "Healthy",
    "version": "Version",
    "saveBlockWeighted": "Save Block Weighted",
    "zedImportNone": "Zed Import None",
    "noBackupsYet": "No Backups Yet",
    "noGlobalProxy": "No Global Proxy",
    "noModels": "No Models",
    "stickyLimit": "Sticky Limit",
    "passedCount": "Passed Count",
    "zedImportFailed": "Zed Import Failed",
    "saving": "Saving",
    "testAll": "Test All",
    "globalProxyDesc": "Global Proxy Desc",
    "latencyP99": "Latency P99",
    "connectingToCloud": "Connecting To Cloud",
    "responses": "Responses",
    "errorDeleting": "Error Deleting",
    "openaiPrefixPlaceholder": "Openai Prefix Placeholder",
    "enterPassword": "Enter Password",
    "openA2aDashboard": "Open A2A Dashboard",
    "enableProvider": "Enable Provider",
    "modeTest": "Mode Test",
    "failedDeleteChain": "Failed Delete Chain",
    "providerDesc": "Provider Desc",
    "templateLoadHint": "Template Load Hint",
    "lastFailure": "Last Failure",
    "moveDown": "Move Down",
    "providerLabel": "Provider Label",
    "clearCacheFailed": "Clear Cache Failed",
    "imagesGenerations": "Images Generations",
    "repairEnvWorking": "Repair Env Working",
    "millisecondsShort": "Milliseconds Short",
    "globalLabel": "Global Label",
    "failuresPlural": "Failures Plural",
    "completionsLegacyDesc": "Completions Legacy Desc",
    "searchProviders": "Search Providers",
    "chatPathHint": "Chat Path Hint",
    "defaultStrategyDesc": "Default Strategy Desc",
    "latencyP95": "Latency P95",
    "textToSpeech": "Text To Speech",
    "searchType": "Search Type",
    "messages": "Messages",
    "aggregatorsGateways": "Aggregators Gateways",
    "comboStrategyAria": "Combo Strategy Aria",
    "input": "Input",
    "testingConnection": "Testing Connection",
    "excludeDomains": "Exclude Domains",
    "webCookieProviders": "Web Cookie Providers",
    "allTestsPassed": "All Tests Passed",
    "openaiCompatibleName": "Openai Compatible Name",
    "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing",
    "comboDefaultsGuideTitle": "Combo Defaults Guide Title",
    "hoursAgo": "Hours Ago",
    "notAvailable": "Not Available",
    "skipAndContinue": "Skip And Continue",
    "moderations": "Moderations",
    "proxyConfig": "Proxy Config",
    "upstreamProxyProviders": "Upstream Proxy Providers",
    "exportAll": "Export All",
    "queuedCount": "Queued Count",
    "resetAll": "Reset All",
    "noTranslations": "No Translations",
    "avgLatency": "Avg Latency",
    "throttleStatus": "Throttle Status",
    "backupRetentionDesc": "Backup Retention Desc",
    "noCBData": "No Cb Data",
    "chainDeleted": "Chain Deleted",
    "timeLeft": "Time Left",
    "expirationBannerExpired": "Expiration Banner Expired",
    "language": "Language",
    "invalidFileType": "Invalid File Type",
    "monitoredProviders": "Monitored Providers",
    "errors": "Errors",
    "heap": "Heap",
    "chatCompletions": "Chat Completions",
    "exampleTemplatesHint": "Example Templates Hint",
    "retryDelayLabel": "Retry Delay Label",
    "audioTranscription": "Audio Transcription",
    "fallbackChainsDesc": "Fallback Chains Desc",
    "exampleTemplates": "Example Templates",
    "connectionsCount": "Connections Count",
    "modelsPathLabel": "Models Path Label",
    "activeProvidersHint": "Active Providers Hint",
    "activeLockouts": "Active Lockouts",
    "invalid": "Invalid",
    "skipPassword": "Skip Password",
    "moveUp": "Move Up",
    "timeRange": "Time Range",
    "stickyLimitDesc": "Sticky Limit Desc",
    "cloudBenefitEdge": "Cloud Benefit Edge",
    "custom": "Custom",
    "verifying": "Verifying",
    "baseUrlLabel": "Base Url Label",
    "setPassword": "Set Password",
    "safeSearchStrict": "Safe Search Strict",
    "noChangesSinceBackup": "No Changes Since Backup",
    "modelsPathHint": "Models Path Hint",
    "audioTranscriptions": "Audio Transcriptions",
    "testCombo": "Test Combo",
    "mcpQuickStartTitle": "Mcp Quick Start Title",
    "comboUpdated": "Combo Updated",
    "weighted": "Weighted",
    "providers": "Providers",
    "ccCompatibleLabel": "Cc Compatible Label",
    "noFallbackChainsDesc": "No Fallback Chains Desc",
    "yesImport": "Yes Import",
    "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint",
    "tabApis": "Tab Apis",
    "sectionDescription": "Section Description",
    "filter": "Filter",
    "purgeLogsFailed": "Purge Logs Failed",
    "latency": "Latency",
    "testAllOAuth": "Test All O Auth",
    "mcpQuickStartStep3": "Mcp Quick Start Step3",
    "repairEnvFailed": "Repair Env Failed",
    "zedImportHint": "Zed Import Hint",
    "modelsAcrossEndpoints": "Models Across Endpoints",
    "autoDisableBannedAccounts": "Auto Disable Banned Accounts",
    "securityDesc": "Security Desc",
    "listModels": "List Models",
    "backupRestore": "Backup Restore",
    "target": "Target",
    "zedImportSuccess": "Zed Import Success",
    "lastHeaderUpdate": "Last Header Update",
    "categoryCore": "Category Core",
    "noFallbackChains": "No Fallback Chains",
    "noSearchProviders": "No Search Providers",
    "autoBalance": "Auto Balance",
    "noModelsYet": "No Models Yet",
    "signatureFamily": "Signature Family",
    "externalApiCalls": "External Api Calls",
    "providerOverridesDesc": "Provider Overrides Desc",
    "signatureTool": "Signature Tool",
    "connectionFailed": "Connection Failed",
    "activeLimitersPlural": "Active Limiters Plural",
    "doneDesc": "Done Desc",
    "down": "Down",
    "noDataYet": "No Data Yet",
    "activeProviders": "Active Providers",
    "nameInvalid": "Name Invalid",
    "skip": "Skip",
    "createChain": "Create Chain",
    "audioSpeech": "Audio Speech",
    "cacheCleared": "Cache Cleared",
    "searchTypeNews": "Search Type News",
    "durationMillisecondsShort": "Duration Milliseconds Short",
    "addOpenAICompatible": "Add Open Ai Compatible",
    "chatTesterTab": "Chat Tester Tab",
    "queued": "Queued",
    "domainPlaceholder": "Domain Placeholder",
    "durationMinutesShort": "Duration Minutes Short",
    "verifyingConnection": "Verifying Connection",
    "imageProviders": "Image Providers",
    "protocolToolsLabel": "Protocol Tools Label",
    "queryPlaceholder": "Query Placeholder",
    "videoGeneration": "Video Generation",
    "timeRangeWeek": "Time Range Week",
    "limitExhausted": "Limit Exhausted",
    "failedDisable": "Failed Disable",
    "inMemoryNote": "In Memory Note",
    "compatibleHint": "Compatible Hint",
    "errorShort": "Error Short",
    "advancedHint": "Advanced Hint",
    "restoreFailed": "Restore Failed",
    "searchProvidersHeading": "Search Providers Heading",
    "comboName": "Combo Name",
    "autoDisableDescription": "Auto Disable Description",
    "embeddingsDesc": "Embeddings Desc",
    "operational": "Operational",
    "testAllApiKey": "Test All Api Key",
    "backupCreated": "Backup Created",
    "errorDuringImport": "Error During Import",
    "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2",
    "connecting": "Connecting",
    "fillModelAndProviders": "Fill Model And Providers",
    "syncing": "Syncing",
    "resetConfirm": "Reset Confirm",
    "trackMetrics": "Track Metrics",
    "successful": "Successful",
    "recovering": "Recovering",
    "autoDisableThreshold": "Auto Disable Threshold",
    "anthropic": "Anthropic",
    "syncingData": "Syncing Data",
    "cloudBenefitPorts": "Cloud Benefit Ports",
    "compatibleProviders": "Compatible Providers",
    "freeTierProviders": "Provedores de nível gratuito",
    "freeTierLabel": "Nível gratuito disponível",
    "freeTierProvidersDesc": "Provedores com níveis gratuitos – alguns exigem uma inscrição de chave de API, outros não precisam de nenhuma credencial.",
    "clearCache": "Clear Cache",
    "reqs": "Reqs",
    "addAnthropicCompatible": "Add Anthropic Compatible",
    "apiKeyProviders": "Api Key Providers",
    "tabsAria": "Tabs Aria",
    "resetting": "Resetting",
    "millisecondsAbbr": "Milliseconds Abbr",
    "backupReasonPreRestore": "Backup Reason Pre Restore",
    "disableCloud": "Disable Cloud",
    "newProviderNameAria": "New Provider Name Aria",
    "passwordsMismatch": "Passwords Mismatch",
    "a2aQuickStartStep3": "A2A Quick Start Step3",
    "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix",
    "failedAddProvider": "Failed Add Provider",
    "addAtLeastOneProvider": "Add At Least One Provider",
    "reasonSeparator": "Reason Separator",
    "zedImporting": "Zed Importing",
    "confirmPasswordPlaceholder": "Confirm Password Placeholder",
    "whatYouGet": "What You Get",
    "signatureSession": "Signature Session",
    "errorCountNoCode": "Error Count No Code",
    "testing": "Testing",
    "providersCommaSeparated": "Providers Comma Separated",
    "exportDatabase": "Export Database",
    "hitRate": "Hit Rate",
    "completionsLegacy": "Completions Legacy",
    "removeModel": "Remove Model",
    "timeRangeDay": "Time Range Day",
    "cloudRequestFailed": "Cloud Request Failed",
    "updatedAt": "Updated At",
    "monitoredProvidersHint": "Monitored Providers Hint",
    "connectionSuccessful": "Connection Successful",
    "latencyP50": "Latency P50",
    "logsDeleted": "Logs Deleted",
    "chatTester": "Chat Tester",
    "safeSearchOff": "Safe Search Off",
    "nameHint": "Name Hint",
    "debugToggle": "Debug Toggle",
    "embedding": "Embedding",
    "issuesLabel": "Issues Label",
    "optionAny": "Option Any",
    "maxNestingDepth": "Max Nesting Depth",
    "rerank": "Rerank",
    "checking": "Checking",
    "getStarted": "Get Started",
    "restoreSuccess": "Restore Success",
    "issuesDetected": "Issues Detected",
    "signatureCache": "Signature Cache",
    "modelLockouts": "Model Lockouts",
    "usingCloudProxy": "Using Cloud Proxy",
    "loadingHealth": "Loading Health",
    "providerOverrides": "Provider Overrides",
    "audioTranscriptionDesc": "Audio Transcription Desc",
    "learnedFromHeaders": "Learned From Headers",
    "totalRequests": "Total Requests",
    "cloudUnstableNote": "Cloud Unstable Note",
    "gamificationAdmin": "Administrador de gamificação",
    "monitorAnomaliesAndHealth": "Monitore anomalias e a integridade do sistema",
    "flaggedAnomalies": "Anomalias sinalizadas",
    "noAnomaliesDetected": "Nenhuma anomalia detectada",
    "apiKey": "Chave de API",
    "xpLastHour": "EXP (1h)",
    "zScore": "Pontuação Z",
    "tokensCommunityServers": "Servidores da Comunidade",
    "tokensServerNamePlaceholder": "Nome do servidor",
    "tokensApiKeyPlaceholder": "Chave de API",
    "tokensTokenBalance": "Saldo de tokens",
    "tokensSendTokens": "Enviar tokens",
    "tokensRecipientApiKeyId": "ID da chave API do destinatário",
    "tokensRecipientApiKeyIdPlaceholder": "Insira o ID da chave API do destinatário",
    "tokensReasonOptional": "Razão (opcional)",
    "tokensReasonPlaceholder": "por exemplo bônus, recompensa",
    "tokensTransactionHistory": "Histórico de transações",
    "tokensNoTransactionsYet": "Nenhuma transação ainda",
    "tokensInviteCodes": "Códigos de convite",
    "tokensMaxUses": "Usos máximos",
    "tokensRedeemCode": "Resgatar código",
    "tokensRedeemCodePlaceholder": "Insira o código do convite",
    "tokensYourActiveInvites": "Seus convites ativos",
    "tierCoverageTitle": "Cobertura de nível",
    "tierCoverageSubtitle": "Provedores configurados por nível substituto",
    "batchDetailCopyId": "Copiar ID",
    "batchDetailClose": "Fechar",
    "batchDetailEndpoint": "Ponto final",
    "batchDetailModel": "Modelo",
    "batchDetailWindow": "Janela",
    "batchDetailCreated": "Criado",
    "providerTopologyEmpty": "Nenhum provedor conectado ainda",
    "badgeToastUnlocked": "Selo desbloqueado!",
    "batchListSearchPlaceholder": "Pesquise por ID, endpoint, modelo…",
    "batchListDeleteAllCompletedTitle": "Excluir todos os lotes concluídos",
    "batchListBatchesTable": "Lotes",
    "changelogViewerLoading": "Carregando changelog do GitHub...",
    "profileLoading": "Carregando perfil...",
    "profileHowToEarn": "Como ganhar",
    "bootstrapBannerDismiss": "Dispensar",
    "batchListDeleteBatchTitle": "Excluir lote e seus arquivos",
    "leaderboardYourRank": "Sua classificação",
    "leaderboardLoading": "Carregando placar...",
    "batchFileDetailCopyId": "Copiar ID",
    "batchFileDetailClose": "Fechar",
    "batchFileDetailFailedToLoad": "Falha ao carregar o conteúdo do arquivo",
    "batchFilesListSearchPlaceholder": "Pesquise por ID ou nome de arquivo…",
    "batchFilesListFilesTable": "Arquivos",
    "batchPageLoadingMore": "Carregando mais…",
    "recommended": "Recomendado",
    "understand": "Eu entendo",
    "batchConceptTitle": "Processamento em lote",
    "batchConceptSubtitle": "Processa milhares de requisições de forma assíncrona com ~50% de desconto (janela de 24h). Ideal para avaliações, classificação e embeddings.",
    "batchConceptHowItWorks": "Como funciona",
    "batchConceptBenefit50pct": "50% de desconto em tokens de entrada e saída",
    "batchConceptAsync24h": "Assíncrono com janela de 24h",
    "batchConceptUseCases": "Indicado para classificação em massa, avaliações e embeddings",
    "filesConceptTitle": "Arquivos de batch",
    "filesConceptSubtitle": "Arquivos JSONL usados pelos batches: requisições de entrada, resultados e erros.",
    "filesConceptInput": "Entrada — seu JSONL com uma requisição por linha",
    "filesConceptOutput": "Saída — resultados das requisições concluídas",
    "filesConceptError": "Erros — requisições que falharam",
    "filesConceptRetention": "Retenção: 30 dias por padrão (29 dias na Anthropic)",
    "wizardTitle": "Novo batch",
    "wizardClose": "Fechar",
    "wizardNext": "Próximo",
    "wizardBack": "Voltar",
    "wizardCancel": "Cancelar",
    "wizardCreate": "Criar batch",
    "wizardCreating": "Criando…",
    "wizardStep1Destination": "Destino",
    "wizardStep2Input": "Entrada",
    "wizardStep3Validate": "Validar",
    "wizardStep4Cost": "Custo e criar",
    "wizardProviderLabel": "Provider",
    "wizardEndpointLabel": "Endpoint",
    "wizardModelLabel": "Modelo",
    "wizardInputKindJsonl": "JSONL",
    "wizardInputKindCsv": "CSV (convertemos para você)",
    "wizardDropOrPick": "Arraste um arquivo ou clique para escolher",
    "wizardCsvMappingTitle": "Mapear colunas CSV → campos da requisição",
    "wizardCsvMappingAddField": "Adicionar campo",
    "wizardValidationOk": "Todas as linhas válidas",
    "wizardValidationErrors": "Erros de validação",
    "wizardValidationPreview": "Pré-visualização (primeiras 5 requisições)",
    "wizardValidationSamplingNote": "Arquivo grande — validado por amostragem (primeiras 1000 + últimas 100 linhas). Validação completa acontece no servidor.",
    "wizardCostSync": "Custo síncrono",
    "wizardCostBatch": "Custo em batch (-50%)",
    "wizardCostSavings": "Economia",
    "wizardCostEstimatedNotice": "Custo estimado — a cobrança real pode variar.",
    "wizardErrorUpload": "Falha ao enviar o arquivo. Tente novamente.",
    "wizardErrorCreate": "Falha ao criar o batch. Tente novamente.",
    "wizardEmptyProviders": "Conecte um provider com suporte a batch (OpenAI, Anthropic ou Gemini) para criar um batch.",
    "uploadModalTitle": "Enviar arquivo de batch",
    "uploadModalDropOrPick": "Arraste um arquivo .jsonl ou clique para escolher",
    "uploadModalUpload": "Enviar",
    "uploadModalCancel": "Cancelar",
    "uploadModalError": "Falha no envio. Tente novamente.",
    "uploadModalSuccess": "Enviado",
    "uploadModalSizeLimit": "Máx 512 MB",
    "batchListNewButton": "Novo batch",
    "batchListAutoRefresh": "Atualização auto. 30s",
    "batchListCostColumn": "Custo",
    "batchActionCancel": "Cancelar",
    "batchActionDownloadOutput": "Baixar saída",
    "batchActionDownloadErrors": "Baixar erros",
    "batchActionRetry": "Refazer falhas",
    "batchActionRetryConfirm": "Refazer {n} requisição(ões) com falha? O custo final depende dos tokens efetivamente consumidos.",
    "expirationBadgeCritical": "Crítico",
    "expirationBadgeWarning": "Em breve",
    "expirationBadgeNormal": "Pendente",
    "expirationBadgeExpired": "Expirado",
    "filesListUploadButton": "Enviar",
    "filesListUsedByColumn": "Usado por",
    "filesListUsedByNone": "Nenhum",
    "filesListUsedByRoleInput": "entrada",
    "filesListUsedByRoleOutput": "saída",
    "filesListUsedByRoleError": "erro",
    "filesListSizeColumn": "Tamanho",
    "batchListProgressPartial": "(parcial)",
    "batchListProviderColumn": "Provedor",
    "batchListProviderUnknown": "—",
    "batchListProviderOther": "Outro",
    "batchListTitle": "Batches",
    "batchListCount": "{count} batches",
    "batchListRemovingCompleted": "Removendo…",
    "batchListRemoveCompleted": "Remover concluídos",
    "batchListTableStatus": "Status",
    "batchListTableId": "ID",
    "batchListTableEndpoint": "Endpoint",
    "batchListTableModel": "Modelo",
    "batchListTableProgress": "Progresso",
    "batchListTableCreated": "Criado",
    "batchListTableExpires": "Expira",
    "batchListLoading": "Carregando…",
    "batchListEmpty": "Nenhum batch encontrado",
    "batchListValidating": "Validando…",
    "batchStatusAll": "Todos os status",
    "batchStatusInProgress": "Em andamento",
    "batchStatusValidating": "Validando",
    "batchStatusFinalizing": "Finalizando",
    "batchStatusCompleted": "Concluído",
    "batchStatusFailed": "Falhou",
    "batchStatusCancelled": "Cancelado",
    "batchStatusCancelling": "Cancelando",
    "batchStatusExpired": "Expirado",
    "batchStatusCompletedWithFailures": "concluído com falhas",
    "batchStatusInProgressWithFailures": "em andamento (com falhas)",
    "batchStatusFinalizingWithFailures": "finalizando (com falhas)",
    "batchStatusCancelledWithFailures": "cancelado com falhas",
    "batchStatusExpiredWithFailures": "expirado (parcial)",
    "wizardCostEstimating": "Estimando custo…",
    "wizardCostRequests": "Requisições",
    "wizardCostInputTok": "tok entrada",
    "wizardCostOutputTok": "tok saída",
    "wizardCostWindow": "Janela",
    "wizardDestinationSelectProvider": "Selecione um provedor…",
    "wizardDestinationSelectModel": "Selecione um modelo…",
    "wizardDestinationConnectProvider": "Conectar um provedor",
    "batchListBatchCreated": "Batch {id} criado — atualizando lista…",
    "batchListBatchCreatedDismiss": "Fechar",
    "batchListRefreshing": "Atualizando…",
    "batchListRefresh": "Atualizar",
    "uploadFileModalRemove": "Remover",
    "uploadFileModalUploading": "Enviando…",
    "wizardInputReading": "Lendo arquivo…",
    "wizardInputReady": "Pronto",
    "wizardInputLargeFileLabel": "Arquivo grande — validação por amostragem",
    "wizardInputCsvJsonlReady": "JSONL gerado — pronto para validar.",
    "wizardInputLargeFileWarning": "Arquivo grande detectado — validação roda por amostragem (primeiros 5 MB + últimos 100 KB). Validação completa acontece no servidor.",
    "wizardCostWindow24h": "Janela de conclusão de 24h",
    "wizardValidationFieldsOk": "campos obrigatórios válidos",
    "filesListDelete": "Excluir",
    "filesListDownload": "Baixar",
    "batchDetailActionCancel": "Cancelar batch",
    "batchDetailActionRetry": "Refazer falhas",
    "batchDetailCancelling": "Cancelando…",
    "batchDetailRetrying": "Preparando retry…",
    "batchDetailCancelConfirm": "Cancelar este batch? Requisições em andamento serão interrompidas.",
    "batchActionCancelError": "Falha ao cancelar o batch. Tente novamente.",
    "batchActionRetryError": "Falha ao refazer requisições com falha. Tente novamente.",
    "batchConceptRetentionNote": "Arquivos de resultado e erro ficam retidos por 30 dias (Anthropic: 29 dias)"
  },
  "compliance": {
    "auditTitle": "Auditoria",
    "auditDescription": "Revise eventos de conformidade e chamadas de ferramentas MCP a partir de uma visão operacional.",
    "complianceTab": "Conformidade",
    "mcpTab": "Auditoria MCP",
    "title": "Auditoria de Conformidade",
    "description": "Eventos de política, acesso, provedor e segurança registrados pelo log de auditoria de conformidade.",
    "eventType": "Tipo de Evento",
    "eventTypePlaceholder": "Filtrar por ação ou tipo de evento",
    "severity": "Gravidade",
    "allSeverities": "Todas as gravidades",
    "info": "Informações",
    "warning": "Aviso",
    "critical": "Crítico",
    "sourceIp": "IP de origem",
    "userOrKey": "Usuário/Chave",
    "action": "Ação",
    "result": "Resultado",
    "details": "Detalhes",
    "timestamp": "Carimbo de data e hora",
    "from": "De",
    "to": "Para",
    "refresh": "Atualizar",
    "export": "Exportar",
    "clearFilters": "Limpar filtros",
    "loading": "Carregando eventos de auditoria...",
    "showing": "Mostrando {count} de {total} eventos",
    "policyViolation": "Violação de política",
    "accessDenied": "Acesso negado",
    "injectionBlocked": "Injeção bloqueada",
    "noEvents": "Nenhum evento de conformidade registrado.",
    "failedFetch": "Falha ao buscar o log de auditoria de conformidade.",
    "viewDetails": "Ver detalhes",
    "closeDetails": "Fechar detalhes",
    "notAvailable": "—",
    "system": "sistema",
    "previous": "Anterior",
    "next": "Próximo",
    "mcpAudit": "Auditoria MCP",
    "mcpAuditDesc": "Entradas de auditoria de chamada de ferramenta registradas pelo servidor MCP.",
    "failedFetchMcpAudit": "Falha ao buscar o log de auditoria do MCP.",
    "tool": "Ferramenta",
    "toolPlaceholder": "Filtrar por nome de ferramenta",
    "duration": "Duração",
    "apiKey": "Chave de API",
    "output": "Saída",
    "allResults": "Todos os resultados",
    "success": "Sucesso",
    "failure": "Falha",
    "noMcpEvents": "Nenhum evento de auditoria do MCP registrado.",
    "a2aAudit": "Auditoria A2A",
    "a2aAuditDesc": "Trilha de auditoria de execução de tarefas registrada pelo servidor A2A.",
    "a2aShowingTasks": "Mostrando {count} de {total} tarefas",
    "a2aSkill": "Habilidade",
    "a2aSkillPlaceholder": "Filtrar por nome de habilidade",
    "a2aState": "Estado",
    "a2aAllStates": "Todos os estados",
    "a2aStateSubmitted": "Enviado",
    "a2aStateWorking": "Trabalhando",
    "a2aStateCompleted": "Concluído",
    "a2aStateFailed": "Falha",
    "a2aStateCancelled": "Cancelado",
    "a2aTaskId": "ID da tarefa",
    "a2aEvents": "Eventos",
    "a2aArtifacts": "Artefatos",
    "a2aNoTasks": "Nenhuma tarefa A2A registrada.",
    "a2aLoadingTasks": "Carregando tarefas A2A...",
    "actor": "Autor",
    "actorPlaceholder": "Filtrar por autor",
    "eventTypes": {
      "apiKey.activate": "API Key Ativada",
      "apiKey.ban": "API Key Banida",
      "apiKey.deactivate": "API Key Desativada",
      "apiKey.regenerate": "API Key Regenerada",
      "apiKey.scopes.grant": "Escopos de API Key Concedidos",
      "apiKey.scopes.revoke": "Escopos de API Key Revogados",
      "apiKey.scopes.update": "Escopos de API Key Atualizados",
      "apiKey.unban": "API Key Desbanida",
      "auth.login.error": "Erro de Login",
      "auth.login.failed": "Login Falhou",
      "auth.login.locked": "Login Bloqueado",
      "auth.login.misconfigured": "Login Mal Configurado",
      "auth.login.setup_required": "Configuração de Login Necessária",
      "auth.login.success": "Login com Sucesso",
      "auth.logout.success": "Logout com Sucesso",
      "compliance.cleanup": "Limpeza de Conformidade",
      "provider.credentials.applied": "Credenciais do Provedor Aplicadas",
      "provider.credentials.batch_revoked": "Credenciais do Provedor Revogadas em Lote",
      "provider.credentials.bulk_created": "Credenciais do Provedor Criadas em Massa",
      "provider.credentials.bulk_imported": "Credenciais do Provedor Importadas em Massa",
      "provider.credentials.created": "Credenciais do Provedor Criadas",
      "provider.credentials.imported": "Credenciais do Provedor Importadas",
      "provider.credentials.revoked": "Credenciais do Provedor Revogadas",
      "provider.credentials.updated": "Credenciais do Provedor Atualizadas",
      "provider.validation.ssrf_blocked": "SSRF do Provedor Bloqueado",
      "quota.plan.updated": "Plano de Cota Atualizado",
      "quota.pool.created": "Pool de Cota Criado",
      "quota.pool.deleted": "Pool de Cota Excluído",
      "quota.pool.updated": "Pool de Cota Atualizado",
      "quota.store.driver_changed": "Driver do Store de Cota Alterado",
      "server.start": "Servidor Iniciado",
      "service.reveal_api_key": "API Key do Serviço Revelada",
      "settings.update": "Configurações Atualizadas",
      "settings.update_failed": "Falha ao Atualizar Configurações",
      "sync.token.created": "Token de Sincronização Criado",
      "sync.token.revoked": "Token de Sincronização Revogado"
    }
  },
  "contextCaveman": {
    "title": "Motor Caveman",
    "description": "Compressao baseada em regras, language packs, analytics e output mode.",
    "advancedConfig": "Configuração avançada",
    "advancedConfigDesc": "Ajustar o comportamento da compactação",
    "aggressiveSettings": "Configurações agressivas",
    "aggressiveSettingsDesc": "Compressão máxima com potenciais compensações de qualidade",
    "requests": "Requests",
    "tokensSaved": "Tokens salvos",
    "savingsPercent": "Economia %",
    "avgLatency": "Latencia media",
    "languagePacks": "Language Packs",
    "languagePacksDesc": "Ative regras de compressao para idiomas especificos.",
    "labelAutoTrigger": "Compactar automaticamente quando o contexto exceder",
    "labelCompressionRate": "Força de compressão",
    "labelMaxTokens": "Tokens de destino por mensagem",
    "labelMinLength": "Comprimento mínimo da mensagem",
    "labelMinSavings": "Tokens mínimos para salvar",
    "enabled": "Ativo",
    "autoDetect": "Auto-detectar idioma",
    "rulesCount": "{count} regras",
    "inputCompressionTitle": "Compressão de Entrada",
    "inputCompressionDesc": "Reescreve o histórico do chat com termos mais curtos. Reduz os tokens de entrada em aproximadamente 50%.",
    "analyticsTitle": "Analytics de Compressao",
    "noAnalytics": "Sem analytics de compressao ainda.",
    "outputMode": "Modo de saída",
    "outputModeDesc": "Instrui o LLM a responder em formato curto e compacto.",
    "outputModeTitle": "Output Mode",
    "quickSettings": "Configurações rápidas",
    "quickSettingsDesc": "Configurações básicas de compactação para começar",
    "autoClarity": "Bypass Auto-Clarity",
    "bypassConditions": "Condicoes de bypass",
    "bypassConditionsList": "seguranca, irreversivel, clarificacao, sensivel a ordem",
    "simpleMode": "Simples",
    "advancedMode": "Avançado",
    "tooltipAutoTrigger": "Compactar automaticamente quando o contexto exceder esse tamanho.",
    "tooltipCompressionRate": "0,0 = nenhum, 1,0 = máximo. 0,5 = equilibrado.",
    "tooltipMaxTokens": "Contagem de tokens de destino após a compactação. Menor = mais agressivo.",
    "tooltipMinLength": "Mensagens menores que isso não são compactadas. Menor = mais compressão.",
    "tooltipMinSavings": "Compacte apenas se salvar pelo menos esse número de tokens.",
    "ultraSettings": "Configurações Ultra",
    "ultraSettingsDesc": "Compressão semântica alimentada por SLM",
    "preview": {
      "lite": "Responda conciso. Preserve termos tecnicos, codigo, erros, URLs e identificadores.",
      "full": "Responda seco e compacto. Preserve todo conteudo tecnico.",
      "ultra": "Responda ultra compacto com abreviacoes tecnicas comuns. Preserve simbolos exatos."
    }
  },
  "contextCombos": {
    "title": "Combos de Compressao",
    "description": "Defina como engines sao combinadas para diferentes cenarios de roteamento.",
    "createCombo": "Criar Combo",
    "editCombo": "Editar",
    "deleteCombo": "Excluir",
    "deleteConfirm": "Excluir este combo de compressao?",
    "pipeline": "Pipeline",
    "addStep": "Adicionar Step",
    "removeStep": "Remover",
    "name": "Nome",
    "descriptionField": "Descricao",
    "languagePacks": "Language Packs",
    "outputMode": "Output Mode",
    "assignToRouting": "Atribuir a Combos de Roteamento",
    "noAssignments": "Nenhum combo de roteamento disponivel",
    "default": "Default",
    "setAsDefault": "Definir como default",
    "save": "Salvar",
    "cancel": "Cancelar",
    "enabled": "Ativo"
  },
  "contextRtk": {
    "title": "Motor RTK",
    "description": "Compressao sensivel a comandos para tool output, logs de terminal e builds.",
    "enabled": "Ativo",
    "intensity": "Intensidade",
    "intensityMinimal": "Minima",
    "intensityStandard": "Padrao",
    "intensityAggressive": "Agressiva",
    "toolResults": "Resultados de tools",
    "assistantMessages": "Mensagens do assistente",
    "codeBlocks": "Blocos de codigo",
    "filterCatalog": "Catálogo de Filtros",
    "filterCatalogDesc": "Filtros de saída disponíveis por categoria",
    "guidedConfig": "Configuração",
    "guidedConfigDesc": "Ajuste como o RTK filtra a saída do seu terminal",
    "maxLines": "Max linhas",
    "maxChars": "Max caracteres",
    "deduplicateThreshold": "Limite de deduplicacao",
    "customFilters": "Filtros customizados",
    "detectedType": "Tipo detectado",
    "confidence": "Confiança",
    "beforeAfter": "Antes / Depois",
    "trustProjectFilters": "Confiar em filtros do projeto",
    "rawOutputRetention": "Retencao de raw output",
    "rawOutputNever": "Nunca",
    "rawOutputFailures": "Falhas",
    "rawOutputAlways": "Sempre",
    "rawOutputMaxBytes": "Max bytes de raw output",
    "filterTesting": "Teste de filtros",
    "pasteOutput": "Cole output de ferramenta para testar...",
    "presetHigh": "Agressivo",
    "presetLow": "Luz",
    "presetMaxChars": "Máximo de caracteres de saída",
    "presetMaxLines": "Máximo de linhas de saída",
    "presetMedium": "Padrão",
    "run": "Executar",
    "result": "Resultado",
    "previewEmpty": "Execute um exemplo para visualizar o RTK.",
    "detected": "Detectado",
    "masterSwitchOffAlert": "O interruptor mestre do Token Saver está DESLIGADO — estas configurações não afetarão as solicitações até que você o ligue na página de Endpoint.",
    "tokensFiltered": "Tokens filtrados",
    "filtersActive": "Filtros ativos",
    "requests": "Requests",
    "avgSavings": "Economia media",
    "simpleMode": "Simples",
    "advancedMode": "Avançado",
    "searchFilters": "Filtros de pesquisa...",
    "tooltipDedup": "Quão agressivamente remover linhas repetidas.",
    "tooltipMaxChars": "Máximo de caracteres por bloco de saída.",
    "tooltipMaxLines": "Máximo de linhas a serem mantidas na saída do comando. O excesso é truncado."
  },
  "costs": {
    "title": "Custos",
    "pageDescription": "Acompanhe gasto por provedor, monitore orçamentos e gerencie preços sincronizados.",
    "overview": "Visão Geral",
    "budget": "Orçamento",
    "totalCost": "Custo Total",
    "breakdown": "Detalhamento de Custos",
    "noData": "Sem dados de custo",
    "byModel": "Por Modelo",
    "byProvider": "Por Provedor",
    "range7d": "7D",
    "range30d": "30D",
    "range90d": "90D",
    "rangeAll": "Tudo",
    "spend30d": "Gasto 30D",
    "activeModels": "Modelos Ativos",
    "selectedWindow": "Janela Selecionada",
    "activeProviders": "Provedores Ativos",
    "overviewTitle": "Visão Geral de Custos",
    "spend7d": "Gasto 7D",
    "avgCostPerRequest": "Custo Médio / Requisição",
    "noCostDataDescription": "Passe tráfego pelo OmniRoute ou sincronize preços para preencher este dashboard.",
    "spendToday": "Gasto Hoje",
    "overviewLoadFailed": "Falha ao carregar a visão geral de custos",
    "overviewDescription": "Gasto global em todas as API keys, provedores e modelos usando analytics de uso em tempo real.",
    "providerShare": "Gasto por Provedor",
    "topProviders": "Principais Provedores",
    "costTrend": "Tendência Diária de Custo",
    "noCostDataTitle": "Ainda não há gasto registrado",
    "topModels": "Principais Modelos",
    "requestsInWindow": "Requisições",
    "tokenUsage": "Uso de token",
    "totalTokens": "Total de fichas",
    "inputTokens": "Tokens de entrada",
    "outputTokens": "Tokens de saída",
    "inputOutputRatio": "Relação de entrada/saída",
    "tokens": "fichas",
    "routingEfficiency": "Eficiência de roteamento",
    "fallbackCount": "Solicitações substitutas",
    "fallbackRate": "Taxa de reserva",
    "modelCoverage": "Cobertura do modelo",
    "modelCoverageDesc": "% de solicitações com modelo explícito",
    "outOfRequests": "de {total} solicitações",
    "costByApiKey": "Custo por chave de API",
    "costByAccount": "Custo por conta",
    "apiKeyName": "Chave de API",
    "account": "Conta",
    "requests": "Solicitações",
    "cost": "Custo",
    "dayStreak": "sequência do dia",
    "weeklyUsagePattern": "Padrão de uso semanal",
    "activityHeatmap": "Atividade (365 dias)",
    "less": "Menos",
    "more": "Mais",
    "monthlyForecast": "Previsão Mensal",
    "forecastBasis": "Com base nos últimos {days} dias",
    "avgDailyCost": "Média custo diário",
    "daysRemaining": "{days} dias restantes",
    "periodComparison": "Comparação de períodos",
    "previousPeriod": "Metade Anterior",
    "currentPeriod": "Metade Atual",
    "exportCSV": "Exportar como CSV",
    "exportJSON": "Exportar como JSON",
    "legacyFreeLabel": "Legado / Gratuito",
    "costExplorerTitle": "Explorador de custos",
    "costExplorerDescription": "Explore os gastos por provedor, modelo, chave de API, conta ou nível de serviço.",
    "groupProvider": "Provedor",
    "groupModel": "Modelo",
    "groupApiKey": "Chave de API",
    "groupAccount": "Conta",
    "groupServiceTier": "Nível de serviço",
    "serviceTierFast": "Rápido",
    "serviceTierFlex": "Flex",
    "serviceTierStandard": "Padrão",
    "serviceTierBreakdownTitle": "Nível de Serviço",
    "serviceTierBreakdownSubtitle": "Divisão Rápido / Flex / Padrão",
    "serviceTierUsageSaved": "uso economizado",
    "serviceTierCostSaved": "economizado",
    "serviceTierCostShareSuffix": "do custo",
    "dimension": "Dimensão",
    "share": "Participação",
    "legacyOrFree": "Legado / gratuito",
    "filterRows": "Filtrar linhas…",
    "filterCostExplorerRows": "Filtrar linhas do explorador de custos",
    "noMatchingCostRows": "Nenhuma linha de custo correspondente",
    "noMatchingCostRowsDescription": "Ajuste o texto de busca, o agrupamento ou a janela de tempo selecionada.",
    "showingCostRows": "Mostrando {shown} de {total} linhas correspondentes.",
    "showingTopCostRows": "Mostrando {shown} de {total} linhas correspondentes (top 50)."
  },
  "cursorAuthModal": {
    "title": "Conecte o Cursor IDE",
    "autoDetecting": "Detecção automática de tokens...",
    "readingFromCursor": "Lendo do Cursor IDE ou cursor-agent",
    "tokensAutoDetected": "Tokens detectados automaticamente com sucesso no Cursor IDE!",
    "cursorNotDetected": "Cursor IDE não detectado. Cole manualmente seu token.",
    "accessToken": "Token de acesso",
    "required": "*",
    "accessTokenPlaceholder": "O token de acesso será preenchido automaticamente...",
    "machineId": "ID da máquina",
    "optional": "(opcional)",
    "machineIdPlaceholder": "O ID da máquina será preenchido automaticamente...",
    "importing": "Importando...",
    "importToken": "Token de importação",
    "cancel": "Cancelar",
    "errorAutoDetect": "Não foi possível detectar tokens automaticamente",
    "errorAutoDetectFailed": "Falha na detecção automática de tokens",
    "errorEnterToken": "Por favor insira o token de acesso",
    "errorImportFailed": "Falha na importação"
  },
  "docs": {
    "title": "Documentação",
    "quickStart": "Início Rápido",
    "deploymentGuides": "Guias de implantação",
    "features": "Recursos",
    "supportedProviders": "Provedores Suportados",
    "supportedProvidersToc": "Provedores",
    "commonUseCases": "Casos de Uso Comuns",
    "clientCompatibility": "Compatibilidade de Clientes",
    "protocolsToc": "Protocolos",
    "apiReference": "Referência da API",
    "managementApiReference": "Management API Reference",
    "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.",
    "method": "Método",
    "path": "Caminho",
    "notes": "Notas",
    "modelPrefixes": "Prefixos de Modelo",
    "prefix": "Prefixo",
    "troubleshooting": "Solução de Problemas",
    "supportsChat": "Suporta endpoints de chat e responses.",
    "oauthAutoRefresh": "Conexão OAuth com atualização automática de token.",
    "fullStreaming": "Suporte completo a streaming para todos os modelos.",
    "docsLabel": "Docs",
    "docsHeroDescription": "Gateway de IA para LLMs multi-provedor. Um endpoint para OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor e mais de 20 provedores.",
    "openDashboard": "Abrir Painel",
    "endpointPage": "Página de Endpoint",
    "github": "GitHub",
    "reportIssue": "Reportar Problema",
    "onThisPage": "Nesta página",
    "documentationVersion": "Documentação - v{version}",
    "quickStartStep1Title": "1. Instale e execute",
    "quickStartStep1Prefix": "Execute",
    "quickStartStep1Middle": "ou clone do GitHub e execute",
    "quickStartStep2Title": "2. Crie uma chave de API",
    "quickStartStep2Text": "Vá em Endpoint -> Chaves Registradas. Gere uma chave por ambiente.",
    "quickStartStep3Title": "3. Conecte provedores",
    "quickStartStep3Text": "Adicione contas de provedores via login OAuth, chave de API ou conexão automática de plano gratuito.",
    "quickStartStep4Title": "4. Defina a URL base do cliente",
    "quickStartStep4Prefix": "Aponte sua IDE ou cliente de API para",
    "quickStartStep4Suffix": "Use prefixo de provedor, por exemplo",
    "deploySetupTitle": "Guia de configuração",
    "deploySetupText": "Instalação passo a passo, configuração do ambiente e instruções de primeira execução do OmniRoute.",
    "deployElectronTitle": "Área de Trabalho Eletrônica",
    "deployElectronText": "Execute o OmniRoute como um aplicativo de desktop nativo no Windows, macOS e Linux.",
    "deployDockerTitle": "Docker",
    "deployDockerText": "Implantação conteinerizada com Docker Compose; pronto para pilhas de produção e Kubernetes.",
    "deployVmTitle": "Máquina Virtual",
    "deployVmText": "Auto-hospedagem em qualquer VM Linux. Inclui unidade systemd, rotação de log e ferramentas de backup.",
    "deployFlyTitle": "Voar.io",
    "deployFlyText": "Implante no tempo de execução do Fly.io edge com um fly.toml e um único comando de implantação.",
    "deployPwaTitle": "PWA",
    "deployPwaText": "Instale o OmniRoute como um aplicativo da Web progressivo em navegadores Android, iOS e desktop.",
    "deployTermuxTitle": "Termux (Android)",
    "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.",
    "featureRoutingTitle": "Roteamento Multi-Provedor",
    "featureRoutingText": "Roteie requisições para mais de 30 provedores de IA por um único endpoint compatível com OpenAI. Suporta APIs de chat, responses, áudio e imagem.",
    "featureCombosTitle": "Combos e Balanceamento",
    "featureCombosText": "Crie combos de modelos com cadeias de fallback e estratégias de balanceamento: round-robin, prioridade, aleatório, menos usado e otimizado por custo.",
    "featureUsageTitle": "Rastreamento de Uso e Custo",
    "featureUsageText": "Contagem de tokens em tempo real, cálculo de custo por provedor/modelo e detalhamento de uso por chave de API e conta.",
    "featureAnalyticsTitle": "Painel de Analytics",
    "featureAnalyticsText": "Análises visuais com gráficos de requisições, tokens, erros, latência, custos e popularidade de modelos ao longo do tempo.",
    "featureHealthTitle": "Monitoramento de Saúde",
    "featureHealthText": "Health checks em tempo real, status de provedores, estados de circuit breaker e detecção automática de rate limit com backoff exponencial.",
    "featureCliTitle": "Ferramentas CLI",
    "featureCliText": "Gerencie configurações de IDE, exporte/importe backups, descubra perfis de codex e configure opções pelo painel.",
    "featureSecurityTitle": "Segurança e Políticas",
    "featureSecurityText": "Autenticação por chave de API, filtragem de IP, proteção contra prompt injection, políticas de domínio, gerenciamento de sessões e auditoria.",
    "featureCloudSyncTitle": "Sincronização em Nuvem",
    "featureCloudSyncText": "Sincronize sua configuração com Cloudflare Workers para acesso remoto com credenciais criptografadas e failover automático.",
    "providersAcrossConnectionTypes": "{count} provedores em três tipos de conexão.",
    "manageProviders": "Gerenciar Provedores",
    "providersCount": "{count} provedores",
    "providerTypeFree": "Plano Gratuito",
    "providerTypeOAuth": "OAuth",
    "providerTypeApiKey": "Chave de API",
    "useCaseSingleEndpointTitle": "Um endpoint para muitos provedores",
    "useCaseSingleEndpointText": "Aponte clientes para uma única URL base e roteie por prefixo de modelo (por exemplo: gh/, cc/, kr/, openai/).",
    "useCaseFallbackTitle": "Fallback e troca de modelo com combos",
    "useCaseFallbackText": "Crie modelos combo no painel e mantenha a configuração do cliente estável enquanto os provedores giram internamente.",
    "useCaseUsageVisibilityTitle": "Visibilidade de uso, custo e debug",
    "useCaseUsageVisibilityText": "Acompanhe tokens e custo por provedor, conta e chave de API nas abas de Uso e Analytics.",
    "clientCherryStudioTitle": "Cherry Studio",
    "baseUrlLabel": "URL Base",
    "chatEndpointLabel": "Endpoint de chat",
    "modelRecommendationLabel": "Recomendação de modelo: prefixo explícito",
    "clientCodexTitle": "Modelos Codex / GitHub Copilot",
    "clientCodexBullet1": "Use IDs de modelo com prefixo",
    "clientCodexBullet2": "Modelos da família Codex são roteados automaticamente para",
    "clientCodexBullet3": "Modelos não-Codex continuam em",
    "clientCursorTitle": "Cursor IDE",
    "clientCursorBullet1": "Use o prefixo",
    "clientCursorBullet1Suffix": "para modelos do Cursor.",
    "clientCursorBullet2": "Conexão OAuth - faça login na página de Provedores.",
    "clientClaudeTitle": "Claude Code / Antigravity",
    "clientClaudeBullet1Prefix": "Use",
    "clientClaudeBullet1Middle": "(Claude) ou",
    "clientClaudeBullet1Suffix": "(Antigravity) como prefixo.",
    "clientWindsurfTitle": "Windsurf",
    "clientWindsurfBullet1": "Use o OmniRoute como base URL compatível com OpenAI e mantenha prefixos explícitos de provedor para roteamento determinístico.",
    "clientWindsurfBullet2": "Aponte modelos para `/v1/chat/completions` no tráfego geral e preserve `/v1/responses` para fluxos tipo Codex.",
    "clientWindsurfBullet3": "Use Painel -> CLI Tools quando quiser um guia pronto de configuração focado em Windsurf.",
    "clientClineTitle": "Cline",
    "clientClineBullet1": "O Cline funciona melhor com prefixos explícitos de provedor/modelo para o roteador nunca precisar adivinhar o backend.",
    "clientClineBullet2": "Use `/v1/chat/completions` para modelos gerais e reutilize a mesma base URL do OmniRoute entre contas diferentes.",
    "clientClineBullet3": "Use o dashboard de Providers para validar OAuth/API key antes de depurar problemas do runtime do Cline.",
    "clientKimiTitle": "Kimi Coding",
    "clientKimiBullet1": "Use o OmniRoute como base URL estável enquanto gira contas ou combos de provedores por baixo.",
    "clientKimiBullet2": "Prefira modelos com prefixo em fluxos de coding para fallback e trilha de auditoria ficarem explícitos.",
    "clientKimiBullet3": "Use `/v1/responses` quando quiser roteamento nativo estilo Responses para clientes com tools.",
    "protocolsTitle": "Protocolos: MCP e A2A",
    "protocolsDescription": "O OmniRoute expõe dois protocolos operacionais além das APIs compatíveis com OpenAI: MCP para execução de ferramentas e A2A para fluxos agente-para-agente.",
    "protocolMcpTitle": "MCP (Model Context Protocol)",
    "protocolMcpDesc": "Use MCP via stdio para permitir descoberta e execução de ferramentas OmniRoute com visibilidade de auditoria.",
    "protocolMcpStep1": "Inicie o transporte MCP com `omniroute --mcp`.",
    "protocolMcpStep2": "Aponte seu cliente MCP para transporte stdio.",
    "protocolMcpStep3": "Chame `omniroute_get_health` e `omniroute_list_combos` para validar conectividade.",
    "protocolA2aTitle": "A2A (Agent2Agent)",
    "protocolA2aDesc": "Use A2A JSON-RPC para submeter tarefas de forma síncrona ou via SSE streaming.",
    "protocolA2aStep1": "Leia `/.well-known/agent.json` para descoberta do agente.",
    "protocolA2aStep2": "Envie `message/send` ou `message/stream` para `POST /a2a`.",
    "protocolA2aStep3": "Gerencie ciclo de vida das tarefas com `tasks/get` e `tasks/cancel`.",
    "protocolTroubleshootingTitle": "Troubleshooting de protocolos",
    "protocolTroubleshooting1": "Se o status MCP estiver offline, verifique se o processo stdio está rodando e atualizando o heartbeat.",
    "protocolTroubleshooting2": "Se tarefas A2A ficarem em `working`, inspecione `/api/a2a/tasks/:id` e os eventos de stream até estado terminal.",
    "protocolTroubleshooting3": "Use `/dashboard/mcp` e `/dashboard/a2a` para controles operacionais e visibilidade de auditoria.",
    "endpointChatNote": "Endpoint de chat compatível com OpenAI (padrão).",
    "endpointResponsesNote": "Endpoint da API Responses (Codex, o-series).",
    "endpointModelsNote": "Catálogo de modelos para todos os provedores conectados.",
    "endpointAudioNote": "Transcrição de áudio (Deepgram, AssemblyAI).",
    "endpointSpeechNote": "Geração de texto para fala (ElevenLabs, OpenAI TTS).",
    "endpointEmbeddingsNote": "Geração de incorporação de texto (OpenAI, Cohere, Voyage).",
    "endpointImagesNote": "Geração de imagens (NanoBanana).",
    "endpointRewriteChatNote": "Auxiliar de reescrita para clientes sem /v1.",
    "endpointRewriteResponsesNote": "Auxiliar de reescrita para Responses sem /v1.",
    "endpointRewriteModelsNote": "Auxiliar de reescrita para descoberta de modelos sem /v1.",
    "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).",
    "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.",
    "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.",
    "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.",
    "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.",
    "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.",
    "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.",
    "modelPrefixesDescriptionStart": "Use o prefixo do provedor antes do nome do modelo para rotear para um provedor específico. Exemplo:",
    "modelPrefixesDescriptionEnd": "roteia para o GitHub Copilot.",
    "provider": "Provedor",
    "type": "Tipo",
    "troubleshootingModelRouting": "Se o cliente falhar no roteamento de modelo, use provedor/modelo explícito (por exemplo: gh/gpt-5.1-codex).",
    "troubleshootingAmbiguousModels": "Se você receber erros de modelo ambíguo, escolha um prefixo de provedor em vez de um ID de modelo sem prefixo.",
    "troubleshootingCodexFamily": "Para modelos da família GitHub Codex, mantenha o modelo como gh/codex-model; o roteador seleciona /responses automaticamente.",
    "troubleshootingTestConnection": "Use Painel > Provedores > Testar Conexão antes de testar por IDEs ou clientes externos.",
    "troubleshootingCircuitBreaker": "Se um provedor mostrar circuit breaker aberto, aguarde o cooldown ou verifique a página Health para detalhes.",
    "troubleshootingOAuth": "Para provedores OAuth, autentique novamente se os tokens expirarem. Verifique o indicador de status no card do provedor.",
    "endpointCompletionsNote": "Endpoint legado de completions para clientes que ainda enviam payloads de text-completions.",
    "endpointModerationsNote": "Moderação e scoring de segurança de conteúdo em provedores compatíveis.",
    "endpointRerankNote": "Reranking de documentos para retrieval e pós-processamento de busca.",
    "endpointSearchNote": "Busca web unificada com fallback de provedor, analytics e rastreamento de custo.",
    "endpointSearchAnalyticsNote": "Telemetria de busca e analytics de provedores do pipeline unificado de search.",
    "endpointVideoNote": "Geração de vídeo para backends compatíveis com ComfyUI e SD WebUI.",
    "endpointMusicNote": "Geração de música via integrações de workflow do ComfyUI.",
    "endpointMessagesNote": "Endpoint de compatibilidade estilo Anthropic Messages para clientes que falam payload nativo de mensagens.",
    "endpointCountTokensNote": "Helper de contagem de tokens para planejar requisições antes da execução.",
    "endpointFilesNote": "Upload de arquivos e armazenamento de artefatos para batches e workflows maiores.",
    "endpointBatchesNote": "Criação e consulta de jobs em lote para execução enfileirada.",
    "endpointWsNote": "Caminho compatível com upgrade WebSocket para clientes de protocolo em tempo real.",
    "mgmtProvidersListNote": "Lista conexões de provedores configuradas e o status atual de cada uma.",
    "mgmtProvidersCreateNote": "Cria uma nova conexão gerenciada de provedor a partir do plano de controle do dashboard.",
    "mgmtProvidersUpdateNote": "Atualiza credenciais, metadados e flags operacionais de um provedor.",
    "mgmtProvidersDeleteNote": "Remove uma conexão de provedor do runtime e do roteamento.",
    "mgmtProvidersTestNote": "Executa um teste real de conexão contra a conta de provedor selecionada.",
    "mgmtProvidersModelsNote": "Descobre, faz cache ou inspeciona modelos expostos por uma conexão específica.",
    "mgmtSettingsGetNote": "Lê as configurações principais de runtime usadas pelo dashboard e pelo roteador.",
    "mgmtSettingsUpdateNote": "Atualiza configurações compartilhadas de runtime sem editar arquivos de ambiente manualmente.",
    "mgmtPayloadRulesGetNote": "Lê a configuração de normalização de payload e payload rules específicas por provedor.",
    "mgmtPayloadRulesUpdateNote": "Atualiza as regras de rewrite de payload antes do dispatch para o provedor.",
    "mcpToolsTitle": "Catálogo de Ferramentas MCP",
    "mcpToolsDescription": "O OmniRoute entrega {count} ferramentas MCP agrupadas entre roteamento, operações, cache, memória e skills.",
    "mcpToolsCount": "{count} ferramentas documentadas",
    "mcpToolsToc": "Ferramentas MCP",
    "mcpToolsRoutingTitle": "Roteamento e Catálogo",
    "mcpToolsRoutingDesc": "Leia o health do runtime, inspecione combos, confira cotas, descubra modelos e chame web search a partir de clientes MCP.",
    "mcpToolsOperationsTitle": "Operações e Controle",
    "mcpToolsOperationsDesc": "Simule roteamento, troque estratégias, teste combos, sincronize pricing, inspecione sessão e diagnostique problemas de runtime.",
    "mcpToolsCacheTitle": "Controles de Cache",
    "mcpToolsCacheDesc": "Inspecione hit rates e limpe o estado do cache sem sair do cliente MCP.",
    "mcpToolsCompressionTitle": "Motores de compressão",
    "mcpToolsCompressionDesc": "Configure a compactação RTK/Brotli, troque mecanismos e inspecione a análise de compactação por combinação.",
    "mcpToolsOneProxyTitle": "1Proxy / Túneis",
    "mcpToolsOneProxyDesc": "Gerencie proxies de saída, alterne IPs residenciais e inspecione a integridade do proxy.",
    "mcpToolsMemoryTitle": "Memória",
    "mcpToolsMemoryDesc": "Busque, adicione e limpe entradas persistidas de memória do OmniRoute na mesma superfície de protocolo.",
    "mcpToolsSkillsTitle": "Skills",
    "mcpToolsSkillsDesc": "Liste skills habilitadas, ative, execute e inspecione histórico de execuções a partir do MCP.",
    "featureAutoComboTitle": "Roteamento AutoCombo",
    "featureAutoComboText": "Use roteamento por intenção, fallback emergencial, seleção por contexto e perfis de resiliência sem mudar o payload do cliente.",
    "featureSearchTitle": "APIs de Busca, Rerank e Multimodal",
    "featureSearchText": "Exponha endpoints de search, rerank, moderação, imagem, vídeo, música, voz e transcrição atrás da mesma base URL do OmniRoute.",
    "featureMemoryTitle": "Memória e Handoffs de Contexto",
    "featureMemoryText": "Persista fatos reutilizáveis, injete contexto recuperado nas requisições e carregue contexto entre sessões e fluxos de agentes.",
    "featureSkillsTitle": "Skills e Execução de Ferramentas",
    "featureSkillsText": "Execute skills registradas, intercepte tool calls e exponha a execução por dashboard, MCP e fluxos de agentes.",
    "featureAcpTitle": "Workers ACP e Agentes Locais",
    "featureAcpText": "Detecte binários locais que o OmniRoute pode iniciar como workers ACP e coordene-os pelas telas de Agents e CLI Tools.",
    "protocolAcpTitle": "ACP (Workers do Agent Communication Protocol)",
    "protocolAcpDesc": "Use workers locais com ACP quando o OmniRoute deve iniciar e supervisionar um binário local em vez de encaminhar por HTTP.",
    "protocolAcpStep1": "Abra Painel -> Agents para verificar quais binários locais estão instalados e disponíveis como workers.",
    "protocolAcpStep2": "Use Painel -> CLI Tools quando você precisa de configuração de cliente em vez de spawn de worker.",
    "protocolAcpStep3": "Combine workers ACP com logs de auditoria e health para entender o que o OmniRoute iniciou e por quê."
  },
  "endpoint": {
    "title": "Endpoint da API",
    "available": "Endpoints Disponíveis",
    "cloudProxy": "Proxy na Nuvem",
    "disableConfirm": "Tem certeza que deseja desativar o proxy na nuvem?",
    "baseUrl": "URL Base",
    "apiKeyLabel": "Chave de API",
    "registeredKeys": "Chaves Registradas",
    "chatCompletions": "Chat Completions",
    "responses": "Respostas",
    "listModels": "Listar Modelos",
    "usingCloudProxy": "Usando Proxy na Nuvem",
    "usingLocalServer": "Usando Servidor Local",
    "machineId": "ID da Máquina: {id}...",
    "disableCloud": "Desativar Nuvem",
    "enableCloud": "Ativar Nuvem",
    "modelsAcrossEndpoints": "{models} modelos em {endpoints} endpoints",
    "loadingModels": "Carregando modelos disponíveis...",
    "chatDesc": "Chat streaming e não-streaming com todos os provedores",
    "embeddings": "Embeddings",
    "embeddingsDesc": "Embeddings de texto para busca e pipelines RAG",
    "imageGeneration": "Geração de Imagens",
    "imageDesc": "Gerar imagens a partir de prompts de texto",
    "rerank": "Rerank",
    "rerankDesc": "Reordenar documentos por relevância a uma consulta",
    "audioTranscription": "Transcrição de Áudio",
    "audioTranscriptionDesc": "Transcrever arquivos de áudio para texto (Whisper)",
    "textToSpeech": "Texto para Fala",
    "textToSpeechDesc": "Converter texto em fala natural",
    "musicGeneration": "Music Generation",
    "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)",
    "moderations": "Moderações",
    "moderationsDesc": "Moderação de conteúdo e classificação de segurança",
    "responsesDesc": "API Responses do OpenAI para Codex e fluxos de trabalho agênticos avançados",
    "listModelsDesc": "Listar todos os modelos disponíveis em todos os provedores conectados",
    "settingsApiDesc": "Ler e modificar a configuração do OmniRoute via API",
    "settingsApi": "Settings API",
    "categoryCore": "APIs Principais",
    "categoryMedia": "Mídia e Multi-Modal",
    "categorySearch": "Search & Discovery",
    "categoryUtility": "Utilidades e Gerenciamento",
    "webSearch": "Web Search",
    "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching",
    "searchProvider": "Search Provider",
    "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.",
    "enableCloudTitle": "Ativar Proxy na Nuvem",
    "whatYouGet": "O que você terá",
    "cloudBenefitAccess": "Acesse sua API de qualquer lugar do mundo",
    "cloudBenefitShare": "Compartilhe o endpoint com sua equipe facilmente",
    "cloudBenefitPorts": "Sem necessidade de abrir portas ou configurar firewall",
    "cloudBenefitEdge": "Rede de borda global rápida",
    "cloudSessionNote": "A nuvem manterá sua sessão de autenticação por 1 dia. Se não usada, será automaticamente excluída.",
    "cloudUnstableNote": "A nuvem está atualmente instável com Claude Code OAuth em alguns casos.",
    "cloudConnected": "Proxy na Nuvem conectado!",
    "connectingToCloud": "Conectando à nuvem...",
    "verifyingConnection": "Verificando conexão...",
    "connecting": "Conectando...",
    "verifying": "Verificando...",
    "connected": "Conectado!",
    "disableCloudTitle": "Desativar Proxy na Nuvem",
    "disableWarning": "Todas as sessões de autenticação serão excluídas da nuvem.",
    "syncingData": "Sincronizando dados mais recentes...",
    "disablingCloud": "Desativando nuvem...",
    "syncing": "Sincronizando...",
    "disabling": "Desativando...",
    "cloudConnectedVerified": "Proxy na Nuvem conectado e verificado!",
    "connectedVerificationPending": "Conectado — verificação pendente",
    "connectedVerificationPendingWithError": "Conectado — verificação pendente: {error}",
    "cloudDisabledSuccess": "Nuvem desativada com sucesso",
    "syncedSuccess": "Sincronizado com sucesso",
    "failedDisable": "Falha ao desativar nuvem",
    "failedEnable": "Falha ao ativar nuvem",
    "cloudRequestTimeout": "Tempo limite da requisição em nuvem",
    "cloudRequestFailed": "Falha na requisição em nuvem",
    "cloudWorkerUnreachable": "Não foi possível alcançar o worker de nuvem. Verifique se o serviço cloud está rodando (npm run dev em /cloud).",
    "connectionFailed": "Falha na conexão",
    "syncFailed": "Falha ao sincronizar dados da nuvem",
    "cloudflaredTitle": "Cloudflare Quick Tunnel",
    "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.",
    "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.",
    "cloudflaredEnable": "Enable Tunnel",
    "cloudflaredInstallAndEnable": "Install & Enable",
    "cloudflaredDisable": "Stop Tunnel",
    "cloudflaredRunning": "Running",
    "cloudflaredStarting": "Starting",
    "cloudflaredStoppedState": "Stopped",
    "cloudflaredNotInstalled": "Not installed",
    "cloudflaredUnsupported": "Unsupported",
    "cloudflaredError": "Error",
    "cloudflaredStarted": "Cloudflare tunnel started",
    "cloudflaredStopped": "Cloudflare tunnel stopped",
    "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel",
    "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.",
    "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.",
    "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.",
    "cloudflaredLastError": "Last error: {error}",
    "providerModelsTitle": "{provider} — Modelos",
    "noModelsForProvider": "Nenhum modelo disponível para este provedor.",
    "chat": "Chat",
    "embedding": "Embedding",
    "image": "Imagem",
    "custom": "custom",
    "modelsCount": "{count, plural, one {# modelo} other {# modelos}}",
    "sectionTitle": "Superfície de Integração",
    "sectionDescription": "APIs compatíveis com OpenAI e endpoints operacionais de protocolos",
    "tabApis": "APIs compatíveis com OpenAI",
    "tabProtocols": "Protocolos",
    "tabsAria": "Seções de endpoint",
    "protocolsTitle": "Protocolos",
    "protocolsDescription": "MCP e A2A são endpoints de primeira classe com observabilidade e controles dedicados.",
    "mcpCardTitle": "Servidor MCP",
    "mcpCardDescription": "Model Context Protocol via stdio",
    "a2aCardTitle": "Servidor A2A",
    "a2aCardDescription": "Endpoint Agent2Agent JSON-RPC",
    "protocolToolsLabel": "Ferramentas",
    "protocolTasksLabel": "Tarefas",
    "protocolActiveStreamsLabel": "Streams ativos",
    "protocolLastActivity": "Última atividade",
    "quickStart": "Início rápido",
    "openMcpDashboard": "Abrir gestão MCP",
    "openA2aDashboard": "Abrir gestão A2A",
    "mcpQuickStartTitle": "MCP Início rápido",
    "mcpQuickStartStep1": "Inicie o servidor MCP com `omniroute --mcp`.",
    "mcpQuickStartStep2": "Configure o cliente MCP para conectar por transporte stdio.",
    "mcpQuickStartStep3": "Execute ferramentas como `omniroute_get_health` e `omniroute_list_combos`.",
    "a2aQuickStartTitle": "A2A Início rápido",
    "a2aQuickStartStep1": "Descubra o agent card em `/.well-known/agent.json`.",
    "a2aQuickStartStep2": "Envie requisições JSON-RPC para `POST /a2a` usando `message/send` ou `message/stream`.",
    "a2aQuickStartStep3": "Acompanhe e controle tarefas com `tasks/get` e `tasks/cancel`.",
    "completionsLegacy": "Completions (Legacy)",
    "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format",
    "messagesApi": "Mensagens",
    "messagesApiDesc": "Formato API de mensagens antrópicas nativas para provedores compatíveis com Claude",
    "imageEdits": "Edições de imagem",
    "imageEditsDesc": "Edite e modifique imagens existentes com IA (pintura interna, pintura externa, variações)",
    "batchApi": "API de lote",
    "batchApiDesc": "Processe grandes lotes de solicitações de forma assíncrona (compatível com OpenAI)",
    "filesApi": "API de arquivos",
    "filesApiDesc": "Carregar e gerenciar arquivos para processamento em lote",
    "videoGeneration": "Geração de Vídeo",
    "videoDesc": "Gerar vídeos via ComfyUI, Stable Diffusion WebUI e provedores compatíveis",
    "tailscaleRequestFailed": "Failed to load Tailscale status",
    "tailscaleEnableFailed": "Falha ao habilitar o Tailscale Funnel",
    "tailscaleWaitingForLogin": "Conclua o login do Tailscale na aba aberta do navegador. O OmniRoute tentará novamente de forma automática.",
    "tailscaleLoginTimedOut": "Tempo limite expirado aguardando o login do Tailscale",
    "tailscaleWaitingForFunnel": "Habilite o Funnel para este dispositivo na aba aberta do navegador. O OmniRoute continuará verificando.",
    "tailscaleFunnelTimedOut": "Tempo limite expirado aguardando o Tailscale Funnel ser habilitado",
    "tailscaleStarted": "Tailscale Funnel habilitado",
    "tailscaleDisableFailed": "Falha ao desabilitar o Tailscale Funnel",
    "tailscaleStopped": "Tailscale Funnel desabilitado",
    "tailscaleInstallFailed": "Falha ao instalar o Tailscale",
    "tailscaleInstallProgress": "Trabalhando...",
    "tailscaleInstalled": "Tailscale instalado com sucesso",
    "tailscaleRunning": "Executando",
    "tailscaleNeedsLogin": "Requer Login",
    "tailscaleStoppedState": "Parado",
    "tailscaleNotInstalled": "Não instalado",
    "tailscaleUnsupported": "Não suportado",
    "tailscaleError": "Erro",
    "tailscaleDisable": "Parar Funnel",
    "tailscaleInstallAndEnable": "Instalar e Habilitar",
    "tailscaleLoginAndEnable": "Login e Habilitar",
    "tailscaleEnable": "Habilitar Funnel",
    "tailscaleUrlNotice": "Usa seu endereço .ts.net do Tailscale. Login e aprovação do Funnel podem ser necessários no primeiro uso.",
    "tailscaleTitle": "Tailscale Funnel",
    "tailscaleNeedsLoginHint": "Autentique esta máquina com o Tailscale, depois habilite o Funnel.",
    "tailscaleBinaryPath": "Binário: {path}",
    "tailscaleLastError": "Último erro: {error}",
    "tailscaleInstallTitle": "Install Tailscale",
    "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.",
    "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.",
    "tailscaleSudoPlaceholder": "Optional sudo password",
    "tailscaleInstalling": "Installing",
    "tailscaleSudoLabel": "Senha Sudo (obrigatória em macOS/Linux)",
    "ngrokTitle": "Túnel ngrok",
    "ngrokRunning": "Rodando",
    "ngrokStarting": "Iniciando",
    "ngrokStoppedState": "Parado",
    "ngrokNeedsAuth": "Requer Autenticação",
    "ngrokNotInstalled": "Não instalado",
    "ngrokUnsupported": "Não suportado",
    "ngrokError": "Erro",
    "ngrokEnable": "Habilitar Túnel",
    "ngrokDisable": "Parar Túnel",
    "ngrokUrlNotice": "Cria um túnel público ngrok.",
    "ngrokAuthTokenLabel": "Authtoken (Necessário caso NGROK_AUTHTOKEN não esteja definido)",
    "ngrokAuthTokenPlaceholder": "Digite seu authtoken do ngrok",
    "ngrokLastError": "Último erro: {error}",
    "ngrokStarted": "Túnel ngrok iniciado",
    "ngrokStopped": "Túnel ngrok parado",
    "ngrokRequestFailed": "Falha ao atualizar túnel ngrok",
    "tokenSaverSubtitle": "Gaste menos tokens em cada solicitação.",
    "tokenSaverToolOutput": "Saída da ferramenta",
    "tokenSaverLlmOutput": "Saída LLM",
    "tokenSaverInputCompression": "Compressão de entrada",
    "apiEndpointsCatalogUnavailable": "Catálogo de API indisponível",
    "apiEndpointsSearchPlaceholder": "Pesquisar pontos de extremidade...",
    "apiEndpointsRequiresAuth": "Requer autenticação",
    "apiEndpointsNoMatch": "Nenhum endpoint corresponde ao seu filtro",
    "localServer": "Servidor local",
    "cloudOmniroute": "Cloud OmniRoute",
    "copyUrl": "Copiar URL",
    "badgeLoopbackTooltip": "Este endpoint é acessível apenas localmente (loopback)",
    "badgeAlwaysProtectedTooltip": "Este endpoint é sempre protegido e requer autorização",
    "badgeInternalTooltip": "Este é um endpoint interno do sistema",
    "tierAll": "Todos",
    "tierAuth": "Autenticado",
    "tierLoopback": "Loopback",
    "tierAlwaysProtected": "Sempre Protegido",
    "tierPublic": "Público",
    "hideInternal": "Ocultar Internos",
    "showInternal": "Mostrar Internos",
    "vscodeAliasTitle": "Alias de Token do VS Code",
    "vscodeAliasDescriptionReady": "URLs de compatibilidade prontas para colar usando o endpoint /api/v1/vscode/TOKEN/... .",
    "vscodeAliasDescriptionError": "Mostrando URLs com placeholder porque as chaves de CLI não puderam ser carregadas nesta sessão.",
    "vscodeAliasDescriptionLoading": "Carregando chaves de CLI. As URLs com placeholder serão mostradas até que uma chave esteja disponível.",
    "vscodeAliasDescriptionPlaceholder": "Mostrando URLs com placeholder. Crie ou ative uma chave de API em CLI Tools para substituir TOKEN.",
    "vscodeAliasManage": "CLI Tools",
    "vscodeAliasBaseLabel": "Base do VS Code",
    "vscodeAliasModelsLabel": "Modelos do VS Code",
    "vscodeAliasChatLabel": "Chat do VS Code"
  },
  "endpointOptions": {
    "speech": "Speech",
    "search": "Search",
    "images": "Images",
    "chat": "Chat",
    "music": "Music",
    "responses": "Responses",
    "rerank": "Rerank",
    "video": "Video",
    "embeddings": "Embeddings",
    "transcription": "Transcription"
  },
  "endpoints": {
    "tabProxy": "Endpoint Proxy",
    "tabApiEndpoints": "Endpoints de API",
    "apiEndpointsTitle": "Endpoints de API",
    "apiEndpointsDescription": "Endpoints de API backend que podem ser consumidos por outras aplicações e serviços.",
    "comingSoon": "Em Breve",
    "plannedFeatures": "Funcionalidades Planejadas",
    "featureRestApi": "Catálogo de endpoints REST API com documentação interativa",
    "featureWebhooks": "Configuração de webhooks e assinaturas de eventos",
    "featureSwagger": "Geração automática de specs OpenAPI / Swagger",
    "featureAuth": "Gestão de chaves API e escopos OAuth por endpoint"
  },
  "header": {
    "logout": "Sair",
    "language": "Idioma",
    "providers": "Provedores",
    "providerDescription": "Gerencie suas conexões de provedores de IA",
    "combos": "Combos",
    "comboDescription": "Combos de modelos com fallback",
    "usage": "Uso e Análises",
    "usageDescription": "Monitore seu uso de API, consumo de tokens e logs de requisições",
    "analytics": "Análises",
    "analyticsDescription": "Gráficos, tendências e insights de avaliação",
    "cliTools": "Ferramentas CLI",
    "cliToolsDescription": "Configurar ferramentas de linha de comando",
    "home": "Início",
    "homeDescription": "Bem-vindo ao OmniRoute",
    "endpoint": "Endpoints",
    "endpointDescription": "Gerenciar endpoints proxy, MCP, A2A e endpoints de API",
    "mcp": "MCP",
    "mcpDescription": "Model Context Protocol server management and tools",
    "a2a": "A2A",
    "a2aDescription": "Agent-to-Agent protocol tasks and observability",
    "settings": "Configurações",
    "settingsDescription": "Gerencie suas preferências",
    "openaiCompatible": "Compatível com OpenAI",
    "anthropicCompatible": "Compatível com Anthropic",
    "media": "Mídia",
    "mediaDescription": "Gerar imagens, vídeos e músicas",
    "themes": "Themes",
    "themesDescription": "Choose a color theme for the whole dashboard panel",
    "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers",
    "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.",
    "limitsDescription": "Configure rate limits and quotas per API key and provider",
    "runtimeDescription": "Observabilidade de runtime — circuit breakers, cooldowns, lockouts de modelo, sessões e alertas de quota",
    "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance",
    "batchDescription": "Process large volumes of requests asynchronously with batched API calls",
    "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.",
    "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.",
    "contextCombosDescription": "Define how engines are combined for different routing scenarios.",
    "changelogDescription": "Stay up to date with the latest platform features and announcements.",
    "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents",
    "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval",
    "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing",
    "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution",
    "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration",
    "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini",
    "playgroundDescription": "Test prompts interactively with live provider responses and format inspection",
    "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking",
    "logsDescription": "Real-time request logs, error traces, and streaming event inspector",
    "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events",
    "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications",
    "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database",
    "proxyDescription": "Configure upstream proxy settings for outbound provider connections",
    "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides",
    "batchFilesDescription": "Browse and manage batch job output files and results",
    "analyticsEvalsDescription": "Model evaluation results and performance benchmarks",
    "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking",
    "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning",
    "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations",
    "analyticsCompressionDescription": "Context compression analytics and token savings",
    "costsBudgetDescription": "Budget limits and spending alerts per API key and provider",
    "costsPricingDescription": "Custom pricing configuration for token cost calculations",
    "logsProxyDescription": "Upstream proxy request logs and traffic inspection",
    "logsConsoleDescription": "Application console output and debug logs",
    "logsActivityDescription": "Audit trail of user actions and system events",
    "auditMcpDescription": "MCP tool invocation audit trail and compliance records",
    "auditA2a": "Auditoria A2A",
    "auditA2aDescription": "Trilha de auditoria de execução de tarefas A2A, transições de estado e registros de invocação de habilidades",
    "settingsGeneralDescription": "Storage, database, and general instance configuration",
    "settingsAppearanceDescription": "Theme, branding, and visual customization",
    "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings",
    "settingsSecurityDescription": "Authentication, authorization, and access control settings",
    "featureFlags": "Sinalizadores de recursos",
    "featureFlagsDescription": "Capacidades do sistema de controle e recursos experimentais",
    "featureFlagsActive": "{count} ativo",
    "featureFlagsInactive": "{count} inativo",
    "featureFlagsOverrides": "{count} Substituições de banco de dados",
    "featureFlagsSearch": "Pesquisar sinalizadores...",
    "featureFlagsCategoryAll": "Todos",
    "featureFlagsCategorySecurity": "Segurança",
    "featureFlagsCategoryNetwork": "Rede",
    "featureFlagsCategoryPolicies": "Políticas",
    "featureFlagsCategoryRuntime": "Tempo de execução",
    "featureFlagsCategoryCli": "CLI",
    "featureFlagsCategoryHealth": "Saúde",
    "featureFlagsSourceDb": "BD",
    "featureFlagsSourceEnv": "ENV",
    "featureFlagsSourceDefault": "DEF",
    "featureFlagsReset": "Redefinir",
    "featureFlagsResetAll": "Redefinir todas as substituições",
    "featureFlagsResetAllConfirm": "Tem certeza de que deseja redefinir todas as substituições de sinalizadores de recursos? Isso reverterá todos os sinalizadores para seus valores ENV ou padrão.",
    "featureFlagsRestartRequired": "É necessário reiniciar para aplicar",
    "featureFlagsNoResults": "Nenhuma sinalização corresponde à sua pesquisa",
    "featureFlagsSaved": "Bandeira atualizada",
    "featureFlagsError": "Falha ao atualizar sinalizador",
    "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings",
    "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration",
    "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings",
    "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging",
    "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining",
    "omniSkillsDescription": "Instale e gerencie skills sandbox para execução automatizada de prompts e ferramentas"
  },
  "health": {
    "title": "Saúde do Sistema",
    "description": "Monitoramento em tempo real da sua instância OmniRoute",
    "healthy": "Saudável",
    "degraded": "Degradado",
    "down": "Offline",
    "uptime": "Tempo Ativo",
    "memory": "Memória",
    "memoryRss": "Memória (RSS)",
    "heap": "Heap",
    "cpu": "CPU",
    "database": "Banco de Dados",
    "version": "Versão",
    "lastCheck": "Última Verificação",
    "providerHealth": "Saúde dos Provedores",
    "systemMetrics": "Métricas do Sistema",
    "tokenHealth": "Saúde dos Tokens",
    "refreshAll": "Atualizar Tudo",
    "checkNow": "Verificar Agora",
    "loadingHealth": "Carregando dados de saúde...",
    "failedToLoad": "Falha ao carregar dados de saúde: {error}",
    "retry": "Tentar Novamente",
    "allOperational": "Todos os sistemas operacionais",
    "issuesDetected": "Problemas detectados no sistema",
    "updatedAt": "Atualizado {time}",
    "latency": "Latência",
    "latencyP50": "p50",
    "latencyP95": "p95",
    "latencyP99": "p99",
    "millisecondsShort": "{value}ms",
    "notAvailable": "—",
    "totalRequests": "Total de requisições",
    "noDataYet": "Sem dados ainda",
    "promptCache": "Cache de Prompt",
    "entries": "Entradas",
    "hitRate": "Taxa de Acerto",
    "hitsMisses": "Acertos / Erros",
    "signatureCache": "Cache de Assinatura",
    "signatureDefaults": "Padrões",
    "signatureTool": "Ferramenta",
    "signatureFamily": "Família",
    "signatureSession": "Sessão",
    "recovering": "Recuperando",
    "noCBData": "Nenhum dado de circuit breaker disponível. Faça algumas requisições primeiro.",
    "providerHealthStatusAria": "Status de saúde dos provedores",
    "issuesLabel": "Problemas Detectados",
    "operational": "Operacional",
    "providers": "Provedores",
    "configuredProvidersLabel": "Configurado no painel",
    "configuredProvidersHint": "Provedores com credenciais salvas em /dashboard/providers, independentemente do estado do tempo de execução.",
    "activeProviders": "{count} active",
    "activeProvidersHint": "Provedores configurados atualmente habilitados para solicitações de roteamento.",
    "monitoredProviders": "{count} monitored",
    "monitoredProvidersHint": "Provedores atualmente monitorados por monitores de integridade dos disjuntores.",
    "healthyCount": "{count} saudáveis",
    "nodeVersion": "Node {version}",
    "failures": "{count} falha",
    "failuresPlural": "{count} falhas",
    "lastFailure": "Última",
    "rateLimitStatus": "Status de Limite de Taxa",
    "activeLimiters": "{count} limitador ativo",
    "activeLimitersPlural": "{count} limitadores ativos",
    "queued": "Na Fila",
    "queuedCount": "{count} na fila",
    "running": "executando",
    "runningCount": "{count} executando",
    "ok": "OK",
    "activeLockouts": "Bloqueios Ativos",
    "resetConfirm": "Resetar todos os circuit breakers para estado saudável? Isso limpará todos os contadores de falha e restaurará todos os provedores ao status operacional.",
    "resetAllTitle": "Resetar todos os circuit breakers para estado saudável",
    "resetting": "Resetando...",
    "resetAll": "Resetar Tudo",
    "until": "Até {time}",
    "limitExhausted": "Esgotado",
    "learnedFromHeaders": "Aprendido a partir dos headers do provedor",
    "remainingOfLimit": "{remaining} / {limit} RPM restantes",
    "throttleStatus": "Acelerador: {value}",
    "lastHeaderUpdate": "Atualização do header: há {age}",
    "databaseHealth": "Integridade do banco de dados",
    "stickyBoundSessions": "Sessões fixas",
    "sessionsByApiKey": "Sessões por chave API",
    "noActiveSessionsTracked": "Nenhuma sessão ativa rastreada ainda.",
    "noSessionQuotaMonitorsActive": "Nenhum monitor de cota de sessão ativo.",
    "gracefulDegradationStatus": "Status de degradação elegante",
    "additionalModels": "+{count} mais modelos",
    "providerHealthMatrixTitle": "Matriz de Saúde do Provedor",
    "providerHealthMatrixDescription": "Estados de provedor × conta × modelo a partir de disjuntores, cooldowns, bloqueios e logs.",
    "healthMatrixRange": "Intervalo da matriz de saúde",
    "providerFilter": "Filtro de provedor",
    "onlyIssues": "Apenas problemas",
    "refresh": "Atualizar",
    "accounts": "Contas",
    "models": "Modelos",
    "issues": "Problemas",
    "loadingProviderHealthMatrix": "Carregando matriz de saúde do provedor...",
    "failedProviderHealthMatrix": "Falha ao carregar Matriz de Saúde do Provedor: {error}",
    "noProvidersMatchedFilters": "Nenhum provedor corresponde aos filtros atuais.",
    "modelPillSummary": "{requests} req · {successRate} sucesso · {latency} média",
    "modelLockoutSummary": "{reason} · {duration} restante",
    "locked": "bloqueado",
    "inferred": "inferido",
    "inactive": "Inativo",
    "noConnectionId": "sem id de conexão",
    "accountModelSummary": "{connectionId} · {count} modelos",
    "cooldown": "cooldown",
    "durationRemaining": "{duration} restante",
    "noSyncedModelsOrTraffic": "Nenhum modelo sincronizado ou tráfego recente ainda.",
    "providerRowSummary": "{active}/{total} contas ativas · {requests} req · {successRate} sucesso · {latency} média",
    "cooldownCount": "{count} cooldown",
    "lockoutCount": "{count} bloqueios",
    "issueCount": "{count} problemas",
    "score": "Pontuação",
    "lastRequest": "Última requisição",
    "lastError": "Último erro"
  },
  "home": {
    "quickStart": "Início Rápido",
    "quickStartDesc": "Comece em 4 passos. Conecte provedores, roteie modelos, monitore tudo.",
    "fullDocs": "Docs Completa",
    "step1Title": "1. Criar chave de API",
    "step1Desc": "Vá em <endpoint>Endpoint</endpoint> -> Chaves Registradas. Gere uma chave por ambiente.",
    "step2Title": "2. Conectar provedores",
    "step2Desc": "Adicione contas em <providers>Provedores</providers>. Suporta OAuth, API Key e planos gratuitos.",
    "step3Title": "3. Apontar seu cliente",
    "step3Desc": "Defina a URL base como {url} no seu IDE ou cliente de API.",
    "step4Title": "4. Monitorar e otimizar",
    "step4Desc": "Acompanhe tokens, custos e erros em <logs>Logs de Requisições</logs> e <analytics>Análises</analytics>.",
    "providersOverview": "Visão Geral dos Provedores",
    "configuredOf": "{configured} configurados de {total} provedores disponíveis",
    "noModelsAvailable": "Nenhum modelo disponível para este provedor.",
    "noProvidersConfigured": "Nenhum provedor configurado ainda",
    "addProvider": "Adicionar um provedor",
    "configureFirst": "Configure uma conexão primeiro em {providers}",
    "configureProvider": "Configurar Provedor",
    "modelAvailable": "{count} modelo disponível",
    "modelsAvailable": "{count} modelos disponíveis",
    "connectionsActive": "{count} conexão ativa",
    "connectionsActivePlural": "{count} conexões ativas",
    "copyModelName": "Copiar nome do modelo",
    "documentation": "Documentação",
    "healthMonitor": "Monitor de Saúde",
    "reportIssue": "Reportar problema",
    "activeError": "{active} ativo · {errors} erro",
    "oauthLabel": "OAuth",
    "apiKeyLabel": "Chave de API",
    "requestsShort": "{count} reqs",
    "providerModelsTitle": "{provider} - Modelos",
    "copiedModel": "Copiado: {model}",
    "aliasLabel": "alias",
    "updateNow": "Atualizar agora",
    "updating": "Atualizando...",
    "updateAvailableDesc": "Uma nova versão está disponível. Clique para atualizar.",
    "updateStarted": "Atualização iniciada...",
    "reloadingPageAutomatically": "Recarregando a página automaticamente...",
    "providerTopology": "Topologia do provedor"
  },
  "landing": {
    "brandName": "OmniRoute",
    "navigateHome": "Navegar para a página inicial",
    "toggleMenu": "Alternar menu",
    "featuresLink": "Recursos",
    "docsLink": "Docs",
    "github": "GitHub",
    "versionLive": "v1.0 já está no ar",
    "oneEndpoint": "Um Endpoint para",
    "allProviders": "Todos os Provedores de IA",
    "heroDescription": "Proxy de endpoint de IA com painel web - uma versão em JavaScript do CLIProxyAPI. Funciona perfeitamente com Claude Code, OpenAI Codex, Cline, RooCode e outras ferramentas CLI.",
    "getStarted": "Começar",
    "viewOnGithub": "Ver no GitHub",
    "powerfulFeatures": "Recursos Poderosos",
    "featuresSubtitle": "Tudo que você precisa para gerenciar sua infraestrutura de IA em um só lugar, preparado para escala.",
    "featureUnifiedEndpointTitle": "Endpoint Unificado",
    "featureUnifiedEndpointDesc": "Acesse todos os provedores por uma única URL de API padrão.",
    "featureEasySetupTitle": "Configuração Fácil",
    "featureEasySetupDesc": "Fique pronto em minutos com o comando npx.",
    "featureModelFallbackTitle": "Fallback de Modelo",
    "featureModelFallbackDesc": "Alterne automaticamente entre provedores em caso de falha ou alta latência.",
    "featureUsageTrackingTitle": "Rastreamento de Uso",
    "featureUsageTrackingDesc": "Análises detalhadas e monitoramento de custos em todos os modelos.",
    "featureOAuthApiKeysTitle": "OAuth e Chaves de API",
    "featureOAuthApiKeysDesc": "Gerencie credenciais com segurança em um único cofre.",
    "featureCloudSyncTitle": "Sincronização em Nuvem",
    "featureCloudSyncDesc": "Sincronize suas configurações entre dispositivos instantaneamente.",
    "featureCliSupportTitle": "Suporte a CLI",
    "featureCliSupportDesc": "Funciona com Claude Code, Codex, Cline, Cursor e mais.",
    "featureDashboardTitle": "Painel",
    "featureDashboardDesc": "Painel visual para análise de tráfego em tempo real.",
    "howItWorks": "Como o OmniRoute Funciona",
    "howItWorksDescription": "Os dados fluem de forma contínua da sua aplicação pela nossa camada de roteamento inteligente até o melhor provedor para cada tarefa.",
    "howItWorksStep1Title": "1. CLI e SDKs",
    "howItWorksStep1Description": "Suas requisições começam nas suas ferramentas favoritas ou no nosso SDK unificado. Basta trocar a URL base.",
    "howItWorksStep2Title": "2. Hub OmniRoute",
    "howItWorksStep2Description": "Nosso mecanismo analisa o prompt, verifica a saúde dos provedores e roteia para menor latência ou custo.",
    "howItWorksStep3Title": "3. Provedores de IA",
    "howItWorksStep3Description": "A requisição é atendida por OpenAI, Anthropic, Gemini ou outros provedores instantaneamente.",
    "getStartedIn30Seconds": "Comece em 30 segundos",
    "getStartedDescription": "Instale o OmniRoute, configure seus provedores pelo painel web e comece a rotear requisições de IA.",
    "installOmniRoute": "Instalar o OmniRoute",
    "installStepDescription": "Execute o comando npx para iniciar o servidor instantaneamente",
    "openDashboard": "Abrir Painel",
    "openDashboardStepDescription": "Configure provedores e chaves de API pela interface web",
    "routeRequests": "Rotear Requisições",
    "routeRequestsStepDescription": "Aponte suas ferramentas CLI para {endpoint}",
    "terminal": "terminal",
    "copy": "Copiar",
    "copied": "✓ Copiado",
    "startingOmniRoute": "Iniciando OmniRoute...",
    "serverRunningOnLabel": "Servidor em execução em",
    "dashboardLabel": "Painel",
    "readyToRoute": "Pronto para rotear! ✓",
    "configureProvidersNote": "📝 Configure provedores no painel ou use variáveis de ambiente",
    "dataLocation": "Local dos Dados:",
    "dataLocationMacLinux": " macOS/Linux:",
    "dataLocationWindows": " Windows:",
    "product": "Produto",
    "dashboardLink": "Painel",
    "changelog": "Changelog",
    "resources": "Recursos",
    "documentation": "Documentação",
    "npm": "NPM",
    "legal": "Legal",
    "mitLicense": "Licença MIT",
    "footerTagline": "O endpoint unificado para geração de IA. Conecte, roteie e gerencie seus provedores de IA com facilidade.",
    "copyright": "© {year} OmniRoute. Todos os direitos reservados.",
    "flowToolClaudeCode": "Claude Code",
    "flowToolOpenAICodex": "OpenAI Codex",
    "flowToolCline": "Cline",
    "flowToolCursor": "Cursor",
    "flowProviderOpenAI": "OpenAI",
    "flowProviderAnthropic": "Anthropic",
    "flowProviderGemini": "Gemini",
    "flowProviderGithubCopilot": "GitHub Copilot",
    "interactiveDiagram": "Diagrama interativo visível no desktop",
    "ctaTitle": "Pronto para simplificar sua infraestrutura de IA?",
    "ctaDescription": "Junte-se a desenvolvedores que estão simplificando suas integrações de IA com o OmniRoute. Open source e grátis para começar.",
    "startFree": "Começar grátis",
    "readDocumentation": "Ler documentação"
  },
  "legal": {
    "privacyPolicy": "Política de Privacidade",
    "termsOfService": "Termos de Serviço",
    "providerConfigurations": "Configurações de provedores",
    "apiKeys": "Chaves de API",
    "usageLogs": "Logs de uso",
    "applicationSettings": "Configurações do aplicativo",
    "viewExportAnalytics": "Visualizar e exportar análises de uso",
    "clearHistory": "Limpar histórico de uso a qualquer momento",
    "configureRetention": "Configurar políticas de retenção de logs",
    "backupRestore": "Fazer backup e restaurar seu banco de dados",
    "privacyMetadataTitle": "Política de Privacidade | OmniRoute",
    "privacyMetadataDescription": "Política de privacidade do roteador proxy de API de IA OmniRoute.",
    "termsMetadataTitle": "Termos de Serviço | OmniRoute",
    "termsMetadataDescription": "Termos de serviço do roteador proxy de API de IA OmniRoute.",
    "backToHome": "Voltar para a home",
    "lastUpdated": "Última atualização: {date}",
    "policyLastUpdatedDate": "13 de fevereiro de 2026",
    "listSeparator": "-",
    "questionsVisit": "Dúvidas? Visite nosso",
    "githubRepository": "repositório no GitHub",
    "privacySection1Title": "1. Arquitetura Local-First",
    "privacySection1Text": "O OmniRoute foi projetado como uma aplicação local-first. Todo processamento e armazenamento de dados ocorre inteiramente na sua máquina. Não existe servidor centralizado coletando suas informações.",
    "privacySection2Title": "2. Dados que Armazenamos",
    "privacyDataStoredIn": "Os dados a seguir são armazenados localmente em",
    "privacyDataProviderConfigurationsDesc": "URLs de conexão, tipos de provedor e configurações de prioridade",
    "privacyDataApiKeysDesc": "criptografadas e armazenadas localmente para autenticar com provedores de IA",
    "privacyDataUsageLogsDesc": "contagem de requisições, uso de tokens, nomes de modelos, timestamps e tempos de resposta",
    "privacyDataApplicationSettingsDesc": "preferências de tema, estratégia de roteamento e configurações de combos",
    "privacySection3Title": "3. Sem Telemetria",
    "privacySection3Text": "O OmniRoute não coleta telemetria, analytics ou relatórios de falha. Nenhum dado é enviado para nós ou para terceiros. Seus padrões de uso, chamadas de API e configurações permanecem totalmente privados.",
    "privacySection4Title": "4. Provedores de IA de Terceiros",
    "privacySection4Text": "Quando você faz chamadas de API pelo OmniRoute, suas requisições são encaminhadas aos provedores de IA configurados (por exemplo: OpenAI, Anthropic, Google). Esses provedores possuem suas próprias políticas de privacidade que regem como tratam seus dados. Consulte:",
    "privacyOpenAiPolicy": "Política de Privacidade da OpenAI",
    "privacyAnthropicPolicy": "Política de Privacidade da Anthropic",
    "privacyGooglePolicy": "Política de Privacidade do Google",
    "privacySection5Title": "5. Sincronização em Nuvem (Opcional)",
    "privacySection5Text": "Se você ativar o recurso opcional de sincronização em nuvem, configurações de provedores e chaves de API podem ser transmitidas para um endpoint de nuvem configurado. Esse recurso vem desativado por padrão e exige opt-in explícito.",
    "privacySection6Title": "6. Logs",
    "privacyLoggingIntro": "Os logs de requisição podem ser configurados nas configurações do painel. Você pode:",
    "privacySection7Title": "7. Seus Direitos",
    "privacySection7TextStart": "Como todos os dados são armazenados localmente, você tem controle total. Você pode excluir seus dados a qualquer momento removendo o diretório",
    "privacySection7TextEnd": "ou usando os recursos de backup e restauração do banco de dados no painel.",
    "termsSection1Title": "1. Visão Geral",
    "termsSection1Text": "O OmniRoute é um roteador proxy de API de IA local-first que roda inteiramente na sua máquina. Ele roteia requisições para múltiplos provedores de IA com balanceamento de carga, failover e rastreamento de uso.",
    "termsSection2Title": "2. Responsabilidades do Usuário",
    "termsResponsibilityApiKeys": "Você é o único responsável por gerenciar suas próprias chaves de API e credenciais para provedores de IA de terceiros (OpenAI, Anthropic, Google etc.).",
    "termsResponsibilityCompliance": "Você deve cumprir os termos de serviço de cada provedor de IA cuja API acessar através do OmniRoute.",
    "termsResponsibilitySecurity": "Você é responsável pela segurança da sua instalação local do OmniRoute, incluindo definir uma senha e restringir acesso de rede.",
    "termsSection3Title": "3. Como Funciona",
    "termsSection3Text": "O OmniRoute atua como um proxy intermediário. As chamadas de API enviadas ao OmniRoute são traduzidas e encaminhadas para seus provedores de IA configurados. O OmniRoute não modifica o conteúdo das suas requisições ou respostas além da tradução de protocolo necessária.",
    "termsSection4Title": "4. Tratamento de Dados",
    "termsDataStoredLocally": "Todos os dados são armazenados localmente na sua máquina em um banco SQLite.",
    "termsNoTransmission": "O OmniRoute não transmite dados para servidores externos, a menos que você ative explicitamente recursos de sincronização em nuvem.",
    "termsDataLocationText": "Logs de uso, chaves de API e configurações são armazenados em",
    "termsSection5Title": "5. Isenção de Responsabilidade",
    "termsSection5Text": "O OmniRoute é fornecido \"como está\", sem garantia de qualquer tipo. Não somos responsáveis por custos incorridos por uso de API, interrupções de serviço ou perda de dados. Sempre mantenha backups da sua configuração.",
    "termsSection6Title": "6. Código Aberto",
    "termsSection6Text": "O OmniRoute é um software de código aberto. Você pode inspecionar, modificar e distribuí-lo de acordo com os termos da licença."
  },
  "limits": {
    "title": "Limites e Cotas",
    "rateLimit": "Limite de Taxa",
    "remaining": "Restante",
    "requestsPerMinute": "Requisições/min",
    "tokensPerMinute": "Tokens/min",
    "dailyLimit": "Limite Diário"
  },
  "loggers": {
    "allProviders": "Todos os Provedores",
    "allModels": "Todos os Modelos",
    "allAccounts": "Todas as Contas",
    "allApiKeys": "Todas as Chaves de API",
    "allTypes": "Todos os Tipos",
    "allLevels": "Todos os Níveis",
    "modelAZ": "Modelo A-Z",
    "modelZA": "Modelo Z-A",
    "loadingLogs": "Carregando logs...",
    "loadingProxyLogs": "Carregando logs do proxy...",
    "noLogEntries": "Nenhuma entrada de log encontrada",
    "noPayloadData": "Nenhum dado de payload disponível para esta entrada.",
    "proxyEvent": "Evento do Proxy",
    "proxy": "Proxy",
    "level": "Nível",
    "directNative": "Direto (nativo)",
    "combo": "Combo",
    "inputTokens": "E:",
    "outputTokens": "S:"
  },
  "logs": {
    "title": "Logs",
    "requestLogs": "Logs de Requisições",
    "proxyLogs": "Logs do Proxy",
    "auditLog": "Log de Auditoria",
    "console": "Console",
    "auditLogDesc": "Ações administrativas e eventos de segurança",
    "loading": "Carregando...",
    "refresh": "Atualizar",
    "filterByAction": "Filtrar por ação...",
    "filterByActor": "Filtrar por ator...",
    "filterEntriesAria": "Filtrar entradas do log de auditoria",
    "filterByActionTypeAria": "Filtrar por tipo de ação",
    "filterByActorAria": "Filtrar por ator",
    "refreshAuditLogAria": "Atualizar log de auditoria",
    "tableAria": "Entradas do log de auditoria",
    "failedFetchAuditLog": "Falha ao carregar log de auditoria",
    "showing": "Mostrando {count} entradas (offset {offset})",
    "search": "Buscar",
    "timestamp": "Data/Hora",
    "action": "Ação",
    "actor": "Ator",
    "target": "Alvo",
    "details": "Detalhes",
    "ipAddress": "Endereço IP",
    "notAvailable": "—",
    "noEntries": "Nenhuma entrada de log de auditoria encontrada",
    "previous": "Anterior",
    "next": "Próximo",
    "providerWarningTitle": "Aviso de provedor capturado",
    "viewDetails": "Ver Detalhes",
    "eventMetadata": "Metadados do Evento",
    "eventPayload": "Payload do Evento",
    "requestId": "Request ID",
    "providerWarningDesc": "Esta requisição terminou com um aviso do provedor ou alerta do sanitizador em vez de uma falha dura.",
    "a": "A",
    "offset": "Offset",
    "limit": "Limit",
    "status": "Status",
    "resourceType": "Tipo de Recurso",
    "totalEntries": "{count} eventos no total",
    "tab": "Tab",
    "auditModalSubtitle": "Ator: {actor} • Alvo: {target}",
    "close": "Fechar",
    "runningRequests": "Requisições em Execução",
    "runningRequestsDesc": "Requisições ainda em voo entre provedores e contas, com previews sanitizados dos payloads.",
    "clearAll": "Limpar tudo",
    "confirmClearActiveRequests": "Limpar todas as solicitações ativas?",
    "model": "Modelo",
    "provider": "Provedor",
    "account": "Conta",
    "elapsed": "Tempo",
    "activeStage": "Estágio",
    "activeStageUnknown": "Ainda não enviado para o upstream",
    "activeStageRegistered": "Registrado",
    "activeStagePayloadPrepared": "Carga preparada",
    "activeStageWaitingAccountSlot": "Aguardando slot de conta",
    "activeStageWaitingRateLimit": "Aguardando limitador de taxa",
    "activeStageRateLimitSlotAcquired": "Slot de limite de taxa adquirido",
    "activeStageSendingToProvider": "Enviando para o upstream",
    "activeStageProviderResponseStarted": "Resposta do upstream iniciada",
    "count": "Qtd.",
    "payloads": "Payloads",
    "viewPayloads": "Ver Payloads",
    "activeCount": "{count} ativas",
    "clientPayload": "Requisição do Cliente",
    "upstreamPayload": "Requisição Upstream",
    "upstreamNotSentYet": "Requisição upstream ainda não foi enviada",
    "runningRequestDetailMeta": "Conta: {account} • Tempo: {elapsed}",
    "export": "Export",
    "exporting": "Exporting...",
    "exportFailed": "Export failed",
    "timeRange": "Time Range",
    "lastNHours": "Last {hours}",
    "defaultRange": "default",
    "consoleViewer": {
      "fetchFailed": "Failed to fetch logs",
      "copyFailed": "Failed to copy log entry",
      "copyLogEntry": "Copy log entry"
    },
    "compressionLogTitle": "Compression Log",
    "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.",
    "tokens": "tokens"
  },
  "mcpDashboard": {
    "loading": "Carregando painel MCP...",
    "activate": "ativar",
    "deactivate": "desativar",
    "confirmSwitchCombo": "Confirmar {action} combo \"{combo}\"?",
    "switchComboFailed": "Falha ao alternar estado do combo.",
    "switchComboSuccess": "Combo \"{combo}\" atualizado.",
    "confirmApplyProfile": "Aplicar perfil de resiliência \"{profile}\"?",
    "applyProfileFailed": "Falha ao aplicar perfil de resiliência.",
    "applyProfileSuccess": "Perfil \"{profile}\" aplicado.",
    "confirmResetBreakers": "Resetar todos os circuit breakers?",
    "resetBreakersFailed": "Falha ao resetar circuit breakers.",
    "resetBreakersSuccess": "Circuit breakers resetados.",
    "processStatus": "Status do processo",
    "online": "Online",
    "offline": "Offline",
    "disableLabel": "Desativar {label}",
    "enableLabel": "Ativar {label}",
    "transportMode": "Modo de Transporte",
    "transportStdioDesc": "Local — IDE inicia o processo via omniroute --mcp",
    "transportSseDesc": "Remoto — Server-Sent Events via HTTP",
    "transportStreamableHttpDesc": "Remoto — HTTP bidirecional moderno",
    "copy": "Copiar",
    "mcpDashboardCopyUrl": "Copiar URL",
    "mcpDisabledTitle": "O MCP está desativado",
    "mcpDisabledDesc": "Ative o MCP acima para configurar o modo de transporte e visualizar a telemetria do servidor.",
    "mcpIntro": "Model Context Protocol — {tools} ferramentas em {scopes} escopos, {transports} transportes (stdio / SSE / Streamable HTTP).",
    "mcpStep1": "Execute via {code}",
    "mcpStep2": "Configure seu cliente MCP para conectar via transporte stdio.",
    "mcpStep3": "Invoque ferramentas como {code1} e {code2}.",
    "pid": "PID",
    "sessionUptime": "Uptime da sessão",
    "lastHeartbeat": "Último heartbeat",
    "activity24h": "Atividade (24h)",
    "totalCalls": "Total de chamadas",
    "successRate": "Taxa de sucesso",
    "avgLatency": "Latência média",
    "topTools": "Top ferramentas",
    "noToolCalls24h": "Sem chamadas de ferramenta nas últimas 24 horas.",
    "runtimeDetails": "Detalhes de runtime",
    "transport": "Transporte",
    "scopesEnforced": "Scopes aplicados",
    "yes": "sim",
    "no": "não",
    "lastCall": "Última chamada",
    "heartbeatPath": "Caminho do heartbeat",
    "operationalControls": "Controles operacionais",
    "switchCombo": "Trocar combo",
    "inactive": "inativo",
    "active": "ativo",
    "activateCombo": "Ativar combo",
    "deactivateCombo": "Desativar combo",
    "applyResilienceProfile": "Aplicar perfil de resiliência",
    "profileAggressive": "agressivo",
    "profileBalanced": "balanceado",
    "profileConservative": "conservador",
    "applyProfile": "Aplicar perfil",
    "resetCircuitBreakers": "Resetar circuit breakers",
    "resetCircuitBreakersHelp": "Limpa o estado atual de breaker e os contadores de falha dos provedores.",
    "resetAllBreakers": "Resetar todos os breakers",
    "toolsAndScopes": "Ferramentas e scopes",
    "tableTool": "Ferramenta",
    "tableScopes": "Scopes",
    "tablePhase": "Fase",
    "tableAudit": "Auditoria",
    "auditLog": "Log de auditoria",
    "auditSummary": "Chamadas: {total} | página {page} de {totalPages}",
    "allTools": "Todas as ferramentas",
    "allResults": "Todos os resultados",
    "success": "Sucesso",
    "failure": "Falha",
    "apiKeyIdPlaceholder": "apiKeyId",
    "loadingAuditEntries": "Carregando registros de auditoria...",
    "noAuditEntriesForFilters": "Nenhum registro de auditoria para os filtros atuais.",
    "tableTimestamp": "Timestamp",
    "tableDuration": "Duração",
    "tableResult": "Resultado",
    "tableApiKey": "Chave API",
    "failed": "falhou",
    "previous": "Anterior",
    "next": "Próxima",
    "apiKeyId": "Api Key Id",
    "offset": "Offset",
    "limit": "Limit",
    "tool": "Tool"
  },
  "media": {
    "title": "Playground de Mídia",
    "subtitle": "Gere imagens, vídeos e música",
    "model": "Modelo",
    "prompt": "Prompt",
    "generate": "Gerar",
    "generating": "Gerando...",
    "loadingModels": "Carregando modelos disponíveis...",
    "noModels": "Nenhum modelo disponível. Configure provedores com suporte a mídia primeiro.",
    "error": "Falha na Geração",
    "result": "Resultado",
    "imageDescription": "Gere imagens a partir de prompts de texto usando OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI e mais.",
    "videoDescription": "Crie vídeos com AnimateDiff, Stable Video Diffusion via ComfyUI ou SD WebUI.",
    "musicDescription": "Componha músicas usando Stable Audio Open ou MusicGen via ComfyUI.",
    "kinds": {
      "embedding": "Embedding",
      "image": "Imagem",
      "imageToText": "Imagem para Texto",
      "tts": "Texto para Fala",
      "stt": "Fala para Texto",
      "webSearch": "Busca Web",
      "webFetch": "Web Fetch",
      "video": "Vídeo",
      "music": "Música"
    },
    "noProviders": "Nenhum provedor configurado para este tipo.",
    "addConnection": "Adicionar Conexão",
    "backToProviders": "Voltar para Provedores",
    "connections": "{count} Conexões",
    "noConnections": "Nenhuma conexão ainda — adicione uma na página do provedor.",
    "loading": "Carregando..."
  },
  "memory": {
    "a": "A",
    "actions": "Ações",
    "addMemory": "Adicionar Memória",
    "allTypes": "Todos os Tipos",
    "cancel": "Cancelar",
    "checkHealth": "Verifique a saúde",
    "checkingHealth": "Verificando…",
    "compactOld": "Compactar antigas",
    "concept": {
      "title": "Memória Conversacional",
      "description": "O OmniRoute aprende com cada conversa, lembrando de fatos, episódios, procedimentos e conceitos semânticos que tornam as respostas mais precisas e contextualizadas.",
      "howWorksToggle": "Como funciona",
      "howWorksContent": "1. Extração automática: ao final de cada resposta, fatos e episódios são detectados e salvos automaticamente.\n2. Recuperação: antes de cada resposta, as memórias mais relevantes são buscadas por FTS5 (exato), vetor (semântico) ou RRF híbrido.\n3. Injeção: as memórias relevantes são injetadas no contexto do assistente para melhorar a qualidade da resposta.\n4. Gestão: use esta página para visualizar, editar, exportar e compactar memórias antigas."
    },
    "content": "Conteúdo",
    "contentPlaceholder": "Valor ou conteúdo JSON para lembrar",
    "created": "Criado",
    "delete": "Delete",
    "deleteConfirmDesc": "Esta ação não pode ser desfeita. A memória será removida permanentemente.",
    "deleteConfirmTitle": "Excluir memória?",
    "description": "Visualize e gerencie entradas de memória armazenadas",
    "editMemory": "Editar memória",
    "editModal": {
      "title": "Editar Memória",
      "metadataLabel": "Metadados (JSON)",
      "metadataInvalid": "JSON inválido",
      "saveFailed": "Falha ao salvar memória"
    },
    "embedding": {
      "autoLabel": "Automático",
      "autoDesc": "Usa o melhor disponível: provider remoto > static > transformers",
      "remoteLabel": "Provider remoto",
      "remoteDesc": "Usa embedding via API de um provider configurado (requer chave)",
      "staticLabel": "Static local (potion)",
      "staticDesc": "Embedding local sem WASM, sem dependências externas",
      "transformersLabel": "Transformers.js (MiniLM)",
      "transformersDesc": "Embedding local via @huggingface/transformers (~400MB RAM)",
      "providerModelLabel": "Provider / Modelo",
      "noRemoteProviders": "Nenhum provider com chave configurada",
      "selectProviderModel": "Selecione um modelo",
      "staticEnabledLabel": "Habilitar Static Potion",
      "staticEnabledDesc": "Baixa e usa o modelo potion-base-8M localmente",
      "transformersEnabledLabel": "Habilitar Transformers.js",
      "transformersEnabledDesc": "Opt-in para MiniLM local (~400MB RAM, cold start ~3s)",
      "transformersWarning": "Requer ~400MB de RAM e ~3s de cold start na primeira query semântica."
    },
    "emptyState": {
      "title": "Nenhuma memória ainda",
      "description": "As memórias são criadas automaticamente das conversas. Você também pode adicionar manualmente usando o botão acima."
    },
    "engine": {
      "statusTitle": "Status do Engine",
      "embeddingTitle": "Fonte de Embedding",
      "rerankTitle": "Rerank (opcional)",
      "reindexNow": "Reindexar agora",
      "reindexStarted": "Reindexação iniciada ({pending} pendentes)",
      "reindexFailed": "Falha ao iniciar reindexação",
      "keywordLabel": "Keyword (FTS5)",
      "keywordReason": "Busca por palavras-chave sempre disponível",
      "embeddingLabel": "Embedding",
      "vectorStoreLabel": "Vector Store",
      "qdrantLabel": "Qdrant",
      "rerankLabel": "Rerank",
      "qdrantDisabled": "Desabilitado",
      "qdrantOk": "Saudável ({latencyMs}ms)",
      "qdrantError": "Erro de conexão",
      "needsReindex": "{count} memória(s) precisam de reindexação",
      "configureCta": "Configurar",
      "vectorStoreInstallHint": "Para ativar a busca vetorial: npm install sqlite-vec (requer Node.js nativo, não WASM) e reinicie."
    },
    "episodic": "Episódica",
    "export": "Exportar",
    "factual": "Factual",
    "healthUnknown": "Saúde desconhecida",
    "hitRate": "Taxa de Acerto",
    "import": "Importar",
    "importError": "Erro ao importar arquivo",
    "importResult": "{imported} importadas, {skipped} ignoradas",
    "key": "Chave",
    "keyPlaceholder": "por exemplo usuário.preferências.tema",
    "loading": "Carregando memórias...",
    "memories": "Memórias",
    "next": "Próximo",
    "noMemories": "Nenhuma memória encontrada",
    "pageInfo": "Página {page} de {totalPages} ({total} total)",
    "pipelineError": "Erro de pipeline",
    "pipelineOk": "Pipeline OK ({latencyMs}ms)",
    "playground": {
      "infoTitle": "Memory Playground",
      "infoDesc": "Simule o que seria recuperado para uma determinada query. Nenhuma memória é modificada — apenas visualização.",
      "queryLabel": "Query de teste",
      "queryPlaceholder": "Digite uma pergunta ou frase de teste...",
      "strategyLabel": "Estratégia",
      "strategyExact": "Exato (FTS5)",
      "strategySemantic": "Semântico (vetor)",
      "strategyHybrid": "Híbrido (RRF)",
      "budgetLabel": "Budget (tokens)",
      "simulate": "Simular",
      "resultsTitle": "{count} resultado(s)",
      "resolutionTitle": "Resolução de busca",
      "resolutionEmbedding": "Embedding",
      "resolutionStore": "Vector store",
      "resolutionStrategy": "Estratégia usada",
      "rerankApplied": "Rerank aplicado",
      "fallback": "Fallback",
      "noResults": "Nenhuma memória encontrada para esta query.",
      "tokensUsed": "tokens usados",
      "none": "nenhum",
      "errorFetch": "Falha ao buscar preview"
    },
    "previous": "Anterior",
    "procedural": "Procedural",
    "qdrant": {
      "title": "Qdrant (Vector Store Tier 2)",
      "description": "Integração opcional com Qdrant para busca semântica escalável",
      "enableLabel": "Habilitar Qdrant",
      "enableDesc": "Quando habilitado, Qdrant é usado como vector store principal",
      "testConnection": "Testar conexão",
      "testing": "Testando...",
      "statusActive": "Ativo",
      "statusError": "Erro",
      "statusDisabled": "Desabilitado",
      "healthOk": "Conexão OK ({latencyMs}ms)",
      "healthError": "Erro de conexão",
      "saved": "Configurações salvas",
      "saveError": "Falha ao salvar",
      "portLabel": "Porta",
      "embeddingModelLabel": "Modelo de Embedding",
      "optional": "opcional",
      "apiKeyKeepPlaceholder": "Deixe em branco para manter a chave atual",
      "apiKeyOptional": "Deixe em branco se não usar autenticação",
      "removeApiKey": "Remover",
      "quickSelectModel": "Seleção rápida",
      "searchTestTitle": "Teste de busca semântica",
      "searchPlaceholder": "Digite uma query de teste...",
      "searching": "Buscando...",
      "search": "Buscar",
      "cleanupTitle": "Limpeza de pontos antigos",
      "cleanupDesc": "Remove pontos Qdrant de memórias expiradas (período de retenção).",
      "cleaning": "Limpando...",
      "cleanNow": "Limpar agora",
      "cleanupSuccess": "{count} ponto(s) removido(s)",
      "cleanupFailed": "Falha ao executar limpeza"
    },
    "rerank": {
      "enableLabel": "Habilitar Rerank",
      "enableDesc": "Reordena os resultados com um modelo de reranking após a busca",
      "warning": "Rerank adiciona +200-500ms de latência e custo adicional por request. Use com moderação.",
      "providerModelLabel": "Provider / Modelo de Rerank",
      "noProviderWithKey": "Nenhum provider com chave configurada. Configure um provider para usar rerank.",
      "selectProviderModel": "Selecione um provider/modelo"
    },
    "save": "Salvar",
    "saving": "Salvando...",
    "search": "Buscar memórias...",
    "semantic": "Semântica",
    "summarize": {
      "title": "Compactar memórias antigas",
      "noCandidates": "Nenhuma memória elegível para compactação (critério: >30 dias).",
      "candidatesDesc": "{count} memórias serão compactadas em summaries. Esta ação não pode ser desfeita.",
      "confirm": "Compactar agora"
    },
    "tabs": {
      "memories": "Memórias",
      "playground": "Playground",
      "engine": "Engine"
    },
    "title": "Gerenciamento de Memória",
    "tokensUsed": "Tokens Usados",
    "tooltip": {
      "totalEntries": "Total de memórias armazenadas para esta chave de API",
      "tokensUsed": "Total de tokens estimados ocupados pelas memórias ativas",
      "hitRate": "Taxa de cache de leitura por ID (não é precisão semântica)",
      "factual": "Fatos objetivos e permanentes do contexto do usuário",
      "episodic": "Eventos e experiências do histórico da conversa",
      "procedural": "Procedimentos, fluxos e instruções que o assistente deve seguir",
      "semantic": "Conceitos, preferências e conhecimento de domínio"
    },
    "totalEntries": "Total de Entradas",
    "type": "Tipo",
    "memoryEnabled": "Memória ativada"
  },
  "miniPlayground": {
    "endpoint": "Endpoint",
    "apiKey": "Chave API",
    "model": "Modelo",
    "voice": "Voz",
    "speed": "Velocidade",
    "input": "Entrada",
    "url": "URL",
    "format": "Formato",
    "depth": "Profundidade",
    "copyCurl": "Copiar cURL",
    "copied": "Copiado!",
    "run": "Executar",
    "running": "Executando...",
    "response": "Resposta",
    "tunnel": "Tunnel",
    "send": "Enviar",
    "selectKey": "Selecionar chave",
    "testLabel": "Testar",
    "expandTest": "Expandir teste",
    "collapseTest": "Recolher teste",
    "revealKey": "Revelar chave",
    "hideKey": "Ocultar chave",
    "download": "Baixar",
    "play": "Reproduzir",
    "query": "Consulta",
    "numResults": "Máx. resultados",
    "prompt": "Prompt",
    "size": "Tamanho",
    "duration": "Duração",
    "question": "Pergunta",
    "audioFile": "Arquivo de áudio",
    "noKeysFound": "Nenhuma chave API encontrada. Adicione uma na seção Chaves.",
    "exampleLabel": "Exemplo",
    "latency": "{ms}ms",
    "statsLine": "{ms}ms · {tokensIn} entrada / {tokensOut} saída tokens"
  },
  "mitm": {
    "title": "Proxy MITM",
    "description": "Proxy transparente para interceptar e rotear solicitações de clientes.",
    "enable": "Habilitar proxy MITM",
    "enableDesc": "Inicie ou interrompa o processo de interceptação local e substituição de DNS.",
    "status": "Estado",
    "running": "Correndo",
    "stopped": "Parado",
    "start": "Começar",
    "stop": "Pare",
    "refresh": "Atualizar",
    "port": "Porta proxy",
    "apiKey": "Chave de API do roteador",
    "apiKeyPlaceholder": "Opcional; recorre a uma chave local",
    "sudoPassword": "Senha Sudo",
    "cachedPassword": "Armazenado em cache para este processo",
    "saveSettings": "Salvar configurações",
    "settingsSaved": "Configurações MITM salvas.",
    "startedSuccess": "Proxy MITM iniciado.",
    "stoppedSuccess": "O proxy MITM parou.",
    "saveFailed": "Falha ao atualizar as configurações do MITM.",
    "loadFailed": "Falha ao carregar as configurações do MITM.",
    "invalidPort": "A interceptação MITM transparente atualmente requer a porta 443.",
    "certificate": "Certificado CA",
    "certificateReady": "O certificado está disponível para instalação confiável do cliente.",
    "certificateMissing": "O certificado ainda não foi gerado.",
    "available": "Disponível",
    "missing": "Desaparecido",
    "downloadCert": "Baixar certificado CA",
    "regenerateCert": "Regenerar certificado",
    "regenerateConfirm": "Isso invalidará a confiança existente do cliente. Continuar?",
    "regenerateSuccess": "Certificado MITM regenerado.",
    "regenerateFailed": "Falha ao regenerar o certificado MITM.",
    "targetRoutes": "Rotas alvo",
    "interceptedRequests": "Solicitações interceptadas",
    "activeConnections": "Conexões Ativas",
    "dnsConfigured": "DNS configurado",
    "pid": "PID",
    "lastIntercept": "Última interceptação",
    "target": "Alvo",
    "host": "Anfitrião",
    "localPort": "Porto local",
    "endpoints": "Pontos finais",
    "enabled": "Habilitado",
    "configured": "Configurado",
    "yes": "Sim",
    "no": "Não",
    "noTargets": "Nenhuma rota de destino configurada."
  },
  "modals": {
    "waitingAuth": "Aguardando Autorização",
    "verificationUrl": "URL de Verificação",
    "yourCode": "Seu Código",
    "remoteAccess": "Acesso remoto:",
    "connectedSuccess": "Conectado com Sucesso!",
    "connectionFailed": "Falha na Conexão",
    "chooseAuthMethod": "Escolha seu método de autenticação:",
    "awsBuilderId": "AWS Builder ID",
    "awsIamIdentity": "AWS IAM Identity Center",
    "googleAccount": "Conta Google",
    "githubAccount": "Conta GitHub",
    "importToken": "Importar Token",
    "pasteToken": "Cole o refresh token do Kiro IDE.",
    "awsRegion": "Região AWS",
    "autoDetecting": "Detectando tokens automaticamente...",
    "readingFromCache": "Lendo do cache AWS SSO",
    "readingFromCursor": "Lendo do banco de dados do Cursor IDE",
    "initializing": "Inicializando...",
    "pricingConfig": "Configuração de Preços",
    "loadingPricing": "Carregando dados de preços...",
    "pricingRatesFormat": "Formato de Taxas de Preço",
    "noPricingData": "Nenhum dado de preço disponível",
    "noModelsFound": "Nenhum modelo encontrado"
  },
  "oauthModal": {
    "title": "Conectar {providerName}",
    "waiting": "Aguardando autorização",
    "completeAuthInPopup": "Autorização completa no pop-up.",
    "popupClosedHint": "Se o pop-up for fechado sem redirecionamento de volta (por exemplo, Qoder), esta caixa de diálogo mudará automaticamente para o modo de entrada manual de URL.",
    "popupBlocked": "Pop-up bloqueado? Insira o URL manualmente",
    "deviceCodeVisitUrl": "Visite o URL abaixo e insira o código:",
    "deviceCodeVerificationUrl": "URL de verificação",
    "deviceCodeYourCode": "Seu código",
    "deviceCodeWaiting": "Aguardando autorização...",
    "googleOAuthWarning": "Acesso remoto + Google OAuth: as credenciais padrão aceitam apenas redirecionamentos para <code>localhost</code>. Após a autorização, seu navegador tentará abrir <code>localhost</code> — copie o URL completo e cole-o abaixo. Para uso totalmente remoto sem esta etapa manual, <a>configure suas próprias credenciais OAuth</a>.",
    "remoteAccessInfo": "Acesso remoto: Como você está acessando o OmniRoute remotamente, após a autorização você verá uma página de erro (localhost não encontrado). Isso é normal – basta copiar o URL completo da barra de endereço do seu navegador e colá-lo abaixo.",
    "step1OpenUrl": "Etapa 1: abra este URL em seu navegador",
    "copy": "Copiar",
    "step2PasteCallback": "Etapa 2: cole o URL de retorno de chamada ou o código de autorização aqui",
    "step2Hint": "Após a autorização, cole o URL de retorno de chamada completo. Para Claude Code e Cline, você também pode colar o código de autenticação diretamente, por exemplo. <code>código#estado</code>.",
    "connect": "Conectar",
    "cancel": "Cancelar",
    "success": "Conexão bem-sucedida!",
    "successMessage": "Sua conta {providerName} foi conectada.",
    "done": "Concluído",
    "error": "Falha na conexão",
    "tryAgain": "Tente novamente"
  },
  "onboarding": {
    "welcome": "Bem-vindo",
    "security": "Segurança",
    "test": "Teste",
    "ready": "Pronto!",
    "setPassword": "Definir Senha",
    "addProvider": "Adicione seu primeiro provedor",
    "getStarted": "Começar",
    "skip": "Pular",
    "skipWizard": "Pular assistente completamente",
    "skipPassword": "Pular configuração de senha",
    "skipAndContinue": "Pular e Continuar",
    "passwordLabel": "Senha",
    "confirmPassword": "Confirmar Senha",
    "enterPassword": "Digite a senha",
    "confirmPasswordPlaceholder": "Confirme a senha",
    "passwordsMismatch": "As senhas não coincidem",
    "setupComplete": "Configuração Concluída!",
    "goToDashboard": "Ir para o Painel →",
    "welcomeDesc": "OmniRoute é seu proxy local de API de IA. Ele roteia requisições para múltiplos provedores de IA com balanceamento de carga, failover e rastreamento de uso.",
    "multiProvider": "Multi-Provedor",
    "usageTracking": "Rastreamento de Uso",
    "securityDesc": "Defina uma senha para proteger seu painel, ou pule por enquanto.",
    "providerDesc": "Conecte seu primeiro provedor de IA. Você pode adicionar mais depois.",
    "apiKeyRequired": "Chave de API (obrigatório)",
    "customUrlOptional": "URL personalizada (opcional)",
    "testDesc": "Vamos verificar se a conexão com seu provedor funciona.",
    "runTest": "Executar Teste de Conexão",
    "testingConnection": "Testando conexão...",
    "connectionSuccessful": "Conexão bem-sucedida! Seu provedor está pronto.",
    "noProviderFound": "Nenhum provedor encontrado. Você pode adicionar um pelo painel depois.",
    "testFailed": "Teste falhou, mas você pode configurar isso depois.",
    "couldNotTest": "Não foi possível testar agora. Você pode testar pelo painel.",
    "doneDesc": "Tudo pronto! Sua instância OmniRoute está configurada e pronta para rotear requisições de IA.",
    "yourEndpoint": "Seu endpoint:",
    "continue": "Continuar",
    "retry": "Tentar Novamente",
    "failedSetPassword": "Falha ao definir senha. Tente novamente.",
    "failedAddProvider": "Falha ao adicionar provedor. Tente novamente.",
    "connectionError": "Erro de conexão. Tente novamente.",
    "provider": "Provedor",
    "apiKeyHelp": "Uma chave API é uma senha para serviços de IA. Obtenha um no site do seu provedor (por exemplo, platform.openai.com, console.anthropic.com).",
    "tier": {
      "subtitle": "OmniRoute organiza os provedores em três níveis para que o roteamento prefira primeiro o caminho mais confiável e de menor custo.",
      "tier1": {
        "label": "Clientes premium",
        "description": "CLIs de primeira classe com fluxos de autenticação nativos e modelos de raciocínio."
      },
      "tier2": {
        "label": "Custo otimizado",
        "description": "Provedores baratos e de alto rendimento usados para o tráfego diário."
      },
      "tier3": {
        "label": "Reserva e especialidade",
        "description": "Endpoints hospedados localmente ou especializados usados como substitutos."
      },
      "configure": "Configurar provedores"
    },
    "tierFlowDiagramAlt": "Diagrama de fallback de 3 camadas do OmniRoute",
    "apiKeyMgmt": "Ger. de Chaves API"
  },
  "playground": {
    "title": "Title",
    "description": "Description",
    "endpoint": "Endpoint",
    "provider": "Provider",
    "model": "Model",
    "accountKey": "Account Key",
    "autoAccounts": "Automático ({count} contas)",
    "noAccounts": "Sem contas",
    "send": "Enviar",
    "cancel": "Cancelar",
    "audioFile": "Arquivo de áudio",
    "attachImages": "Anexar imagens",
    "multipartFormData": "Multipart Form Data",
    "upToImages": "Até {count} imagens",
    "selectAudioFile": "Selecionar arquivo de áudio",
    "clearAll": "Limpar tudo",
    "request": "Requisição",
    "response": "Resposta",
    "transcription": "Transcrição",
    "copy": "Copiar",
    "resetToDefault": "Restaurar padrão",
    "downloadAudio": "Baixar áudio",
    "copyText": "Copiar texto",
    "transcriptionHint": "Dica de transcrição",
    "imagesGenerated": "{count} imagens geradas",
    "generatedImage": "Imagem gerada {index}",
    "save": "Salvar",
    "endpointOptions": {
      "chat": "Chat",
      "responses": "Responses",
      "images": "Images",
      "embeddings": "Embeddings",
      "speech": "Speech",
      "transcription": "Transcription",
      "video": "Video",
      "music": "Music",
      "rerank": "Rerank",
      "search": "Search"
    },
    "conversationalChat": "Bate-papo conversacional",
    "clearChat": "Limpar bate-papo",
    "typeMessagePlaceholder": "Digite uma mensagem... (Shift+Enter para nova linha)",
    "tabChat": "Chat",
    "tabCompare": "Comparar",
    "tabApi": "API",
    "tabBuild": "Construir",
    "configPane": "Config",
    "systemPrompt": "System prompt",
    "systemPromptPlaceholder": "Você é um assistente útil.",
    "modelPlaceholder": "ex.: openai/gpt-4o",
    "endpointLabel": "Endpoint",
    "parametersLabel": "Parâmetros",
    "collapseConfig": "Recolher painel de config",
    "expandConfig": "Expandir painel de config",
    "temperature": "Temperatura",
    "maxTokens": "Máx. tokens",
    "topP": "Top-p",
    "presencePenalty": "Penalidade de presença",
    "frequencyPenalty": "Penalidade de frequência",
    "seedPlaceholder": "Aleatório (deixar vazio)",
    "presetsLabel": "Presets",
    "loadPreset": "Carregar preset",
    "savePreset": "Salvar preset",
    "noPresets": "Nenhum preset",
    "presetNamePlaceholder": "Nome do preset",
    "savingPreset": "Salvando…",
    "nameRequired": "Nome é obrigatório",
    "failedToSavePreset": "Falha ao salvar preset",
    "improvePrompt": "Melhorar prompt",
    "improvingPrompt": "Melhorando…",
    "improvePromptTitle": "Melhorar seu prompt com IA",
    "setModelFirst": "Defina um modelo primeiro",
    "improveQuotaWarning": "Isso consumirá cota do modelo configurado no painel Config.",
    "improveConfirm": "Melhorar",
    "exportCode": "Exportar código",
    "exportCodeTitle": "Exportar Código",
    "exportShort": "Exportar",
    "noStateToExport": "Nenhum estado de playground disponível para exportar.",
    "closeExportModal": "Fechar modal de exportação",
    "close": "Fechar",
    "exportRealKeyWarning": "Aviso de segurança: exportação bloqueada — uma API key real foi detectada na saída. Por favor, redefina sua API key e tente novamente.",
    "placeholderHintPrefix": "Substitua",
    "placeholderHintSuffix": "pela sua API key real, ou defina como variável de ambiente.",
    "copyLangCode": "Copiar código {language}",
    "loadingPresets": "Carregando…",
    "loadPresetPlaceholder": "Carregar preset…",
    "copyCode": "Copiar",
    "copiedCode": "Copiado!",
    "addModel": "+ Adicionar modelo",
    "runAll": "Executar todos",
    "cancelAll": "Cancelar todos",
    "maxColumnsReached": "Máximo de {max} colunas",
    "modelPlaceholderCompare": "Modelo (Cmd+K)…",
    "ttft": "TTFT",
    "tps": "TPS",
    "metricsDisclaimer": "estimativa do cliente",
    "tokensLabel": "Tokens",
    "costLabel": "Custo",
    "costEstimated": "(estimado)",
    "toolsLabel": "Ferramentas",
    "addTool": "Adicionar ferramenta",
    "toolNamePlaceholder": "Nome da função",
    "toolDescPlaceholder": "Descrição (opcional)",
    "toolParamsInvalid": "Parâmetros devem ser JSON válido",
    "structuredOutputLabel": "Saída Estruturada",
    "enableJsonMode": "Ativar modo JSON",
    "disableJsonMode": "Desativar modo JSON",
    "invalidJson": "JSON inválido",
    "running": "Executando…",
    "runLabel": "Executar",
    "enterToolResult": "Insira o resultado da ferramenta…",
    "build": {
      "step1Label": "O que testar?",
      "step2Label": "Configurar",
      "step3Label": "Rodar",
      "step1Title": "O que você quer testar?",
      "step1Subtitle": "Escolha a funcionalidade que deseja explorar nesta sessão.",
      "step2Title": "Configurar",
      "step2Subtitle": "Configure as ferramentas ou o esquema JSON que serão usados na requisição.",
      "step3Title": "Rodar",
      "modeToolsTitle": "Ferramentas",
      "modeToolsDesc": "Teste function calling — defina ferramentas e veja como o modelo as invoca.",
      "modeJsonTitle": "JSON",
      "modeJsonDesc": "Teste saída estruturada — restrinja a resposta a um esquema JSON.",
      "modeBothTitle": "Ferramentas + JSON",
      "modeBothDesc": "Combine function calling e saída estruturada em uma única requisição.",
      "backButton": "Voltar",
      "nextButton": "Próximo",
      "runButton": "Executar",
      "promptPlaceholder": "Digite sua mensagem… (Enter para enviar, Shift+Enter para nova linha)"
    }
  },
  "pricingModal": {
    "title": "Configuração de preços",
    "loading": "Carregando dados de preços...",
    "pricingRatesFormat": "Formato de taxas de preços",
    "ratesDescription": "Todas as taxas estão em <strong>dólares por milhão de tokens</strong> (US$/1 milhão de tokens). Exemplo: taxa de entrada de 2,50 significa US$ 2,50 por 1.000.000 de tokens de entrada.",
    "model": "Modelo",
    "input": "Entrada",
    "output": "Saída",
    "cached": "Em cache",
    "reasoning": "Raciocínio",
    "cacheCreation": "Criação de Cache",
    "noPricingData": "Não há dados de preços disponíveis",
    "resetToDefaults": "Redefinir para os padrões",
    "cancel": "Cancelar",
    "saving": "Salvando...",
    "saveChanges": "Salvar alterações",
    "resetConfirm": "Redefinir todos os preços para os padrões? Isto não pode ser desfeito.",
    "errorSaveFailed": "Falha ao salvar o preço",
    "errorResetFailed": "Falha ao redefinir o preço"
  },
  "providers": {
    "title": "Provedores",
    "allProviders": "Todos os provedores",
    "audioProviders": "Provedores de áudio",
    "showFreeOnly": "Somente grátis",
    "addProvider": "Adicionar Provedor",
    "addFirstProvider": "Adicione seu primeiro provedor",
    "addFirstProviderDesc": "Conecte um provedor de IA para começar a rotear solicitações por meio do OmniRoute. Você pode usar provedores gratuitos, chaves de API ou contas OAuth.",
    "learnMore": "Saiba mais",
    "editProvider": "Editar Provedor",
    "deleteProvider": "Excluir Provedor",
    "noProviders": "Nenhum provedor configurado",
    "modelAvailability": "Disponibilidade de Modelos",
    "accounts": "Contas",
    "newAccount": "Nova Conta",
    "deleteConfirm": "Tem certeza que deseja excluir este provedor?",
    "testing": "Testando...",
    "testConnection": "Testar conexão",
    "testSuccess": "Conexão bem-sucedida",
    "testFailed": "Falha na conexão",
    "available": "Disponível",
    "cooldown": "Cooldown",
    "unavailable": "Indisponível",
    "unknown": "Desconhecido",
    "oauthLabel": "OAuth",
    "compatibleLabel": "Compatível",
    "chat": "Chat",
    "responses": "Responses",
    "messages": "Mensagens",
    "oauthProviders": "Provedores OAuth",
    "freeProviders": "Provedores Gratuitos",
    "apiKeyProviders": "Provedores por Chave de API",
    "compatibleProviders": "Provedores Compatíveis por Chave de API",
    "testAll": "Testar Todos",
    "freeBadge": "Grátis",
    "distributeProxies": "Distribuir proxies",
    "distributing": "Distribuindo...",
    "selectedCount": "{count, plural, one {# selecionada} other {# selecionadas}}",
    "accountsCount": "{count, plural, one {# conta} other {# contas}}",
    "testAllOAuth": "Testar todas as conexões OAuth",
    "testAllFree": "Testar todas as conexões gratuitas",
    "testAllApiKey": "Testar todas as conexões por chave de API",
    "testAllCompatible": "Testar todas as conexões compatíveis",
    "connected": "{count} Conectado(s)",
    "errorCount": "{count} Erro ({code})",
    "errorCountNoCode": "{count} Erro",
    "warningCount": "{count} Aviso",
    "noConnections": "Sem conexões",
    "expiredBadge": "Expired",
    "expiringSoonBadge": "Expiring Soon",
    "freeTier": "Plano gratuito",
    "freeTierAvailable": "Nível gratuito disponível",
    "hasFreeTooltip": "Tier gratuito disponível",
    "noAuthLabel": "Sem Auth",
    "noAuthProviders": "Provedores Sem Auth",
    "upstreamProxyLabel": "Upstream Proxy",
    "freeAggregated": "Todos os providers com tier gratuito (também aparecem na categoria nativa)",
    "deprecated": "Obsoleto",
    "deprecatedProvider": "Este provedor foi descontinuado",
    "riskNotice": {
      "title": "Antes de continuar",
      "tooltip": "Provider com restrições de uso — clique para detalhes",
      "oauth": "Este provider usa sua sessão/OAuth oficial do produto, que não autoriza uso em proxy/router.\n\nNão recomendamos uso intensivo em agentes autônomos (estilo OpenCloud, multi-passos longos, batches grandes) — o upstream pode reagir restringindo ou banindo a conta.\n\nUse por sua conta e risco.",
      "webCookie": "Este provider autentica através dos cookies da sua sessão web. O serviço upstream pode invalidar a sessão a qualquer momento, exigindo re-login. Não recomendado para operações longas e não-supervisionadas.\n\nUse por sua conta e risco.",
      "deprecated": "Este provider foi descontinuado pelo upstream e pode parar de funcionar sem aviso. Conexões existentes podem continuar funcionando até o upstream remover completamente o acesso. Considere alternativas.",
      "dontShowAgain": "Não mostrar de novo para este provider",
      "understand": "Entendi, continuar",
      "cancel": "Cancelar"
    },
    "disabled": "Desativado",
    "enableProvider": "Ativar provedor",
    "disableProvider": "Desativar provedor",
    "testResults": "Resultados do Teste",
    "noCompatibleYet": "Nenhum provedor compatível adicionado",
    "compatibleHint": "Use os botões acima para adicionar endpoints compatíveis com OpenAI ou Anthropic",
    "addOpenAICompatible": "Adicionar Compatível OpenAI",
    "addAnthropicCompatible": "Adicionar Compatível Anthropic",
    "addNewProvider": "Adicionar Novo Provedor",
    "backToProviders": "Voltar para Provedores",
    "configureNewProvider": "Configure um novo provedor de IA para usar com suas aplicações.",
    "providerLabel": "Provedor",
    "selectProvider": "Selecione um provedor",
    "selectedProvider": "Provedor selecionado",
    "authMethod": "Método de Autenticação",
    "apiKeyLabel": "Chave de API",
    "apiKeyRequired": "Chave de API é obrigatória",
    "selectProviderRequired": "Selecione um provedor",
    "enterApiKey": "Digite sua chave de API",
    "apiKeySecure": "Sua chave de API será criptografada e armazenada com segurança.",
    "oauth2Connect": "Conectar com OAuth2",
    "oauth2Label": "OAuth2",
    "oauth2Desc": "Conecte sua conta usando autenticação OAuth2.",
    "displayName": "Nome de Exibição",
    "displayNamePlaceholder": "ex.: API de Produção, Ambiente Dev",
    "displayNameHint": "Opcional. Um nome amigável para identificar esta configuração.",
    "active": "Ativo",
    "activeDescription": "Habilitar este provedor para uso em suas aplicações",
    "cancel": "Cancelar",
    "createProvider": "Criar Provedor",
    "failedCreate": "Falha ao criar provedor",
    "errorOccurred": "Ocorreu um erro. Tente novamente.",
    "modelStatus": "Status dos Modelos",
    "showConfiguredOnly": "Configured only",
    "allModelsOperational": "Todos os modelos operacionais",
    "modelsWithIssues": "{count} modelo(s) com problemas",
    "allModelsNormal": "Todos os modelos estão respondendo normalmente.",
    "cooldownCleared": "Cooldown limpo para {model}",
    "failedClearCooldown": "Falha ao limpar cooldown",
    "loadingAvailability": "Carregando disponibilidade dos modelos...",
    "clearCooldown": "Limpar",
    "clearing": "Limpando...",
    "until": "Até {time}",
    "providerTestFailed": "Teste de provedor falhou",
    "providerTestTimeout": "Provider test timed out — too many connections to test at once",
    "modeTest": "Teste {mode}",
    "passedCount": "{count} passaram",
    "failedCount": "{count} falharam",
    "testedCount": "{count} testados",
    "millisecondsAbbr": "{value}ms",
    "okShort": "OK",
    "errorShort": "ERRO",
    "noActiveConnectionsInGroup": "Nenhuma conexão ativa encontrada para este grupo.",
    "allTestsPassed": "Todos os {total} testes passaram",
    "testSummary": "{passed}/{total} passaram, {failed} falharam",
    "nameLabel": "Nome",
    "prefixLabel": "Prefixo",
    "baseUrlLabel": "URL Base",
    "apiTypeLabel": "Tipo de API",
    "prefixHint": "Obrigatório. Prefixo único para nomes de modelos.",
    "nameHint": "Obrigatório. Um rótulo amigável para este nó.",
    "baseUrlHint": "Obrigatório. URL base da API do provedor.",
    "anthropicPrefixPlaceholder": "ac-prod",
    "openaiPrefixPlaceholder": "oc-prod",
    "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1",
    "openaiBaseUrlPlaceholder": "https://api.openai.com/v1",
    "validateConnection": "Validar Conexão",
    "validating": "Validando...",
    "connectionValid": "Conexão válida!",
    "connectionFailed": "Falha na conexão. Verifique URL e chave.",
    "testKeyLabel": "Chave de API de Teste",
    "testKeyPlaceholder": "sk-... (apenas para validação)",
    "providerNotFound": "Provedor não encontrado",
    "deleteConnectionConfirm": "Excluir esta conexão?",
    "batchDeleteSelected": "Delete Selected ({count})",
    "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.",
    "batchDeleteSuccess": "Deleted {count} connection(s)",
    "batchActivateSelected": "Ativar",
    "batchDeactivateSelected": "Desativar",
    "batchRetestSelected": "Retestar",
    "batchActivateSuccess": "{count} conexão(ões) ativada(s)",
    "batchDeactivateSuccess": "{count} conexão(ões) desativada(s)",
    "failedSetAlias": "Falha ao definir alias",
    "failedSaveConnection": "Falha ao salvar conexão",
    "failedSaveConnectionRetry": "Falha ao salvar conexão. Tente novamente.",
    "failedRetestConnection": "Falha ao retestar conexão",
    "deleteCompatibleNodeConfirm": "Excluir este nó Compatível com {type}?",
    "anthropicCompatibleDetails": "Detalhes Compatível Anthropic",
    "openaiCompatibleDetails": "Detalhes Compatível OpenAI",
    "messagesApi": "API de Mensagens",
    "responsesApi": "API de Respostas",
    "embeddings": "Embeddings",
    "audioTranscriptions": "Audio Transcriptions",
    "audioSpeech": "Audio Speech",
    "imagesGenerations": "Images Generations",
    "chatCompletions": "Chat Completions",
    "importingModels": "Importando...",
    "importFromModels": "Importar de /models",
    "modelsImported": "{count} models imported",
    "allModelsAlreadyImported": "Todos os modelos já foram importados",
    "noNewModelsToImport": "Nenhum modelo novo para importar — todos os modelos já estão no registro ou na lista de modelos personalizados",
    "skippingExistingModels": "Ignorando {count} modelos existentes",
    "autoSync": "Sincronização automática",
    "autoSyncTooltip": "Atualize automaticamente a lista de modelos a cada 24h (configurável via MODEL_SYNC_INTERVAL_HOURS)",
    "autoSyncEnabled": "Sincronização automática habilitada – os modelos serão atualizados periodicamente",
    "autoSyncDisabled": "Sincronização automática desativada",
    "autoSyncToggleFailed": "Falha ao alternar a sincronização automática",
    "clearAllModels": "Limpar todos os modelos",
    "clearAllModelsConfirm": "Tem certeza de que deseja remover todos os modelos deste provedor? Isto não pode ser desfeito.",
    "clearAllModelsSuccess": "Todos os modelos foram apagados",
    "clearAllModelsFailed": "Falha ao limpar modelos",
    "addConnectionToImport": "Adicione uma conexão para habilitar importação.",
    "noModelsConfigured": "Nenhum modelo configurado",
    "connectionCount": "{count} conexão(ões)",
    "fetchingModels": "Buscando modelos disponíveis...",
    "failedFetchModels": "Falha ao buscar modelos",
    "noModelsFound": "Nenhum modelo encontrado",
    "importFailed": "Falha na importação",
    "noNewModelsAdded": "Nenhum novo modelo foi adicionado.",
    "adding": "Adicionando...",
    "close": "Close",
    "importingModelsTitle": "Importando Modelos",
    "copyModel": "Copiar modelo",
    "filterModels": "Filtrar modelos...",
    "modelsActive": "ativos",
    "showModel": "Mostrar modelo",
    "hideModel": "Ocultar modelo",
    "removeModel": "Remover modelo",
    "rateLimitProtected": "Protegido",
    "rateLimitUnprotected": "Desprotegido",
    "enableRateLimitProtection": "Clique para habilitar proteção de limite de taxa",
    "disableRateLimitProtection": "Clique para desabilitar proteção de limite de taxa",
    "productionKey": "Chave de Produção",
    "enterNewApiKey": "Insira a nova chave API",
    "codexApplyModalTitle": "Inscreva-se no Codex Local",
    "codexApplyTargetLabel": "Caminho de destino",
    "codexApplyBackupLabel": "Cópias de segurança",
    "codexApplyWarning": "Isso substituirá o auth.json existente. Continuar?",
    "codexApplyConfirmCheckbox": "Confirmo que desejo substituir o auth.json existente",
    "codexApply": "Aplicar",
    "bulkTabSingle": "Solteiro",
    "bulkTabBulkAdd": "Adicionar em massa",
    "bulkAddFormatHint": "Uma chave por linha. Formato: name|apiKey ou apenas apiKey (nomeado automaticamente pelo índice).",
    "bulkValidateKeys": "Valide cada chave antes de salvar (mais lento)",
    "bulkAddAllKeys": "Adicionar todas as chaves",
    "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}",
    "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}",
    "optional": "Opcional",
    "anthropicCompatibleName": "Compatível Anthropic",
    "openaiCompatibleName": "Compatível OpenAI",
    "failedImportModels": "Falha ao importar modelos",
    "noModelsReturnedFromEndpoint": "Nenhum modelo retornado do endpoint /models.",
    "importingModelsProgress": "Importando {current} de {total} modelos...",
    "foundModelsStartingImport": "{count} modelos encontrados. Iniciando importação...",
    "importingModelById": "Importando {modelId}...",
    "importSuccessCount": "Importação concluída com sucesso: {count, plural, one {# modelo} other {# modelos}}!",
    "noNewModelsAddedExisting": "Nenhum novo modelo foi adicionado (todos já existem).",
    "importDoneCount": "✓ Concluído! {count, plural, one {# modelo importado.} other {# modelos importados.}}",
    "unexpectedErrorOccurred": "Ocorreu um erro inesperado",
    "connectionCountLabel": "{count, plural, one {# conexão} other {# conexões}}",
    "messagesPath": "messages",
    "responsesPath": "responses",
    "chatCompletionsPath": "chat/completions",
    "add": "Adicionar",
    "edit": "Editar",
    "delete": "Excluir",
    "anthropic": "Anthropic",
    "openai": "OpenAI",
    "singleConnectionPerCompatible": "Apenas uma conexão é permitida por nó compatível. Adicione outro nó se precisar de mais conexões.",
    "connections": "Conexões",
    "providerProxyTitleConfigured": "Proxy do provedor: {host}",
    "configured": "configurado",
    "providerProxyConfigureHint": "Configurar proxy para todas as conexões deste provedor",
    "providerProxy": "Proxy do Provedor",
    "proxyConfiguredBySource": "Proxy ({source}): {host}",
    "proxyOn": "Proxy ligado",
    "proxyOff": "Proxy desligado",
    "proxyEnabledTitle": "Proxy ativado para esta conta",
    "proxyDisabledTitle": "Proxy desativado para esta conta",
    "perKeyProxyOn": "Por chave",
    "perKeyProxyOff": "Por conta",
    "perKeyProxyEnabledTitle": "Distribuição de proxy por chave ativada para este provedor",
    "perKeyProxyDisabledTitle": "Distribuição de proxy por conta ativada para este provedor",
    "repairEnv": "Repair env",
    "repairEnvWorking": "Repairing...",
    "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.",
    "repairEnvSuccess": "OAuth defaults restored",
    "repairEnvFailed": "Failed to repair .env",
    "noConnectionsYet": "Ainda não há conexões",
    "addFirstConnectionHint": "Adicione sua primeira conexão para começar",
    "addConnection": "Adicionar Conexão",
    "availableModels": "Modelos Disponíveis",
    "builtInModels": "Built-in models",
    "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.",
    "pageAutoRefresh": "A página será atualizada automaticamente...",
    "statusDisabled": "desativado",
    "statusConnected": "conectado",
    "statusRuntimeIssue": "problema local",
    "statusAuthFailed": "falha de autenticação",
    "statusRateLimited": "limite de taxa atingido",
    "statusNetworkIssue": "problema de rede",
    "statusTestUnsupported": "teste não suportado",
    "statusUnavailable": "indisponível",
    "statusFailed": "falhou",
    "statusError": "erro",
    "oauthAccount": "Conta OAuth",
    "errorTypeRuntime": "Runtime local",
    "errorTypeUpstreamAuth": "Auth upstream",
    "errorTypeMissingCredential": "Credencial ausente",
    "errorTypeRefreshFailed": "Falha ao renovar",
    "errorTypeTokenExpired": "Token expirado",
    "errorTypeRateLimited": "Rate limited",
    "errorTypeUpstreamUnavailable": "Upstream indisponível",
    "errorTypeNetworkError": "Erro de rede",
    "errorTypeTestUnsupported": "Teste não suportado",
    "errorTypeUpstreamError": "Erro upstream",
    "proxySourceGlobal": "Global",
    "proxySourceProvider": "Provedor",
    "proxySourceKey": "Chave",
    "autoPriority": "Auto: {priority}",
    "proxy": "Proxy",
    "retestAuthentication": "Retestar autenticação",
    "retest": "Retestar",
    "disableConnection": "Desativar conexão",
    "enableConnection": "Ativar conexão",
    "reauthenticateConnection": "Reautenticar esta conexão",
    "proxyConfig": "Configuração de proxy",
    "aliasExistsAlert": "O alias \"{alias}\" já existe. Use um modelo diferente ou edite o alias existente.",
    "openRouterAnyModelHint": "OpenRouter suporta qualquer modelo. Adicione modelos e crie aliases para acesso rápido.",
    "modelIdFromOpenRouter": "ID do Modelo (do OpenRouter)",
    "openRouterModelPlaceholder": "anthropic/claude-3-opus",
    "customModels": "Modelos Personalizados",
    "customModelsHint": "Adicione IDs de modelo que não estão na lista padrão. Eles ficarão disponíveis para roteamento.",
    "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)",
    "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)",
    "compatAdjustmentsTitle": "Compatibility",
    "compatButtonLabel": "Compatibility",
    "compatToolIdShort": "Tool ID 9",
    "compatDeveloperShort": "Developer role",
    "compatDoNotPreserveDeveloper": "Do not preserve developer role",
    "compatBadgeNoPreserve": "No preserve",
    "compatProtocolLabel": "Client request protocol",
    "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).",
    "compatProtocolOpenAI": "OpenAI Chat Completions",
    "compatProtocolOpenAIResponses": "OpenAI Responses API",
    "compatProtocolClaude": "Anthropic Messages",
    "compatUpstreamHeadersLabel": "Extra upstream headers",
    "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.",
    "compatUpstreamHeaderName": "Header name",
    "compatUpstreamHeaderValue": "Value",
    "compatUpstreamAddRow": "Add header",
    "compatUpstreamRemoveRow": "Remove row",
    "compatBadgeUpstreamHeaders": "Headers",
    "perModelQuotaLabel": "Per Model Quota Label",
    "perModelQuotaDescription": "Per Model Quota Description",
    "perModelQuotaToggle": "Alternar cota por modelo",
    "modelId": "ID do Modelo",
    "customModelPlaceholder": "ex.: gpt-4.5-turbo",
    "loading": "Carregando...",
    "removeCustomModel": "Remover modelo personalizado",
    "noCustomModels": "Nenhum modelo personalizado adicionado ainda.",
    "allSuggestedAliasesExist": "Todos os aliases sugeridos já existem. Escolha um modelo diferente ou remova aliases conflitantes.",
    "failedSaveCustomModel": "Falha ao salvar modelo personalizado",
    "modelAddedSuccess": "Modelo {modelId} adicionado com sucesso",
    "failedAddModelTryAgain": "Falha ao adicionar modelo. Tente novamente.",
    "failedSaveImportedModel": "Falha ao salvar modelo importado no banco de modelos personalizados",
    "failedImportModelsTryAgain": "Falha ao importar modelos. Tente novamente.",
    "failedRemoveModelFromDatabase": "Falha ao remover modelo do banco de dados",
    "modelRemovedSuccess": "Modelo removido com sucesso",
    "failedDeleteModelTryAgain": "Falha ao excluir modelo. Tente novamente.",
    "compatibleModelsDescription": "Adicione modelos compatíveis com {type} manualmente ou importe-os do endpoint /models.",
    "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229",
    "openaiCompatibleModelPlaceholder": "gpt-4o",
    "apiKeyValidationFailed": "A validação da chave de API falhou. Verifique sua chave e tente novamente.",
    "addProviderApiKeyTitle": "Adicionar Chave de API de {provider}",
    "checking": "Verificando...",
    "check": "Verificar",
    "valid": "Válido",
    "invalid": "Inválido",
    "creating": "Criando...",
    "validationChecksAnthropicCompatible": "A validação verifica {provider} conferindo a chave de API.",
    "validationChecksOpenAiCompatible": "A validação verifica {provider} via /models na sua URL base.",
    "priorityLabel": "Prioridade",
    "saving": "Salvando...",
    "save": "Salvar",
    "editConnection": "Editar Conexão",
    "accountName": "Nome da conta",
    "email": "Email",
    "healthCheckMinutes": "Health Check (min)",
    "healthCheckHint": "Intervalo proativo de renovação de token. 0 = desativado.",
    "selectAllModels": "Selecionar todos",
    "deselectAllModels": "Desmarcar todos",
    "modelsActiveCount": "{active}/{total} ativos",
    "noModelsMatch": "Nenhum modelo corresponde a \"{filter}\"",
    "groupLabel": "Ambiente",
    "groupPlaceholder": "ex: eKaizen, Pessoal",
    "failedTestConnection": "Falha ao testar conexão",
    "failed": "Falhou",
    "leaveBlankKeepCurrentApiKey": "Deixe em branco para manter a chave de API atual.",
    "editCompatibleTitle": "Editar Compatível {type}",
    "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.",
    "apiKeyForCheck": "Chave de API (para verificação)",
    "compatibleProdPlaceholder": "{type} Compatível (Prod)",
    "tokenRefreshed": "Token refreshed successfully",
    "tokenRefreshFailed": "Token refresh failed",
    "applyCodexAuthLocal": "Aplicar auth",
    "exportCodexAuthFile": "Exportar auth",
    "applyClaudeAuthLocal": "Aplicar autenticação",
    "exportClaudeAuthFile": "Exportar autenticação",
    "importClaudeAuth": "Importar autenticação",
    "claudeApplyModalTitle": "Aplicar ao Código Claude Local",
    "claudeApplyTargetLabel": "Caminho de destino",
    "claudeApplyBackupLabel": "Cópias de segurança",
    "claudeApplyMcpHint": "O estado MCP OAuth existente será preservado.",
    "claudeApplyWarning": "Isso substituirá a seção claudeAiOauth existente. Continuar?",
    "claudeApplyConfirmCheckbox": "Confirmo que desejo substituir a seção claudeAiOauth existente",
    "claudeApply": "Aplicar",
    "claudeAuthAppliedLocal": "Autenticação Claude aplicada localmente",
    "claudeAuthApplyFailed": "Falha ao aplicar a autenticação Claude localmente",
    "claudeAuthExported": "Arquivo de autenticação Claude exportado",
    "claudeAuthExportFailed": "Falha ao exportar o arquivo de autenticação do Claude",
    "claudeImportModalTitle": "Importar Claude Auth",
    "claudeImportTabSingle": "Solteiro",
    "claudeImportTabBulk": "Massa",
    "claudeImportTabUpload": "Carregar arquivo",
    "claudeImportTabPaste": "Colar JSON",
    "claudeImportFileLabel": "Escolha .credenciais.json",
    "claudeImportPasteLabel": "Cole o conteúdo JSON",
    "claudeImportEmailLabel": "E-mail da conta",
    "claudeImportNameLabel": "Nome da conexão (opcional)",
    "claudeImportOverwriteLabel": "Substitua a conexão existente se a conta já existir",
    "claudeImportSubmit": "Importar",
    "claudeImportSuccess": "Conexão Claude importada com sucesso",
    "claudeImportInvalidJson": "Não foi possível analisar o arquivo como JSON",
    "claudeImportInvalidShape": "O arquivo não é um .credentials.json válido",
    "claudeImportDuplicate": "A conta já existe — ative \"Substituir existente\" para substituir",
    "claudeImportIdentityUnverified": "Bootstrap não conseguiu verificar a conta. Ative \"Substituir existente\" ou forneça um email.",
    "claudeImportFailed": "Falha ao importar autenticação Claude",
    "claudeImportBulkModeUpload": "Carregar arquivos",
    "claudeImportBulkModePaste": "Colar matriz JSON",
    "claudeImportBulkModeZip": "Carregar ZIP",
    "claudeImportBulkUploadHint": "Solte ou selecione até 50 arquivos .credentials.json (256 KB cada, 10 MB no total).",
    "claudeImportBulkPasteHint": "Cole uma matriz de objetos: [{ json, name?, email? }, ...]",
    "claudeImportBulkZipHint": "ZIP contendo entradas .json. Máximo de 50 entradas, 10 MB descompactados.",
    "claudeImportBulkSubmit": "Importar tudo",
    "claudeImportBulkSuccess": "Conexões {count} Claude importadas",
    "claudeImportBulkFailed": "Algumas entradas não foram importadas",
    "claudeImportBulkZipExtracting": "Extraindo ZIP…",
    "claudeImportBulkZipError": "Falha ao extrair ZIP",
    "applyGeminiAuthLocal": "Aplicar autenticação",
    "exportGeminiAuthFile": "Exportar autenticação",
    "importGeminiAuth": "Importar autenticação",
    "geminiApplyModalTitle": "Inscreva-se na CLI local do Gemini",
    "geminiApplyTargetLabel": "Caminho de destino",
    "geminiApplyBackupLabel": "Cópias de segurança",
    "geminiApplyAccountsHint": "A conta ativa google_accounts.json será atualizada para corresponder a esta conexão.",
    "geminiApplyWarning": "Isso substituirá o oauth_creds.json existente e atualizará google_accounts.json. Continuar?",
    "geminiApplyConfirmCheckbox": "Confirmo que desejo substituir o oauth_creds.json existente",
    "geminiApply": "Aplicar",
    "geminiAuthAppliedLocal": "Autenticação Gemini aplicada localmente",
    "geminiAuthApplyFailed": "Falha ao aplicar a autenticação Gemini localmente",
    "geminiAuthExported": "Arquivo de autenticação Gemini exportado",
    "geminiAuthExportFailed": "Falha ao exportar o arquivo de autenticação Gemini",
    "geminiImportModalTitle": "Importar autenticação Gemini",
    "geminiImportTabSingle": "Solteiro",
    "geminiImportTabBulk": "Massa",
    "geminiImportTabUpload": "Carregar arquivo",
    "geminiImportTabPaste": "Colar JSON",
    "geminiImportFileLabel": "Escolha oauth_creds.json",
    "geminiImportPasteLabel": "Cole o conteúdo JSON",
    "geminiImportEmailLabel": "E-mail da conta",
    "geminiImportNameLabel": "Nome da conexão (opcional)",
    "geminiImportOverwriteLabel": "Substitua a conexão existente se a conta já existir",
    "geminiImportSubmit": "Importar",
    "geminiImportSuccess": "Conexão Gemini importada com sucesso",
    "geminiImportInvalidJson": "Não foi possível analisar o arquivo como JSON",
    "geminiImportInvalidShape": "O arquivo não é um oauth_creds.json válido",
    "geminiImportDuplicate": "A conta já existe — ative \"Substituir existente\" para substituir",
    "geminiImportIdentityUnverified": "Não foi possível verificar a identidade do id_token. Ative \"Substituir existente\" ou forneça um email.",
    "geminiImportFailed": "Falha ao importar autenticação Gemini",
    "geminiImportBulkModeUpload": "Carregar arquivos",
    "geminiImportBulkModePaste": "Colar matriz JSON",
    "geminiImportBulkModeZip": "Carregar ZIP",
    "geminiImportBulkUploadHint": "Solte ou selecione até 50 arquivos oauth_creds.json (256 KB cada, 10 MB no total).",
    "geminiImportBulkPasteHint": "Cole uma matriz de objetos: [{ json, name?, email? }, ...]",
    "geminiImportBulkZipHint": "ZIP contendo entradas oauth_creds.json. Máximo de 50 entradas, 10 MB descompactados.",
    "geminiImportBulkSubmit": "Importar tudo",
    "geminiImportBulkSuccess": "Conexões {count} Gemini importadas",
    "geminiImportBulkFailed": "Algumas entradas não foram importadas",
    "geminiImportBulkZipExtracting": "Extraindo ZIP…",
    "geminiImportBulkZipError": "Falha ao extrair ZIP",
    "codexAuthAppliedLocal": "auth.json do Codex aplicado localmente",
    "codexAuthApplyFailed": "Falha ao aplicar o auth.json do Codex localmente",
    "codexAuthExported": "auth.json do Codex exportado",
    "codexAuthExportFailed": "Falha ao exportar o auth.json do Codex",
    "importCodexAuth": "Importar autenticação",
    "codexImportModalTitle": "Importar autenticação do Codex",
    "codexImportTabSingle": "Solteiro",
    "codexImportTabBulk": "Massa",
    "codexImportTabUpload": "Carregar arquivo",
    "codexImportTabPaste": "Colar JSON",
    "codexImportFileLabel": "Escolha auth.json",
    "codexImportFileHint": "Selecione o arquivo auth.json exportado do Codex ou do OmniRoute.",
    "codexImportPasteLabel": "Cole o conteúdo JSON",
    "codexImportEmailLabel": "E-mail da conta",
    "codexImportEmailHint": "Detectado automaticamente no arquivo; edite se necessário.",
    "codexImportNameLabel": "Nome da conexão (opcional)",
    "codexImportOverwriteLabel": "Substitua a conexão existente se a conta já existir",
    "codexImportSubmit": "Importar",
    "codexImportSuccess": "Conexão Codex importada com sucesso",
    "codexImportInvalidJson": "Não foi possível analisar o arquivo como JSON",
    "codexImportInvalidShape": "O arquivo não é um Codex auth.json válido",
    "codexImportDuplicate": "A conta já existe — ative \"Substituir existente\" para substituir",
    "codexImportFailed": "Falha ao importar autenticação do Codex",
    "codexImportDetectedEmail": "Detectado: {email}",
    "codexImportNoEmailDetected": "Nenhum e-mail detectado no arquivo",
    "codexImportBulkModeUpload": "Carregar arquivos",
    "codexImportBulkModePaste": "Colar lista",
    "codexImportBulkModeZip": "Arquivo ZIP",
    "codexImportBulkUploadHint": "Selecione vários arquivos .json ou arraste e solte",
    "codexImportBulkPasteHint": "Matriz JSON [ {...}, {...} ] ou vários JSONs separados por --- em sua própria linha",
    "codexImportBulkZipHint": "Faça upload de um .zip contendo arquivos auth.json (máximo de 50 arquivos, 10 MB)",
    "codexImportBulkSubmit": "Importar contas {count}",
    "codexImportBulkLimit": "Máximo de 50 arquivos por importação",
    "codexImportBulkSuccess": "{count} importado",
    "codexImportBulkFailed": "{count} falhou",
    "codexImportBulkZipExtracting": "Extraindo ZIP…",
    "codexImportBulkZipError": "Falha ao extrair ZIP",
    "advancedSettings": "Advanced Settings",
    "chatPathLabel": "Chat Endpoint Path",
    "chatPathPlaceholder": "/chat/completions",
    "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)",
    "modelsPathLabel": "Models Endpoint Path",
    "modelsPathPlaceholder": "/models",
    "modelsPathHint": "Custom models path for validation (e.g. /v4/models)",
    "statusDeactivated": "Desativado (Manual)",
    "statusBanned": "Banido / Sandbox Violation",
    "statusCreditsExhausted": "Saldo Insuficiente",
    "showEmails": "Show all emails",
    "hideEmails": "Hide all emails",
    "a": "A",
    "accountConcurrencyCapHint": "Account Concurrency Cap Hint",
    "accountConcurrencyCapLabel": "Account Concurrency Cap Label",
    "accountIdHint": "Encontre isso na URL do dashboard da Cloudflare ou nas configurações.",
    "accountIdLabel": "Account ID",
    "accountIdPlaceholder": "Cloudflare Account ID",
    "addAnotherApiKey": "Adicionar outra chave de API...",
    "addCcCompatible": "Adicionar CC Compatível",
    "aggregatorsGateways": "Agregadores / Gateways",
    "enterpriseCloud": "Empresa e nuvem",
    "apiFormatLabel": "Formato da API",
    "apiKeyOptionalHint": "Opcional. Deixe em branco se sua instância SearXNG não exigir autenticação.",
    "apiKeyOptionalLabel": "Chave de API (opcional)",
    "apiRegionChina": "China Continental (open.bigmodel.cn)",
    "apiRegionHint": "Selecione a região do endpoint para acesso à API e rastreamento de cota.",
    "apiRegionInternational": "Internacional (api.z.ai)",
    "apiRegionLabel": "Região da API",
    "apikey": "Apikey",
    "audio": "Audio",
    "audioProvidersHeading": "Provedores de Áudio",
    "cloudAgentProviders": "Provedores de agentes em nuvem",
    "audioShortLabel": "Áudio",
    "azureOpenAiBaseUrlHint": "Obrigatório: cole o endpoint do seu recurso Azure OpenAI. O OmniRoute adicionará /openai/deployments/{model}/chat/completions?api-version=....",
    "bailianBaseUrlHint": "Opcional: URL base customizada para o provedor bailian-coding-plan.",
    "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.",
    "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...",
    "blackboxWebCookieHint": "Cole o cookie __Secure-authjs.session-token de app.blackbox.ai. Um cabeçalho de cookie completo também funciona.",
    "blackboxWebCookiePlaceholder": "Cole o valor de __Secure-authjs.session-token",
    "t3ChatWebCookieHint": "Abra t3.chat → DevTools → Aplicativo → Armazenamento local → https://t3.chat, copie 'convex-session-id'. Em seguida, abra DevTools → Rede, copie o cabeçalho completo do cookie de qualquer solicitação de chat. Cole os dois valores nos campos abaixo.",
    "t3ChatWebCookiePlaceholder": "id-de-sessão-convexa=abc123...",
    "blockClaudeExtraUsageDescription": "Quando habilitado, o OmniRoute marca esta conta do Claude Code como indisponível assim que a API de usage reporta `extra_usage.queued`, para que o fallback troque para outra conta antes de continuar com cobranças extras pay-as-you-go.",
    "blockClaudeExtraUsageLabel": "Bloquear Claude Extra Usage",
    "bulkPasteAdded": "{count, plural, one {1 chave adicionada} other {# chaves adicionadas}}",
    "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicata ignorada} other {# duplicatas ignoradas}}",
    "bulkPasteHint": "Cole uma chave de API por linha. Linhas vazias são ignoradas e chaves duplicadas são puladas.",
    "ccCompatibleBaseUrlHint": "URL base do site compatível com CC. Não inclua /messages.",
    "ccCompatibleBaseUrlPlaceholder": "https://example.com/v1",
    "ccCompatibleChatPathHint": "O padrão é o caminho estrito de messages compatível com Claude Code.",
    "ccCompatibleContext1mDescription": "Quando habilitado, esta conexão adiciona `anthropic-beta: context-1m-2025-08-07`.",
    "ccCompatibleContext1mLabel": "Contexto 1M CC Compatível",
    "ccCompatibleDetailsTitle": "Detalhes CC Compatível",
    "ccCompatibleLabel": "CC Compatível",
    "ccCompatibleModelsDescription": "Os modelos disponíveis de CC Compatível espelham a lista do provedor OAuth Claude Code.",
    "ccCompatibleNameHint": "Nome de exibição para este provedor.",
    "ccCompatibleNamePlaceholder": "Produção CC Compatível",
    "ccCompatiblePrefixHint": "Usado para aliases como prefix/model-id.",
    "ccCompatiblePrefixPlaceholder": "cc",
    "ccCompatibleValidationHint": "A validação usa a bridge estrita compatível com Claude Code para este provedor.",
    "claudeExtraUsageShort": "Bloquear Extra",
    "claudeExtraUsageToggleTitle": "Alternar bloqueio de extra usage do Claude",
    "codex5hToggleTitle": "Alternar política de limite 5h do Codex",
    "codexFastServiceTierDescription": "Quando habilitado, injeta `service_tier=priority` para esta conexão se o cliente não definir o tier.",
    "codexFastServiceTierLabel": "Codex Fast Service Tier",
    "codexWeeklyToggleTitle": "Alternar política de limite semanal do Codex",
    "compatUpstreamHeaderNamePlaceholder": "Authentication",
    "compatUpstreamHeaderValuePlaceholder": "•••",
    "compatible": "Compatible",
    "configuredCount": "{configured} de {total} configurados",
    "consoleApiKeyOracleHint": "Obrigatório para consulta de cota. Não compartilhe.",
    "consoleApiKeyOracleLabel": "Chave de API do Console (Oracle)",
    "consoleApiKeyOraclePlaceholder": "Chave de API do Console Alibaba",
    "cpaModeDisabledTitle": "Habilitar backend CLIProxyAPI para emulação OAuth mais profunda do Claude Code",
    "cpaModeEnabledTitle": "Usando CLIProxyAPI para uma emulação mais profunda do Claude Code (uTLS, multi-conta, perfis de dispositivo)",
    "customUserAgentHint": "Override opcional enviado upstream como cabeçalho User-Agent desta conexão.",
    "customUserAgentLabel": "User-Agent Customizado",
    "databricksBaseUrlHint": "Obrigatório: cole a URL base do serving-endpoints do Databricks. O app adicionará /chat/completions.",
    "defaultThinkingStrengthHint": "Usada quando o cliente não envia reasoning effort e o modo global Thinking Budget está em passthrough.",
    "defaultThinkingStrengthLabel": "Intensidade de raciocínio padrão",
    "deleteAllExtraApiKeys": "Excluir todas",
    "excludedModelsHint": "Padrões wildcard separados por vírgula. Esta conexão será ignorada para modelos correspondentes.",
    "excludedModelsLabel": "Modelos Excluídos",
    "excludedModelsPlaceholder": "gpt-5*, claude-opus-*, gemini-*-pro*",
    "expirationBannerExpired": "{count} conexão(ões) de provedor expirada(s)",
    "expirationBannerExpiredDesc": "Ação imediata necessária. Conexões expiradas falharão permanentemente.",
    "expirationBannerExpiringSoon": "{count} conexão(ões) de provedor expirando em breve",
    "expirationBannerExpiringSoonDesc": "Revise e renove as conexões prestes a expirar para evitar interrupções.",
    "extraApiKeyMasked": "Chave {index}: {prefix}••••{suffix}",
    "extraApiKeysHint": "Rotação round-robin — opcional",
    "extraApiKeysLabel": "Chaves de API Extras",
    "apiKeyHealthLabel": "API Key Health",
    "apiKeyStatusActive": "Active",
    "apiKeyStatusWarning": "Warning ({count} failures)",
    "apiKeyStatusInvalid": "Invalid",
    "primaryKey": "Primary Key",
    "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.",
    "apiKeyInvalidAlertTitle": "API Key Health Alert",
    "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.",
    "apiKeyWarningAlertTitle": "API Key Warning",
    "googlePseInfo": "O Google Programmable Search exige dois valores: sua chave de API e o Search Engine ID (cx) do painel do Programmable Search Engine.",
    "geminiCliProjectIdHint": "Seu ID do projeto do Google Cloud. Obrigatório para contas com exceções. Insira o ID do projeto do GCP para usar com Gemini CLI.",
    "geminiCliProjectIdLabel": "ID do projeto do Google Cloud",
    "geminiCliProjectIdPlaceholder": "meu-gcp-project-id",
    "antigravityProjectIdHint": "Substituição opcional para solicitações de código de nuvem antigravidade. Deixe em branco para usar o projeto descoberto durante o Google OAuth.",
    "antigravityClientProfileLabel": "Perfil do cliente",
    "antigravityClientProfileHint": "Escolha qual identidade de cliente Antigravity o OmniRoute apresenta à API.",
    "antigravityClientProfileIde": "IDE",
    "antigravityClientProfileHarness": "Harness / CLI",
    "codexFastTierActiveChip": "A Camada Rápida do Codex está ativa",
    "tierFast": "Rápido",
    "antigravityProjectIdLabel": "ID do projeto do Google Cloud",
    "antigravityProjectIdPlaceholder": "meu-gcp-project-id",
    "grokWebCookieHint": "Cole o cookie sso do grok.com. Um valor completo `sso=...` também funciona.",
    "grokWebCookiePlaceholder": "Cole o valor do cookie sso do grok.com",
    "herokuBaseUrlHint": "Obrigatório: cole a URL base do Heroku Inference. O app adicionará /v1/chat/completions.",
    "hideEmail": "Ocultar e-mail",
    "imageProviders": "Geração de Imagem",
    "videoProviders": "Geração de Vídeo",
    "embeddingRerankProviders": "Incorporações e reclassificação",
    "imagesShortLabel": "Imagens",
    "llmProviders": "Provedores LLM",
    "localProviderApiKeyOptionalHint": "Opcional. Deixe em branco se o endpoint {provider} não exigir autenticação.",
    "localProviderBaseUrlHint": "Obrigatório: cole a URL base OpenAI-compatible /v1 do seu {provider} (padrão: {baseUrl}). URLs locais/privadas exigem OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true para validação no dashboard.",
    "localProviders": "Local / Self-Hosted",
    "maxConcurrentWholeNumberError": "Max concurrent deve ser um número inteiro maior ou igual a 0.",
    "museSparkWebCookieHint": "Cole o cookie abra_sess do meta.ai. Um cabeçalho de cookie completo também funciona.",
    "museSparkWebCookiePlaceholder": "Cole o valor de abra_sess",
    "oauth": "Oauth",
    "openCliTools": "Abrir CLI Tools",
    "openSettings": "Abrir Configurações",
    "openaiResponsesStoreDescription": "Preserva `store`, `previous_response_id` e adiciona um `session_id` estável como fallback para sessões longas do Codex. Habilite apenas quando a conta upstream aceitar Responses armazenadas.",
    "openaiResponsesStoreLabel": "OpenAI Responses Store",
    "perplexitySearchSharedKeyInfo": "Usa a mesma chave de API do Perplexity (provedor de chat). Se você já configurou o Perplexity, não é necessário setup adicional.",
    "perplexityWebCookieHint": "Cole o cookie __Secure-next-auth.session-token do perplexity.ai.",
    "perplexityWebCookiePlaceholder": "Cole o valor de __Secure-next-auth.session-token",
    "personalAccessTokenLabel": "Personal Access Token",
    "qoderPatHint": "Fluxo suportado: PAT via qodercli. OAuth pelo navegador continua experimental.",
    "qoderPatPlaceholder": "Cole seu Personal Access Token do Qoder",
    "refreshOauthTokenTitle": "Atualizar token OAuth manualmente",
    "regionHint": "ex.: us-central1 ou europe-west4. Modelos partner usam a região global automaticamente.",
    "regionLabel": "Região",
    "removeThisKey": "Remover esta chave",
    "routingTagsHint": "Tags separadas por vírgula, comparadas com request metadata.tags para roteamento por tags.",
    "routingTagsLabel": "Tags de Roteamento",
    "routingTagsPlaceholder": "fast, cheap, eu-region",
    "search": "Search",
    "searchEngineIdHint": "Obrigatório. Encontre isso na visão geral do seu Programmable Search Engine.",
    "searchEngineIdLabel": "Search Engine ID (cx)",
    "searchEngineIdRequired": "O Search Engine ID (cx) do Programmable Search Engine é obrigatório.",
    "searchProvider": "Provedor de Busca",
    "searchProviderDesc": "Este provedor é usado para busca web via POST /v1/search. Nenhuma configuração de modelo é necessária depois que uma chave de API estiver conectada.",
    "searchProviders": "Buscar provedores...",
    "searchProvidersHeading": "Provedores de Busca",
    "searxngBaseUrlHint": "Obrigatório: cole a URL base da sua instância SearXNG. O app usará /search e request format=json. URLs locais/privadas exigem OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true para validação no dashboard.",
    "searxngInfo": "SearXNG é self-hosted. Configure aqui a URL base da instância. A chave de API é opcional e pode ficar em branco para instâncias públicas ou sem autenticação. A validação de URLs locais/privadas exige OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true.",
    "sessionCookieLabel": "Cookie de Sessão",
    "showEmail": "Mostrar e-mail",
    "snowflakeBaseUrlHint": "Obrigatório: cole a URL base da conta Snowflake. O app adicionará /api/v2/cortex/inference:complete.",
    "supportedEndpointAudio": "Áudio",
    "supportedEndpointChat": "Chat",
    "supportedEndpointEmbeddings": "Embeddings",
    "supportedEndpointImages": "Imagens",
    "supportedEndpointsLabel": "Endpoints Suportados",
    "tagGroupHint": "Usado para agrupar contas na visão do provedor.",
    "tagGroupLabel": "Tag / Grupo",
    "tagGroupPlaceholder": "ex.: personal, work, team-a",
    "testModel": "Test Model",
    "testingModel": "Testing Model",
    "toggleOffShort": "OFF",
    "toggleOnShort": "ON",
    "tokenExpiredBadge": "Expirado",
    "tokenExpiredTitle": "Token expirado: {date}",
    "tokenExpiresSoonTitle": "Token expira em {minutes}m",
    "tokenShort": "Token",
    "totalKeysRotating": "{count} chaves no total — rotacionando em round-robin a cada request.",
    "unhideModel": "Unhide Model",
    "upstreamProxyProviders": "Proxy Upstream",
    "validationModelIdHint": "Usado como fallback se a listagem de modelos não estiver disponível.",
    "validationModelIdLabel": "ID do Modelo (opcional)",
    "validationModelIdPlaceholder": "ex.: grok-3 ou meta-llama/Llama-3.1-8B-Instruct",
    "vertexServiceAccountPlaceholder": "Cole o JSON da Service Account aqui",
    "webCookieProviders": "Provedores Web / Cookie",
    "weeklyShort": "Semanal",
    "xiaomiMimoBaseUrlHint": "Opcional: URL base token-plan do Xiaomi MiMo. Exemplos: https://token-plan-ams.xiaomimimo.com/v1, https://token-plan-sgp.xiaomimimo.com/v1, https://token-plan-cn.xiaomimimo.com/v1. O app adicionará /chat/completions.",
    "zedImportButton": "Importar do Zed",
    "zedImportFailed": "Falha ao importar do Zed IDE.",
    "zedImportHint": "Importar credenciais do Zed IDE",
    "zedImportNetworkError": "Erro de rede ao tentar importar do Zed.",
    "zedImportNone": "Nenhuma credencial OAuth suportada encontrada no Zed IDE.",
    "zedImportSuccess": "Importadas {count} credencial(is) do Zed IDE ({providers}).",
    "zedImporting": "Importando...",
    "freeTierProviders": "Provedores de nível gratuito",
    "freeTierLabel": "Nível gratuito disponível",
    "freeTierProvidersDesc": "Provedores com níveis gratuitos – alguns exigem uma inscrição de chave de API, outros não precisam de nenhuma credencial.",
    "providerSummaryAll": "Total",
    "ideProviders": "Provedores IDE",
    "ideProvidersDesc": "Editores com assinatura de IA integrada. Use a página do provedor para importar credenciais diretamente do keychain da IDE.",
    "noIdeProviders": "Nenhum provedor IDE corresponde aos filtros atuais.",
    "providerDetailFastTierTooltip": "Aplique o nível Codex Fast a todas as conexões do Codex por padrão",
    "providerDetailFastDefaultLabel": "Padrão rápido",
    "providerDetailBrowserManualConnect": "Conexão navegador/manual",
    "providerDetailAuthUrl": "URL de autenticação",
    "providerDetailCallbackUrl": "URL de retorno de chamada",
    "providerDetailValidClaudeCredentialsFile": "Arquivo de credenciais válido do Claude",
    "providerDetailPathAutoDetectedAllOs": "O caminho é detectado automaticamente por sistema operacional (Linux/Mac/Windows).",
    "providerDetailMyClaudeAccountPlaceholder": "Minha conta Claude",
    "providerDetailPathAutoDetected": "O caminho é detectado automaticamente por sistema operacional (Linux/Mac).",
    "webFetch": "Web Fetch",
    "webFetchTooltip": "Provedores que extraem conteúdo de URLs (HTML → Markdown, scraping, screenshot)",
    "webFetchProvidersHeading": "Provedores Web Fetch",
    "compatibleProvidersDesc": "Endpoints compatíveis com OpenAI ou Anthropic que você mesmo hospeda ou configura. Aponte qualquer SDK OpenAI para sua URL e roteie as requisições aqui.",
    "oauthProvidersDesc": "Provedores autenticados via OAuth — faça login uma vez e o OmniRoute cuida da renovação automática dos tokens.",
    "webCookieProvidersDesc": "Esses provedores usam sessões da web do navegador, cookies ou tokens da web em vez de chaves de API. Abra um provedor para adicionar a credencial de sessão necessária.",
    "apiKeyProvidersDesc": "Provedores com API key padrão. Adicione sua chave uma vez e o OmniRoute gerencia roteamento, retries e rate-limiting por você.",
    "noAuthProvidersDesc": "Endpoints abertos que não exigem credenciais — prontos para uso imediato sem cadastro.",
    "upstreamProxyProvidersDesc": "Roteie o tráfego de saída por um proxy antes de chegar ao provedor. Útil para redes corporativas ou inspeção de tráfego.",
    "webFetchProvidersDesc": "Provedores que buscam e extraem conteúdo de URLs. Use-os para fundamentar prompts com dados da web em tempo real.",
    "aggregatorsGatewaysDesc": "Agregadores multi-provedor e gateways de IA que expõem uma API unificada para dezenas de modelos subjacentes.",
    "enterpriseCloudDesc": "Modelos enterprise e hospedados em nuvem com SLAs aprimorados, certificações de conformidade e capacidade dedicada.",
    "cloudAgentProvidersDesc": "Agentes cloud autônomos que executam tarefas de longa duração com aprovação de plano e rastreamento de status em tempo real.",
    "localProvidersDesc": "Modelos auto-hospedados rodando no seu próprio hardware. Nenhum dado sai da sua infraestrutura.",
    "searchProvidersDesc": "Provedores de busca web e documental. Conecte-os a chamadas LLM para Geração com Recuperação Aumentada (RAG).",
    "audioProvidersDesc": "Provedores de síntese e transcrição de voz para pipelines de I/O por áudio.",
    "embeddingRerankProvidersDesc": "Provedores de embeddings vetoriais e reranking para busca semântica, pipelines RAG e pontuação de similaridade.",
    "imageProvidersDesc": "Provedores de geração e visão de imagens — crie imagens a partir de texto ou analise imagens existentes.",
    "videoProvidersDesc": "Provedores de geração de vídeo. Crie clipes curtos a partir de prompts de texto ou imagens.",
    "onboardingWizard": "Assistente de integração do provedor",
    "onboardingWizardShort": "Assistente de integração",
    "onboardingWizardDescription": "Conecte provedores de chave de API, compatíveis com customização e OAuth com validação, persistência e um teste de conexão imediato.",
    "onboardingStepType": "Tipo",
    "onboardingStepProvider": "Provedor",
    "onboardingStepCredentials": "Credenciais",
    "onboardingStepResult": "Resultado",
    "onboardingTypeApiKeyTitle": "Provedor de chave de API",
    "onboardingTypeApiKeyText": "Use provedores integrados como OpenAI, Anthropic, Gemini, Groq, Azure e muito mais.",
    "onboardingTypeCustomTitle": "Provedor compatível personalizado",
    "onboardingTypeCustomText": "Crie um endpoint compatível com OpenAI, Anthropic ou Claude Code e adicione sua chave.",
    "onboardingTypeOAuthTitle": "Provedor OAuth",
    "onboardingTypeOAuthText": "Reutilize o OAuth existente, o código do dispositivo ou os fluxos de importação local para provedores de codificação.",
    "onboardingChooseOAuthProvider": "Escolha um provedor OAuth",
    "onboardingChooseApiKeyProvider": "Escolha um provedor de chave API",
    "onboardingChooseProviderDescription": "Selecione um provedor e o assistente o guiará pelas credenciais e testes.",
    "onboardingChangeType": "Tipo de alteração",
    "onboardingChangeProvider": "Alterar provedor",
    "onboardingSearchProviders": "Provedores de pesquisa…",
    "onboardingApiKeyOptional": "Chave de API opcional",
    "onboardingProviderConnected": "Provedor conectado",
    "onboardingProviderSavedWithWarnings": "Provedor salvo com avisos",
    "onboardingProviderFinished": "A integração do provedor foi concluída",
    "onboardingYourProviderConnection": "Sua conexão de provedor",
    "onboardingTestPassed": "Teste aprovado",
    "onboardingTestFailed": "Falha no teste",
    "onboardingOpenProviderDetails": "Detalhes do provedor aberto",
    "onboardingTryInPlayground": "Experimente no playground",
    "onboardingDefaultConnectionName": "{provider} Primário",
    "onboardingTestingConnection": "Testando conexão do provedor…",
    "onboardingValidatingCredentials": "Validando credenciais…",
    "onboardingSavingConnection": "Salvando conexão do provedor…",
    "onboardingProviderFailed": "Falha na integração do provedor",
    "onboardingCreatingCompatibleProvider": "Criando provedor compatível…",
    "onboardingSavingCompatibleConnection": "Salvando conexão de provedor compatível…",
    "onboardingCustomProviderFallbackName": "Provedor personalizado",
    "onboardingCustomProviderFailed": "Falha na integração do provedor personalizado",
    "onboardingLoadingOAuthConnection": "Carregando conexão OAuth…",
    "onboardingOAuthNoConnectionFound": "OAuth foi concluído, mas nenhuma conexão com o provedor foi encontrada.",
    "onboardingOAuthFailed": "Falha na integração do OAuth",
    "onboardingAddProvider": "Adicionar {provider}",
    "onboardingConnectionName": "Nome da conexão",
    "onboardingApiKeyOptionalLabel": "Chave API (opcional)",
    "onboardingBaseUrlOverride": "Substituição do URL base",
    "onboardingBaseUrlOverrideHint": "Opcional. Armazenado como provedorSpecificData.baseUrl.",
    "onboardingRegion": "Região",
    "onboardingSearchCx": "Pesquisa CX / ID do mecanismo",
    "onboardingProviderSpecificIdPlaceholder": "ID opcional específico do provedor",
    "onboardingCustomUserAgent": "Agente de usuário personalizado",
    "onboardingWorking": "Trabalhando…",
    "onboardingValidateSaveTest": "Validar, salvar e testar",
    "onboardingBack": "Voltar",
    "onboardingCreateCustomCompatibleProvider": "Crie um provedor compatível personalizado",
    "onboardingCreateCustomCompatibleDescription": "O assistente cria primeiro um nó provedor e depois armazena e testa sua conexão de chave de API.",
    "onboardingProtocol": "Protocolo",
    "onboardingOpenAiCompatible": "Compatível com OpenAI",
    "onboardingAnthropicCompatible": "Compatível com Antrópico",
    "onboardingClaudeCodeCompatible": "Compatível com Claude Code",
    "onboardingProviderPrefix": "Prefixo do provedor",
    "onboardingProviderPrefixHint": "Usado para gerar o ID do provedor gerenciado.",
    "onboardingChatPath": "Caminho do bate-papo",
    "onboardingModelsPath": "Caminho dos modelos",
    "onboardingCreateSaveTest": "Crie, salve e teste",
    "onboardingConnectProvider": "Conectar {provider}",
    "onboardingOAuthFlowDescription": "OmniRoute abrirá o fluxo OAuth existente para este provedor. Após o login, o assistente recarrega a conexão salva e executa o mesmo teste de conexão da página do provedor.",
    "onboardingStartOAuthFlow": "Iniciar fluxo OAuth",
    "passthroughModelsDescription": "{provider} aceita IDs de modelo nativos do provedor. Importe de /models ou adicione IDs personalizados para roteamento.",
    "bedrockModelsDescription": "Os modelos Amazon Bedrock têm escopo definido por região da AWS. Importe de /models ou adicione IDs de modelo Bedrock habilitados na região selecionada.",
    "bedrockModelPlaceholder": "antrópico.claude-sonnet-4-6",
    "addProviderSessionCookieTitle": "Adicionar cookie de sessão {provider}",
    "addProviderWebTokenTitle": "Adicionar token da web {provider}",
    "addProviderConnectionTitle": "Adicionar conexão {provider}",
    "webTokenCredentialLabel": "Token de sessão da Web",
    "webNoAuthCredentialLabel": "Nenhuma credencial necessária",
    "webCookieCredentialHint": "Cookie obrigatório: {credential}. Cole o valor do cabeçalho Cookie de sua própria sessão da web {provider} conectada. Não inclua o prefixo Cookie:.",
    "webTokenCredentialHint": "Credencial: {credential}. Cole o valor do token de sua própria sessão da web {provider} conectada ou de uma exportação HAR do DevTools, se o provedor oferecer suporte.",
    "webCookieEditHint": "Deixe em branco para manter o cookie da sessão atual. Cookie obrigatório: {credential}.",
    "webTokenEditHint": "Deixe em branco para manter o token da sessão web atual. Credencial: {credential}.",
    "webSessionGuideTitle": "Como obter a credencial da sessão",
    "webSessionGuideIntro": "{provider} usa uma sessão da web do navegador em vez de uma chave de API.",
    "webCookieRequiredCredential": "Cookie obrigatório: {credential}",
    "webTokenRequiredCredential": "Token necessário: {credential}",
    "webSessionGuideStep1": "Faça login em {provider} em seu navegador.",
    "webSessionGuideStep2": "Abra as ferramentas de desenvolvedor do navegador e inspecione uma solicitação feita pelo aplicativo web.",
    "webSessionGuideStep3": "Copie a credencial necessária do próprio domínio do provedor. Para cookies, copie apenas o valor do cabeçalho Cookie e omita Cookie:.",
    "webSessionGuideStep4": "Cole aqui e verifique a conexão. Se parar de funcionar, faça login novamente e substitua-o por um novo valor.",
    "webSessionSecurityHint": "Trate isso como uma senha: ela poderá acessar sua conta da web conectada até que ela expire ou seja revogada.",
    "webNoAuthGuideTitle": "Nenhuma credencial necessária",
    "webNoAuthGuideBody": "{provider} não precisa de chave de API ou cookie. Salve a conexão para usar seu endpoint web gratuito.",
    "webSessionCredentialValidationFailed": "Falha na validação da credencial da sessão. Faça login novamente, copie uma nova credencial e tente novamente.",
    "checkCookie": "Verifique o cookie",
    "checkWebToken": "Verifique o token"
  },
  "proxyConfigModal": {
    "levelGlobal": "Globais",
    "levelProvider": "Provedor",
    "levelCombo": "Combinação",
    "levelKey": "Chave",
    "levelDirect": "Direto (sem proxy)",
    "titleGlobal": "Configuração de proxy global",
    "titleLevel": "{level} Proxy — {label}",
    "loading": "Carregando configuração de proxy...",
    "inheritingFrom": "Herdando de",
    "source": "Fonte",
    "savedProxy": "Proxy salvo",
    "custom": "Personalizado",
    "selectSavedProxyPlaceholder": "Selecione o proxy salvo...",
    "proxyType": "Tipo de proxy",
    "host": "Anfitrião",
    "hostPlaceholder": "1.2.3.4 ou proxy.example.com",
    "port": "Porto",
    "authOptional": "Autenticação (opcional)",
    "username": "Nome de usuário",
    "usernamePlaceholder": "Nome de usuário",
    "password": "Senha",
    "passwordPlaceholder": "Senha",
    "connected": "Conectado",
    "ip": "IP:",
    "connectionFailed": "Falha na conexão",
    "testConnection": "Conexão de teste",
    "clear": "Limpar",
    "cancel": "Cancelar",
    "save": "Salvar",
    "errorSelectSavedProxy": "Selecione primeiro um proxy salvo.",
    "errorSelectProxyFirst": "Selecione um proxy primeiro.",
    "errorProxyNotFound": "Proxy selecionado não encontrado.",
    "errorClearSavedProxy": "Falha ao limpar o proxy salvo",
    "errorSaveProxy": "Falha ao salvar a configuração do proxy",
    "errorClearProxy": "Falha ao limpar a configuração do proxy",
    "errorSocks5Hidden": "SOCKS5 está configurado, mas oculto porque NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false."
  },
  "proxyLogger": {
    "filterAll": "All",
    "filterErrors": "Errors",
    "filterSuccess": "Success",
    "filterTimeout": "Timeout",
    "colStatus": "Status",
    "colProxy": "Proxy",
    "colTls": "TLS",
    "colType": "Type",
    "colLevel": "Level",
    "colProvider": "Provider",
    "colTarget": "Target",
    "colLatency": "Latency",
    "colPublicIp": "Public IP",
    "colTime": "Time",
    "recording": "Recording",
    "paused": "Paused",
    "searchPlaceholder": "Search host, provider, target, IP...",
    "allTypes": "All Types",
    "allLevels": "All Levels",
    "allProviders": "All Providers",
    "total": "total",
    "ok": "OK",
    "err": "ERR",
    "timeoutShort": "TMO",
    "direct": "direct",
    "newest": "Newest",
    "oldest": "Oldest",
    "latencyDesc": "Latency ↓",
    "latencyAsc": "Latency ↑",
    "refresh": "Refresh",
    "columns": "Columns",
    "loadingProxyLogs": "Loading proxy logs...",
    "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.",
    "noMatchingLogs": "No logs match the current filters.",
    "tlsFingerprint": "Chrome 124 TLS Fingerprint"
  },
  "proxyRegistry": {
    "title": "Title",
    "description": "Description",
    "importLegacy": "Import Legacy",
    "bulkAssign": "Bulk Assign",
    "addProxy": "Add Proxy",
    "loading": "Loading",
    "noProxies": "No Proxies",
    "tableName": "Table Name",
    "tableEndpoint": "Table Endpoint",
    "tableStatus": "Table Status",
    "tableHealth": "Table Health",
    "tableUsage": "Table Usage",
    "tableActions": "Table Actions",
    "test": "Test",
    "edit": "Edit",
    "delete": "Delete",
    "modalCreateTitle": "Modal Create Title",
    "modalEditTitle": "Modal Edit Title",
    "labelName": "Label Name",
    "labelType": "Tipo",
    "labelHost": "Anfitrião",
    "labelPort": "Porto",
    "labelUsername": "Nome de usuário",
    "labelPassword": "Senha",
    "labelRegion": "Região",
    "labelStatus": "Estado",
    "labelNotes": "Notas",
    "usernamePlaceholderEdit": "Deixe em branco para manter o nome de usuário atual",
    "passwordPlaceholderEdit": "Deixe em branco para manter a senha atual",
    "statusActive": "Ativo",
    "statusInactive": "Inativo",
    "cancel": "Cancelar",
    "save": "Salvar",
    "bulkModalTitle": "Atribuição de proxy em massa",
    "bulkLabelScope": "Escopo",
    "bulkLabelProxy": "Procurador",
    "bulkClearAssignment": "(Limpar tarefa)",
    "bulkLabelScopeIds": "IDs de escopo (separados por vírgula ou nova linha)",
    "bulkScopeIdsPlaceholder": "provedor-openai,provedor-antrópico",
    "bulkApply": "Aplicar",
    "labelScope": "Escopo",
    "labelProxy": "Proxy",
    "scopeGlobal": "global",
    "scopeProvider": "provedor",
    "scopeAccount": "conta",
    "scopeCombo": "combo",
    "bulkImportErrorMissingName": "NOME ausente",
    "bulkImportErrorMissingHost": "HOST ausente",
    "bulkImportErrorInvalidPort": "PORTA inválida (deve ser 1-65535)",
    "bulkImportErrorInvalidType": "TYPE inválido (use http, https ou meias5)",
    "bulkImportErrorInvalidStatus": "STATUS inválido (use ativo ou inativo)",
    "errorLoadFailed": "Error Load Failed",
    "errorNameHostRequired": "Error Name Host Required",
    "errorSaveFailed": "Error Save Failed",
    "errorDeleteFailed": "Error Delete Failed",
    "errorForceDeleteConfirm": "Error Force Delete Confirm",
    "errorMigrateFailed": "Error Migrate Failed",
    "errorBulkFailed": "Error Bulk Failed",
    "success": "✓",
    "failure": "✗",
    "failed": "Failed",
    "successRate": "{rate}% de sucesso",
    "avgLatency": "Média de {latency}ms",
    "assignmentsCount": "{count} atribuições",
    "noData": "No Data",
    "testSuccess": "✓ {ip}",
    "testLatency": "{latency}ms",
    "testFailure": "✗ {error}",
    "bulkImport": "Importação em massa",
    "bulkImportTitle": "Proxies de importação em massa",
    "bulkImportDescription": "Cole perfis de proxy usando formato delimitado por barras verticais. Um proxy por linha. Os proxies existentes (mesmo host + porta) serão atualizados.",
    "bulkImportParse": "Analisar",
    "bulkImportImport": "Importar proxies {count}",
    "bulkImportImporting": "Importando...",
    "bulkImportParsed": "{count} proxies analisados",
    "bulkImportSkipped": "{count} linhas ignoradas",
    "bulkImportParseErrors": "{count} erros",
    "bulkImportNoValidEntries": "Nenhuma entrada válida encontrada. Verifique o formato e tente novamente.",
    "bulkImportSuccess": "Importação concluída: {created} criado, {updated} atualizado, {failed} falhou",
    "bulkImportErrorLine": "Linha {line}: {reason}",
    "bulkImportMaxExceeded": "Máximo de 100 proxies por importação",
    "bulkImportPreview": "Visualização",
    "clearAssignment": "(atribuição clara)",
    "bulkProxyAssignment": "Atribuição de proxy em massa"
  },
  "quotaShare": {
    "title": "Compartilhamento de Cota",
    "description": "Compartilhe cotas de provedores entre API keys com limites %",
    "newPool": "Novo pool",
    "betaTitle": "Beta",
    "betaDescription": "A configuração é salva em localStorage (ainda não persistida no servidor). A aplicação dos caps por request ainda não está conectada ao pipeline da proxy. Esta tela permite desenhar e visualizar a divisão de cota; a aplicação real virá em uma próxima iteração com persistência no banco e interceptação na chamada upstream.",
    "kpiActivePools": "Pools ativos",
    "kpiKeysAllocated": "Keys alocadas",
    "kpiAvgUnallocated": "Média não alocada",
    "kpiProvidersWithQuota": "Providers c/ cota",
    "emptyTitle": "Nenhum pool configurado",
    "emptyDescription": "Crie um pool para atribuir API keys e compartilhar uma janela de cota do provedor com alocações %.",
    "loading": "Carregando…",
    "removePool": "Remover pool",
    "removeConfirm": "Remover este pool?",
    "pool": "Pool",
    "used": "usado",
    "allocationsCount": "Alocações ({count})",
    "allocatedFree": "{allocated}% alocado · {free}% livre",
    "noAllocations": "Nenhuma key alocada ainda",
    "capLabel": "cap {value}",
    "notTrackedYet": "(ainda não rastreado)",
    "policy": "Política",
    "policyHard": "hard",
    "policySoft": "soft",
    "policyBurst": "burst",
    "policyHardHint": "Bloqueia quando key esgota alocação",
    "policySoftHint": "Permite overflow, apenas alerta",
    "policyBurstHint": "Permite burst para o pool livre",
    "editAllocations": "Editar alocações",
    "newPoolTitle": "Novo pool de cota",
    "providerConnection": "Conexão de provider (conta)",
    "selectConnection": "Selecione uma conexão…",
    "noEligibleConnections": "Nenhuma conexão com dados de cota. Atualize em /dashboard/quota primeiro.",
    "quotaWindow": "Janela de cota",
    "selectWindow": "Selecione uma janela…",
    "alreadyUsedSuffix": "(já utilizada)",
    "windowReset": "Reset",
    "duplicatePoolError": "Já existe um pool para esta conexão + janela",
    "cancel": "Cancelar",
    "createPool": "Criar pool",
    "editTitle": "Editar alocações",
    "noKeysAdded": "Nenhuma key alocada. Adicione uma abaixo.",
    "totalLabel": "Total: {percent}%",
    "totalExceeded": "⚠ excede 100%",
    "addKey": "+ Adicionar key…",
    "equalSplit": "Divisão igual",
    "save": "Salvar alocações",
    "betaPreviewLabel": "Beta – visualização da IU.",
    "betaConfigSavedPrefix": "A configuração é salva em",
    "betaConfigSavedSuffix": "(ainda não persistido no servidor). A aplicação do limite por solicitação ainda não está conectada ao pipeline do proxy. Esta tela permite desenhar e visualizar a divisão de cotas; a aplicação real chegará em uma iteração futura com persistência de banco de dados e interceptação de chamadas upstream.",
    "policyLabel": "Política:",
    "resetIn": "redefinir em",
    "quotaTotal": "total",
    "kpiAvgUtilization": "Util média",
    "kpiBorrowingNow": "Em empréstimo agora",
    "conceptTitle": "Como funciona o Quota Share",
    "conceptIntro": "O Quota Share divide a cota de um provider entre múltiplas API keys usando fair-share work-conserving: cada key recebe uma fatia proporcional, mas pode tomar emprestado do saldo livre sem estourar o teto global.",
    "conceptFairShare": "Fair-share: cada key recebe proporcionalmente ao peso configurado",
    "conceptBorrowing": "Empréstimo: keys podem usar saldo livre de outras sem ultrapassar o teto",
    "conceptGlobalCap": "Teto intransponível: o cap absoluto do provider nunca é excedido",
    "conceptWindows": "Janelas: 5h, horária, diária, semanal, mensal — cada uma rastreada independentemente",
    "conceptKeyHowTitle": "Habilitando uma key para cota",
    "conceptKeyHowDesc": "Crie a key normalmente no Gerenciador de APIs — ela aparece automaticamente na etapa de keys do wizard. Marque Exclusiva lá para torná-la somente-cota. Não há etapa de ativação separada.",
    "conceptExclusiveTitle": "O que \"Exclusiva\" faz",
    "conceptExclusiveDesc": "Uma key exclusiva enxerga/usa apenas os modelos quotaShared-* do pool — todos os outros modelos ficam ocultos no seu /v1/models e bloqueados.",
    "burnRateTitle": "Taxa de consumo",
    "burnRateExhaustsIn": "Esgota em",
    "dimensionResetIn": "Reset em",
    "realConsumedColumn": "Consumido",
    "deficitColumn": "Déficit",
    "borrowingIndicator": "empréstimo",
    "migratedFromLocalStorageNotice": "Pools migrados do localStorage com sucesso.",
    "policyCapAbsoluteLabel": "Cap absoluto",
    "policyCapAbsolutePlaceholder": "Limite numérico (opcional)",
    "multiDimensionLabel": "Multi-dimensão",
    "stackedBarTitle": "Fatias por API key",
    "usedSuffix": "usou {percent}%",
    "wizardTitle": "Novo pool de cota",
    "editPoolTitle": "Editar pool",
    "saveChanges": "Salvar alterações",
    "wizardStep1Label": "Conta",
    "wizardStep2Label": "Limite",
    "wizardStep3Label": "Chaves",
    "wizardStep1Title": "Escolha a conexão de provider",
    "wizardStep1Subtitle": "Selecione a conta do provider cuja cota este pool compartilhará, defina um nome e a política padrão.",
    "wizardStep2Title": "Configure as dimensões de cota",
    "wizardStep2Subtitle": "Defina as dimensões do plano de cota (unidade, janela, limite) para a conexão escolhida. Deixe sem alteração para manter as configurações atuais.",
    "wizardStep3Title": "Aloque API keys",
    "wizardStep3Subtitle": "Atribua API keys a este pool com alocações de peso % e caps opcionais.",
    "wizardPoolNameLabel": "Nome do pool",
    "wizardPoolNamePlaceholder": "Meu pool de cota",
    "wizardNext": "Avançar",
    "wizardBack": "Voltar",
    "wizardCreatePool": "Criar pool",
    "wizardDimensionsEditedNotice": "Dimensões editadas — serão salvas como override manual quando o pool for criado.",
    "wizardExclusiveLabel": "Cota exclusiva",
    "wizardExclusiveHint": "Quando ativado, estas API keys só poderão usar os modelos virtuais deste pool (reconciliação de allowedQuotas aplicada ao salvar).",
    "wizardPreviewLabel": "Prévia dos nomes de modelos virtuais",
    "wizardConnectionsLabel": "Conexões de provider",
    "wizardPrimaryBadge": "principal",
    "wizardAdditionalConnectionsNote": "Conexões adicionais usam os limites padrão do catálogo (editáveis posteriormente).",
    "wizardSingleProviderNote": "Um pool usa um provedor só",
    "wizardPreviewMoreModels": "+{count} mais",
    "accountQuotaTitle": "Cota da conta",
    "accountQuotaNone": "—",
    "logTitle": "Log de uso",
    "logEmpty": "Sem uso ainda",
    "groupLabel": "Grupo",
    "newGroup": "Novo grupo",
    "renameGroup": "Renomear grupo",
    "groupSelectHint": "Filtrar pools por grupo",
    "groupAllocationNote": "As alocações se aplicam a todos os pools deste grupo através da camada de cota compartilhada.",
    "groupNamePrompt": "Digite o nome do grupo",
    "wizardGroupLabel": "Grupo",
    "allGroups": "Todos os grupos",
    "endpointsTitle": "Endpoints disponíveis",
    "endpointsHint": "Chame estes modelos virtuais com qualquer chave alocada — roteamento + cota são tratados por grupo.",
    "previewForKey": "Pré-visualizar p/ chave",
    "previewKeyNone": "(todos os endpoints)",
    "endpointsBaseUrl": "URL base",
    "endpointsCollapse": "Recolher",
    "endpointsExpand": "Expandir",
    "endpointsAnthropicNote": "nativo Anthropic",
    "endpointsResponsesNote": "OpenAI Responses — codex/github",
    "endpointsWsNote": "WebSocket — somente codex",
    "betaText": "O Quota Share está funcional, mas bugs são esperados. Encontrou um? Reporte, por favor.",
    "betaReportLink": "Abrir uma issue",
    "deleteGroup": "Excluir grupo",
    "deleteGroupConfirm": "Excluir este grupo? Os pools dele precisam ser reatribuídos ou removidos antes.",
    "deleteGroupHasPools": "Este grupo ainda tem pools — reatribua ou exclua-os primeiro.",
    "ungroupedTitle": "Sem grupo",
    "ungroupedHint": "Estes pools não estão atribuídos a um grupo conhecido. Edite um pool para movê-lo para um grupo real."
  },
  "requestLogger": {
    "recording": "Recording",
    "paused": "Paused",
    "pipelineLogsOn": "Pipeline logs on",
    "pipelineLogsOff": "Pipeline logs off",
    "updatingPipelineLogs": "Updating pipeline logs...",
    "updatePipelineFailed": "Failed to update pipeline logging",
    "capturePipeline": "Capture pipeline payloads for new requests",
    "searchPlaceholder": "Search models, providers, accounts, API keys, combos...",
    "allProviders": "All providers",
    "allModels": "All models",
    "allAccounts": "All accounts",
    "allApiKeys": "All API keys",
    "total": "Total",
    "ok": "Success",
    "err": "Error",
    "combo": "Combo",
    "keys": "Keys",
    "shown": "Shown",
    "sortNewest": "Newest",
    "sortOldest": "Oldest",
    "sortTokensDesc": "Tokens ↓",
    "sortTokensAsc": "Tokens ↑",
    "sortDurationDesc": "Duration ↓",
    "sortDurationAsc": "Duration ↑",
    "sortStatusDesc": "Status ↓",
    "sortStatusAsc": "Status ↑",
    "sortModelAsc": "Model A-Z",
    "sortModelDesc": "Model Z-A",
    "sortLogs": "Sort logs",
    "refresh": "Refresh",
    "columnsLabel": "Columns",
    "cacheSem": "SEM",
    "cacheUp": "UP",
    "semantic": "Semantic",
    "upstream": "Upstream",
    "semanticCacheHit": "Semantic cache hit (served by OmniRoute)",
    "upstreamResponse": "Upstream provider response",
    "noApiKey": "No API key",
    "requestedRoutedTitle": "Requested {requested}, routed as {routed}",
    "statusFilters": {
      "all": "All",
      "error": "Errors",
      "success": "Success",
      "combo": "Combo"
    },
    "columns": {
      "status": "Status",
      "cacheSource": "Cache Source",
      "model": "Model",
      "requested": "Requested",
      "provider": "Provider",
      "protocol": "Request Protocol",
      "account": "Account",
      "apiKey": "API Key",
      "combo": "Combo",
      "tokens": "Tokens",
      "compressed": "Compressão",
      "tps": "TPS",
      "duration": "Duration",
      "time": "Time"
    },
    "loadingLogs": "Loading logs...",
    "noLogs": "No logs yet. Make some API calls to see them here.",
    "noMatchingLogs": "No logs matching current filters.",
    "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}."
  },
  "runtime": {
    "title": "Runtime",
    "description": "Observabilidade em tempo real — 3 camadas de resiliência + sessões + alertas de quota",
    "pause": "Pausar",
    "resume": "Retomar",
    "refreshNow": "Atualizar agora",
    "kpiSessions": "Sessões",
    "kpiCircuits": "Circuits",
    "kpiCooldowns": "Cooldowns",
    "kpiLockouts": "Lockouts",
    "hintStickyBound": "{count} sticky-bound",
    "hintRecovering": "{count} recuperando",
    "hintAllHealthy": "tudo saudável",
    "hintOpen": "aberto",
    "hintConnsCooling": "conexões em cooldown",
    "hintModelsBlocked": "modelos bloqueados",
    "resilienceTitle": "Resiliência em 3 Camadas",
    "resilienceSubtitle": "Espelha o modelo de resiliência documentado",
    "providersHealthy": "{percent}% dos providers saudáveis",
    "layer": "Camada {n}",
    "layer1Title": "Provider Circuit Breakers",
    "layer1Desc": "Bloqueia tráfego para providers falhando no upstream",
    "layer2Title": "Cooldown de Conexões",
    "layer2Desc": "Pula uma conta/key ruim; outras conexões continuam atendendo",
    "layer3Title": "Lockout de Modelos",
    "layer3Desc": "Travas de rate-limit por modelo; a mesma conexão ainda atende outros modelos",
    "badgeAffectedOf": "{affected} de {total} afetados",
    "badgeCooling": "{count} em cooldown",
    "badgeLocked": "{count} travados",
    "emptyCircuits": "Nenhum circuit breaker ativo",
    "emptyCooldowns": "Nenhum cooldown de conexão ativo",
    "emptyLockouts": "Nenhum lockout de modelo",
    "moreCooldowns": "+{count} cooldowns adicionais",
    "moreLockouts": "+{count} lockouts adicionais",
    "feedTitle": "Feed ao Vivo",
    "feedSubtitle": "Últimos {count} eventos",
    "feedFilterAll": "Todos",
    "feedFilterCircuits": "Circuits",
    "feedFilterCooldowns": "Cooldowns",
    "feedFilterLockouts": "Lockouts",
    "feedFilterSessions": "Sessões",
    "feedFilterQuotas": "Quotas",
    "feedClear": "Limpar",
    "feedEmptyWaiting": "Aguardando eventos... (poll a cada 5s)",
    "feedEmptyFiltered": "Nenhum evento corresponde ao filtro",
    "sessionsTitle": "Sessões Ativas",
    "sessionsSubtitle": "Fingerprints de requisições sticky-bound (live)",
    "sessionsActive": "{count} ativas",
    "sessionsEmptyTitle": "Nenhuma sessão ativa",
    "sessionsEmptyHint": "Sessões aparecem conforme as requisições passam pela proxy",
    "tblSession": "Sessão",
    "tblAge": "Idade",
    "tblIdle": "Ocioso",
    "tblReqs": "Reqs",
    "tblBoundTo": "Vinculada a",
    "topApiKeys": "Top API keys",
    "quotaMonitorsTitle": "Monitores de Quota",
    "quotaMonitorsSubtitle": "Estado live de quota por janela de conta",
    "openQuota": "Abrir Quota",
    "allQuotasHealthy": "Todas as quotas saudáveis",
    "statusExhausted": "ESGOTADO",
    "statusAlerting": "ALERTANDO",
    "statusError": "ERRO",
    "moreSuffix": "+{count} mais"
  },
  "search": {
    "searchQuery": "Search Query",
    "searchResults": "Search Results",
    "cachedResult": "Cached",
    "searchCost": "Cost",
    "searchTools": "Search Tools",
    "searchToolsDesc": "Advanced search testing with provider comparison",
    "compareProviders": "Compare Providers",
    "rerankResults": "Rerank Results",
    "searchHistory": "Search History",
    "urlOverlap": "URL Overlap",
    "noSearchProviders": "No search providers configured. Add providers in Settings.",
    "noRerankModels": "No rerank model available",
    "webSearch": "Web Search",
    "provider": "Provider",
    "searchType": "Search Type",
    "maxResults": "Max Results",
    "filters": "Filters",
    "country": "Country",
    "language": "Language",
    "timeRange": "Time Range",
    "includeDomains": "Include Domains",
    "excludeDomains": "Exclude Domains",
    "safeSearch": "Safe Search",
    "safeSearchOff": "Off",
    "safeSearchModerate": "Moderate",
    "safeSearchStrict": "Strict",
    "queryPlaceholder": "Enter search query...",
    "providerAuto": "auto (cheapest)",
    "searchTypeWeb": "web",
    "searchTypeNews": "news",
    "optionAny": "any",
    "timeRangeDay": "Past day",
    "timeRangeWeek": "Past week",
    "timeRangeMonth": "Past month",
    "timeRangeYear": "Past year",
    "domainPlaceholder": "example.com",
    "requestTimedOut": "Request timed out ({seconds}s)",
    "networkError": "Network error",
    "formatted": "Formatted",
    "rawJson": "JSON",
    "cacheMiss": "cache miss",
    "cacheHit": "cache hit",
    "latency": "Latency",
    "cost": "Cost",
    "results": "Results",
    "rerank": "Rerank",
    "rerankModel": "Rerank Model",
    "positionDelta": "Position Change",
    "emptyState": "Send a search query to see results",
    "copy": "Copiar",
    "resetToDefault": "Redefinir para o padrão",
    "tabSearch": "Buscar",
    "tabScrape": "Scrape",
    "tabCompare": "Comparar",
    "modalitiesGuide": "Guia de modalidades",
    "searchConceptTitle": "Busca",
    "searchConceptDesc": "Busca = retorna uma lista de resultados web (título, URL, snippet, score de relevância)",
    "scrapeConceptTitle": "Scrape",
    "scrapeConceptDesc": "Scrape = extrai o conteúdo completo de uma URL (markdown, texto ou HTML)",
    "compareConceptTitle": "Comparar",
    "compareConceptDesc": "Comparar = executa a mesma query em N providers lado a lado para comparar latência, custo e overlap de resultados",
    "rerankConceptTitle": "Rerank",
    "rerankConceptDesc": "Rerank = reordena resultados via LLM para melhorar relevância baseada na query",
    "autoConceptTitle": "Auto (mais barato)",
    "autoConceptDesc": "Auto (mais barato) = escolhe automaticamente o provider mais barato disponível com credenciais configuradas",
    "providerCatalogTitle": "Catálogo de Provedores",
    "kindSearch": "Busca",
    "kindFetch": "Fetch/Scrape",
    "statusConfigured": "Configurado",
    "statusMissing": "Sem credencial",
    "statusRateLimited": "Rate limited",
    "configureProvider": "Configurar em Provedores",
    "loadingProviders": "Carregando provedores…",
    "failedToLoadProviders": "Falha ao carregar provedores",
    "costPerQuery": "Custo/consulta",
    "freeQuota": "Cota gratuita/mês",
    "scrapeUrl": "URL para extrair",
    "scrapeUrlPlaceholder": "https://exemplo.com",
    "scrapeExtract": "Extrair",
    "scrapeExtracting": "Extraindo…",
    "scrapeFullPage": "Página completa",
    "scrapeFormat": "Formato",
    "formatMarkdown": "Markdown",
    "formatHtml": "HTML",
    "formatText": "Texto",
    "scrapePreview": "Visualização",
    "scrapeRaw": "Raw",
    "scrapeContentTruncated": "(truncado, ver raw)",
    "scrapeMetadata": "Metadados",
    "scrapeProvider": "Provedor",
    "scrapeSize": "Tamanho",
    "compareRun": "Comparar",
    "compareRunning": "Comparando…",
    "autoProvider": "Auto (mais barato)",
    "configuredStatus": "Configurado",
    "rateLimitedStatus": "Rate limited",
    "noCredential": "Sem credencial",
    "searchTypeLabel": "Tipo",
    "rerankModelLabel": "Modelo de rerank",
    "noneOption": "Nenhum",
    "size": "Tamanho"
  },
  "settings": {
    "title": "Configurações",
    "general": "Geral",
    "security": "Segurança",
    "appearance": "Aparência",
    "routing": "Roteamento",
    "cache": "Cache",
    "resilience": "Resiliência",
    "routingSettingsIntro": "Controla como suas solicitações são roteadas, transformadas e enviadas aos provedores de IA.",
    "routingOpDropParagraphContainsLabel": "Remover parágrafo (contém)",
    "routingOpDropParagraphStartsWithLabel": "Remover parágrafo (começa com)",
    "routingOpReplaceTextLabel": "Substituir texto",
    "routingOpReplaceRegexLabel": "Substituir via Regex",
    "routingOpDropBlockContainsLabel": "Remover bloco (contém)",
    "routingOpPrependSystemBlockLabel": "Prepor bloco de sistema",
    "routingOpAppendSystemBlockLabel": "Anexar bloco de sistema",
    "routingOpInjectBillingHeaderLabel": "Injetar cabeçalho de cobrança",
    "routingOpObfuscateWordsLabel": "Ofuscar palavras (ZWJ)",
    "routingOpDropParagraphContainsDesc": "Remove qualquer parágrafo (bloco de texto dividido por linhas em branco) dentro do prompt de sistema cujo texto contenha QUALQUER uma das substrings listadas. Use para remover fingerprints de clientes de terceiros que o classificador da Anthropic sinaliza.",
    "routingOpDropParagraphStartsWithDesc": "Remove qualquer parágrafo que COMECE com um dos prefixos listados. Use para linhas de identidade como 'You are OpenCode' que anunciam o cliente chamador.",
    "routingOpReplaceTextDesc": "Substitui uma substring literal por outra. Use para frases de gatilho conhecidas — ex: reescrever uma frase longa por uma versão curta e validada.",
    "routingOpReplaceRegexDesc": "Substitui texto correspondente a uma expressão regular. Use quando precisar de padrões (classes de caracteres, espaços opcionais, âncoras) em vez de strings literais.",
    "routingOpDropBlockContainsDesc": "Remove blocos de sistema INTEIROS (não apenas parágrafos) cujo texto contenha qualquer uma das substrings listadas.",
    "routingOpPrependSystemBlockDesc": "Insere um novo bloco de texto no INÍCIO do array de sistema. Use para adicionar a identidade de SDK que o classificador da Anthropic espera.",
    "routingOpAppendSystemBlockDesc": "Insere um novo bloco de texto no FINAL do array de sistema. Use para adições cosméticas que não precisam estar na posição [0].",
    "routingOpInjectBillingHeaderDesc": "Prepend o bloco de texto especial 'x-anthropic-billing-header' que o classificador da Anthropic valida. Obrigatório para endpoints de relay do Claude-Code Bridge.",
    "routingOpObfuscateWordsDesc": "Insere um caractere Zero-Width-Joiner após a primeira letra de cada palavra listada. Permanece idêntico para humanos, mas ignora correspondências exatas de classificadores.",
    "routingNeedlesHint": "Lista de substrings. Um parágrafo corresponde se contiver QUALQUER uma delas. Adicione uma por linha via 'Adicionar entrada'.",
    "routingPrefixesHint": "Lista de strings. Um parágrafo corresponde se começar com qualquer uma delas.",
    "routingCaseSensitiveHint": "Quando ATIVADO, 'OpenCode' e 'opencode' são tratados como diferentes. Quando DESATIVADO (padrão), ignora maiúsculas/minúsculas.",
    "routingMatchLiteralHint": "Substring literal exata para encontrar. Sem sintaxe regex — caracteres especiais são tratados como texto puro.",
    "routingReplacementTextHint": "String de substituição. Deixe em branco para remover o que foi encontrado.",
    "routingAllOccurrencesHint": "Quando ATIVADO (padrão), todas as instâncias são substituídas. Quando DESATIVADO, apenas a primeira correspondência é trocada.",
    "routingPatternHint": "Fonte de regex JavaScript. Não inclua barras — use apenas o padrão. O servidor rejeita padrões que falham na compilação.",
    "routingRegexFlagsHint": "Flags de regex (g = global, i = insensível a caixa, s = ponto inclui nova linha, m = multilinha). Padrão 'g'.",
    "routingBlockTextHint": "Texto completo do novo bloco de sistema. Use uma string literal.",
    "routingIdempotencyKeyHint": "Opcional. Se definido, a operação é ignorada se um bloco que comece com esta chave já existir. Evita prepends duplicados.",
    "routingBillingEntrypointHint": "Valor injetado como 'cc_entrypoint='. A Anthropic aceita 'sdk-cli' (Agent SDK), 'cli' (Claude Code CLI), etc.",
    "routingBillingVersionFormatHint": "Como o hash de build é computado. 'ex-machina' = sha256 por mensagem. 'omniroute-daystamp' = estável por dia.",
    "routingBillingCchAlgoHint": "Como o token cch= é computado. 'sha256-first-user' = sha256 da primeira mensagem do usuário.",
    "routingObfuscateWordsHint": "Palavras em minúsculas para ofuscar. A inserção de ZWJ é aplicada sem diferenciar maiúsculas/minúsculas.",
    "routingObfuscateTargetsHint": "Quais regiões escanear: blocos de sistema, mensagens de usuário/assistente e/ou descrições de ferramentas.",
    "routingObfuscateTargetsLabel": "Alvos",
    "routingSummarizeDropParagraphContains": "remover parágrafos contendo: {items}",
    "routingSummarizeDropParagraphStartsWith": "remover parágrafos começando com: {items}",
    "routingSummarizeReplaceText": "substituir \"{match}\" → \"{replacement}\"",
    "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"",
    "routingSummarizeDropBlockContains": "remover blocos contendo: {items}",
    "routingSummarizePrependSystemBlock": "prepor bloco: \"{text}\"",
    "routingSummarizeAppendSystemBlock": "anexar bloco: \"{text}\"",
    "routingSummarizeInjectBillingHeader": "injetar cabeçalho de cobrança (entrypoint={entrypoint}, version={versionFormat}, cch={cchAlgo})",
    "routingSummarizeObfuscateWords": "ofuscar {count} palavra(s) via ZWJ em {targets}",
    "routingDefaultAutoVariantLKGP": "Último Provedor Conhecido (LKGP)",
    "routingDefaultAutoVariantLKGPDesc": "Prioriza o último provedor que retornou uma resposta bem-sucedida.",
    "routingDefaultAutoVariantCoding": "Qualidade em primeiro para código",
    "routingDefaultAutoVariantCodingDesc": "Prioriza modelos com melhor desempenho em tarefas de programação.",
    "routingDefaultAutoVariantFast": "Roteamento de baixa latência",
    "routingDefaultAutoVariantFastDesc": "Seleciona o provedor com o menor tempo de resposta histórico.",
    "routingDefaultAutoVariantCheap": "Otimizado para custo",
    "routingDefaultAutoVariantCheapDesc": "Prefere os provedores com menor custo por token.",
    "routingDefaultAutoVariantOffline": "Alta disponibilidade",
    "routingDefaultAutoVariantOfflineDesc": "Maximiza a resiliência usando fallbacks agressivos.",
    "routingDefaultAutoVariantSmart": "Melhor descoberta (10% exploração)",
    "routingDefaultAutoVariantSmartDesc": "Equilibra desempenho e exploração de novos provedores.",
    "routingOpSummaryCount": "{count, plural, =0 {sem operações} one {# operação} other {# operações}}",
    "routingOpEnabled": "ativado",
    "routingOpDisabled": "desativado",
    "routingOpStatusSeparator": " · ",
    "resilienceSettingsIntro": "Nova tentativa, resfriamento e fallback automáticos quando os provedores falham.",
    "aiSettingsIntro": "Configurações específicas de IA para pensar em orçamento, comportamento de modelo e compactação.",
    "systemPrompt": "Prompt do Sistema",
    "thinkingBudget": "Orçamento de Raciocínio",
    "proxy": "Proxy",
    "httpProxy": "HTTP Proxy",
    "1proxy": "1proxy",
    "proxySubTabsAria": "Proxy sections",
    "requestBodyLimitTitle": "Request Body Limit",
    "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.",
    "requestBodyLimitInputLabel": "Request body limit in MB",
    "requestBodyLimitEmptyError": "Enter a limit in MB",
    "requestBodyLimitWholeNumberError": "Use a whole number",
    "requestBodyLimitMinimumError": "Minimum is {min} MB",
    "requestBodyLimitMaximumError": "Maximum is {max} MB",
    "requestBodyLimitLoadFailed": "Failed to load request limit settings",
    "requestBodyLimitSaveSuccess": "Request body limit saved",
    "requestBodyLimitSaveFailed": "Failed to save request body limit",
    "requestBodyLimitSaving": "Saving...",
    "requestBodyLimitSave": "Save",
    "requestBodyLimitCurrent": "Current: {value}",
    "mitmProxy": "Proxy MITM",
    "pricing": "Preços",
    "storage": "Armazenamento",
    "policies": "Políticas",
    "ipFilter": "Filtro de IP",
    "comboDefaults": "Padrões de Combo",
    "fallbackChains": "Cadeias de Fallback",
    "changePassword": "Alterar Senha",
    "enablePassword": "Ativar Senha",
    "darkMode": "Modo Escuro",
    "lightMode": "Modo Claro",
    "memoryTitle": "Memória",
    "memoryDesc": "Memória conversacional persistente entre sessões",
    "memoryEnabled": "Ativar Memória",
    "memoryEnabledDesc": "Quando ativado, injetará o contexto passado relevante de forma dinâmica.",
    "maxTokens": "Tokens Máximos",
    "retentionDays": "Retenção",
    "recent": "Recente",
    "recentDesc": "Janela cronológica",
    "semantic": "Semântica",
    "semanticDesc": "Busca vetorial",
    "hybrid": "Híbrido",
    "hybridDesc": "Recente + Semântico",
    "skillsTitle": "Skills A2A",
    "skillsDesc": "Ferramentas auto-executáveis",
    "skillsEnabled": "Ativar Skills",
    "skillsEnabledDesc": "Permite aos agentes executar consultas e gerar arquivos.",
    "skillsComingSoon": "Marketplace em breve.",
    "memorySkillsTitle": "Memória e Skills",
    "memorySkillsDesc": "Contexto persistente e capacidades A2A",
    "modelsDevTitle": "Model Database",
    "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev",
    "modelsDevEnabled": "Enable models.dev Sync",
    "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database",
    "modelsDevInterval": "Sync Interval",
    "syncNow": "Sync Now",
    "syncing": "Syncing...",
    "lastSync": "Last sync",
    "never": "Never",
    "justNow": "agora mesmo",
    "modelsDevStats": "Sync Statistics",
    "modelsDevStatsDesc": "Current models.dev data coverage",
    "providers": "Provedores",
    "modelsWithPricing": "Models with Pricing",
    "capabilities": "Capabilities",
    "lastSyncCount": "Last Sync Count",
    "lastSyncFull": "Last full sync",
    "modelsDevInfo": "How It Works",
    "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.",
    "modelsDevInfoResolution": "Pricing resolution order (highest priority first):",
    "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default",
    "systemTheme": "Tema do Sistema",
    "debugToggle": "Enable Debug Mode",
    "sidebarVisibilityToggle": "Show Sidebar Items",
    "enableCache": "Ativar Cache",
    "cacheTTL": "TTL do Cache",
    "maxCacheSize": "Tamanho Máximo do Cache",
    "clearCache": "Limpar Cache",
    "cacheCleared": "Cache cleared successfully",
    "clearCacheFailed": "Failed to clear cache",
    "cacheHits": "Acertos de Cache",
    "cacheMisses": "Erros de Cache",
    "hitRate": "Taxa de Acerto",
    "cacheEntries": "Entradas no Cache",
    "cacheSettings": "Cache Settings",
    "semanticCache": "Semantic Cache",
    "maxEntries": "Max Entries",
    "ttlMinutes": "TTL (minutes)",
    "promptCache": "Cache de Prompt",
    "strategy": "Strategy",
    "preserveClientCache": "Preserve Client Cache",
    "enabled": "Enabled",
    "loading": "Loading...",
    "saving": "Salvando...",
    "save": "Save",
    "circuitBreaker": "Disjuntor",
    "retryPolicy": "Política de Retentativa",
    "maxRetries": "Máximo de Tentativas",
    "retryDelay": "Intervalo de Retentativa",
    "timeoutMs": "Timeout (ms)",
    "enableSystemPrompt": "Ativar Prompt do Sistema",
    "systemPromptText": "Texto do Prompt do Sistema",
    "autoDisableBannedAccounts": "Auto-desativar contas banidas",
    "autoDisableDescription": "Marca permanentemente conexões de provedor como desativadas quando retornam sinais terminais de banimento (ex.: HTTP 403 'verify your account'). Isso remove a conexão da rotação de combos.",
    "autoDisableThreshold": "Limite de banimento",
    "autoDisableThresholdDesc": "Quantidade de sinais consecutivos de banimento antes da desativação permanente.",
    "resilienceStructureTitle": "Estrutura de resiliência",
    "resilienceStructureDesc": "Esta página configura apenas o comportamento. O estado ao vivo de circuit breaker aparece na página Saúde. Controle de retry específico por combo e slot de round-robin continuam nas configurações de combos.",
    "enableThinking": "Ativar Raciocínio",
    "maxThinkingTokens": "Máximo de Tokens de Raciocínio",
    "enableProxy": "Ativar Proxy",
    "proxyUrl": "URL do Proxy",
    "pricingRates": "Formato de Taxas de Preço",
    "currentPricing": "Visão Geral de Preços Atual",
    "loadingPricing": "Carregando dados de preços...",
    "noPricing": "Nenhum dado de preço disponível",
    "input": "Entrada",
    "output": "Saída",
    "cached": "Em Cache",
    "reasoning": "Raciocínio",
    "cacheCreation": "Criação de Cache",
    "customPricing": "Preços Personalizados",
    "databaseSize": "Tamanho do Banco de Dados",
    "backupDb": "Backup do Banco de Dados",
    "restoreDb": "Restaurar Banco de Dados",
    "exportData": "Exportar Dados",
    "importData": "Importar Dados",
    "clearData": "Limpar Todos os Dados",
    "clearDataConfirm": "Isso excluirá permanentemente todos os dados. Tem certeza?",
    "enableRequestLogs": "Ativar Logs de Requisição",
    "logRetention": "Retenção de Logs",
    "ipWhitelist": "Lista de IPs Permitidos",
    "ipBlacklist": "Lista de IPs Bloqueados",
    "addIP": "Adicionar IP",
    "savedSuccessfully": "Configurações salvas com sucesso",
    "ai": "IA",
    "advanced": "Avançado",
    "localMode": "Modo Local — Todos os dados armazenados na sua máquina",
    "settingsSectionsAria": "Seções de configurações",
    "switchThemes": "Alternar entre temas claro e escuro",
    "themeSelectionAria": "Seleção de tema",
    "themeLight": "Claro",
    "themeDark": "Escuro",
    "themeSystem": "Sistema",
    "endpointTunnelVisibility": "Visibilidade do túnel de endpoint",
    "endpointTunnelVisibilityDesc": "Oculte os controles do túnel na página Endpoint sem alterar o estado do túnel.",
    "showCloudflareTunnel": "Túnel rápido Cloudflare",
    "showCloudflareTunnelDesc": "Mostre os controles do Cloudflare Quick Tunnel na página Endpoint.",
    "showTailscaleFunnel": "Funil de escala traseira",
    "showTailscaleFunnelDesc": "Mostre os controles do Tailscale Funnel na página Endpoint.",
    "showNgrokTunnel": "Túnel Ngrok",
    "showNgrokTunnelDesc": "Mostre os controles do ngrok Tunnel na página Endpoint.",
    "sidebarVisibility": "Hide sidebar items",
    "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.",
    "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...",
    "hideHealthLogs": "Ocultar Logs de Health Check",
    "hideHealthLogsDesc": "Quando ATIVADO, suprime mensagens [HealthCheck] no console do servidor",
    "themeAccent": "Cor do tema",
    "themeAccentDesc": "Escolha uma cor predefinida ou crie seu próprio tema com uma cor",
    "themeCreate": "Criar tema",
    "themeCustom": "Tema personalizado",
    "themeBlue": "Azul",
    "themeRed": "Vermelho",
    "themeGreen": "Verde",
    "themeViolet": "Violeta",
    "themeOrange": "Laranja",
    "themeCyan": "Ciano",
    "whitelabeling": "Branding",
    "whitelabelingDesc": "Customize the application name and logo",
    "appName": "Application Name",
    "appNameDesc": "Display name shown in sidebar and browser tab",
    "customLogo": "Custom Logo URL",
    "customLogoDesc": "URL to your custom logo image",
    "uploadLogo": "Upload Logo",
    "resetLogo": "Reset to Default",
    "logoPreview": "Preview",
    "customFavicon": "Browser Favicon",
    "customFaviconDesc": "URL to your custom favicon (shown in browser tab)",
    "uploadFavicon": "Upload Favicon",
    "resetFavicon": "Reset Favicon",
    "faviconPreview": "Favicon Preview",
    "flushCache": "Limpar Cache",
    "flushing": "Limpando…",
    "size": "Tamanho",
    "hits": "Acertos",
    "evictions": "Remoções",
    "loadingCacheStats": "Carregando estatísticas do cache…",
    "globalProxy": "Proxy Global",
    "globalProxyDesc": "Configure um proxy de saída global para todas as chamadas de API. Provedores individuais, combos e chaves podem sobrescrever.",
    "noGlobalProxy": "Nenhum proxy global configurado",
    "globalLabel": "Global",
    "configure": "Configurar",
    "globalSystemPrompt": "Prompt de Sistema Global",
    "saved": "Salvo",
    "beforePromptLabel": "Antes do Prompt",
    "beforePromptDesc": "Injetado antes das instruções do sistema do agente/provedor",
    "beforePromptPlaceholder": "Instruções inseridas antes do prompt do agente/provedor...",
    "afterPromptLabel": "Depois do Prompt",
    "afterPromptDesc": "Injetado depois das instruções do sistema do agente/provedor",
    "afterPromptPlaceholder": "Instruções inseridas depois do prompt do agente/provedor...",
    "chars": "{count} caracteres",
    "thinkingBudgetTitle": "Orçamento de Raciocínio",
    "thinkingBudgetDesc": "Controle o uso de tokens de raciocínio da IA em todas as requisições",
    "passthrough": "Passagem Direta",
    "passthroughDesc": "Sem alterações — cliente controla orçamento de raciocínio",
    "auto": "Auto Combo",
    "autoDesc": "Pool de roteamento inteligente (Otimizado)",
    "custom": "Personalizado",
    "customDesc": "Define um orçamento fixo de tokens para todas as requisições",
    "adaptive": "Adaptativo",
    "adaptiveDesc": "Escala orçamento baseado na complexidade da requisição",
    "effortNone": "Nenhum (0 tokens)",
    "effortLow": "Baixo (1K tokens)",
    "effortMedium": "Médio (10K tokens)",
    "effortHigh": "Alto (128K tokens)",
    "tokenBudget": "Orçamento de Tokens",
    "tokens": "tokens",
    "baseEffortLevel": "Nível de Esforço Base",
    "adaptiveHint": "Modo adaptativo escala a partir deste nível base baseado na quantidade de mensagens, uso de ferramentas e tamanho do prompt.",
    "requireLogin": "Exigir login",
    "requireLoginDesc": "Quando ATIVADO, dashboard exige senha. Quando DESATIVADO, acesso sem login.",
    "currentPassword": "Senha Atual",
    "enterCurrentPassword": "Digite a senha atual",
    "newPassword": "Nova Senha",
    "enterNewPassword": "Digite a nova senha",
    "confirmPassword": "Confirmar Nova Senha",
    "confirmPasswordPlaceholder": "Confirme a nova senha",
    "passwordsNoMatch": "As senhas não coincidem",
    "passwordUpdated": "Senha atualizada com sucesso",
    "failedUpdatePassword": "Falha ao atualizar senha",
    "errorOccurred": "Ocorreu um erro",
    "updatePassword": "Atualizar Senha",
    "setPassword": "Definir Senha",
    "apiEndpointProtection": "Proteção de Endpoint da API",
    "requireAuthModels": "Exigir chave de API para /models",
    "requireAuthModelsDesc": "Quando ATIVADO, o endpoint /v1/models retorna 404 para requisições não autenticadas. Impede descoberta de modelos por usuários não autorizados.",
    "authModelHeading": "Modelo de autorização ativo",
    "authModelClient": "Os pontos de extremidade da API do cliente (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) exigem uma chave de API do portador.",
    "authModelManagement": "Os pontos de extremidade de gerenciamento (/dashboard, /api/*) exigem uma sessão de painel ou credencial de gerenciamento.",
    "authModelPublic": "Somente as rotas de login, integridade e bootstrap são públicas.",
    "bruteForceProtection": "Proteção de força bruta de login",
    "bruteForceProtectionDesc": "Acelere e bloqueie /api/auth/login após falhas repetidas do mesmo IP.",
    "corsAllowedOrigins": "Origens permitidas pelo CORS",
    "corsAllowedOriginsDesc": "Lista separada por vírgulas de origens de navegador com permissão para chamar este servidor. Lista vazia = sem acesso CORS do navegador (servidor para servidor ainda funciona). Use CORS_ALLOW_ALL=true env var apenas para desenvolvimento.",
    "blockedProviders": "Provedores Bloqueados",
    "blockedProvidersDesc": "Ocultar provedores específicos da resposta /v1/models. Provedores bloqueados não aparecerão nas listagens de modelos.",
    "providersBlocked": "{count} provedor(es) bloqueado(s) do /models",
    "blockProviderTitle": "Bloquear {provider}",
    "unblockProviderTitle": "Desbloquear {provider}",
    "cliFingerprint": "Assinatura Digital CLI",
    "cliFingerprintDesc": "Reproduz a assinatura digital dos CLIs nativos ao fazer proxy. Reorganiza headers e campos do body para parecer idêntico às ferramentas CLI oficiais. O IP do proxy é preservado.",
    "cliFingerprintEnabled": "{count} provider(s) com fingerprint CLI ativo",
    "enableFingerprintTitle": "Ativar fingerprint para {provider}",
    "disableFingerprintTitle": "Desativar fingerprint para {provider}",
    "systemTransforms": "Pipeline de transformação de bloco de sistema",
    "systemTransformsDesc": "Pipeline ordenado por provedor de transformações aplicadas ao corpo da solicitação antes do encaminhamento. Suporta qualquer ID de provedor.",
    "systemTransformsAddProvider": "Adicionar provedor",
    "systemTransformsAddProviderPlaceholder": "Selecione um provedor…",
    "systemTransformsAddProviderAllConfigured": "Todos os provedores já configurados",
    "systemTransformsRemoveProvider": "Remover provedor",
    "systemTransformsNoProviders": "Nenhum provedor configurado. Adicione um provedor para começar.",
    "systemTransformsOpMoveUp": "Subir",
    "systemTransformsOpMoveDown": "Mover para baixo",
    "systemTransformsOpDelete": "Excluir operação",
    "routingStrategy": "Estratégia de Roteamento",
    "routingAdvancedGuideTitle": "Orientação avançada de roteamento",
    "routingAdvancedGuideHint1": "Use Fill First para prioridade previsível, Round Robin para justiça e P2C para resiliência de latência.",
    "routingAdvancedGuideHint2": "Se os fornecedores variarem em qualidade/custo, comece com Opção de custo para trabalho em segundo plano e Menos usado para desgaste equilibrado.",
    "fillFirst": "Preencher Primeiro",
    "fillFirstDesc": "Usar contas em ordem de prioridade",
    "roundRobin": "Round Robin",
    "roundRobinDesc": "Ciclar entre todas as contas",
    "p2c": "P2C",
    "p2cDesc": "Escolher 2 aleatórias, usar a mais saudável",
    "random": "Aleatório",
    "randomDesc": "Conta aleatória em cada requisição",
    "leastUsed": "Menos Usado",
    "leastUsedDesc": "Escolher a conta usada menos recentemente",
    "costOpt": "Custo Otimizado",
    "costOptDesc": "Preferir conta mais barata disponível",
    "resetAware": "RR com reconhecimento de redefinição",
    "resetAwareDesc": "Prefira contas com cota restante saudável e redefinições mais próximas",
    "strictRandom": "Aleatório Estrito",
    "strictRandomDesc": "Baralho embaralhado — usa cada conta uma vez antes de reembaralhar",
    "stickyLimit": "Limite Fixo",
    "stickyLimitDesc": "Chamadas por conta antes de trocar",
    "modelAliases": "Aliases de Modelo",
    "modelAliasesTitle": "Aliases de Modelo",
    "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.",
    "addCustomAlias": "Adicionar Alias Personalizado",
    "deprecatedModelId": "ID do modelo depreciado",
    "newModelId": "Novo ID do modelo",
    "customAliases": "Aliases Personalizados",
    "builtInAliases": "Aliases Integrados",
    "backgroundDegradationTitle": "Degradação de Tarefas em Background",
    "backgroundDegradationDesc": "Detecta automaticamente tarefas em background (títulos, resumos) e roteia para modelos mais baratos",
    "enableDegradation": "Ativar Degradação em Background",
    "enableDegradationHint": "Quando ativado, tarefas em background como geração de títulos e resumos são roteadas automaticamente para modelos mais baratos",
    "tasksDetected": "Tarefas detectadas",
    "degradationMap": "Mapa de Degradação de Modelos",
    "premiumModel": "Modelo premium",
    "cheapModel": "Modelo barato",
    "detectionPatterns": "Padrões de Detecção",
    "newPattern": "ex: \"gerar um título\"",
    "aliasPatternPlaceholder": "claude-sonnet-*",
    "aliasTargetPlaceholder": "claude-sonnet-4-20250514",
    "pattern": "Padrão",
    "targetModel": "Modelo Alvo",
    "add": "+ Adicionar",
    "session": "Sessão",
    "sessionDetailsAria": "Detalhes da sessão",
    "status": "Status",
    "authenticated": "Autenticado",
    "guest": "Visitante",
    "loginTime": "Hora do Login",
    "sessionAge": "Duração da Sessão",
    "browser": "Navegador",
    "clearLocalData": "Limpar Dados Locais",
    "logout": "Sair",
    "clearLocalDataConfirm": "Limpar todos os dados locais? Isso redefinirá suas preferências.",
    "unknown": "Desconhecido",
    "systemActor": "sistema",
    "ipAccessControl": "Controle de Acesso por IP",
    "ipAccessControlDesc": "Bloquear ou permitir endereços IP específicos",
    "ipModeDisabled": "Desativado",
    "ipModeBlacklist": "Lista de Bloqueio",
    "ipModeWhitelist": "Lista de Permissão",
    "ipModeWhitelistPriority": "Permissão Prioritária",
    "addIpAddress": "Adicionar Endereço IP",
    "ipAddressPlaceholder": "192.168.1.0/24 ou 10.0.*.*",
    "block": "+ Bloquear",
    "allow": "+ Permitir",
    "blocked": "Bloqueados ({count})",
    "allowed": "Permitidos ({count})",
    "temporaryBans": "Banimentos Temporários ({count})",
    "minLeft": "{min}m restantes",
    "auditLog": "Log de Auditoria",
    "searchAuditLogs": "Buscar logs de auditoria...",
    "failedLoadAuditLog": "Falha ao carregar log de auditoria",
    "noAuditEvents": "Nenhum evento de auditoria encontrado",
    "action": "Ação",
    "actor": "Ator",
    "details": "Detalhes",
    "time": "Hora",
    "fallbackChainsTitle": "Cadeias de Fallback",
    "fallbackChainsDesc": "Definir ordem de fallback de provedores por modelo",
    "addChain": "+ Adicionar Cadeia",
    "modelName": "Nome do Modelo",
    "modelNamePlaceholder": "claude-sonnet-4-20250514",
    "providersCommaSeparated": "Provedores (separados por vírgula, em ordem de prioridade)",
    "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini",
    "createChain": "Criar Cadeia",
    "noFallbackChains": "Sem Cadeias de Fallback",
    "noFallbackChainsDesc": "Crie uma cadeia para definir a ordem de fallback de provedores para um modelo.",
    "loadingFallbackChains": "Carregando cadeias de fallback...",
    "deleteChainConfirm": "Excluir cadeia de fallback para \"{model}\"?",
    "chainCreated": "Cadeia criada para {model}",
    "chainDeleted": "Cadeia excluída para {model}",
    "failedCreateChain": "Falha ao criar cadeia",
    "failedDeleteChain": "Falha ao excluir cadeia",
    "deleteChain": "Excluir cadeia",
    "fillModelAndProviders": "Preencha o nome do modelo e os provedores",
    "addAtLeastOneProvider": "Adicione pelo menos um provedor",
    "comboDefaultsTitle": "Padrões de Combo",
    "comboDefaultsGuideTitle": "Como ajustar os padrões de combinação",
    "comboDefaultsGuideHint1": "Mantenha as tentativas baixas em fluxos de baixa latência; aumente o tempo limite apenas para tarefas de geração longa.",
    "comboDefaultsGuideHint2": "Use substituições de provedor quando um provedor precisar de um comportamento de tempo limite/nova tentativa diferente dos padrões globais.",
    "globalComboConfig": "Configuração global de combos",
    "defaultStrategy": "Estratégia Padrão",
    "defaultStrategyDesc": "Aplicada a novos combos sem estratégia explícita",
    "comboStrategyAria": "Estratégia de combo",
    "priority": "Prioridade",
    "weighted": "Ponderado",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Roteamento estilo prioridade com handoffs automáticos de contexto quando a conta gira",
    "maxRetriesLabel": "Máx. Tentativas",
    "retryDelayLabel": "Atraso entre Tentativas (ms)",
    "timeoutLabel": "Timeout (ms)",
    "healthCheck": "Verificação de Saúde",
    "healthCheckDesc": "Verificar disponibilidade do provedor antes",
    "trackMetrics": "Rastrear Métricas",
    "trackMetricsDesc": "Registrar métricas de requisição por combo",
    "providerOverrides": "Sobrescritas por Provedor",
    "providerOverridesDesc": "Substituir timeout e tentativas por provedor. Configurações do provedor substituem os padrões globais.",
    "providerMaxRetriesAria": "{provider} tentativas máximas",
    "providerTimeoutAria": "timeout de {provider} em ms",
    "removeProviderOverrideAria": "Remover sobrescrita de {provider}",
    "newProviderNamePlaceholder": "ex.: google, openai...",
    "newProviderNameAria": "Nome do novo provedor",
    "retries": "tentativas",
    "ms": "ms",
    "saveComboDefaults": "Salvar Padrões de Combo",
    "maxNestingDepth": "Profundidade Máx. de Aninhamento",
    "concurrencyPerModel": "Concorrência / Modelo",
    "queueTimeout": "Timeout da Fila (ms)",
    "contextRelayHandoffThreshold": "Limite de Handoff",
    "contextRelayMaxMessages": "Máx. de Mensagens no Resumo",
    "contextRelaySummaryModel": "Modelo do Resumo",
    "contextRelayProviderNote": "O Context Relay atualmente gera handoffs para contas Codex e usa estes valores como padrão global para combos novos ou não configurados.",
    "providerProfiles": "Perfis de Provedor",
    "providerProfilesDesc": "Configurações de resiliência separadas para provedores OAuth (baseados em sessão) e API Key (medidos). Provedores OAuth têm limites mais rigorosos devido a taxas mais baixas.",
    "oauthProviders": "Provedores OAuth",
    "apiKeyProviders": "Provedores API Key",
    "transientCooldown": "Cooldown Transitório",
    "rateLimitCooldown": "Cooldown de Rate Limit",
    "maxBackoffLevel": "Nível Máx. de Backoff",
    "cbThreshold": "Limiar do CB",
    "cbResetTime": "Tempo de Reset do CB",
    "rateLimiting": "Limitação de Taxa",
    "rateLimitingDesc": "Provedores API Key são automaticamente limitados com padrões seguros. Limites são aprendidos dos cabeçalhos de resposta e se adaptam ao longo do tempo.",
    "defaultSafetyNet": "Rede de Segurança Padrão",
    "rpm": "RPM",
    "minGap": "Intervalo Mín.",
    "maxConcurrent": "Máx. Concorrentes",
    "activeLimiters": "Limitadores Ativos",
    "noActiveLimiters": "Nenhum limitador de taxa ativo ainda.",
    "reservoir": "Reservatório",
    "running": "Em Execução",
    "queued": "Na Fila",
    "circuitBreakers": "Disjuntores",
    "breakerStateClosed": "Fechado",
    "breakerStateOpen": "Aberto",
    "breakerStateHalfOpen": "Semiaberto",
    "tripped": "{count} aberto(s)",
    "healthy": "{count} saudável(is)",
    "resetAll": "Resetar Todos",
    "noCircuitBreakers": "Nenhum disjuntor ativo ainda. Eles são criados automaticamente quando requisições passam pelo pipeline de combos.",
    "failures": "{count} falha(s)",
    "policiesLocked": "Políticas e Identificadores Bloqueados",
    "allOperational": "Todos os sistemas operacionais — sem bloqueios ou disjuntores ativados",
    "loadingPolicies": "Carregando políticas...",
    "lockedIdentifiers": "Identificadores Bloqueados",
    "unlockedIdentifier": "Desbloqueado: {identifier}",
    "sinceDate": "desde {date}",
    "forceUnlock": "Forçar Desbloqueio",
    "unlocking": "Desbloqueando...",
    "failedUnlock": "Falha ao desbloquear",
    "failedLoadWithStatus": "Falha ao carregar: {status}",
    "failedLoadResilience": "Falha ao carregar status de resiliência",
    "saveFailed": "Falha ao salvar",
    "resetFailed": "Falha ao resetar",
    "loadingResilience": "Carregando status de resiliência...",
    "retry": "Tentar Novamente",
    "systemStorage": "Sistema e Armazenamento",
    "allDataLocal": "Todos os dados armazenados localmente na sua máquina",
    "databasePath": "Caminho do Banco de Dados",
    "exportDatabase": "Exportar Banco de Dados",
    "exportAll": "Exportar Tudo (.tar.gz)",
    "importDatabase": "Importar Banco de Dados",
    "confirmDbImport": "Confirmar Importação do Banco",
    "confirmDbImportDesc": "Isso substituirá todos os dados atuais pelo conteúdo de {file}. Um backup será criado automaticamente antes da importação.",
    "yesImport": "Sim, Importar",
    "lastBackup": "Último Backup",
    "noBackupYet": "Nenhum backup ainda",
    "backupNow": "Backup Agora",
    "backupRestore": "Backup e Restauração",
    "viewBackups": "Ver Backups",
    "hide": "Ocultar",
    "backupRetentionDesc": "Snapshots do banco são criados automaticamente antes da restauração e a cada 15 minutos quando há alterações. Retenção: 24 horários + 30 diários com rotação inteligente.",
    "loadingBackups": "Carregando backups...",
    "noBackupsYet": "Nenhum backup disponível ainda. Backups serão criados automaticamente quando houver alterações.",
    "backupsAvailable": "{count} backup(s) disponível(is)",
    "refresh": "Atualizar",
    "confirm": "Confirmar?",
    "yes": "Sim",
    "no": "Não",
    "restore": "Restaurar",
    "invalidFileType": "Tipo de arquivo inválido. Apenas arquivos .sqlite são aceitos.",
    "exportFailed": "Falha na exportação",
    "exportFailedWithError": "Falha na exportação: {error}",
    "fullExportFailedWithError": "Falha na exportação completa: {error}",
    "backupCreated": "Backup criado: {file}",
    "restoreSuccess": "Restaurado! {connections} conexões, {nodes} nós, {combos} combos, {apiKeys} chaves de API.",
    "importSuccess": "Banco importado! {connections} conexões, {nodes} nós, {combos} combos, {apiKeys} chaves de API.",
    "minutesAgo": "{count}m atrás",
    "hoursAgo": "{count}h atrás",
    "daysAgo": "{count}d atrás",
    "backupReasonManual": "manual",
    "backupReasonPreRestore": "pré-restauração",
    "connectionsCount": "{count, plural, one {# conexão} other {# conexões}}",
    "noChangesSinceBackup": "Sem alterações desde o último backup",
    "backupFailed": "Falha no backup",
    "restoreFailed": "Falha na restauração",
    "importFailed": "Falha na importação",
    "errorDuringRestore": "Ocorreu um erro durante a restauração",
    "errorDuringImport": "Ocorreu um erro durante a importação",
    "modelPricing": "Preços de Modelos",
    "modelPricingDesc": "Configure taxas de custo por modelo • Todas as taxas em $/1M tokens",
    "registry": "Registro",
    "priced": "Com Preço",
    "searchProvidersModels": "Buscar provedores ou modelos...",
    "showAll": "Mostrar Todos",
    "noProvidersMatch": "Nenhum provedor corresponde à sua busca.",
    "howPricingWorks": "Como os Preços Funcionam",
    "cacheWrite": "Escrita em Cache",
    "unsaved": "não salvo",
    "resetDefaults": "Restaurar Padrões",
    "saveProvider": "Salvar Provedor",
    "model": "Modelo",
    "models": "modelos",
    "moreProviders": "{count} provedores adicionais",
    "withPricing": "com preço configurado",
    "policiesCircuitBreakers": "Políticas e Disjuntores",
    "activeIssuesDetected": "Problemas ativos detectados",
    "off": "Desligado",
    "resetPricingConfirm": "Resetar todos os preços de {provider} para os padrões?",
    "pricingDescInput": "Input: tokens enviados ao modelo",
    "pricingDescOutput": "Output: tokens gerados",
    "pricingDescCached": "Cached: input reutilizado (~50% da taxa de input)",
    "pricingDescReasoning": "Reasoning: tokens de raciocínio (fallback para Output)",
    "pricingDescCacheWrite": "Cache Write: criação de entradas de cache (fallback para Input)",
    "pricingDescFormula": "Custo = (input × taxa_input) + (output × taxa_output) + (cached × taxa_cached) por milhão de tokens.",
    "pricingSettingsTitle": "Configurações de Preços",
    "totalModels": "Total de Modelos",
    "active": "Ativo",
    "costCalculation": "Cálculo de Custo",
    "costCalculationDesc": "Custos são calculados com base no uso de tokens e taxas de preço configuradas para cada modelo.",
    "pricingFormat": "Formato de Preços",
    "pricingFormatDesc": "Todas as taxas são em $/1M tokens (dólares por milhão de tokens).",
    "tokenTypes": "Tipos de Token",
    "inputTokenDesc": "Tokens de prompt padrão",
    "outputTokenDesc": "Tokens de conclusão/resposta",
    "cachedTokenDesc": "Tokens de input em cache (tipicamente 50% da taxa de input)",
    "reasoningTokenDesc": "Tokens especiais de raciocínio (fallback para taxa de output)",
    "cacheCreationTokenDesc": "Tokens usados para criar entradas de cache (fallback para taxa de input)",
    "customPricingNote": "Você pode sobrescrever preços padrão para modelos específicos. Sobrescritas personalizadas têm prioridade sobre preços detectados automaticamente.",
    "editPricing": "Editar Preços",
    "viewFullDetails": "Ver Detalhes Completos",
    "themeCoral": "Coral",
    "adaptiveVolumeRouting": "Roteamento de Volume Adaptativo",
    "adaptiveVolumeRoutingDesc": "Escala conexões dinamicamente com base no volume e pressão na taxa de transferência.",
    "lkgpToggleTitle": "Last Known Good Provider (LKGP)",
    "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.",
    "clearLkgpCache": "Clear LKGP Cache",
    "lkgpCacheCleared": "LKGP cache cleared successfully",
    "lkgpCacheClearFailed": "Failed to clear LKGP cache",
    "days": "Dias",
    "lkgp": "Modo LKGP",
    "lkgpDesc": "Último Provedor Bom Conhecido (Resiliência previsível)",
    "maintenance": "Maintenance",
    "purgeExpiredLogs": "Purgar Logs Expirados",
    "purgeLogsFailed": "Falha ao purgar logs",
    "contextOpt": "Context Optimized",
    "contextOptDesc": "Routes based on context window requirements and conversation length",
    "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on",
    "weightedDesc": "Distributes traffic by percentage weights across providers",
    "modelRoutingTitle": "Model Routing Rules",
    "modelRoutingDesc": "Automatically route models to specific combos using glob patterns",
    "addRule": "Add Rule",
    "routeToCombo": "Route to Combo",
    "selectCombo": "Select combo...",
    "priorityHint": "Higher = checked first. Use 10+ for specific patterns.",
    "patternHint": "Use * for any chars, ? for single char. Case-insensitive.",
    "noRoutingRules": "No routing rules configured. Requests use the global combo by default.",
    "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.",
    "deleteRoutingRule": "Delete this model routing rule?",
    "exactMatchMode": "Exact Match",
    "wildcardPatternMode": "Wildcard Pattern",
    "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.",
    "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.",
    "noExactAliasesConfigured": "No exact-match aliases configured.",
    "wildcardRulesTitle": "Wildcard Rules",
    "noWildcardAliasesConfigured": "No wildcard aliases configured.",
    "overview": "Overview",
    "unknownError": "Erro desconhecido",
    "pricingSourceLiteLLM": "LiteLLM",
    "clearSyncedPricingConfirm": "Limpar todos os dados de preços sincronizados via LiteLLM?",
    "clearSyncedPricingFailed": "Falha ao limpar dados sincronizados de preços",
    "pricingSourceUser": "Override",
    "pageDescription": "Page Description",
    "pricingSyncStatus": "Status da Sincronização",
    "whitelist": "Whitelist",
    "syncDisabled": "Somente sync manual",
    "pricingLoadFailed": "Falha ao carregar dados de preços",
    "pricingSyncDescription": "Dispare o sync do LiteLLM, inspecione o status e diferencie preços sincronizados de overrides manuais.",
    "clearSyncedPricingSuccess": "Dados sincronizados de preços removidos",
    "clearSyncedPricingFailedWithReason": "Falha ao limpar dados sincronizados de preços: {reason}",
    "pricingSourceDefault": "Padrão",
    "pricingSyncSuccess": "Preços sincronizados para {count} modelos",
    "enableSyncError": "Enable Sync Error",
    "syncEnabled": "Sincronização periódica ativada",
    "blacklist": "Blacklist",
    "pricingSourceModelsDev": "models.dev",
    "syncedModels": "Modelos Sincronizados",
    "budget": "Budget",
    "pricingSyncTitle": "Sincronização de Preços",
    "pricingResetFailedWithReason": "Falha ao resetar preços: {reason}",
    "tab": "Tab",
    "pricingSavedProvider": "Preços salvos para {provider}",
    "pricingSyncFailed": "Falha na sincronização de preços",
    "pricingSaveFailedWithReason": "Falha ao salvar preços: {reason}",
    "pricingResetProvider": "Preços resetados para {provider}",
    "nextSync": "Next Sync",
    "pricingSyncFailedWithReason": "Falha na sincronização de preços: {reason}",
    "clearSyncedPricing": "Limpar Sync",
    "compressionTitle": "Prompt Compression",
    "compressionDesc": "Reduce token usage by compressing prompts before sending to providers",
    "compressionMode": "Compression Mode",
    "compressionModeOff": "Off",
    "compressionModeOffDesc": "No compression applied",
    "compressionModeLite": "Lite",
    "compressionModeLiteDesc": "Whitespace and blank line reduction",
    "compressionModeStandard": "Standard (Caveman)",
    "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs",
    "compressionModeAggressive": "Aggressive",
    "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings",
    "compressionModeUltra": "Ultra",
    "compressionModeUltraDesc": "Heuristic token pruning with optional local SLM fallback",
    "compressionAggressiveConfig": "Aggressive Engine Configuration",
    "compressionAggressiveConfigDesc": "Fine-tune summarization, tool compression, and aging thresholds",
    "compressionUltraConfig": "Ultra Engine Configuration",
    "compressionUltraConfigDesc": "Fine-tune heuristic pruning, SLM fallback, and per-message thresholds",
    "compressionUltraRate": "Keep Rate",
    "compressionUltraMinScore": "Minimum Score Threshold",
    "compressionUltraSlmFallback": "Fallback to Aggressive",
    "compressionUltraModelPath": "SLM Model Path",
    "compressionSummarizerEnabled": "Enable Summarizer",
    "compressionMaxTokensPerMessage": "Max Tokens Per Message",
    "compressionMinSavings": "Min Savings Threshold",
    "compressionAgingThresholds": "Aging Thresholds",
    "compressionAgingThresholdsDesc": "Number of recent messages kept at each aging tier (higher = more preserved)",
    "compressionToolStrategies": "Tool Result Strategies",
    "compressionToolStrategiesDesc": "Toggle compression strategies for different tool result types",
    "compressionGeneral": "General Settings",
    "compressionAutoTrigger": "Auto-Trigger Threshold",
    "compressionCacheTTL": "Cache TTL",
    "compressionPreserveSystem": "Preserve System Prompt",
    "compressionCavemanConfig": "Caveman Engine Configuration",
    "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine",
    "compressionRoles": "Compress Message Roles",
    "compressionRoleUser": "User",
    "compressionRoleAssistant": "Assistant",
    "compressionRoleSystem": "System",
    "compressionMinLength": "Minimum Message Length",
    "compressionSkipRules": "Skip Compression Rules",
    "compressionSkipRulesDesc": "Click rules to skip them during compression",
    "compressionPreservePatterns": "Preserve Patterns",
    "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)",
    "compressionLogTitle": "Compression Log",
    "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.",
    "minutes": "minutos",
    "compressionModeRtk": "RTK",
    "compressionModeRtkDesc": "Command-aware tool output filtering",
    "compressionModeStacked": "Stacked",
    "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression",
    "qdrantTitle": "Qdrant (Memoria vetorial)",
    "qdrantDesc": "Opcional. Indexa memorias semanticas em um banco vetorial externo para busca mais rapida.",
    "qdrantStatusActive": "Ativo",
    "qdrantStatusError": "Com erro",
    "qdrantStatusDisabled": "Desativado",
    "qdrantEnable": "Ativar Qdrant",
    "qdrantEnableDesc": "Quando ativo, a estrategia semantic/hybrid pode usar Qdrant para recuperar memorias.",
    "qdrantTesting": "Testando...",
    "qdrantTestConnection": "Testar conexao",
    "qdrantSaved": "Configuracao salva",
    "qdrantSaveError": "Falha ao salvar configuracao",
    "qdrantHostHint": "Sem a porta. Ex: 127.0.0.1 ou http://qdrant",
    "qdrantPort": "Porta",
    "qdrantPortHint": "Padrao do Qdrant: 6333",
    "qdrantCollectionHint": "Onde os pontos de memoria serao gravados.",
    "qdrantEmbeddingModel": "Modelo de embedding",
    "qdrantHelpTitle": "Ajuda rapida de configuracao",
    "qdrantHelpQuickTitle": "Configuracao rapida (Qdrant + OpenRouter)",
    "qdrantHelpStep1": "1. Host: IP/URL do Qdrant, Porta: 6333, Collection: omniroute_memory.",
    "qdrantHelpStep2": "2. Se usar nvidia/llama-nemotron-embed-vl-1b-v2:free, use dimensao 2048 na collection.",
    "qdrantHelpStep3": "3. Modelo no campo: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.",
    "qdrantHelpStep4": "4. Salvar, testar conexao e depois testar busca.",
    "qdrantEmbeddingQuickSelect": "Selecao rapida de modelos descobertos...",
    "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small",
    "qdrantEmbeddingHint": "Formato: provider/model. Precisa ter credencial desse provider configurada.",
    "qdrantApiKeyPlaceholderKeep": "(deixe vazio para manter)",
    "qdrantApiKeyPlaceholderOptional": "(deixe vazio se nao usar)",
    "qdrantSaveHint": "Dica: edite host/porta/collection/modelo e clique em Salvar. A chave e opcional.",
    "qdrantSearchTestTitle": "Teste de busca",
    "qdrantSearchTestDesc": "Gera embedding e faz search no Qdrant.",
    "qdrantSearchPlaceholder": "Ex: preferencias do usuario, historico, etc",
    "qdrantNoResults": "Sem resultados (ou Qdrant desconfigurado).",
    "qdrantCleanupTitle": "Retencao e limpeza",
    "qdrantCleanupDesc": "Remove pontos expirados e antigos, baseado em",
    "searching": "Buscando...",
    "cleaning": "Limpando...",
    "cleanNow": "Limpar agora",
    "optional": "Opcional",
    "current": "Atual",
    "remove": "Remover",
    "search": "Buscar",
    "oneproxyTitle": "Mercado de proxy gratuito 1proxy",
    "oneproxyTotalProxies": "Proxies totais",
    "oneproxyAvgQuality": "Qualidade média",
    "resilienceScope": "Escopo:",
    "resilienceTrigger": "Gatilho:",
    "resilienceEffect": "Efeito:",
    "resilienceRequestQueueTitle": "Request Queue & Rate",
    "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers",
    "resilienceRequestsPerMinute": "Requests per minute",
    "resilienceMinTimeBetweenRequests": "Minimum time between requests",
    "resilienceConcurrentRequests": "Concurrent requests",
    "resilienceMaxQueueWaitTime": "Tempo máximo de espera na fila",
    "resilienceBaseCooldown": "Base cooldown",
    "resilienceUseUpstreamRetryHints": "Use upstream retry hints",
    "resilienceDefaultPerProvider": "Default (per provider)",
    "resilienceAlwaysOn": "Always on",
    "resilienceAlwaysOff": "Always off",
    "routingRemoveEntry": "Remover entrada",
    "routingNeedlesSubstrings": "Agulhas (substrings para combinar)",
    "routingCaseSensitive": "Diferencia maiúsculas de minúsculas",
    "routingPrefixes": "Prefixos",
    "routingMatch": "Partida",
    "routingReplacement": "Substituição",
    "routingReplaceAllOccurrences": "Substitua todas as ocorrências",
    "routingPatternRegex": "Padrão (regex)",
    "routingFlags": "Bandeiras",
    "routingNeedles": "Agulhas",
    "routingBlockText": "Bloquear texto",
    "routingIdempotencyKey": "Chave de idempotência",
    "routingEntrypoint": "Ponto de entrada",
    "routingVersionFormat": "Formato da versão",
    "routingCchAlgorithm": "Algoritmo CCH",
    "routingWordsToObfuscate": "Palavras para ofuscar (ZWJ inserido após o primeiro caractere)",
    "logsSettingsTitle": "Configurações de registros",
    "detailedLogsLabel": "Registros detalhados ativados",
    "detailedLogsDesc": "Habilitar registro detalhado de solicitação/resposta",
    "callLogPipelineLabel": "Pipeline de registro de chamadas",
    "callLogPipelineDesc": "Habilitar pipeline de processamento de log de chamadas",
    "maxDetailSizeLabel": "Tamanho máximo de detalhe (KB)",
    "maxDetailSizeDesc": "Tamanho máximo para entradas de log detalhadas",
    "ringBufferSizeLabel": "Tamanho do buffer de anel",
    "ringBufferSizeDesc": "Tamanho do buffer circular para logs",
    "semanticCacheEnabledLabel": "Cache Semântico Habilitado",
    "semanticCacheMaxSizeLabel": "Tamanho máximo do cache semântico",
    "semanticCacheMaxSizeDesc": "Número máximo de entradas de cache semântico",
    "semanticCacheTTLLabel": "TTL de cache semântico",
    "promptCacheEnabledLabel": "Cache de prompt ativado",
    "promptCacheEnabledDesc": "Habilitar cache de prompt",
    "promptCacheStrategyLabel": "Estratégia de cache de prompt",
    "promptCacheStrategyDesc": "Estratégia para cache imediato",
    "alwaysPreserveClientCacheLabel": "Sempre preserve o cache do cliente",
    "alwaysPreserveClientCacheDesc": "Política de preservação de cache do cliente",
    "logRetentionPolicyTitle": "Política de retenção de log",
    "resilienceUseUpstream429HintsForBreaker": "Use dicas upstream 429 (disjuntor)",
    "appearanceLogoPreviewAlt": "Visualização do logotipo",
    "appearanceFaviconPreviewAlt": "Visualização do favicon",
    "oneproxyLastSync": "Última sincronização",
    "oneproxyAllProtocols": "Todos os protocolos",
    "oneproxyCountryCodePlaceholder": "Código do país (por exemplo, EUA)",
    "oneproxyMinQualityPlaceholder": "Qualidade mínima",
    "oneproxyLoadingProxies": "Carregando proxies...",
    "oneproxyLastSyncLabel": "Última sincronização:",
    "oneproxyProxiesFetched": "Proxies obtidos:",
    "oneproxyConsecutiveFailures": "Falhas consecutivas:",
    "oneproxyErrorLabel": "Erro:",
    "oneproxyNever": "Nunca",
    "oneproxySyncStatusTitle": "Status de sincronização",
    "oneproxySuccess": "Sucesso",
    "oneproxyFailed": "Falha",
    "routingAntigravitySignatureTitle": "Modo de cache de assinatura antigravidade",
    "routingAntigravitySignatureDesc": "Controla se o OmniRoute reutiliza apenas assinaturas de pensamento do Gemini armazenadas ou aceita assinaturas fornecidas pelo cliente validadas em fluxos de tool-call compatíveis com Antigravity.",
    "routingAntigravitySignatureEnabledLabel": "Ativado",
    "routingAntigravitySignatureEnabledDesc": "Comportamento atual. Ignora assinaturas fornecidas pelo cliente e continua usando o fluxo armazenado do OmniRoute.",
    "routingAntigravitySignatureBypassLabel": "Bypass",
    "routingAntigravitySignatureBypassDesc": "Aceita assinaturas fornecidas pelo cliente após validação leve e recorre à assinatura armazenada quando inválida.",
    "routingAntigravitySignatureBypassStrictLabel": "Bypass Estrito",
    "routingAntigravitySignatureBypassStrictDesc": "Exige validação completa de protobuf antes de aceitar uma assinatura fornecida pelo cliente.",
    "routingHeaderFingerprintTitle": "Impressão digital do cabeçalho (por provedor)",
    "routingServerRejectedSave": "⚠ Salvamento rejeitado pelo servidor:",
    "routingAddTransformOp": "Adicionar uma operação de transformação",
    "routingClientCacheControlTitle": "Controle de cache do cliente",
    "routingClientCacheControlDesc": "Configura se o OmniRoute preserva marcadores cache_control fornecidos pelo cliente.",
    "routingClientCacheControlAutoDesc": "Para fluxos compatíveis com Claude determinísticos, preserva o cache_control do cliente como está. Se a solicitação não tiver cache_control, o OmniRoute não injeta marcadores próprios para compatibilidade com proxies de terceiros.",
    "routingClientCacheControlAlwaysLabel": "Sempre Preservar",
    "routingClientCacheControlAlwaysDesc": "Sempre encaminha os cabeçalhos cache_control fornecidos pelo cliente aos provedores upstream como estão.",
    "routingClientCacheControlNeverLabel": "Nunca Preservar",
    "routingClientCacheControlNeverDesc": "Sempre remove os cabeçalhos cache_control do cliente e deixa o OmniRoute gerenciar o cache onde os fluxos nativos do provedor suportam.",
    "routingZeroConfigTitle": "Roteamento automático de configuração zero",
    "routingZeroConfigDesc": "Ativa a seleção automática de provedor usando o prefixo auto/. Quando ativado, solicitações para auto, auto/coding, auto/fast, etc., serão roteadas dinamicamente entre todos os provedores conectados.",
    "routingDefaultAutoVariant": "Variante automática padrão",
    "visionBridge": "Ponte da Visão",
    "visionBridgeDesc": "Executa um fallback automático de visão para texto antes de rotear solicitações de imagem para modelos que aceitam apenas texto.",
    "visionBridgeEnabledLabel": "Ativado",
    "visionBridgeEnabledDesc": "Ativa a ponte pré-chamada que substitui partes de imagem pelo texto extraído.",
    "visionBridgeModel": "Modelo de ponte",
    "visionBridgeModelPlaceholder": "openai/gpt-4o-mini",
    "visionBridgeModelHint": "Qualquer ID de modelo OmniRoute que suporte visão pode ser usado aqui.",
    "visionBridgePrompt": "Alerta de ponte",
    "visionBridgePromptPlaceholder": "Descreva esta imagem de forma concisa.",
    "visionBridgePromptHint": "Enviado ao modelo de visão antes que a descrição extraída seja injetada de volta na solicitação original.",
    "visionBridgeTimeoutMs": "Tempo limite (ms)",
    "visionBridgeMaxImagesPerRequest": "Máximo de imagens por solicitação",
    "resilienceMaxBackoffSteps": "Max backoff steps",
    "resilienceProviderBreakerTitle": "Circuit Breaker per Provider",
    "resilienceFailureThreshold": "Failure threshold",
    "resilienceResetTimeout": "Redefinir tempo limite",
    "resilienceFailureThresholdLabel": "Limite de falha",
    "resilienceResetTimeoutLabel": "Redefinir tempo limite",
    "resilienceConnectionCooldownTitle": "Connection Cooldown",
    "resilienceUseUpstreamRetryHintsLabel": "Use dicas de nova tentativa upstream",
    "resilienceUseUpstream429BreakerLabel": "Use dicas upstream 429 (disjuntor)",
    "resilienceMaxBackoffStepsLabel": "Etapas máximas de espera",
    "resilienceYes": "Sim",
    "resilienceNo": "Não",
    "resilienceDefault": "Default",
    "storageDatabaseBackupRetention": "Retenção de backup de banco de dados",
    "storagePurgeData": "Limpar dados",
    "retentionQuotaSnapshots": "Instantâneos de cota (dias)",
    "retentionMcpAudit": "Auditoria MCP (dias)",
    "retentionA2aEvents": "Eventos A2A (dias)",
    "retentionCallLogs": "Registros de chamadas (dias)",
    "retentionUsageHistory": "Histórico de uso (dias)",
    "retentionMemoryEntries": "Entradas de memória (dias)",
    "storageAutoVacuumMode": "Modo de vácuo automático",
    "storageScheduledVacuum": "Vácuo programado",
    "storageVacuumHour": "Hora de Vácuo (0-23)",
    "storagePageSize": "Tamanho da página (bytes)",
    "storageDatabaseSize": "Tamanho do banco de dados",
    "storagePageCount": "Contagem de páginas",
    "storageFreelistCount": "Contagem de lista livre",
    "storageLastVacuum": "Último Vácuo",
    "storageLastOptimization": "Última otimização",
    "storageIntegrityCheck": "Verificação de integridade",
    "storageIntegrityOk": "✓ OK",
    "storageIntegrityError": "✗ Erro",
    "storageUsageTokenBuffer": "Buffer de token de uso",
    "compressionSettingsAutoTriggerMode": "Modo de disparo automático",
    "compressionSettingsMcpDescriptionCompression": "Compressão de descrição MCP",
    "compressionSettingsCavemanIntensity": "Intensidade do homem das cavernas",
    "compressionSettingsCavemanOutputMode": "Modo de saída do homem das cavernas",
    "compressionSettingsOutputIntensity": "Intensidade de saída",
    "compressionSettingsAutoClarityBypass": "Desvio de clareza automática",
    "resilienceWaitForCooldown": "Aguarde o resfriamento",
    "resilienceEnableServerSideWait": "Habilitar espera do lado do servidor",
    "resilienceMaximumRetries": "Máximo de tentativas",
    "resilienceMaximumWaitPerRetry": "Espera máxima por nova tentativa",
    "memorySkillsSkillsmpMarketplace": "Mercado SkillsMP",
    "memorySkillsFailedToSave": "Falha ao salvar",
    "memorySkillsApiKey": "Chave de API",
    "memorySkillsActiveSkillsProvider": "Provedor de habilidades ativas",
    "cliproxyapiFallback": "substituto CLIProxyAPI",
    "cliproxyapiEnableFallback": "Habilitar substituto CLIProxyAPI",
    "cliproxyapiUrl": "URL CLIProxyAPI",
    "cliproxyapiStatus": "Status CLIProxyAPI",
    "cliproxyapiNotDetected": "Não detectado",
    "payloadRulesTitle": "Regras de carga útil",
    "payloadRulesDesc": "Configure mutações de carga útil de solicitação por modelo e protocolo. As alterações são persistidas nas configurações e recarregadas no runtime imediatamente após o salvamento.",
    "payloadRuleDefaultTitle": "padrão (default)",
    "payloadRuleDefaultDesc": "Aplica parâmetros apenas quando o caminho de destino está ausente na carga útil de saída.",
    "payloadRuleOverrideTitle": "sobrescrever (override)",
    "payloadRuleOverrideDesc": "Força valores na carga útil, substituindo qualquer coisa já presente naquele caminho.",
    "payloadRuleFilterTitle": "filtrar (filter)",
    "payloadRuleFilterDesc": "Remove parâmetros bloqueados da carga útil antes que a solicitação upstream seja enviada.",
    "payloadRuleDefaultRawTitle": "padrão bruto (defaultRaw)",
    "payloadRuleDefaultRawDesc": "Como o padrão, mas os valores de string são analisados como JSON primeiro, quando possível.",
    "payloadEditorTitle": "Editor",
    "payloadEditorDesc": "Use o formato do esquema de runtime: default, override, filter, defaultRaw. A chave legada default-raw também é aceita.",
    "payloadEditorReady": "Pronto",
    "payloadResetInfo": "Editor redefinido para o modelo neutro. Salve para aplicá-lo.",
    "payloadSaveSuccess": "Regras de payload salvas e recarregadas.",
    "payloadJsonParseError": "Erro de análise JSON: {error}",
    "payloadMustBeObject": "As regras de payload devem ser um objeto JSON.",
    "payloadInvalidJson": "Carga útil JSON inválida.",
    "payloadValidJsonRequired": "As regras de payload devem ser um JSON válido antes de salvar.",
    "savePayloadRules": "Salvar Regras de Payload",
    "requestLimitsTitle": "Limites de Solicitação",
    "requestLimitsDesc": "Configure limites globais de solicitação e proteções de concorrência.",
    "maxRequestSizeLabel": "Tamanho Máx. da Solicitação (MB)",
    "maxRequestSizeDesc": "Tamanho máximo permitido para solicitações de API de entrada.",
    "maxResponseSizeLabel": "Tamanho Máx. da Resposta (MB)",
    "maxResponseSizeDesc": "Tamanho máximo permitido para respostas de API de saída.",
    "maxRequestTokensLabel": "Tokens Máx. da Solicitação",
    "maxRequestTokensDesc": "Total máximo de tokens permitidos em uma única solicitação.",
    "maxResponseTokensLabel": "Tokens Máx. da Resposta",
    "maxResponseTokensDesc": "Total máximo de tokens permitidos em uma única resposta.",
    "modelCooldownsTitle": "Modelos em espera",
    "modelCooldownsEmpty": "Nenhum modelo em espera no momento.",
    "codexFastTierTitle": "Camada rápida do Codex",
    "codexFastTierDesc": "Injete globalmente service_tier=priority para solicitações do OpenAI Codex.",
    "codexFastTierHint": "Quando habilitado, o OmniRoute adiciona service_tier=priority às solicitações de saída do Codex para conexões que ainda não especificam uma camada. O nível de prioridade requer uma chave de API OpenAI Enterprise ou o caminho ChatGPT-auth Codex; outros tipos de chave receberão um erro relacionado ao nível do OpenAI. As configurações por conexão na página do provedor Codex têm precedência.",
    "codexFastTierSaveError": "Falha ao atualizar a configuração do Codex Fast Tier",
    "codexFastTierTierLabel": "Camada de serviço",
    "codexFastTierTierPriority": "Prioridade",
    "codexFastTierTierFlex": "Flex",
    "codexFastTierTierDefault": "Padrão",
    "codexFastTierModelsLabel": "Modelos da Camada Rápida",
    "codexFastTierModelsHint": "Apenas modelos marcados recebem service_tier quando a Camada Rápida está habilitada.",
    "codexFastTierModelCheckbox": "Habilitar Camada Rápida para {model}",
    "claudeFastModeTitle": "Modo Rápido Claude",
    "claudeFastModeDesc": "Opte pelas solicitações selecionadas de Claude no Modo Antrópico Rápido (velocidade: \"rápido\").",
    "claudeFastModeHint": "A Anthropic não oferece suporte oficial ao Modo Rápido para clientes estilo SDK. Quando habilitado, o OmniRoute encaminha um cabeçalho X-CPA-Force-Fast-Mode para que uma construção CLIProxyAPI emparelhada possa aceitar a falsificação do ponto de entrada. Apenas os modelos Opus listados são controlados pela verificação do lado do cliente da Anthropic. O nível de assinatura, o plano máximo e o saldo de crédito do modo rápido ainda são aplicados no lado do servidor – o Anthropic pode retornar out_of_credits mesmo quando a alternância está ativada.",
    "claudeFastModeModelsLabel": "Aplicado a modelos ({count})",
    "claudeFastModeModelCheckbox": "Ativar modo rápido para {model}",
    "claudeFastModeSaveError": "Falha ao atualizar a configuração do modo rápido do Claude",
    "authz": {
      "title": "Inventário de Authz",
      "description": "Classificação de rotas em 5 níveis com política de bypass em tempo real. A leitura mostra a taxonomia completa; as mutações solicitam a senha de gerenciamento.",
      "loading": "Carregando inventário…",
      "loadError": "Falha ao carregar o inventário de authz",
      "tier": {
        "LOCAL_ONLY": "Apenas local",
        "ALWAYS_PROTECTED": "Sempre protegido",
        "MANAGEMENT": "Gerenciamento",
        "CLIENT_API": "API do Cliente",
        "PUBLIC": "Público"
      },
      "bypass": {
        "section": "Bypass de escopo de gerenciamento",
        "kill_switch": {
          "label": "Interruptor de bypass",
          "desc": "Alternador mestre. Quando desligado, nenhum prefixo LOCAL_ONLY é acessível fora do loopback, independentemente da lista por prefixo."
        },
        "prefix": {
          "label": "Prefixos com bypass",
          "desc": "Prefixos LOCAL_ONLY que chaves de API de escopo de gerenciamento (ou sessões do dashboard) podem acessar a partir de hosts externos.",
          "add": "Adicionar prefixo",
          "placeholder": "/api/mcp/v2/",
          "empty": "Nenhum prefixo configurado. Bypass efetivamente desligado."
        },
        "cli_tools_runtime_note": "Prefixo capaz de spawn. Negado em tempo de compilação; não pode ser contornado. Exibido apenas para leitura."
      },
      "password": {
        "prompt": {
          "label": "Senha atual",
          "desc": "Reconfirme para aplicar alterações que impactam a segurança."
        },
        "placeholder": "Senha de gerenciamento atual",
        "cancel": "Cancelar",
        "submit": "Aplicar"
      },
      "save": "Salvar alterações",
      "saved": "Configurações de authz atualizadas",
      "pending": "Alterações não salvas",
      "badge": {
        "bypassable": "Bypass disponível via escopo manage",
        "strict": "Loopback estrito",
        "auth_required": "Autenticação necessária",
        "public": "Público",
        "always_protected": "Sempre protegido",
        "spawn_capable": "Capaz de spawn"
      },
      "error": {
        "PASSWORD_REQUIRED": "Senha atual necessária para aplicar estas alterações.",
        "PASSWORD_MISMATCH": "A senha atual está incorreta.",
        "INSUFFICIENT_SCOPE": "A chave de API não possui o escopo de gerenciamento.",
        "BYPASS_PREFIX_NOT_ALLOWED": "Um ou mais prefixos visam rotas capazes de spawn e não podem ser ignorados.",
        "GENERIC": "Falha ao atualizar as configurações de authz."
      }
    },
    "resilienceBaseCooldownLabel": "Tempo de espera básico",
    "scopeLabel": "Escopo",
    "triggerLabel": "Gatilho",
    "effectLabel": "Efeito",
    "statusEnabled": "Habilitado",
    "statusDisabled": "Desativado",
    "resilienceRequestQueueScope": "Fila por solicitação",
    "resilienceRequestQueueTrigger": "Antes de enviar para o upstream",
    "resilienceRequestQueueEffect": "Enfileira solicitações, limita a simultaneidade e espaça chamadas",
    "resilienceRequestQueueDesc": "Esta camada controla apenas o enfileiramento e o ritmo. Ele não armazena resfriamentos ou disjuntores abertos.",
    "resilienceAutoEnableApiKeyProvidersDesc": "Ativa a proteção de fila por padrão para conexões de chave de API ativas.",
    "resilienceMaxQueueWait": "Tempo máximo de espera na fila",
    "resilienceConnectionCooldownScope": "Conexão individual",
    "resilienceConnectionCooldownTrigger": "Quando uma conexão retorna uma falha transitória de upstream",
    "resilienceConnectionCooldownEffect": "Ignora temporariamente essa conexão e aumenta a espera para falhas repetidas",
    "resilienceConnectionCooldownDesc": "O resfriamento básico cobre falhas de conexão transitórias. Quando as dicas de nova tentativa upstream estão habilitadas, a janela explícita do provedor substitui o resfriamento local.",
    "resilienceUseUpstreamRetryHintsDesc": "Usa valores de repetição após/redefinição do provedor upstream quando disponíveis.",
    "resilienceUseUpstream429BreakerHints": "Use dicas upstream 429 para o resfriamento do disjuntor",
    "resilienceUseUpstream429BreakerHintsShort": "Use dicas 429 upstream",
    "resilienceUseUpstream429BreakerHintsDesc": "Aplique sinais Retry-After/cota esgotada de 429 respostas à duração do resfriamento do disjuntor. O padrão usa uma política por provedor: os provedores de nuvem diretos são ativados por padrão; Provedores de proxy reverso, auto-hospedados e apoiados por CLI são desativados por padrão. Independente de \"Usar dicas de nova tentativa upstream\".",
    "resilienceProviderBreakerScope": "Fornecedor inteiro",
    "resilienceProviderBreakerTrigger": "Falhas finais de transporte/servidor após o esgotamento do fallback da conexão",
    "resilienceProviderBreakerEffect": "Bloqueia temporariamente esse provedor até que o tempo de redefinição expire",
    "resilienceProviderBreakerDesc": "O estado do disjuntor ativo aparece apenas na página Integridade. Os limites de taxa 429 com escopo de conexão permanecem no Tempo de Resfriamento da Conexão e não desarmam o disjuntor do provedor.",
    "resilienceResetTime": "Redefinir hora",
    "resilienceWaitForCooldownTitle": "Aguarde o resfriamento",
    "resilienceWaitForCooldownScope": "Solicitação atual do cliente",
    "resilienceWaitForCooldownTrigger": "Quando todas as conexões candidatas já estiverem esfriando",
    "resilienceWaitForCooldownEffect": "Espera no servidor e tenta novamente quando o primeiro tempo de espera expirar",
    "resilienceWaitForCooldownDesc": "Isso afeta apenas a solicitação atual. Ele não armazena conexão ou estado do provedor.",
    "resilienceEnableServerWait": "Habilitar espera do lado do servidor",
    "resilienceEnableServerWaitDesc": "Quando ativado, o OmniRoute aguarda o primeiro resfriamento expirar e tenta novamente automaticamente.",
    "resilienceMaxAttempts": "Máximo de tentativas",
    "resilienceMaxWaitPerAttempt": "Espera máxima por tentativa",
    "forcedFingerprintTitle": "Sempre ativado para {provider} — necessário para a segurança da conta OAuth; não pode ser desativado.",
    "forcedFingerprintBadge": "Obrigatório",
    "codexSessionAffinityTitle": "Afinidade de sessão do Codex",
    "codexSessionAffinityDesc": "Mantém uma conversa do Codex na mesma conta por esses segundos. 0 o desativa.",
    "codexSessionAffinityTtl": "TTL de afinidade (segundos)",
    "resetAwareQuotaCacheTitle": "Cache de cota com reconhecimento de redefinição",
    "resetAwareQuotaCacheDesc": "Armazena em cache a telemetria de cota apenas para pedidos com reconhecimento de redefinição. A simulação de cota ainda protege as solicitações. 0/0 continua buscando ao vivo.",
    "resetAwareQuotaCacheTtl": "TTL atualizado (segundos)",
    "resetAwareQuotaCacheMaxStale": "Max obsoleto (segundos)",
    "qdrantCleanupSuccess": "OK: {count} ponto(s) removido(s) (retenção: {days} dias)",
    "qdrantCleanupFailed": "Falha na limpeza",
    "qdrantCleanupError": "Erro: {error}",
    "vercelRelaySuccess": "Vercel Relay implantado com sucesso",
    "vercelRelayButton": "Implantar Vercel Relay",
    "vercelRelayModalTitle": "Implantar Vercel Relay",
    "vercelRelayWarning": "Aviso: É necessário um token de implantação da Vercel. Este token será usado apenas para criar o relay serverless e nunca será armazenado pelo OmniRoute.",
    "vercelRelayTokenLabel": "Token de Acesso Vercel",
    "vercelRelayProjectNameLabel": "Nome do Projeto Vercel",
    "vercelRelayFreeTierNote": "Relays são endpoints de proxy leves implantados no plano gratuito da Vercel para contornar limitações de rede local/região.",
    "vercelRelayDeploying": "Implantando...",
    "vercelRelayDeploy": "Implantar",
    "homePinProviderQuotaToHome": "Pin Information to Home Page",
    "homeProviderQuotaLimits": "Provider Quota Limits",
    "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.",
    "homeQuickStart": "Quick Start",
    "homeQuickStartDesc": "Show the Quick Start panel on the Home page.",
    "homeProviderTopology": "Provider Topology",
    "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.",
    "proxyGlobalConfigTab": "Configuração Global",
    "proxyPoolTab": "Pool de Proxy",
    "freePoolTab": "Pool Gratuito",
    "proxyDocumentationTab": "Documentação",
    "proxyPool": "Pool de Proxies",
    "freePool": "Pool Gratuito",
    "proxyDocumentation": "Documentação de Proxy",
    "proxyDocumentationScopeTitle": "Resolução de escopo de proxy",
    "proxyDocumentationScopeDescBefore": "O OmniRoute resolve o proxy de saída na seguinte ordem de prioridade: ",
    "proxyDocumentationScopeOrder": "combo → conta → provedor → global",
    "proxyDocumentationScopeDescAfter": ". O escopo mais específico vence.",
    "proxyDocumentationAddTitle": "Adicionando um proxy personalizado",
    "proxyDocumentationAddDescBefore": "Vá para a aba ",
    "proxyDocumentationAddDescMiddle": " → clique em ",
    "proxyDocumentationAddCta": "+ Adicionar proxy",
    "proxyDocumentationAddDescAfter": ". Preencha tipo (http/https/socks5), host e porta. Opcionalmente, atribua-o a um escopo.",
    "proxyDocumentationBulkTitle": "Formato de importação em massa",
    "proxyDocumentationBulkDesc": "Campos delimitados por pipe:",
    "proxyDocumentationSocks5DescBefore": "Proxies SOCKS5 vêm desativados por padrão. Defina",
    "proxyDocumentationFreePoolDesc": "A aba Pool Gratuito agrega proxies do 1proxy, Proxifly e IPLocate. Use ⊕ para testar e promover um proxy ao seu registro. Somente proxies que passarem no teste de conectividade serão adicionados.",
    "proxyDocumentationVercelRelayDescBefore": "O Vercel Relay é um relay de borda de saída, não um túnel de entrada. Fazer deploy dele envia chamadas de API de LLM pelos IPs dinâmicos da Vercel, contornando bloqueios geográficos de datacenter e limites de taxa. O relay é protegido por um header secreto gerado",
    "proxyDocumentationVercelRelayDescAfter": "Seu token da Vercel é usado apenas durante o deploy e nunca é armazenado.",
    "vercelRelayTokenRequired": "Token obrigatório",
    "vercelRelayDeployFailed": "Falha no deploy",
    "vercelRelayTokenHint": "O token é usado apenas durante o deploy e nunca é armazenado.",
    "proxyFreePoolFilterProtocol": "Filtrar por protocolo",
    "proxyFreePoolProtocol": "Protocolo",
    "proxyFreePoolCountryPlaceholder": "País (ex.: US)",
    "proxyFreePoolFilterCountry": "Filtrar por país",
    "proxyFreePoolMinQualityPlaceholder": "Qualidade mín.",
    "proxyFreePoolMinQualityLabel": "Pontuação mínima de qualidade",
    "proxyFreePoolSyncAll": "Sincronizar tudo",
    "proxyFreePoolTotal": "Total",
    "proxyFreePoolInPool": "No pool",
    "proxyFreePoolAvgQuality": "Qualidade média",
    "proxyFreePoolSelected": "{count} selecionados",
    "proxyFreePoolAddSelected": "Adicionar selecionados ao pool",
    "proxyFreePoolAddVisible": "Adicionar todos os visíveis ao pool",
    "proxyFreePoolSource": "Origem",
    "proxyFreePoolHostPort": "Host:Porta",
    "proxyFreePoolType": "Tipo",
    "proxyFreePoolCountry": "País",
    "proxyFreePoolQuality": "Qualidade",
    "proxyFreePoolLatency": "Latência",
    "proxyFreePoolEmpty": "Nenhum proxy encontrado. Clique em Sincronizar tudo para buscar nas fontes.",
    "close": "Fechar",
    "cancel": "Cancelar"
  },
  "sidebar": {
    "home": "Início",
    "dashboard": "Painel",
    "providers": "Provedores",
    "combos": "Combos",
    "usage": "Uso",
    "analytics": "Análises",
    "costs": "Custos",
    "health": "Saúde",
    "proxy": "Proxy",
    "limits": "Limites e Cotas",
    "cliTools": "Ferramentas CLI",
    "media": "Mídia",
    "settings": "Configurações",
    "translator": "Tradutor",
    "playground": "Playground",
    "searchTools": "Search Tools",
    "agents": "Agentes",
    "cloudAgents": "Agentes de nuvem",
    "memory": "Memória",
    "skills": "Habilidades",
    "omniSkills": "OmniSkills",
    "agentSkills": "Habilidades do agente",
    "docs": "Documentação",
    "issues": "Problemas",
    "endpoints": "Endpoints",
    "endpointsSubtitle": "Seus URLs de conexão de IA",
    "apiManager": "Gerenciador API",
    "apiManagerSubtitle": "Gerenciar chaves de API e acesso",
    "embeddedServices": "Serviços Embarcados",
    "embeddedServicesSubtitle": "Gerenciar serviços de proxy locais",
    "logs": "Logs",
    "webhooks": "Webhooks",
    "webhooksSubtitle": "Seja notificado sobre eventos",
    "combosSubtitle": "Provedores de grupo para failover",
    "batchSubtitle": "Processar várias solicitações",
    "contextCavemanSubtitle": "Compactação imediata",
    "contextRtkSubtitle": "Filtragem de saída",
    "auditLog": "Log de Auditoria",
    "shutdown": "Desligar",
    "restart": "Reiniciar",
    "shutdownConfirm": "Desligar o OmniRoute?",
    "restartConfirm": "Reiniciar o OmniRoute?",
    "version": "v{version}",
    "debug": "Depuração",
    "system": "Sistema",
    "help": "Ajuda",
    "primarySection": "Main",
    "cliSection": "CLI",
    "debugSection": "Debug",
    "systemSection": "System",
    "helpSection": "Help",
    "serverDisconnected": "Servidor Desconectado",
    "serverDisconnectedMsg": "O servidor proxy foi parado ou está reiniciando.",
    "expandSidebar": "Expandir barra lateral",
    "collapseSidebar": "Recolher barra lateral",
    "themes": "Themes",
    "presetColors": "Popular colors",
    "createTheme": "Create theme",
    "chooseColor": "Pick one color",
    "themeCoral": "Coral",
    "themeBlue": "Blue",
    "themeRed": "Red",
    "themeGreen": "Green",
    "themeViolet": "Violet",
    "themeOrange": "Orange",
    "themeCyan": "Cyan",
    "cliToolsShort": "Ferramentas",
    "cache": "Cache",
    "cacheShort": "Cache",
    "batch": "Testes em Lote",
    "themeSystem": "Theme System",
    "whitelabelingDesc": "Whitelabeling Desc",
    "switchThemes": "Switch Themes",
    "themeAccentDesc": "Theme Accent Desc",
    "uploadFavicon": "Upload Favicon",
    "themeDark": "Theme Dark",
    "customLogoDesc": "Custom Logo Desc",
    "sidebarVisibilityToggle": "Sidebar Visibility Toggle",
    "themeAccent": "Theme Accent",
    "resetFavicon": "Reset Favicon",
    "whitelabeling": "Whitelabeling",
    "darkMode": "Dark Mode",
    "uploadLogo": "Upload Logo",
    "themeLight": "Theme Light",
    "appName": "App Name",
    "appNameDesc": "App Name Desc",
    "resetLogo": "Reset Logo",
    "customFavicon": "Custom Favicon",
    "hideHealthLogs": "Hide Health Logs",
    "customLogo": "Custom Logo",
    "appearance": "Appearance",
    "themeSelectionAria": "Theme Selection Aria",
    "themeCreate": "Theme Create",
    "customFaviconDesc": "Custom Favicon Desc",
    "logoPreview": "Logo Preview",
    "themeCustom": "Theme Custom",
    "hideHealthLogsDesc": "Hide Health Logs Desc",
    "faviconPreview": "Favicon Preview",
    "changelog": "Changelog",
    "contextSection": "Context & Cache",
    "contextCaveman": "Caveman",
    "contextRtk": "RTK",
    "contextCombos": "Combos de Engines",
    "routingSection": "Routing",
    "protocolsSection": "Protocols",
    "agentsAiSection": "Agents & AI",
    "cacheContextSection": "Cache & Context",
    "analyticsSection": "Analytics",
    "costsSection": "Custos",
    "monitoringSection": "Monitoring",
    "auditSecuritySection": "Audit & Security",
    "devtoolsSection": "Dev Tools",
    "configurationSection": "Configuration",
    "aiFeaturesSection": "AI Features",
    "mcp": "MCP",
    "a2a": "A2A",
    "apiEndpoints": "API Endpoints",
    "batchFiles": "Files",
    "analyticsEvals": "Evals",
    "analyticsSearch": "Search",
    "analyticsUtilization": "Utilization",
    "analyticsComboHealth": "Combo Health",
    "analyticsCompression": "Compression",
    "costsBudget": "Budget",
    "costsQuotaShare": "Compartilhamento de Cota",
    "costsPricing": "Pricing",
    "logsProxy": "Proxy Logs",
    "logsConsole": "Console",
    "logsActivity": "Activity",
    "auditMcp": "MCP Audit",
    "auditA2a": "Auditoria A2A",
    "settingsGeneral": "General",
    "settingsAppearance": "Appearance",
    "settingsAi": "AI Settings",
    "settingsSecurity": "Security",
    "settingsFeatureFlags": "Sinalizadores de recursos",
    "settingsAuthz": "Autorização",
    "settingsRouting": "Routing",
    "settingsResilience": "Resilience",
    "settingsAdvanced": "Advanced",
    "omniProxySection": "OmniProxy",
    "quotaTracker": "Provider Quota",
    "providerQuota": "Provider Quota",
    "runtime": "Runtime",
    "consoleLogs": "Console Logs",
    "globalRouting": "Global Routing",
    "mitmProxy": "MITM Proxy",
    "oneProxy": "1Proxy",
    "agenticFeaturesSection": "Agentic Features",
    "otherFeaturesSection": "Other Features",
    "compressionContextGroup": "Compression Context",
    "toolsGroup": "Tools",
    "integrationsGroup": "Integrations",
    "proxyGroup": "Proxy",
    "costsParametersGroup": "Costs Parameters",
    "auditGroup": "Audit",
    "batchGroup": "Batch",
    "homeSubtitle": "Visão geral do painel",
    "providersSubtitle": "Gerenciar provedores de IA",
    "quotaTrackerSubtitle": "Acompanhar limites de uso",
    "providerQuotaSubtitle": "Acompanhar limites de uso por provedor",
    "runtimeSubtitle": "Resiliência e sessões em tempo real",
    "contextCombosSubtitle": "Combinar engines de compressão",
    "cliToolsSubtitle": "Configurar runtimes CLI",
    "agentsSubtitle": "Gerenciar agentes locais",
    "cloudAgentsSubtitle": "Gerenciar agentes na nuvem",
    "apiEndpointsSubtitle": "Expor endpoints customizados",
    "proxySubtitle": "Configurações do proxy HTTP",
    "mitmProxySubtitle": "Interceptação MITM",
    "oneProxySubtitle": "Gateway proxy público",
    "leaderboard": "Leaderboard",
    "profile": "Profile",
    "tokens": "Tokens",
    "leaderboardSubtitle": "Rankings and achievements",
    "profileSubtitle": "Account and preferences",
    "tokensSubtitle": "Token usage and budgets",
    "usageSubtitle": "Estatísticas de tráfego e uso",
    "analyticsComboHealthSubtitle": "Confiabilidade dos targets do combo",
    "analyticsUtilizationSubtitle": "Utilização de provedores",
    "costsSubtitle": "Detalhamento de gastos",
    "cacheSubtitle": "Taxa de acertos do cache",
    "analyticsCompressionSubtitle": "Estatísticas de economia de tokens",
    "analyticsSearchSubtitle": "Analytics das ferramentas de busca",
    "analyticsEvalsSubtitle": "Resultados das suites de avaliação",
    "logsSubtitle": "Logs da aplicação",
    "logsProxySubtitle": "Logs de tráfego do proxy",
    "consoleLogsSubtitle": "Saída do console",
    "logsActivitySubtitle": "Log de atividade do usuário",
    "healthSubtitle": "Verificação de saúde do sistema",
    "costsPricingSubtitle": "Regras de preço por modelo",
    "costsBudgetSubtitle": "Limites de orçamento",
    "costsQuotaShareSubtitle": "Compartilhe cotas de provedor entre chaves",
    "auditLogSubtitle": "Auditoria de autorização",
    "auditMcpSubtitle": "Auditoria do servidor MCP",
    "auditA2aSubtitle": "Auditoria do protocolo A2A",
    "translatorSubtitle": "Conversão de formatos",
    "playgroundSubtitle": "Testar prompts ao vivo",
    "searchToolsSubtitle": "Registro de ferramentas de busca",
    "memorySubtitle": "Memória persistente do agente",
    "omniSkillsSubtitle": "Registro de skills sandbox",
    "agentSkillsSubtitle": "Registro de skills A2A",
    "mcpSubtitle": "Controles do servidor MCP",
    "a2aSubtitle": "Servidor do protocolo A2A",
    "mediaSubtitle": "Arquivos de mídia em cache",
    "batchFilesSubtitle": "Arquivos de entrada/saída de batch",
    "settingsSubtitle": "Todas as configurações",
    "settingsGeneralSubtitle": "Básicos do app",
    "settingsAppearanceSubtitle": "Tema e layout",
    "settingsAiSubtitle": "Padrões de comportamento da IA",
    "globalRoutingSubtitle": "Regras de roteamento global",
    "settingsResilienceSubtitle": "Retries e circuit breakers",
    "settingsAdvancedSubtitle": "Opções avançadas",
    "settingsSecuritySubtitle": "Auth e criptografia",
    "settingsFeatureFlagsSubtitle": "Alternar recursos do sistema",
    "settingsSidebar": "Sidebar",
    "settingsSidebarSubtitle": "Customize sidebar layout",
    "settingsAuthzSubtitle": "Inventário de rotas e política de bypass",
    "docsSubtitle": "Documentação",
    "issuesSubtitle": "Reportar um bug",
    "changelogSubtitle": "Notas de versão",
    "costsQuotaPlans": "Planos & Cotas",
    "costsQuotaPlansSubtitle": "Configurar planos por provider",
    "activity": "Atividade",
    "activitySubtitle": "Feed amigável de eventos recentes",
    "logsGroup": "Logs",
    "systemGroup": "Sistema",
    "costsOverview": "Visão geral",
    "costsOverviewSubtitle": "Análise consolidada de custos",
    "agentBridge": "Agent Bridge",
    "agentBridgeSubtitle": "Interceptar tráfego de agentes IDE",
    "trafficInspector": "Inspector de Tráfego",
    "trafficInspectorSubtitle": "Monitorar chamadas LLM + debugar tráfego HTTPS",
    "cliCode": "CLI Code's",
    "cliCodeSubtitle": "Ferramentas de código que apontam para o OmniRoute",
    "cliAgents": "CLI Agents",
    "cliAgentsSubtitle": "Agentes autônomos com CLI",
    "acpAgents": "ACP Agents",
    "acpAgentsSubtitle": "CLIs spawnadas pelo OmniRoute"
  },
  "skills": {
    "title": "Skills",
    "description": "Gerencie e monitore skills de IA",
    "skillsTab": "Skills",
    "executionsTab": "Execuções",
    "sandboxTab": "Sandbox",
    "loading": "Carregando skills...",
    "noSkills": "Nenhuma skill encontrada",
    "noExecutions": "Nenhuma execução encontrada",
    "enabled": "Ativado",
    "disabled": "Desativado",
    "version": "Versão",
    "tableDescription": "Descrição",
    "skill": "Skill",
    "status": "Status",
    "duration": "Duração",
    "time": "Tempo",
    "sandboxConfig": "Configuração da Sandbox",
    "cpuLimit": "Limite de CPU",
    "cpuLimitDesc": "Tempo máximo de execução por skill",
    "memoryLimit": "Limite de Memória",
    "memoryLimitDesc": "Alocação máxima de memória",
    "timeout": "Timeout",
    "timeoutDesc": "Tempo máximo de espera por resposta",
    "networkAccess": "Acesso à Rede",
    "networkAccessDesc": "Permitir requisições de rede de saída",
    "mode": "Mode",
    "q": "Q",
    "filterSkillsPlaceholder": "Filtre habilidades por nome, descrição ou tag",
    "allModes": "Todos os modos",
    "totalSkills": "Total de Habilidades",
    "enabledSkills": "Ativadas",
    "totalExecutions": "Execuções",
    "successRate": "Taxa de Sucesso",
    "marketplaceTab": "Marketplace",
    "applyFilters": "Aplicar filtros",
    "popularDefaultsLabel": "Populares por padrão para o provedor selecionado:",
    "onMode": "LIGADO",
    "offMode": "DESLIGADO",
    "autoMode": "AUTO",
    "installSkillButton": "Instalar Habilidade",
    "installSkillModalTitle": "Instalar Habilidade",
    "installJsonPlaceholder": "Cole o JSON do manifesto da habilidade aqui...",
    "installing": "Instalando...",
    "installSuccess": "Habilidade instalada ({id})",
    "installError": "Falha na instalação",
    "invalidJson": "JSON inválido",
    "searchMarketplacePlaceholder": "Buscar habilidades...",
    "searchMarketplace": "Buscar no Marketplace",
    "marketplaceEmpty": "Nenhuma habilidade encontrada no marketplace",
    "marketplaceError": "Falha na busca",
    "installingFromMarketplace": "Instalando do marketplace...",
    "popularSkills": "Habilidades Populares",
    "skillsMarketplace": "Mercado de habilidades",
    "searching": "Buscando...",
    "pageInfo": "Página {page} de {totalPages} ({total} total)",
    "previous": "Anterior",
    "next": "Próximo",
    "activeProvider": "Provedor ativo:",
    "changeInSettings": "Altere isso em Configurações → Memória e Habilidades.",
    "installs": "instalações",
    "marketplaceSkillsMpHint": "Configure sua chave de API do SkillsMP nas Configurações para navegar no marketplace.",
    "marketplaceSkillsShHint": "Pesquise no diretório aberto skills.sh para descobrir e instalar habilidades de agentes.",
    "installSkillModalDesc": "Cole um JSON de manifesto de habilidade ou carregue um arquivo .json.",
    "uploadJson": "Carregar JSON",
    "cancel": "Cancelar",
    "installSkill": "Instalar habilidade"
  },
  "stats": {
    "usageOverview": "Visão Geral de Uso",
    "outputTokens": "Tokens de Saída",
    "totalCost": "Custo Total",
    "usageByModel": "Uso por Modelo",
    "usageByAccount": "Uso por Conta",
    "failedToLoad": "Falha ao carregar estatísticas de uso.",
    "tokenHealth": "Saúde dos Tokens",
    "totalOAuth": "Total OAuth",
    "healthy": "Saudável",
    "warning": "Aviso",
    "errored": "Com Erro",
    "lastCheck": "Última verificação",
    "noData": "Sem dados",
    "share": "Compartilhar",
    "unableToLoad": "Não foi possível carregar métricas do sistema",
    "product": "Produto",
    "resources": "Recursos",
    "company": "Empresa"
  },
  "telemetry": {
    "title": "Telemetria do Sistema",
    "description": "Sinais contínuos de solicitação, tempo de execução, sessão e memória deste processo OmniRoute.",
    "uptime": "Tempo de atividade",
    "totalRequests": "Total de solicitações",
    "avgLatency": "Latência média",
    "errorRate": "Taxa de erro",
    "activeConnections": "Conexões Ativas",
    "memoryUsage": "Uso de memória",
    "latencyTrend": "Tendência de latência",
    "throughputTrend": "Tendência de rendimento",
    "memoryTrend": "Tendência de memória",
    "refresh": "Atualizar",
    "updatedAt": "{time} atualizado",
    "loadFailed": "Falha ao carregar a telemetria.",
    "partialData": "A telemetria está parcialmente disponível: {error}"
  },
  "templateDescriptions": {
    "simple-chat": "Modelo básico de chat com mensagem do sistema",
    "streaming": "Modelo para streaming de respostas",
    "system-prompt": "Modelo com prompt de sistema personalizado",
    "thinking": "Modelo com orçamento de raciocínio/pensamento",
    "tool-calling": "Modelo para chamada de ferramenta/função",
    "multi-turn": "Modelo para conversas múltiplas",
    "vision": "Modelo multimodal com entrada de imagem",
    "schema-coercion": "Aplicação de esquema de saída estruturada/JSON"
  },
  "templateNames": {
    "simple-chat": "Bate-papo simples",
    "streaming": "Transmissão",
    "system-prompt": "Alerta do sistema",
    "thinking": "Pensando",
    "tool-calling": "Chamada de ferramenta",
    "multi-turn": "Multivoltas",
    "vision": "Visão",
    "schema-coercion": "Coerção de esquema"
  },
  "templatePayloads": {
    "simpleChat": {
      "system": "Você é um assistente de IA útil.",
      "userGreeting": "Olá! Como posso ajudá-lo hoje?"
    },
    "streaming": {
      "prompt": "Escreva uma história sobre"
    },
    "systemPrompt": {
      "question": "Qual é o sentido da vida?",
      "systemInstruction": "Forneça uma resposta ponderada e filosófica."
    },
    "thinking": {
      "question": "Explique a computação quântica"
    },
    "toolCalling": {
      "cityNameDescription": "O nome da cidade para obter o clima",
      "toolDescription": "Obtenha o clima atual para um local",
      "userWeather": "Qual é o clima em Tóquio?"
    },
    "multiTurn": {
      "system": "Você é um assistente útil.",
      "assistantExample": "Ficarei feliz em ajudá-lo com isso.",
      "userInitial": "preciso de ajuda com",
      "userFollowUp": "Você pode explicar isso?"
    }
  },
  "themesPage": {
    "title": "Themes",
    "description": "Choose a preset theme or create your own with a single color",
    "presetColors": "Popular colors",
    "customTheme": "Custom theme",
    "customThemeDesc": "Click create theme and pick one color",
    "createTheme": "Create theme",
    "activePreset": "Active theme"
  },
  "toolDescriptions": {
    "cline": "Cline",
    "openclaw": "Openclaw",
    "droid": "Droid",
    "codex": "Codex",
    "claude": "Claude",
    "kilo": "Kilo"
  },
  "translator": {
    "title": "Tradutor",
    "metaTitle": "Playground do Tradutor | OmniRoute",
    "metaDescription": "Depure, teste e visualize traduções de formatos de API entre provedores",
    "playgroundTitle": "Playground do Tradutor",
    "playground": "Playground",
    "realtime": "Atividade de Tradução em Tempo Real",
    "chatTester": "Testador de Chat",
    "testBench": "Bancada de Testes",
    "liveMonitor": "Monitor ao Vivo",
    "modeDescriptionPlayground": "Cole qualquer corpo de requisição de API e veja como o OmniRoute traduz entre formatos de provedores (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)",
    "modeDescriptionChatTester": "Envie requisições reais de chat pelo OmniRoute e inspecione o ciclo completo: entrada, requisição traduzida, resposta do provedor e saída traduzida.",
    "modeDescriptionTestBench": "Execute cenários predefinidos e compare compatibilidade entre provedores e modelos.",
    "modeDescriptionLiveMonitor": "Acompanhe eventos de tradução em tempo real conforme as requisições passam pelo OmniRoute.",
    "modeDescriptionFallback": "Depure, teste e visualize como o OmniRoute traduz requisições de API entre provedores.",
    "recentTranslations": "Traduções Recentes",
    "noTranslations": "Nenhuma tradução ainda",
    "source": "Origem",
    "target": "Destino",
    "time": "Hora",
    "model": "Modelo",
    "status": "Status",
    "latency": "Latência",
    "totalTranslations": "Total de Traduções",
    "successful": "Sucesso",
    "errors": "Erros",
    "avgLatency": "Latência Média",
    "millisecondsShort": "{value}ms",
    "notAvailableSymbol": "—",
    "liveAutoRefreshing": "Ao vivo — atualizando automaticamente",
    "paused": "Pausado",
    "eventsAppearHint": "Os eventos de tradução aparecem aqui conforme as requisições passam pelo OmniRoute. Use qualquer um destes métodos para gerar eventos:",
    "chatTesterTab": "Aba Testador de Chat",
    "testBenchTab": "Aba Bancada de Testes",
    "externalApiCalls": "Chamadas de API externas",
    "ideCliIntegrations": "Integrações IDE/CLI",
    "inMemoryNote": "Nota: os eventos são armazenados em memória e reiniciados quando o servidor reinicia.",
    "ok": "OK",
    "errorShort": "ERR",
    "formatConverter": "Conversor de Formato",
    "formatConverterDescription": "Cole ou digite um corpo de requisição JSON. O tradutor detectará automaticamente o formato de origem e converterá para o formato de destino. Use isso para depurar como o OmniRoute traduz requisições entre formatos (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).",
    "translationPathHubSpoke": "{source} → OpenAI (intermediário) → {target}",
    "translationPathDirect": "{source} → {target} (tradutor direto)",
    "translationPathPassthrough": "Mesmo formato — não é necessária tradução",
    "openaiIntermediatePanel": "OpenAI intermediário",
    "autoFeaturesTitle": "O que o OmniRoute faz automaticamente",
    "autoFeaturesCount": "8 recursos",
    "featureReasoningCache": "Cache de raciocínio",
    "featureReasoningCacheDesc": "Reinjeta o reasoning_content armazenado em cache para modelos de modo de pensamento (DeepSeek V4, Kimi K2, Qwen) quando os clientes o omitem do histórico de conversas.",
    "featureSchemaCoercion": "Coerção de esquema",
    "featureSchemaCoercionDesc": "Corrige esquemas de ferramentas corrompidos: adiciona propriedades adicionais ausentes, limpa descrições longas, normaliza objetos aninhados.",
    "featureRoleNormalization": "Normalização de funções",
    "featureRoleNormalizationDesc": "Desenvolvedor de mapas → sistema para alvos não-OpenAI. Mapas sistema→usuário para modelos que não suportam função do sistema.",
    "featureToolCallIds": "Normalização de ID de chamada de ferramenta",
    "featureToolCallIdsDesc": "Gera IDs de tool_call exclusivos quando ausentes. Normaliza para o formato de 9 caracteres para provedores como Mistral.",
    "featureMissingToolResponse": "Injeção de resposta de ferramenta",
    "featureMissingToolResponseDesc": "Injeta mensagens tool_result vazias quando os clientes enviam tool_calls sem respostas correspondentes.",
    "featureThinkingBudget": "Pensando no orçamento",
    "featureThinkingBudgetDesc": "Gerencia automaticamente a configuração do pensamento. Remove parâmetros de pensamento quando a última mensagem não é do usuário.",
    "featureDirectPaths": "Caminhos de tradução direta",
    "featureDirectPathsDesc": "Alguns pares de formatos (Claude→Gemini) possuem tradutores diretos que ignoram o hub OpenAI, produzindo resultados mais precisos.",
    "featureImageMapping": "Mapeamento de tamanho de imagem",
    "featureImageMappingDesc": "Traduz convenções de dimensão de imagem entre formatos de API (por exemplo, níveis de detalhe OpenAI → dimensões Gemini).",
    "input": "Entrada",
    "output": "Saída",
    "auto": "Auto",
    "swapFormats": "Trocar formatos",
    "translateAction": "Traduzir",
    "clear": "Limpar",
    "inputPlaceholder": "Cole um corpo de requisição aqui ou selecione um modelo abaixo...",
    "exampleTemplates": "Modelos de Exemplo",
    "exampleTemplatesHint": "— Clique para carregar",
    "templateLoadHint": "O modelo carrega a requisição no formato {format}. Altere o Formato de Origem para carregar em outro formato.",
    "compatibilityTester": "Testador de Compatibilidade",
    "compatibilityReport": "Relatório de Compatibilidade",
    "testBenchDescription": "Execute cenários predefinidos (Chat Simples, Chamada de Ferramenta, etc.) para validar tradução e compatibilidade do provedor. Selecione um formato de origem e o provedor de destino, depois execute todos os testes para ver a porcentagem de compatibilidade.",
    "targetProvider": "Provedor de destino",
    "runAllTests": "Executar todos os testes",
    "runTest": "Executar teste",
    "reRun": "Executar novamente",
    "running": "Executando...",
    "passed": "aprovados",
    "failed": "falharam",
    "passedIconLabel": "✅ Aprovado",
    "chunks": "chunks",
    "scenarioSimpleChat": "Chat Simples",
    "scenarioToolCalling": "Chamada de Ferramenta",
    "scenarioMultiTurn": "Multiturno",
    "scenarioThinking": "Raciocínio",
    "scenarioSystemPrompt": "Prompt de Sistema",
    "scenarioStreaming": "Streaming",
    "templateNames": {
      "simple-chat": "Chat Simples",
      "tool-calling": "Chamada de Ferramenta",
      "multi-turn": "Multiturno",
      "thinking": "Raciocínio",
      "system-prompt": "Prompt de Sistema",
      "streaming": "Streaming",
      "vision": "Visão",
      "schema-coercion": "Coerção de esquema"
    },
    "templateDescriptions": {
      "simple-chat": "Mensagem de texto básica",
      "tool-calling": "Invocação de função/ferramenta",
      "multi-turn": "Conversa com histórico",
      "thinking": "Raciocínio estendido",
      "system-prompt": "Instruções de sistema complexas",
      "streaming": "Requisição de streaming SSE",
      "vision": "Solicitação multimodal com entrada de imagem",
      "schema-coercion": "Aplicação de esquema de saída estruturada/JSON"
    },
    "templatePayloads": {
      "simpleChat": {
        "system": "Você é um assistente prestativo.",
        "userGreeting": "Olá! Como você está hoje?"
      },
      "toolCalling": {
        "userWeather": "Como está o tempo em São Paulo?",
        "toolDescription": "Obtém o clima atual para uma localidade",
        "cityNameDescription": "Nome da cidade"
      },
      "multiTurn": {
        "system": "Você é um assistente de programação.",
        "userInitial": "Escreva uma função para ordenar um array em Python.",
        "assistantExample": "Aqui está uma função simples de ordenação:\n\n```python\ndef sort_array(arr):\n    return sorted(arr)\n```",
        "userFollowUp": "Agora faça para ordenar em ordem decrescente."
      },
      "thinking": {
        "question": "Qual é a soma dos 100 primeiros números primos?"
      },
      "systemPrompt": {
        "systemInstruction": "Você é um engenheiro de software sênior especializado em sistemas distribuídos. Responda de forma concisa usando boas práticas de mercado. Sempre forneça exemplos de código quando relevante. Formate suas respostas usando markdown.",
        "question": "Como implemento o padrão circuit breaker?"
      },
      "streaming": {
        "prompt": "Conte uma história curta sobre um robô aprendendo a pintar."
      },
      "vision": {
        "system": "Você é um assistente que descreve imagens com precisão.",
        "userPrompt": "O que é mostrado nesta imagem?",
        "imageUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/600px-PNG_transparency_demonstration_1.png"
      },
      "schemaCoercion": {
        "userPrompt": "Procure o clima em Tóquio usando unidades métricas e inclua o detalhamento por hora.",
        "toolDescription": "Busque o clima de uma cidade com opções estruturadas.",
        "cityDescription": "A cidade a ser consultada, por ex. 'Tóquio' ou 'Nova York'."
      }
    },
    "openaiCompatibleLabel": "Compatível com OpenAI",
    "anthropicCompatibleLabel": "Compatível com Anthropic",
    "noTemplateForFormat": "Sem modelo para este formato",
    "translationFailed": "Falha na tradução: {error}",
    "pipelineDebugger": "Depurador de Pipeline",
    "translationPipeline": "Pipeline de Tradução",
    "pipelineVisualization": "Visualização do pipeline",
    "pipelineVisualizationHint": "Envie uma mensagem para ver como sua requisição flui por detecção → tradução → chamada ao provedor.",
    "chatTesterDescription": "Envie mensagens em um formato específico de cliente e inspecione cada etapa do pipeline de tradução.",
    "chatTesterFlow": "Requisição do Cliente → Detecção de Formato → Intermediário OpenAI → Formato do Provedor → Resposta",
    "clickStepToInspect": "Clique em qualquer etapa para inspecionar os dados naquele ponto.",
    "clientFormat": "Formato do cliente",
    "provider": "Provedor",
    "modelPlaceholder": "Selecione ou digite um nome de modelo...",
    "sendMessageToSeePipeline": "Envie uma mensagem para ver o pipeline de tradução",
    "chatMessageHintPrefix": "Sua mensagem será formatada como uma requisição no formato",
    "chatMessageHintSuffix": "traduzida pelo pipeline e enviada ao provedor selecionado.",
    "youWithFormat": "Você ({format})",
    "assistant": "Assistente",
    "typeMessage": "Digite uma mensagem...",
    "send": "Enviar",
    "clientRequest": "Requisição do Cliente",
    "clientRequestDescription": "O corpo de requisição como seu cliente enviaria",
    "formatDetected": "Formato Detectado",
    "formatDetectedDescription": "O OmniRoute detecta automaticamente o formato da API a partir da estrutura da requisição",
    "openaiIntermediate": "Intermediário OpenAI",
    "openaiIntermediateDescription": "Todos os formatos são primeiro normalizados para o formato OpenAI (ponte universal)",
    "providerFormat": "Formato do Provedor",
    "providerFormatDescription": "O formato OpenAI é traduzido para o formato nativo do provedor",
    "providerResponse": "Resposta do Provedor",
    "providerResponseRawDescription": "A resposta bruta da API do provedor",
    "providerResponseSseDescription": "O stream SSE bruto da API do provedor",
    "unexpectedError": "Ocorreu um erro inesperado",
    "error": "Erro",
    "errorMessage": "Erro: {message}",
    "requestFailed": "Falha na requisição",
    "noTextExtracted": "(Nenhum texto extraído)",
    "liveMonitorMemoryNote": "Os eventos são armazenados na memória e perdidos na reinicialização.",
    "liveMonitorMemoryCapNote": "Máximo de 200 eventos retidos.",
    "eventSourcesLabel": "Fontes de eventos:",
    "eventSourceTranslatorPage": "• Página do tradutor (Chat Tester, Test Bench)",
    "eventSourceMainPipeline": "• Pipeline de solicitação principal (tráfego CLI/IDE/API)",
    "liveMonitorDescriptionPrefix": "Mostra eventos de tradução conforme chamadas de API passam pelo OmniRoute. Os eventos vêm do buffer em memória (reinicia ao reiniciar o servidor). Use",
    "liveMonitorDescriptionSuffix": ", ou chamadas de API externas para gerar eventos.",
    "streamTransformer": "Transformador de fluxo",
    "modeDescriptionStreamTransformer": "Execute fluxos SSE de conclusões de bate-papo por meio do transformador de Respostas.",
    "streamTransformerTitle": "Transformador de fluxo de respostas",
    "streamTransformerDescription": "Cole um fluxo SSE de conclusões de bate-papo, execute-o por meio do transformador Responses do OmniRoute e inspecione os eventos response.* emitidos antes de conectar um cliente.",
    "loadTextSample": "Carregar amostra de texto",
    "loadToolSample": "Carregar exemplo de chamada de ferramenta",
    "transformToResponses": "Transformar em respostas",
    "rawChatSseInput": "Conclusões de bate-papo bruto SSE",
    "transformedResponsesSse": "API de respostas transformadas SSE",
    "noResultsYet": "Ainda não há resultados",
    "transformedEvents": "Eventos transformados",
    "uniqueEventTypes": "Tipos de eventos exclusivos",
    "inputLines": "Linhas de entrada",
    "outputLines": "Linhas de saída",
    "transformedEventTimeline": "Cronograma de eventos transformado",
    "transformerTimelineHint": "Execute o transformador para inspecionar os eventos response.output_* emitidos em ordem.",
    "eventType": "Tipo de evento",
    "eventPreview": "Visualização",
    "comboRouted": "Roteamento combinado",
    "uniqueEndpoints": "Pontos de extremidade exclusivos",
    "routeDetails": "Detalhes da rota",
    "comboBadge": "Combinação",
    "routeEndpointLabel": "Ponto final",
    "routeConnectionLabel": "Conexão",
    "scenarioVision": "Visão (compreensão da imagem)",
    "scenarioSchemaCoercion": "Coerção de esquema (saída estruturada)",
    "techniques": "Técnicas:",
    "friendlyTitle": "Translator",
    "friendlySubtitle": "Use sua app existente com qualquer provider — sem reescrever código.",
    "conceptHeadline": "Sua app fala o \"idioma\" de uma API. O Translator converte para usar outro provider.",
    "conceptDiagramAppLabel": "Sua app",
    "conceptDiagramSourceLabel": "Formato origem",
    "conceptDiagramHubLabel": "OpenAI (hub)",
    "conceptDiagramTargetLabel": "Provider destino",
    "conceptDiagramExampleApp": "ex: SDK Anthropic",
    "conceptDiagramExampleSource": "claude",
    "conceptDiagramExampleTarget": "Gemini",
    "conceptHowItWorksToggle": "Como funciona",
    "conceptHowItWorksBody": "Sua app envia um pedido no formato dela. O Translator detecta o formato, converte via OpenAI como hub intermediário (ou direto, quando há tradutor direto disponível), envia ao provider escolhido e devolve a resposta convertida de volta no formato da sua app.",
    "tabTranslate": "Translate",
    "tabMonitor": "Monitor",
    "tabTranslateAriaLabel": "Ir para a aba Translate",
    "tabMonitorAriaLabel": "Ir para a aba Monitor",
    "simpleAppUsesLabel": "Minha app usa",
    "simpleAppUsesHint": "Formato da API que sua app fala (ex: SDK Anthropic = claude).",
    "simpleSendToLabel": "Enviar para",
    "simpleSendToHint": "Para onde enviar de verdade (provider conectado em OmniRoute).",
    "simpleStartWithLabel": "Começar com",
    "simpleStartWithExamplePlaceholder": "Selecione um exemplo pronto",
    "simpleStartWithCustomOption": "Cole seu request (avançado)",
    "simpleModeLabel": "Modo",
    "simpleModePreview": "Só ver tradução",
    "simpleModeSend": "Enviar e ver resposta",
    "simpleAdvancedToggle": "Advanced",
    "simpleInputPanelTitle": "Entrada",
    "simpleInputPanelHint": "Mensagem em texto livre ou exemplo pronto",
    "simpleResultPanelTitle": "Tradução + Resposta",
    "narratedDetected": "✓ Detectado: {format}",
    "narratedTranslating": "Traduzindo para {target}...",
    "narratedSending": "Enviando para {target}...",
    "narratedSuccess": "→ traduzido para {target} · resposta em {latency}ms",
    "narratedError": "Falhou: {reason}",
    "narratedSeeTranslatedJson": "ver JSON traduzido",
    "narratedSeePipeline": "ver pipeline",
    "advancedSectionTitle": "Advanced",
    "advancedSectionSubtitle": "Raw JSON, pipeline e ferramentas técnicas. Tudo aqui é igual às tabs antigas — apenas reorganizado.",
    "advancedRawJsonTitle": "Raw JSON (auto-detecção + Monaco)",
    "advancedRawJsonSubtitle": "Cole um request JSON; o formato é detectado automaticamente.",
    "advancedPipelineTitle": "Pipeline OpenAI intermediário",
    "advancedPipelineSubtitle": "Visualize cada passo da tradução (hub-and-spoke).",
    "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)",
    "advancedStreamTransformSubtitle": "Converte SSE Chat Completions em Responses API.",
    "advancedTestBenchTitle": "Test Bench (8 cenários)",
    "advancedTestBenchSubtitle": "Roda todos os cenários e reporta pass/fail + compatibilidade %.",
    "advancedCompressionTitle": "Compression Preview",
    "advancedCompressionSubtitle": "Estime economia de tokens em diferentes modos.",
    "monitorOriginHint": "Eventos gerados pelo Translate ou pelo pipeline principal aparecem aqui em tempo real.",
    "monitorEmptyCta": "Volte para a aba Translate e envie um request — ele aparecerá aqui.",
    "monitorOpenTranslateButton": "Ir para Translate",
    "pipelineStepClientRequest": "Requisição do Cliente",
    "pipelineStepClientRequestDesc": "Requisição recebida no formato do cliente",
    "pipelineStepFormatDetected": "Formato Detectado",
    "pipelineStepFormatDetectedDesc": "Formato de origem detectado automaticamente",
    "pipelineStepOpenAIIntermediate": "Intermediário OpenAI",
    "pipelineStepOpenAIIntermediateDesc": "Traduzido para o formato hub OpenAI",
    "pipelineStepProviderFormat": "Formato do Provider",
    "pipelineStepProviderFormatDesc": "Traduzido para o formato do provider de destino",
    "pipelineStepProviderResponse": "Resposta do Provider",
    "pipelineStepProviderResponseDesc": "Resposta em streaming do provider",
    "conceptDiagramArrow1": "fala",
    "conceptDiagramArrow2": "traduz",
    "conceptDiagramArrow3": "converte",
    "conceptDiagramExampleHub": "OpenAI",
    "conceptDiagramHubTooltip": "Hub intermediário usado pelo translator para converter entre formatos que não têm mapeamento direto.",
    "conceptDiagramSourceTooltip": "O formato de API que sua app fala (ex: SDK Anthropic = claude).",
    "conceptDiagramTargetTooltip": "O provider para onde a requisição será realmente enviada."
  },
  "usage": {
    "title": "Uso",
    "loggerTab": "Logger",
    "proxyTab": "Proxy",
    "budgetManagement": "Gerenciamento de Orçamento",
    "budgetSaved": "Limites de orçamento salvos",
    "budgetSaveFailed": "Falha ao salvar limites de orçamento",
    "loadingBudgetData": "Carregando dados de orçamento...",
    "noApiKeysTitle": "Nenhuma Chave de API",
    "noApiKeysDescription": "Adicione chaves de API primeiro para configurar limites de orçamento.",
    "apiKey": "Chave de API",
    "todaysSpend": "Gasto de hoje",
    "thisMonth": "Este Mês",
    "setLimits": "Definir Limites",
    "dailyLimitUsd": "Limite diário (USD)",
    "monthlyLimitUsd": "Limite mensal (USD)",
    "warningThresholdPercent": "Limite de aviso (%)",
    "dailyLimitPlaceholder": "ex.: 5.00",
    "monthlyLimitPlaceholder": "ex.: 50.00",
    "warningThresholdPlaceholder": "80",
    "saveLimits": "Salvar limites",
    "budgetOk": "Orçamento OK — {remaining} restantes",
    "budgetExceeded": "Orçamento excedido — requisições podem ser bloqueadas",
    "totalRequests": "Total de requisições",
    "noDataYet": "Sem dados ainda",
    "latency": "Latência",
    "latencyP50": "p50",
    "latencyP95": "p95",
    "latencyP99": "p99",
    "promptCache": "Cache de Prompt",
    "systemHealth": "Saúde do Sistema",
    "entries": "Entradas",
    "activeCount": "{count, plural, one {# ativo} other {# ativos}}",
    "openCircuitBreakersDetected": "Disjuntores abertos detectados",
    "hitRate": "Taxa de Acerto",
    "hitsMisses": "Acertos / Erros",
    "circuitBreakers": "Disjuntores",
    "lockedIPs": "IPs Bloqueados",
    "lockoutsAutoRefreshHint": "Bloqueios por limite de taxa por modelo • Atualização automática 10s",
    "lockedCount": "{count, plural, one {# bloqueado} other {# bloqueados}}",
    "timeLeft": "{time} restantes",
    "howItWorks": "Como Funciona",
    "howItWorksSubtitle": "Entenda como as avaliações validam as respostas do seu LLM",
    "define": "Definir",
    "defineStepDescription": "Crie casos de teste com prompts de entrada e critérios de saída esperados usando estratégias como contains, regex ou correspondência exata.",
    "run": "Executar",
    "runStepDescription": "Execute casos de teste contra seus endpoints de LLM via OmniRoute. Cada caso é enviado como uma requisição real de API.",
    "evaluate": "Avaliar",
    "evaluateStepDescription": "As respostas são comparadas com os critérios esperados. Veja aprovado/reprovado por caso com métricas de latência e feedback detalhado.",
    "evalsStrategyContainsLabel": "Contém",
    "evalsStrategyExactLabel": "Correspondência Exata",
    "evalsStrategyRegexLabel": "Regex",
    "evalsStrategyCustomLabel": "Lógica Personalizada",
    "evalsStrategyContainsDescription": "Verifica se a saída do LLM contém a substring esperada.",
    "evalsStrategyExactDescription": "Verifica se a saída do LLM corresponde exatamente ao valor esperado.",
    "evalsStrategyRegexDescription": "Valida a saída do LLM em relação a um padrão de expressão regular.",
    "evalsStrategyCustomDescription": "Lógica de avaliação personalizada (configurada via JSON).",
    "historyColumnSuiteName": "Nome da Suíte",
    "historyColumnTarget": "Alvo",
    "historyColumnPassRate": "Taxa de Sucesso",
    "historyColumnAvgLatencyMs": "Latência Média",
    "historyColumnCreatedAt": "Executado",
    "evalSuites": "Suítes de Avaliação",
    "evalSuitesHint": "Clique em uma suíte para ver os casos de teste e execute para avaliar seus endpoints de LLM",
    "evalsLoading": "Carregando suítes de avaliação...",
    "noEvalSuitesFound": "Nenhuma suíte de avaliação encontrada",
    "noEvalSuitesDescription": "As suítes de avaliação podem ser definidas via API ou em código. Elas testam saídas de modelos contra resultados esperados usando estratégias como contains, regex, correspondência exata e funções customizadas.",
    "columnCase": "Caso",
    "columnStatus": "Status",
    "columnLatency": "Latência",
    "columnDetails": "Detalhes",
    "columnModel": "Modelo",
    "columnStrategy": "Estratégia",
    "columnExpected": "Esperado",
    "statsSuites": "Suítes",
    "statsTestCases": "Casos de Teste",
    "statsModels": "Modelos",
    "statsCoverage": "Cobertura",
    "statsStrategiesCount": "{count} estratégias",
    "evaluationStrategies": "Estratégias de Avaliação",
    "modelsUnderTest": "Modelos em Teste",
    "searchSuitesPlaceholder": "Buscar suítes...",
    "passSuffix": "de aprovação",
    "casesCount": "{count, plural, one {# caso} other {# casos}}",
    "runEval": "Executar avaliação",
    "runAllSuites": "Executar tudo",
    "runAllRunning": "Correndo tudo...",
    "runAllProgress": "Executando {current}/{total}: {name}",
    "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}",
    "runAllCompleted": "Executou {suites} suítes — {passed} aprovado, {failed} falhou",
    "runAllCompletedWithFailures": "Executei suítes {completed}; {failedSuites} não foi concluído",
    "runningProgress": "Executando {current}/{total}...",
    "passRate": "taxa de aprovação",
    "summaryBreakdown": "{passed} aprovados · {failed} falharam · {total} total",
    "passedIconLabel": "✅ Aprovado",
    "failedIconLabel": "❌ Falhou",
    "resultPassed": "Aprovado",
    "resultFailed": "Falha",
    "expandResult": "Expandir detalhes do resultado",
    "collapseResult": "Recolher detalhes do resultado",
    "detailsContains": "Contém: \"{term}\"",
    "detailsRegex": "Regex: {pattern}",
    "detailsExpected": "Esperado: \"{expected}\"",
    "expectedOutputLabel": "Resultado Esperado",
    "noResultsYet": "Sem resultados ainda",
    "testCasesCount": "Casos de Teste ({count})",
    "noTestCasesDefined": "Nenhum caso de teste definido",
    "runEvalHint": "Clique em \"Executar avaliação\" para executar todos os casos contra seu endpoint de LLM. Cada teste envia uma requisição real pelo OmniRoute.",
    "notifyNoTestCases": "Nenhum caso de teste definido para esta suíte",
    "notifyAllCasesPassed": "Todos os {total} casos passaram ✅",
    "notifySomeCasesFailed": "{passed}/{total} passaram, {failed} falharam",
    "notifyEvalRunFailed": "Falha na execução da avaliação",
    "notifyEvalTitle": "Avaliação: {name}",
    "modelEvals": "Avaliações de Modelos",
    "evalsHeroDescription": "Teste e valide seus endpoints de LLM executando suítes de avaliação predefinidas. Cada suíte contém casos de teste que enviam prompts reais pelo OmniRoute e comparam respostas com critérios esperados — ajudando você a detectar regressões, comparar modelos e garantir qualidade de resposta entre provedores.",
    "qualityValidation": "Validação de Qualidade",
    "modelComparison": "Comparação de Modelos",
    "regressionDetection": "Detecção de Regressão",
    "latencyBenchmarks": "Benchmarks de Latência",
    "modelLockouts": "Bloqueios de Modelo",
    "noLockouts": "Nenhum modelo bloqueado",
    "activeSessions": "Sessões Ativas",
    "noSessions": "Sem sessões ativas",
    "sessionsHint": "Sessões aparecem conforme requisições passam pelo proxy",
    "sessionsTrackedHint": "Rastreado por fingerprint de requisições • Atualização automática 5s",
    "session": "Sessão",
    "age": "Idade",
    "requests": "Requisições",
    "connection": "Conexão",
    "durationMillisecondsShort": "{value}ms",
    "durationSecondsShort": "{value}s",
    "durationMinutesShort": "{value}m",
    "durationHoursShort": "{value}h",
    "reasonSeparator": " - ",
    "notAvailableSymbol": "-",
    "providerLimits": "Limites do Provedor",
    "noProviders": "Nenhum Provedor Conectado",
    "connectProvidersForQuota": "Conecte provedores com OAuth para acompanhar limites e uso de cota da API.",
    "accountsCount": "{count, plural, one {# conta} other {# contas}}",
    "filteredFromCount": "(filtrado de {count})",
    "autoRefresh": "Atualização automática",
    "refreshAll": "Atualizar tudo",
    "loadingQuotas": "Carregando...",
    "account": "Conta",
    "modelQuotas": "Cotas de Modelo",
    "lastUsed": "Last Refreshed",
    "actions": "Ações",
    "refreshQuota": "Atualizar cota",
    "today": "Hoje",
    "tomorrow": "Amanhã",
    "dayTimeFormat": "{day}, {time}",
    "inDuration": "em {duration}",
    "notApplicable": "N/D",
    "rawPlanWithValue": "Plano bruto: {plan}",
    "noPlanFromProvider": "Sem plano do provedor",
    "tokenExpiresIn": "Token expira em {time}",
    "tokenExpired": "Token expirado",
    "noQuotaData": "Sem dados de cota",
    "cardExpand": "Expandir",
    "cardCollapse": "Recolher",
    "moreQuotas": "+{count} mais",
    "ungrouped": "Sem grupo",
    "viewFlat": "Lista",
    "viewByEnvironment": "Por Ambiente",
    "noQuotaDataAvailable": "Nenhum dado de cota disponível",
    "noAccountsForTierFilter": "Nenhuma conta encontrada para o filtro de plano",
    "tierAll": "Todos",
    "tierEnterprise": "Enterprise",
    "tierTeam": "Team",
    "tierBusiness": "Business",
    "tierUltra": "Ultra",
    "tierPro": "Pro",
    "tierPlus": "Plus",
    "tierFree": "Free",
    "tierLite": "Lite",
    "tierUnknown": "Desconhecido",
    "statTotal": "Total",
    "statCritical": "Crítico",
    "statAlert": "Alerta",
    "statHealthy": "Saudável",
    "filterPurchaseTypeLabel": "Tipo",
    "filterTierLabel": "Camada",
    "purchaseAll": "Todos",
    "purchaseOauthSub": "Assinatura",
    "purchaseOauthFree": "OAuth Gratuito",
    "purchaseApiKey": "Chave de API",
    "creditsLabel": "Créditos",
    "creditBalanceHint": "Saldo restante",
    "unlimitedLabel": "Ilimitado",
    "refreshing": "Atualizando",
    "resetsIn": "Reseta em",
    "editCutoffs": "Editar pontos de corte",
    "forceRefresh": "Atualizar agora",
    "suiteBuilderSaveFailed": "Falha ao salvar a suíte customizada",
    "clone": "Clonar",
    "exportSuite": "Exportar",
    "importSuite": "Importar",
    "suiteExported": "Suíte exportada",
    "suiteExportFailed": "Falha ao exportar pacote",
    "suiteImportReady": "Importação de suíte carregada para revisão",
    "suiteImportFailed": "Falha ao importar pacote",
    "suiteImportInvalid": "Conjunto de avaliação JSON inválido",
    "suiteBuilderCloneSuffix": "copiar",
    "suiteBuilderImportedSuite": "Suíte Importada",
    "scorecardTitle": "Scorecard",
    "evalApiKey": "Chave de API do Proxy",
    "scorecardPassRate": "Taxa Geral de Aprovação",
    "targetTypeModel": "Modelo",
    "actualOutputLabel": "Actual Output",
    "evalTargetHint": "Os padrões da suíte preservam o modelo configurado em cada caso de teste.",
    "suiteBuilderDeleted": "Suíte customizada removida",
    "suiteBuilderCaseCardHint": "Defina um prompt e uma asserção para esta checagem de regressão.",
    "nextResetUtc": "Próximo reset (UTC): {value}",
    "scorecardHint": "Últimas taxas de aprovação armazenadas para execuções e alvos recentes.",
    "suiteLatestRunsHint": "As execuções armazenadas continuam disponíveis após atualizar a página.",
    "saving": "Saving",
    "suiteBuilderCaseModelLabel": "Model (optional)",
    "evalControlsTitle": "Alvos de Execução",
    "suiteBuilderEditTitle": "Editar Suíte Customizada de Eval",
    "suiteBuilderCaseStrategyLabel": "Validation Strategy",
    "notifySelectDifferentCompareTarget": "Escolha um alvo de comparação diferente",
    "recentRunsHint": "O histórico sobrevive ao refresh e agora registra comparações combo-aware.",
    "evalCompareHint": "Comparação lado a lado opcional usando a mesma suíte.",
    "suiteBuilderCaseInvalid": "O caso {index} está incompleto. Preencha nome, modelo, prompt e valor esperado.",
    "historyEmpty": "Ainda não há execuções persistidas",
    "suiteBuilderUpdated": "Suíte customizada atualizada",
    "resetInterval": "Intervalo de reset",
    "suiteBuilderCreateTitle": "Criar Suíte Customizada de Eval",
    "activePeriodSpend": "Gasto do período ativo",
    "evalApiKeyHint": "Usada somente quando seu endpoint `/v1` exige bearer token.",
    "evalCompareOptional": "Sem alvo de comparação",
    "suiteBuilderDeleteFailed": "Falha ao excluir a suíte customizada",
    "suiteBuilderCaseSystemPromptPlaceholder": "Instrução de sistema opcional para este caso.",
    "scorecardCases": "Cases",
    "runCompletedWithScore": "Execução concluída com {score}% de aprovação",
    "suiteBuilderCustomBadge": "Custom",
    "targetSuiteDefaults": "Padrões da suíte",
    "suiteBuilderDeleteConfirm": "Excluir a suíte customizada \"{name}\"?",
    "suiteBuilderNameLabel": "Nome da Suíte",
    "scorecardSuites": "Suites",
    "evalCompareTarget": "Compare Target",
    "suiteBuilderCaseModelPlaceholder": "gpt-4o-mini",
    "evalControlsHint": "Escolha um modelo ou combo, compare opcionalmente dois alvos e persista o histórico no SQLite.",
    "recentRunsTitle": "Recent Runs",
    "suiteBuilderCaseSystemPromptLabel": "Prompt de Sistema",
    "suiteBuilderCaseExpectedPlaceholder": "Texto ou regex que deve aparecer na resposta do modelo.",
    "suiteBuilderCaseExpectedPlaceholderContains": "por exemplo def fibonacci",
    "suiteBuilderCaseExpectedPlaceholderExact": "Cole a resposta exata esperada",
    "suiteBuilderCaseExpectedPlaceholderRegex": "por exemplo ^\\\\s*\\\\{.*\\\\}\\\\s*$",
    "suiteBuilderCaseExpectedHintRegex": "Use uma expressão regular JavaScript sem quebrar barras.",
    "suiteBuilderNamePlaceholder": "Suíte de regressão de suporte ao cliente",
    "suiteBuilderAddCase": "Add Case",
    "cancel": "Cancel",
    "evalTarget": "Target",
    "suiteBuilderCaseNameLabel": "Nome do Caso",
    "weeklyLimitUsd": "Limite semanal (USD)",
    "suiteBuilderCaseUserPromptPlaceholder": "Escreva a entrada exata do usuário para repetir durante o eval.",
    "suiteBuilderNameRequired": "O nome da suíte é obrigatório",
    "suiteBuilderCaseUserPromptLabel": "Prompt do Usuário",
    "daily": "Diário",
    "resultErrorLabel": "Erro",
    "suiteBuilderBuiltInBadge": "Padrão",
    "suiteBuilderCaseCardTitle": "Test Case",
    "suiteBuilderDuplicateCase": "Duplicar",
    "weeklyLimitPlaceholder": "ex.: 25.00",
    "suiteBuilderCaseTagsHint": "Tags separadas por vírgula e armazenadas com o caso.",
    "notifyEvalRunFailedWithReason": "Falha na execução da avaliação: {reason}",
    "weekly": "Semanal",
    "runEvalRunning": "Executando...",
    "delete": "Delete",
    "resetTimeUtc": "Horário do reset (UTC)",
    "evalApiKeyAuto": "Usar sessão do dashboard / sem chave",
    "suiteBuilderDescriptionPlaceholder": "Explique o que esta suíte valida e por que ela importa.",
    "targetComparisonTitle": "Comparação de Alvos",
    "save": "Save",
    "suiteBuilderCreated": "Suíte customizada criada",
    "suiteLatestRuns": "Latest Runs",
    "suiteBuilderCaseExpectedLabel": "Expected Value",
    "historyLatency": "{value}ms de latência média",
    "suiteBuilderCaseTagsPlaceholder": "support, regression, billing",
    "targetTypeCombo": "Combo",
    "scorecardPassed": "Passed",
    "suiteBuilderCaseTagsLabel": "Tags",
    "suiteBuilderNewSuite": "New Suite",
    "notifyEvalLoadFailed": "Falha ao carregar os dados do dashboard de evals",
    "notConfigured": "Não configurado",
    "suiteBuilderCaseNamePlaceholder": "Resposta sobre política de reembolso",
    "intervalLabel": "Intervalo",
    "suiteBuilderCreateAction": "Create Suite",
    "suiteBuilderCasesHint": "Cada caso envia um prompt real pelo OmniRoute e valida a resposta com contains, exact ou regex.",
    "suiteBuilderUpdatedAt": "Updated",
    "errorBadge": "Erro",
    "suiteBuilderCasesTitle": "Test Cases",
    "edit": "Edit",
    "monthly": "Mensal",
    "suiteBuilderCasesRequired": "Adicione pelo menos um caso antes de salvar",
    "weeklyLimitSummary": "Limite semanal: {value}",
    "suiteBuilderDescriptionLabel": "Descrição",
    "targetComparisonHint": "A mesma suíte foi executada contra múltiplos alvos.",
    "compareCompletedWithScore": "Comparação concluída. A execução principal terminou com {score}% de aprovação",
    "staleQuotaTooltip": "Last refresh failed — showing cached data",
    "quotaThresholdLabel": "Minutos restantes",
    "quotaCutoffsColumnHelp": "Interrompa as solicitações quando a cota restante cair para esse percentual ou menos.",
    "quotaCutoffsButtonDefault": "Padrão",
    "quotaCutoffsButtonHelp": "Edite os limites mínimos de cota restantes para esta conta.",
    "quotaCutoffsButtonDisabled": "Ainda não há janelas de cota disponíveis para esta conta.",
    "quotaCutoffsTitle": "Limites de cota para {name} ({provider})",
    "quotaCutoffsExplainer": "Substitua a porcentagem mínima de cota restante onde esta conta deixa de ser selecionada para cada janela de cota. Deixe em branco para herdar o padrão do provedor.",
    "quotaCutoffsDefaultHint": "Minuto restante padrão: {default}%",
    "quotaCutoffsResetAll": "Redefinir tudo",
    "quotaCutoffsNoWindows": "Ainda não há janelas de cota disponíveis para esta conta.",
    "quotaThresholdInvalid": "Insira um número inteiro de 0 a 100.",
    "budgetKpiToday": "Hoje",
    "budgetKpiThisMonth": "Este mês",
    "budgetKpiProjEom": "Projeto EOM",
    "budgetKpiBlocked": "Bloqueado",
    "budgetKpiAtRisk": "Em risco",
    "budgetKpiActiveKeys": "Chaves ativas",
    "budgetSearchKeysPlaceholder": "Chaves de pesquisa...",
    "budgetSortPctUsed": "Classificar:% usado ↓",
    "budgetSortTodayDollar": "Ordenar: Hoje $ ↓",
    "budgetSortMonthDollar": "Classificar: Mês $ ↓",
    "budgetSortNameAZ": "Classificar: Nome (A – Z)",
    "budgetColDailyLim": "Limite diário",
    "budgetColMonthlyLim": "Limite mensal",
    "budgetColUsedPct": "% usado",
    "budgetLoading": "Carregando…",
    "budgetNoKeysMatch": "Nenhuma chave corresponde aos filtros",
    "budgetLinearExtrapolation": "extrapolação linear",
    "budgetThisMonthSoFar": "Este mês até agora",
    "budgetProjectedEndOfMonth": "Fim do mês previsto",
    "budgetByProvider": "por provedor",
    "budgetDailyDollar": "Diariamente $",
    "budgetWeeklyDollar": "Semanal $",
    "budgetMonthlyDollar": "$ mensal",
    "budgetWarnAtPct": "Avisar em %",
    "quotaAlerts": "Alertas de cota",
    "quotaTableRefreshing": "⟳ Refrescante...",
    "noSpendLast30Days": "Nenhum gasto nos últimos 30 dias",
    "updatedShort": "Atualizado",
    "lastRefreshed": "Última atualização",
    "providerQuota": "Cota do Provedor",
    "providerQuotaHomeHint": "Status em tempo real nas contas conectadas"
  },
  "webhooks": {
    "title": "Webhooks",
    "description": "Configure retornos de chamada HTTP para eventos do sistema.",
    "configuredWebhooks": "Webhooks configurados",
    "configuredWebhooksDesc": "Gerencie endpoints de entrega, eventos assinados, status e envios de teste.",
    "addWebhook": "Adicionar webhook",
    "editWebhook": "Editar webhook",
    "name": "Nome",
    "namePlaceholder": "Monitoramento de produção",
    "unnamedWebhook": "Webhook sem nome",
    "url": "URL do terminal",
    "events": "Eventos",
    "allEvents": "Todos os eventos",
    "secret": "Segredo",
    "secretPlaceholder": "Deixe em branco para gerar automaticamente um segredo",
    "secretEditPlaceholder": "Deixe em branco para manter o segredo atual",
    "status": "Estado",
    "active": "Ativo",
    "inactive": "Inativo",
    "errored": "Erro",
    "total": "Total",
    "lastTriggered": "Último acionado",
    "actions": "Ações",
    "enabled": "Habilitado",
    "enabledDesc": "Webhooks desativados permanecem salvos, mas não recebem entregas.",
    "refresh": "Atualizar",
    "loading": "Carregando webhooks...",
    "never": "Nunca",
    "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}",
    "testWebhook": "Enviar teste",
    "testSuccess": "Webhook de teste enviado com sucesso.",
    "testFailed": "O teste do webhook falhou.",
    "saveSuccess": "Webhook salvo com sucesso.",
    "saveFailed": "Falha ao salvar o webhook.",
    "loadFailed": "Falha ao carregar webhooks.",
    "delete": "Excluir",
    "deleteConfirm": "Tem certeza de que deseja excluir este webhook?",
    "deleteSuccess": "Webhook excluído com sucesso.",
    "deleteFailed": "Falha ao excluir o webhook.",
    "edit": "Editar",
    "enable": "Habilitar",
    "disable": "Desativar",
    "noWebhooks": "Nenhum webhooks configurado ainda.",
    "signatureTitle": "Assinaturas de webhook",
    "signatureDescription": "Cada entrega inclui um cabeçalho X-Webhook-Signature assinado com HMAC-SHA256 usando o segredo do webhook. Verifique a assinatura antes de confiar na carga.",
    "wizard": {
      "cancel": "Cancelar",
      "step1Title": "Selecionar Integração",
      "step2Title": "Configurar Alvo",
      "step3Title": "Eventos e Teste",
      "back": "Voltar",
      "next": "Próximo",
      "finish": "Finalizar",
      "step1Desc": "Selecione o sistema de integração de destino para este webhook."
    },
    "howItWorks": {
      "step1": "Escolha um provedor de integração (ex: Slack, Discord, webhook personalizado) e configure os detalhes da conexão.",
      "step2": "Configure os eventos do sistema para assinar (ex: erros de conclusão, fallbacks de modelo ou limites de uso).",
      "step3": "Verifique a configuração enviando uma carga de teste para garantir que o endpoint a receba.",
      "step4": "Proteja seu endpoint validando o cabeçalho X-Webhook-Signature HMAC-SHA256 usando o segredo do webhook.",
      "title": "Como os Webhooks Funcionam",
      "customOnly": "Aplicável apenas para integrações de endpoint personalizadas.",
      "hmacRecipeTitle": "Receita de Verificação HMAC",
      "hmacRecipe": "Para verificar cargas de webhook no Node.js, calcule o HMAC-SHA256 do corpo bruto da requisição usando sua chave secreta. Compare-o com o cabeçalho X-Webhook-Signature usando timingSafeEqual.",
      "timeoutNote": "As entregas de webhook têm um tempo limite de 10 segundos.",
      "retryNote": "Entregas falhas são tentadas até 5 vezes com backoff exponencial.",
      "docsLink": "Leia o guia completo do desenvolvedor de Webhooks",
      "hmacRecipePython": "Verificação HMAC em Python: hmac.new(secret, body, hashlib.sha256).hexdigest()",
      "hmacRecipeBash": "Verificação HMAC em Bash: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\""
    },
    "deliveries": {
      "title": "Como os Webhooks Funcionam",
      "loadFailed": "Falha ao carregar logs de entrega do webhook.",
      "empty": "Nenhuma entrega registrada ainda. Acione um evento ou envie uma carga de teste.",
      "status": "Status",
      "event": "Evento",
      "latency": "Latência",
      "at": "Enviado em"
    },
    "kinds": {
      "comingSoon": "Em breve",
      "slack": "Slack",
      "slackDesc": "Postar eventos do sistema diretamente em um canal do Slack",
      "telegram": "Telegram",
      "telegramDesc": "Enviar mensagens de evento usando um bot do Telegram",
      "discord": "Discord",
      "discordDesc": "Entregar atualizações em tempo real diretamente para um servidor do Discord",
      "custom": "Webhook Personalizado",
      "customDesc": "Entregar cargas de eventos do sistema para qualquer endpoint HTTPS",
      "email": "Notificação por E-mail",
      "emailDesc": "Receber atualizações de resumo via e-mail",
      "pagerduty": "PagerDuty",
      "pagerdutyDesc": "Acionar alertas no PagerDuty para problemas críticos do sistema",
      "teams": "Microsoft Teams",
      "teamsDesc": "Encaminhar notificações do sistema para canais do Microsoft Teams"
    },
    "testPayloadSent": "Carga de Teste Enviada",
    "testResponse": "Resposta de Teste",
    "validateUrl": {
      "checking": "Verificando URL...",
      "ok": "URL é válida",
      "blockedPrivate": "URL é um endereço privado bloqueado",
      "invalidUrl": "Formato de URL inválido"
    },
    "custom": {
      "endpointUrl": "URL do Endpoint",
      "endpointUrlPlaceholder": "https://api.seudominio.com/webhook",
      "secretKey": "Chave Secreta",
      "secretKeyPlaceholder": "Insira a chave secreta ou deixe em branco para gerar automaticamente",
      "secretKeyHint": "Usado para assinar o cabeçalho da carga para autenticação."
    },
    "discord": {
      "webhookUrl": "URL do Webhook",
      "webhookUrlPlaceholder": "https://...",
      "webhookUrlHint": "A URL do webhook copiada das configurações de integração.",
      "tutorial": "Tutorial"
    },
    "slack": {
      "webhookUrl": "URL do Webhook",
      "webhookUrlPlaceholder": "https://...",
      "webhookUrlHint": "A URL do webhook copiada das configurações de integração.",
      "tutorial": "Tutorial"
    },
    "telegram": {
      "botToken": "Token do Bot Telegram",
      "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
      "botTokenHint": "O token da API HTTP recebido do @BotFather ao criar seu bot.",
      "chatId": "ID do Chat / Canal do Telegram",
      "chatIdPlaceholder": "-100123456789 ou @nomecanal",
      "chatIdHint": "O identificador numérico único ou nome de usuário público do chat/canal.",
      "tutorial": "Tutorial"
    }
  },
  "plugins": {
    "title": "Plugins",
    "description": "Install and manage plugins for extending OmniRoute functionality",
    "loading": "Loading plugins...",
    "scanning": "Scanning...",
    "scanForPlugins": "Scan for Plugins",
    "noPlugins": "No plugins installed",
    "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.",
    "activate": "Activate",
    "deactivate": "Deactivate",
    "uninstall": "Uninstall",
    "uninstallConfirm": "Uninstall plugin \"{name}\"?",
    "pluginScanComplete": "Plugin scan complete",
    "pluginScanFailed": "Plugin scan failed",
    "activated": "{name} activated",
    "deactivated": "{name} deactivated",
    "activateFailed": "Failed to activate {name}",
    "deactivateFailed": "Failed to deactivate {name}",
    "uninstalled": "{name} uninstalled",
    "uninstallFailed": "Failed to uninstall {name}",
    "configure": "Configure: {name}",
    "configurePlugin": "Configure",
    "noConfigSettings": "This plugin has no configurable settings.",
    "saving": "Saving...",
    "saveConfiguration": "Save Configuration",
    "configurationSaved": "Configuration saved",
    "saveConfigurationFailed": "Failed to save configuration",
    "pluginNotFound": "Plugin not found",
    "version": "Version",
    "author": "Author",
    "description_label": "Description",
    "status": "Status",
    "enabled": "Enabled",
    "disabled": "Disabled",
    "hooks": "Hooks"
  },
  "quotaPlans": {
    "title": "Planos & Cotas",
    "description": "Configure os planos de cota por provider — dimensões (%, requests, tokens, $) e janelas de tempo",
    "providerLabel": "Provider / Conexão",
    "detectedPlanLabel": "Plano detectado",
    "manualPlanLabel": "Override manual",
    "unconfiguredLabel": "Não configurado — manual obrigatório",
    "dimensionLabel": "Dimensões",
    "addDimension": "Adicionar dimensão",
    "removeDimension": "Remover",
    "limitLabel": "Limite",
    "unitOptions": {
      "percent": "%",
      "requests": "requests",
      "tokens": "tokens",
      "usd": "USD ($)"
    },
    "windowOptions": {
      "5h": "5 horas",
      "hourly": "Por hora",
      "daily": "Diária",
      "weekly": "Semanal",
      "monthly": "Mensal"
    },
    "useCatalogButton": "Usar catálogo",
    "saveOverrideButton": "Salvar override",
    "revertToCatalogButton": "Reverter para catálogo",
    "unknownProviderNotice": "Selecione um provider à esquerda para configurar o plano de cota.",
    "catalogTitle": "Catálogo conhecido",
    "catalogDescription": "Planos automaticamente detectados para os seguintes providers:"
  },
  "activity": {
    "title": "Atividade",
    "description": "Feed de eventos recentes",
    "emptyTitle": "Sem atividade ainda",
    "emptyDescription": "Quando você adicionar providers, criar combos ou rotacionar keys, os eventos aparecem aqui.",
    "todayHeader": "Hoje",
    "yesterdayHeader": "Ontem",
    "filterAll": "Todos",
    "filterProviders": "Providers",
    "filterCombos": "Combos",
    "filterApiKeys": "API Keys",
    "filterSettings": "Settings",
    "filterQuota": "Quota",
    "filterAuth": "Auth",
    "filterSystem": "Sistema",
    "relative": {
      "justNow": "agora há pouco",
      "minutesAgo": "há {n} min",
      "hoursAgo": "há {n} h",
      "yesterday": "ontem",
      "daysAgo": "há {n} dias"
    },
    "eventVerb": {
      "providerAdded": "{actor} adicionou o provider {target}",
      "providerRemoved": "{actor} removeu o provider {target}",
      "providerTested": "{actor} testou o provider {target}",
      "comboCreated": "{actor} criou o combo {target}",
      "comboUpdated": "{actor} atualizou o combo {target}",
      "comboDeleted": "{actor} removeu o combo {target}",
      "apiKeyCreated": "{actor} criou a API key {target}",
      "apiKeyRevoked": "{actor} revogou a API key {target}",
      "apiKeyRotated": "{actor} rotacionou a API key {target}",
      "budgetThreshold": "Limite de orçamento atingido em {target}",
      "settingUpdated": "{actor} atualizou a configuração {target}",
      "authLogin": "{actor} entrou no sistema",
      "authLogout": "{actor} saiu do sistema",
      "cloudAgentSession": "Sessão de cloud agent iniciada em {target}",
      "mcpToolRegistered": "Tool MCP {target} registrada",
      "webhookCreated": "{actor} criou o webhook {target}",
      "webhookDeleted": "{actor} removeu o webhook {target}",
      "quotaPoolCreated": "{actor} criou o quota pool {target}",
      "quotaPoolUpdated": "{actor} atualizou o quota pool {target}",
      "quotaPoolDeleted": "{actor} removeu o quota pool {target}",
      "quotaPlanUpdated": "{actor} atualizou o plano de quota {target}",
      "quotaStoreDriverChanged": "Driver do QuotaStore alterado",
      "updateApplied": "Atualização {target} aplicada",
      "deployCompleted": "Deploy concluído",
      "skillInstalled": "{actor} instalou a skill {target}",
      "skillRemoved": "{actor} removeu a skill {target}",
      "providerCredentialsCreated": "{actor} criou credenciais para {target}",
      "providerCredentialsApplied": "Credenciais de {target} aplicadas",
      "providerCredentialsUpdated": "{actor} atualizou credenciais de {target}",
      "providerCredentialsRevoked": "{actor} revogou credenciais de {target}",
      "providerCredentialsBatchRevoked": "{actor} revogou credenciais em lote",
      "providerCredentialsBulkCreated": "{actor} criou credenciais em lote",
      "providerCredentialsBulkImported": "{actor} importou credenciais em lote",
      "providerCredentialsImported": "{actor} importou credenciais",
      "providerSsrfBlocked": "Tentativa de SSRF bloqueada em {target}",
      "authLoginSuccess": "{actor} entrou no sistema",
      "authLoginError": "Erro de login de {actor}",
      "authLoginFailed": "Falha de login de {actor}",
      "authLoginLocked": "Conta de {actor} bloqueada por tentativas excessivas",
      "authLoginMisconfigured": "Configuração de auth inválida",
      "authLoginSetupRequired": "Setup de auth requerido",
      "authLogoutSuccess": "{actor} saiu do sistema",
      "syncTokenCreated": "{actor} criou token de sync",
      "syncTokenRevoked": "{actor} revogou token de sync",
      "settingsUpdate": "{actor} atualizou configurações",
      "settingsUpdateFailed": "Falha ao atualizar configurações",
      "serviceRevealApiKey": "{actor} visualizou API key de {target}",
      "genericEvent": "{actor} {target}"
    }
  },
  "agentBridge": {
    "title": "AgentBridge",
    "subtitle": "Use agentes de IDE com modelos do OmniRoute — sem configuração manual",
    "riskBannerTitle": "Use por sua conta e risco",
    "riskBannerBody": "O AgentBridge intercepta o tráfego HTTPS dos agentes de IDE. Ao ativá-lo, você aceita a responsabilidade pela conformidade com os termos de serviço de cada agente. Nunca use em dispositivos ou redes onde a inspeção TLS é proibida.",
    "riskBannerDismiss": "Dispensar",
    "serverCardTitle": "Servidor AgentBridge",
    "statusRunning": "Rodando",
    "statusStopped": "Parado",
    "statusActive": "Ativo",
    "statusDnsOff": "DNS desligado",
    "statusSetupRequired": "Configuração necessária",
    "statusInvestigating": "Investigando",
    "serverPort": "Porta",
    "serverConns": "Conexões",
    "serverIntercepted": "Interceptados",
    "serverLastStarted": "Iniciado em",
    "startServer": "Iniciar",
    "stopServer": "Parar",
    "restartServer": "Reiniciar",
    "trustCert": "Confiar Cert",
    "downloadCert": "Baixar Cert",
    "regenerateCert": "Regenerar Cert",
    "starting": "Iniciando…",
    "stopping": "Parando…",
    "restarting": "Reiniciando…",
    "trusting": "Confiando…",
    "regenerating": "Regenerando…",
    "upstreamCaLabel": "Certificado CA Upstream (corporativo)",
    "upstreamCaPlaceholder": "/etc/ssl/certs/corp-ca.pem",
    "upstreamCaTest": "Testar TLS",
    "upstreamCaTestOk": "Teste TLS passou",
    "upstreamCaTestError": "Teste TLS falhou — verifique o caminho e o arquivo CA",
    "bypassSectionTitle": "Lista de Bypass",
    "bypassSectionDesc": "Hosts correspondentes a estes padrões são tunelados diretamente (sem descriptografia TLS). Os padrões padrão incluem bancos, .gov e SSO corporativo.",
    "bypassDefaultsLabel": "Padrões de bypass padrão (somente leitura)",
    "bypassUserLabel": "Padrões de bypass personalizados (um por linha, glob ou regex)",
    "saveBypassList": "Salvar lista de bypass",
    "agentListTitle": "Agentes de IDE",
    "filterAll": "Todos",
    "filterActive": "Ativos",
    "filterSetupRequired": "Configuração necessária",
    "filterInvestigating": "Investigando",
    "searchAgents": "Buscar agentes…",
    "noAgentsMatch": "Nenhum agente corresponde ao filtro atual",
    "agentHosts": "Hosts interceptados",
    "certTrusted": "Certificado confiável",
    "certNotTrusted": "Certificado não confiável",
    "investigatingNotice": "Este agente está sob investigação. Os hosts e a superfície de API ainda estão sendo confirmados. A configuração estará disponível assim que a API upstream for documentada.",
    "modelMappingsLabel": "Mapeamentos de modelo",
    "sourceModel": "Modelo de origem (nativo do agente)",
    "targetModel": "Modelo alvo (OmniRoute)",
    "noMappings": "Nenhum mapeamento de modelo configurado. Execute o assistente de configuração para detectar modelos automaticamente.",
    "selectModel": "Selecionar…",
    "saveMappings": "Salvar mapeamentos",
    "setupWizard": "Assistente de configuração",
    "startDns": "Ativar DNS",
    "stopDns": "Desativar DNS",
    "toggling": "Alternando…",
    "viewTraffic": "Ver tráfego",
    "emptyNoProvidersTitle": "Nenhum provedor configurado ainda",
    "emptyNoProvidersBody": "Para usar o AgentBridge, primeiro conecte pelo menos um provedor. Ele será o destino para onde os requests dos IDEs serão roteados.",
    "emptyGoToProviders": "Ir para Provedores",
    "wizardTitle": "Assistente de configuração",
    "wizardSubtitle": "Configuração em 3 passos",
    "wizardStep1Label": "Verificar",
    "wizardStep2Label": "DNS",
    "wizardStep3Label": "Mapeamentos",
    "wizardStep1Desc": "Confirme que o servidor está rodando e o certificado está instalado.",
    "wizardStep2Desc": "As seguintes entradas serão adicionadas ao /etc/hosts para redirecionar o tráfego pelo AgentBridge:",
    "wizardStep3Desc": "Agora você pode configurar mapeamentos de modelo no card do agente. Reinicie o IDE para aplicar as alterações.",
    "wizardStep3Success": "Agente configurado!",
    "wizardServerCheck": "Servidor AgentBridge",
    "wizardRunning": "rodando",
    "wizardNotRunning": "não rodando",
    "wizardCertCheck": "Certificado",
    "wizardTrusted": "confiável",
    "wizardNotTrusted": "ainda não confiável — use o botão Confiar Cert",
    "wizardTutorialTitle": "Instruções de configuração:",
    "wizardEnableDns": "Adicionar entradas ao /etc/hosts",
    "wizardDnsAlreadyEnabled": "DNS já ativado para este agente",
    "enablingDns": "Ativando…",
    "modelSelectorTitle": "Selecionar modelo alvo",
    "modelSelectorSearch": "Buscar modelos…",
    "noModelsFound": "Nenhum modelo encontrado",
    "quickLinks": "Atalhos",
    "quickLinkProviders": "Configurar provedores",
    "quickLinkInspector": "Ver tráfego no Traffic Inspector",
    "save": "Salvar",
    "saving": "Salvando…",
    "cancel": "Cancelar",
    "back": "Voltar",
    "next": "Próximo",
    "done": "Concluído",
    "loading": "Carregando…",
    "riskNoticeTitle": "Reconhecimento de risco",
    "riskNoticeBody": "O AgentBridge irá interceptar o tráfego HTTPS deste agente redirecionando seus hosts de API via DNS. Ative somente se você aceita a responsabilidade pelo cumprimento dos termos de serviço do agente e das políticas de rede aplicáveis.",
    "pageMoved": {
      "goNow": "Ir agora",
      "message": "O MITM Proxy agora vive no AgentBridge.",
      "title": "Esta página foi movida"
    }
  },
  "trafficInspector": {
    "title": "Inspector de Tráfego",
    "subtitle": "Monitore chamadas LLM e debugue o tráfego HTTPS de qualquer aplicação",
    "captureModesTitle": "Modos de Captura",
    "agentBridgeMode": "AgentBridge",
    "agentBridgeModeDesc": "Capturar tráfego de todos os agentes IDE conectados",
    "customHostsMode": "Hosts Personalizados",
    "customHostsModeDesc": "Adicionar hosts específicos para interceptar",
    "httpProxyMode": "Proxy HTTP",
    "httpProxyModeDesc": "Usar variável de ambiente HTTP_PROXY",
    "systemWideMode": "Sistema inteiro",
    "systemWideModeDesc": "Interceptar todo o tráfego do sistema (avançado)",
    "filterBarTitle": "Filtros",
    "profileLlmOnly": "Apenas LLM",
    "profileCustom": "Personalizado",
    "profileAll": "Todos",
    "filterHost": "Filtrar host…",
    "filterAgent": "Agente",
    "filterStatus": "Status",
    "pauseBtn": "Pausar",
    "resumeBtn": "Retomar",
    "clearBtn": "Limpar",
    "exportHar": "Exportar .har",
    "recordSession": "REC",
    "stopSession": "Parar",
    "liveBadge": "ao vivo",
    "offlineBadge": "offline",
    "noRequests": "Nenhuma requisição capturada ainda.",
    "noRequestsDesc": "Certifique-se que o AgentBridge está ativo ou ative outro modo de captura.",
    "selectRequest": "Selecione uma requisição para inspecioná-la.",
    "tabConversation": "Conversa",
    "tabHeaders": "Cabeçalhos",
    "tabRequest": "Requisição",
    "tabResponse": "Resposta",
    "tabTiming": "Temporização",
    "tabLlm": "LLM",
    "tabStats": "Estatísticas",
    "requestHeaders": "Cabeçalhos da Requisição",
    "responseHeaders": "Cabeçalhos da Resposta",
    "rawEvents": "Eventos brutos",
    "mergedView": "Visão consolidada",
    "noBody": "Sem corpo.",
    "streaming": "transmitindo…",
    "manageHosts": "Gerenciar hosts",
    "copySnippet": "Copiar snippet de proxy",
    "addHost": "Adicionar",
    "hostPlaceholder": "api.openai.com",
    "noHostsYet": "Nenhum host personalizado adicionado ainda.",
    "noSessionsYet": "Nenhuma sessão ainda",
    "allTraffic": "Todo o tráfego (sem sessão)",
    "sessionsDropdown": "Sessões",
    "annotationPlaceholder": "Adicionar uma nota…",
    "contextFingerprint": "Fingerprint de contexto",
    "llmProvider": "Provider detectado",
    "llmApiKind": "Tipo de API",
    "llmModel": "Modelo",
    "llmMessages": "Mensagens",
    "llmStream": "Stream",
    "llmMappedTo": "Mapeado para",
    "llmCostEstimate": "Estimativa de custo",
    "systemProxyExitWarning": "Proxy do sistema ainda está ativo — sair mesmo assim?",
    "customHostsTitle": "Hosts Personalizados",
    "loading": "Carregando…",
    "copied": "Copiado!",
    "copy": "Copiar",
    "httpProxyTitle": "Snippet de Proxy HTTP — porta {port}",
    "notRecording": "Sem gravação",
    "anyStatus": "Qualquer status",
    "viewingRecordedSession": "Visualizando sessão gravada",
    "backToLive": "Voltar ao live",
    "untitledSession": "Sessão sem nome",
    "contextHistory": "Histórico do Contexto",
    "modelResponse": "Resposta do Modelo",
    "conversationNoMessages": "Nenhuma mensagem encontrada nesta requisição.",
    "conversationNotAvailable": "Dados de conversa indisponíveis. Pode não ser uma requisição LLM ou o body não pôde ser interpretado.",
    "loadingCharts": "Carregando gráficos…",
    "statsErrors": "Erros",
    "statsLatency": "Latência (últimas 50 requisições)",
    "statsNoData": "Sem requisições ainda. Inicie uma gravação de sessão para capturar dados para estatísticas.",
    "statsStatusDistribution": "Distribuição de status",
    "statsSuccessful": "Bem-sucedidas",
    "statsTotalRequests": "Total de requisições",
    "timingProxyOverhead": "Overhead do proxy",
    "timingUpstreamResponse": "Resposta upstream",
    "timingNoData": "Nenhum dado de tempo disponível.",
    "timingTotalLatency": "Latência total",
    "timingTimestamp": "Timestamp",
    "timingMethod": "Método",
    "timingStatus": "Status",
    "timingRequestSize": "Tamanho da requisição",
    "timingResponseSize": "Tamanho da resposta",
    "pausedNewBadge": "{count} novos",
    "clearContextFilter": "limpar"
  },
  "cliCommon": {
    "concept": {
      "code": {
        "title": "CLI Code's",
        "phrase": "Ferramentas de código que você aponta para o OmniRoute",
        "flow": "Você → CLI Code → OmniRoute → Provider",
        "seeOther": "Ver →"
      },
      "agent": {
        "title": "CLI Agents",
        "phrase": "Agentes autônomos (CLI) de propósito amplo que você aponta para o OmniRoute",
        "flow": "Você → CLI Agent → OmniRoute → Provider",
        "seeOther": "Ver →"
      },
      "acp": {
        "title": "ACP Agents",
        "phrase": "CLIs que o OmniRoute spawna como backend de execução (fluxo reverso)",
        "flow": "Cliente → OmniRoute → spawn CLI (stdio/ACP) → resposta",
        "seeOther": "Ver →"
      }
    },
    "comparison": {
      "title": "Entenda os 3 tipos de CLI no OmniRoute",
      "thisPage": "[Esta página ✓]",
      "code": {
        "title": "Ferramenta de código",
        "desc": "Aponta para o Omni",
        "flow": "você → CLI → Omni → provider",
        "examples": "ex: claude, codex"
      },
      "agent": {
        "title": "Agente autônomo amplo",
        "desc": "Aponta para o Omni",
        "flow": "você → agente → Omni",
        "examples": "ex: hermes, goose"
      },
      "acp": {
        "title": "CLI usada como backend pelo Omni",
        "desc": "Execução reversa",
        "flow": "Omni → spawn CLI → resp",
        "examples": "ex: claude, codex (ACP)"
      }
    },
    "card": {
      "detected": "Detectado",
      "notDetected": "Não detectado",
      "configured": "Configurado",
      "notConfigured": "Não configurado",
      "configure": "Configurar →",
      "howToInstall": "Como instalar →",
      "manualConfig": "Manual config",
      "installGuide": "Install guide",
      "endpointLabel": "Endpoint",
      "baseUrlPartial": "Base URL parcial",
      "refreshDetection": "Atualizar detecção",
      "alsoAcp": "também ACP"
    },
    "detail": {
      "back": "Voltar",
      "apply": "Salvar",
      "reset": "Limpar",
      "manualConfig": "Configuração manual",
      "vendor": "Origem",
      "category": "Tipo",
      "detectionStatus": "Detecção",
      "configStatus": "Configuração",
      "baseUrlLabel": "Base URL",
      "apiKeyLabel": "API Key",
      "modelMappingLabel": "Mapeamento de modelos",
      "noActiveProviders": "Nenhum provider ativo.",
      "noActiveProvidersDesc": "Vá em Providers para conectar pelo menos 1 provider antes de configurar a CLI.",
      "openProviders": "Abrir Providers →"
    }
  },
  "cliCode": {
    "pageTitle": "CLI Code's",
    "pageSubtitle": "Ferramentas de código que apontam para o OmniRoute",
    "searchPlaceholder": "Buscar CLI…",
    "filterDetectionLabel": "Detecção",
    "filterBaseUrlLabel": "Base URL",
    "detectionAll": "Todas",
    "detectionInstalled": "Instaladas",
    "detectionNotFound": "Não detectadas",
    "baseUrlAll": "Todas",
    "baseUrlFull": "Completa",
    "baseUrlPartial": "Parcial"
  },
  "cliAgents": {
    "pageTitle": "CLI Agents",
    "pageSubtitle": "Agentes autônomos (CLI) de propósito amplo",
    "refreshDetection": "Atualizar detecção",
    "searchPlaceholder": "Buscar agente…",
    "detectionFilterLabel": "Detecção",
    "detectionAll": "Todos",
    "detectionInstalled": "Instalados",
    "detectionNotInstalled": "Não instalados",
    "visibleCount": "{count} visíveis",
    "emptyState": "Nenhum agente CLI encontrado com os filtros atuais."
  },
  "acpAgents": {
    "pageTitle": "ACP Agents",
    "pageSubtitle": "CLIs que o OmniRoute spawna como backend de execução",
    "scanning": "Detectando agentes…",
    "refresh": "Atualizar",
    "setupGuideTitle": "Guia de setup",
    "setupGuideDetectCliTitle": "Detectar CLI",
    "setupGuideDetectCliDesc": "Os agentes são identificados rodando o comando --version no PATH.",
    "setupGuideCustomAgentTitle": "Adicionar agente customizado",
    "setupGuideCustomAgentDesc": "Preencha o formulário abaixo para registrar um agente CLI customizado.",
    "setupGuideCommandMissingTitle": "Comando não encontrado",
    "setupGuideCommandMissingDesc": "Verifique se o binário está no PATH.",
    "fingerprintSettingsHint": "Configure roteamento e fingerprints em",
    "settingsRoutingLink": "Configurações → Roteamento",
    "installed": "Instalado",
    "notFound": "Não encontrado",
    "builtIn": "Built-in",
    "custom": "Customizado",
    "agentUseCaseHint": "Disponível para spawn via ACP.",
    "remove": "Remover",
    "addCustomAgent": "Adicionar agente customizado",
    "addCustomAgentDesc": "Registre um agente CLI customizado que será spawnado via ACP.",
    "addAgent": "Adicionar agente",
    "agentName": "Nome",
    "agentNamePlaceholder": "ex: Meu Agente",
    "binaryName": "Binário",
    "binaryNamePlaceholder": "ex: meuagente",
    "versionCommand": "Comando de versão",
    "versionCommandPlaceholder": "ex: meuagente --version",
    "spawnArgs": "Argumentos de spawn",
    "spawnArgsPlaceholder": "ex: --quiet, --json",
    "cliCodeRedirectCta": "Abrir CLI Code's"
  },
  "agentSkills": {
    "pageTitle": "Agent Skills",
    "pageSubtitle": "Ensine seu agente a operar o OmniRoute — 22 áreas de API + 20 famílias de CLI",
    "conceptCard": {
      "agent": {
        "title": "Agent Skills — Saída",
        "description": "Agent Skills são documentos SKILL.md legíveis por máquina que agentes externos (Claude Code, Cursor, Copilot…) baixam do GitHub para aprender a operar o OmniRoute via REST ou CLI. São lidos pelo agente, não executados pelo OmniRoute.",
        "crossLinkLabel": "Entenda a diferença →"
      },
      "omni": {
        "title": "Omni Skills — Entrada",
        "description": "Omni Skills são ferramentas sandbox que o OmniRoute injeta no contexto do modelo a cada solicitação. São executadas pelo OmniRoute, não lidas pelo agente.",
        "crossLinkLabel": "Entenda a diferença →"
      },
      "comparison": {
        "colAgent": "Agent Skills",
        "colOmni": "Omni Skills",
        "whatIs": {
          "label": "O que é",
          "agent": "Documentação (SKILL.md) que ensina um agente externo a operar o OmniRoute",
          "omni": "Ferramentas executáveis que o Omni injeta como tools nos requests LLM"
        },
        "direction": {
          "label": "Direção",
          "agent": "Outbound — externo aprende a controlar o Omni",
          "omni": "Inbound — Omni dá tools aos modelos que passam por ele"
        },
        "executor": {
          "label": "Executor",
          "agent": "Agente externo (lê markdown → age via API/CLI)",
          "omni": "O próprio Omni (intercepta tool_calls, sandbox Docker)"
        },
        "storage": {
          "label": "Storage",
          "agent": "Catálogo dinâmico (/api/agent-skills) → SKILL.md no GitHub",
          "omni": "SQLite (SkillsMP / skills.sh / local)"
        },
        "tagline": {
          "label": "Frase",
          "agent": "Ensine seu agente a usar o OmniRoute",
          "omni": "Dê ferramentas executáveis aos modelos do OmniRoute"
        }
      }
    },
    "filters": {
      "category": "Categoria",
      "area": "Área",
      "searchPlaceholder": "Buscar skills…"
    },
    "categoryApi": "API",
    "categoryCli": "CLI",
    "filterAll": "Todas",
    "coverageLabel": "Cobertura",
    "mcpUrl": "URL MCP",
    "a2aLink": "A2A",
    "copyUrl": "Copiar URL",
    "viewOnGithub": "Ver no GitHub",
    "previewLoading": "Carregando documentação da skill…",
    "previewError": "Falha ao carregar documentação da skill.",
    "previewEmpty": "Selecione uma skill para visualizar sua documentação.",
    "generateButton": "Gerar skills faltantes",
    "coverageBar": {
      "complete": "Completo",
      "partial": "Parcial"
    },
    "noSkillsFound": "Nenhuma skill encontrada para os filtros selecionados.",
    "regenerateConfirm": "Isso irá regenerar todos os arquivos SKILL.md faltantes. Continuar?",
    "regenerateRunning": "Regenerando skills…",
    "regenerateSuccess": "Skills regeneradas com sucesso.",
    "regenerateError": "Falha ao regenerar skills."
  }
}
