diff --git a/src/i18n/messages/pt-BR.json b/src/i18n/messages/pt-BR.json
index 9a4713d2e8..becbf70a88 100644
--- a/src/i18n/messages/pt-BR.json
+++ b/src/i18n/messages/pt-BR.json
@@ -71,9 +71,9 @@
"authorization": "Autorização",
"content-type": "Tipo de conteúdo",
"content-length": "Comprimento do conteúdo",
- "cookie": "Biscoito",
+ "cookie": "Cookie",
"file": "Arquivo",
- "host": "Anfitrião",
+ "host": "Host",
"id": "ID",
"import": "Importar",
"limit": "Limite",
@@ -82,7 +82,7 @@
"origin": "Origem",
"promptTokens": "Tokens de prompt",
"completionTokens": "Tokens de conclusão",
- "totalTokens": "Total de fichas",
+ "totalTokens": "Total de Tokens",
"rawModel": "Modelo Bruto",
"scope": "Escopo",
"skill": "Habilidade",
@@ -100,7 +100,7 @@
"resolve": "Resolver",
"force": "Força",
"base64url": "URL Base64",
- "hex": "Feitiço",
+ "hex": "Hex",
"range": "Alcance",
"component": "Componente",
"redirect_uri": "Redirecionar URI",
@@ -255,7 +255,7 @@
"anthropicBaseUrlPlaceholder": "URL base da Anthropic",
"description": "Descrição",
"noProviderFound": "Nenhum provedor encontrado",
- "auto": "Auto",
+ "auto": "Automático",
"protocolsDescription": "Descrição dos protocolos",
"cloudSessionNote": "Nota da sessão na nuvem",
"advancedSettings": "Configurações Avançadas",
@@ -708,7 +708,6 @@
"batchFilesListSearchPlaceholder": "Buscar por ID ou nome do arquivo…",
"batchFilesListFilesTable": "Arquivos",
"batchPageLoadingMore": "Carregando mais…",
- "auto": "Automático",
"recommended": "Recomendado"
},
"sidebar": {
@@ -846,6 +845,7 @@
"settingsAi": "Configurações de IA",
"settingsSecurity": "Segurança",
"settingsFeatureFlags": "Sinalizadores de Funcionalidade",
+ "settingsAuthz": "Autorização",
"settingsRouting": "Roteamento",
"settingsResilience": "Resiliência",
"settingsAdvanced": "Avançado",
@@ -882,11 +882,9 @@
"leaderboard": "Ranking",
"profile": "Perfil",
"tokens": "Tokens",
- "settingsAuthz": "Autorização",
"leaderboardSubtitle": "Classificações de gamificação",
"profileSubtitle": "Conquistas do usuário",
"tokensSubtitle": "Gerenciar saldo de tokens",
- "settingsAuthzSubtitle": "Inventário de rotas e política de bypass",
"usageSubtitle": "Estatísticas de tráfego e uso",
"analyticsComboHealthSubtitle": "Confiabilidade dos targets do combo",
"analyticsUtilizationSubtitle": "Utilização de provedores",
@@ -925,6 +923,7 @@
"settingsAdvancedSubtitle": "Opções avançadas",
"settingsSecuritySubtitle": "Auth e criptografia",
"settingsFeatureFlagsSubtitle": "Alternar capacidades do sistema",
+ "settingsAuthzSubtitle": "Inventário de rotas e política de bypass",
"docsSubtitle": "Documentação",
"issuesSubtitle": "Reportar um bug",
"changelogSubtitle": "Notas de versão"
@@ -1159,7 +1158,7 @@
"step1Title": "1. Criar chave de API",
"step1Desc": "Vá em Endpoint -> Chaves Registradas. Gere uma chave por ambiente.",
"step2Title": "2. Conectar provedores",
- "step2Desc": "Adicione contas em Provedores. Suporta OAuth, API Key e planos gratuitos.",
+ "step2Desc": "Adicione contas em Provedores. Suporta OAuth, Chave de API 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",
@@ -1196,7 +1195,7 @@
"analytics": {
"title": "Análise",
"usageAnalyticsTitle": "Análise de Uso",
- "diversityScoreTitle": "Pontuação de Diversidade",
+ "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",
@@ -1217,7 +1216,6 @@
"chartCostPct": "{pct}% do custo",
"chartUsageDetail": "Detalhes de Uso",
"chartCacheRead": "Leitura de cache",
- "chartOutputLabel": "Saída",
"chartCostByProvider": "Custo por Provedor",
"chartNoCostData": "Sem dados de custo",
"chartModelUsageOverTime": "Uso de Modelos ao Longo do Tempo",
@@ -1327,8 +1325,7 @@
"providerUtilizationNoData": "Nenhum dado de utilização disponível",
"providerUtilizationGettingStarted": "Começando",
"providerUtilizationLatestSnapshot": "Último snapshot de cota",
- "providerUtilizationRemainingCapacity": "Capacidade restante",
- "diversityScoreTitle": "Diversidade de Provedores"
+ "providerUtilizationRemainingCapacity": "Capacidade restante"
},
"apiManager": {
"title": "Chaves de API",
@@ -1376,6 +1373,7 @@
"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.",
"keyCreated": "Chave de API Criada",
"keyCreatedSuccess": "Chave criada com sucesso!",
"keyCreatedNote": "Copie e armazene esta chave agora — ela não será mostrada novamente.",
@@ -1759,7 +1757,7 @@
},
"5": {
"title": "Adicionar Modelo Customizado",
- "desc": "Clique em \"View All Model\" -> \"Add Custom Model\""
+ "desc": "Clique em \"View Todos Model\" -> \"Add Custom Model\""
},
"6": {
"title": "Selecionar Modelo"
@@ -2120,6 +2118,17 @@
"recommendationsApplied": "Recomendações aplicadas a este combo.",
"intelligentPanelTitle": "Painel de Roteamento Inteligente",
"intelligentPanelDesc": "Pontuação em tempo real e status de saúde para este combo de roteamento automático.",
+ "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": "Visão Geral do Status",
"normalOperation": "Operação Normal",
"allProvidersHealthy": "Os provedores estão relatando condições de roteamento saudáveis.",
@@ -2429,7 +2438,8 @@
"previousPeriod": "Metade Anterior",
"currentPeriod": "Metade Atual",
"exportCSV": "Exportar como CSV",
- "exportJSON": "Exportar como JSON"
+ "exportJSON": "Exportar como JSON",
+ "legacyFreeLabel": "Legado / Gratuito"
},
"endpoint": {
"title": "Endpoint da API",
@@ -2669,7 +2679,7 @@
"transportSseDesc": "Remoto — Server-Sent Events via HTTP",
"transportStreamableHttpDesc": "Remoto — HTTP bidirecional moderno",
"copy": "Copiar",
- "mcpDashboardCopyUrl": "Copiar URL para a área de transferência",
+ "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).",
@@ -2730,8 +2740,7 @@
"apiKeyId": "ID da Chave de API",
"offset": "Deslocamento",
"limit": "Limite",
- "tool": "Ferramenta",
- "mcpDashboardCopyUrl": "Copiar URL"
+ "tool": "Ferramenta"
},
"a2aDashboard": {
"loading": "Carregando painel A2A...",
@@ -3055,7 +3064,7 @@
"pid": "PID",
"lastIntercept": "Última Interceptação",
"target": "Alvo",
- "host": "Anfitrião",
+ "host": "Host",
"localPort": "Porta Local",
"endpoints": "Endpoints",
"enabled": "Ativado",
@@ -3763,7 +3772,7 @@
"apiKeyStatusInvalid": "Inválida",
"primaryKey": "Chave Primária",
"apiKeyInvalidAlert": "{count} chave(s) de API marcada(s) como inválida(s) devido a falhas de autenticação nas conexões: {connections}. Elas serão ignoradas na rotação. Clique para revisar.",
- "apiKeyInvalidAlertTitle": "Alerta de Saúde da Chave de API",
+ "apiKeyInvalidAlertTitle": "Alert de Saúde da Chave de API",
"apiKeyWarningAlert": "{count} chave(s) de API em estado de aviso devido à alta taxa de falhas nas conexões: {connections}. Revise para evitar problemas de rotação.",
"apiKeyWarningAlertTitle": "Aviso de Chave de API",
"googlePseInfo": "O Google Programmable Search exige dois valores: sua chave de API e o Search Engine ID (cx) do painel do Programmable Search Engine.",
@@ -3771,6 +3780,12 @@
"geminiCliProjectIdLabel": "ID de Projeto do Google Cloud",
"geminiCliProjectIdPlaceholder": "meu-id-de-projeto-gcp",
"antigravityProjectIdHint": "Sobrescrita opcional para solicitações do Antigravity Cloud Code. 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 de Projeto do Google Cloud",
"antigravityProjectIdPlaceholder": "meu-id-de-projeto-gcp",
"grokWebCookieHint": "Cole o cookie sso do grok.com. Um valor completo `sso=...` também funciona.",
@@ -4335,16 +4350,16 @@
"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.",
+ "providerProfilesDesc": "Configurações de resiliência separadas para provedores OAuth (baseados em sessão) e Chave de API (medidos). Provedores OAuth têm limites mais rigorosos devido a taxas mais baixas.",
"oauthProviders": "Provedores OAuth",
- "apiKeyProviders": "Provedores API Key",
+ "apiKeyProviders": "Provedores Chave de API",
"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.",
+ "rateLimitingDesc": "Provedores Chave de API 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.",
@@ -4634,14 +4649,7 @@
"resilienceConcurrentRequests": "Solicitações simultâneas",
"resilienceMaxQueueWaitTime": "Tempo máximo de espera na fila",
"resilienceBaseCooldown": "Resfriamento base",
- "resilienceBaseCooldownLabel": "Resfriamento base",
"resilienceUseUpstreamRetryHints": "Usar dicas de retentativa upstream",
- "resilienceUseUpstreamRetryHintsLabel": "Usar dicas de retentativa upstream",
- "resilienceYes": "Sim",
- "resilienceNo": "Não",
- "resilienceDefault": "Padrão",
- "resilienceUseUpstream429BreakerLabel": "Usar dicas 429 upstream (breaker)",
- "resilienceMaxBackoffStepsLabel": "Passos máximos de backoff",
"resilienceDefaultPerProvider": "Padrão (por provedor)",
"resilienceAlwaysOn": "Sempre ativado",
"resilienceAlwaysOff": "Sempre desativado",
@@ -4819,6 +4827,13 @@
"codexFastTierDesc": "Injetar globalmente service_tier=priority para solicitações do OpenAI Codex.",
"codexFastTierHint": "Quando ativado, o OmniRoute adiciona service_tier=priority às solicitações de saída do Codex para conexões que ainda não especificam um nível. O nível de prioridade requer uma chave de API do OpenAI Enterprise ou o caminho Codex ChatGPT-auth; 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 Nível Codex Fast",
+ "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 Claude Rápido",
"claudeFastModeDesc": "Optar por solicitações selecionadas do Claude no Modo Rápido da Anthropic (speed:\"fast\").",
"claudeFastModeHint": "A Anthropic não suporta oficialmente o Modo Rápido para clientes estilo SDK. Quando ativado, o OmniRoute encaminha um cabeçalho X-CPA-Force-Fast-Mode para que uma compilação CLIProxyAPI emparelhada possa optar por simular o ponto de entrada. Apenas os modelos Opus listados são bloqueados pela verificação do lado do cliente da Anthropic. O nível de assinatura, o plano Max e o saldo de crédito do Modo Rápido ainda são aplicados no lado do servidor — a Anthropic pode retornar out_of_credits mesmo quando o alternador está ativado.",
@@ -4975,13 +4990,13 @@
"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": "Modo de Saída",
- "inputCompressionTitle": "Compressão de Entrada",
- "inputCompressionDesc": "Reescreve o histórico do chat com termos mais curtos. Reduz os tokens de entrada em aproximadamente 50%.",
"quickSettings": "Configurações Rápidas",
"quickSettingsDesc": "Configurações básicas de compressão para começar",
"autoClarity": "Bypass Auto-Clarity",
@@ -5391,7 +5406,25 @@
"tierPro": "Pro",
"tierPlus": "Plus",
"tierFree": "Grátis",
+ "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 limites",
+ "forceRefresh": "Atualizar agora",
"suiteBuilderSaveFailed": "Falha ao salvar a suíte customizada",
"clone": "Clonar",
"exportSuite": "Exportar",
@@ -5503,7 +5536,7 @@
"quotaThresholdLabel": "Mín restante",
"quotaCutoffsColumnHelp": "Parar solicitações quando a cota restante cair para esta porcentagem ou menos.",
"quotaCutoffsButtonDefault": "Padrão",
- "quotaCutoffsButtonHelp": "Editar limites mínimos de cota restante para esta conta.",
+ "quotaCutoffsButtonHelp": "Edit cutoffs mínimos de cota restante para esta conta.",
"quotaCutoffsButtonDisabled": "Nenhuma janela de cota está disponível para esta conta ainda.",
"quotaCutoffsTitle": "Cortes de cota para {name} ({provider})",
"quotaCutoffsExplainer": "Sobrescreva 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.",
@@ -5535,9 +5568,11 @@
"budgetWeeklyDollar": "Semanal $",
"budgetMonthlyDollar": "Mensal $",
"budgetWarnAtPct": "Avisar em %",
- "quotaAlerts": "Alertas de cota",
+ "quotaAlerts": "Alerts de cota",
"quotaTableRefreshing": "⟳ Atualizando...",
- "noSpendLast30Days": "Sem gastos nos últimos 30 dias"
+ "noSpendLast30Days": "Sem gastos nos últimos 30 dias",
+ "updatedShort": "Atualizado",
+ "lastRefreshed": "Última atualização"
},
"modals": {
"waitingAuth": "Aguardando Autorização",
@@ -6165,7 +6200,7 @@
"templateNames": {
"simple-chat": "Bate-papo simples",
"streaming": "Transmissão",
- "system-prompt": "Alerta do sistema",
+ "system-prompt": "Alert do sistema",
"thinking": "Pensando",
"tool-calling": "Chamada de ferramenta",
"multi-turn": "Multivoltas",
@@ -6233,7 +6268,7 @@
"behaviorBypass": "Ignorar com o cabeçalho {header}.",
"behaviorTwoTier": "Armazenamento em dois níveis: LRU na memória (rápido) + SQLite (persistente entre reinicializações).",
"behaviorTtl": "TTL padrão: 30 minutos. Configure via {envVar}.",
- "idempotency": "Camada de Idempotência",
+ "idempotency": "Tier de Idempotência",
"activeDedupKeys": "Chaves de Dedup Ativas",
"dedupWindow": "Janela de Dedup",
"clearSuccess": "Cache semântico limpo. {count} entradas removidas.",
@@ -6243,7 +6278,6 @@
"loadingCacheAria": "Carregando cache",
"promptCache": "Cache de Prompt (Provedor)",
"semanticCache": "Cache Semântico",
- "reasoningCache": "Cache de Raciocínio",
"promptCacheSectionDesc": "Mostra a atividade de cache de prompt do lado do provedor a partir do histórico de uso para que você possa ver onde o controle de cache está ativo e quanto de reuso de entrada está obtendo.",
"promptTrendDesc": "Volume de solicitações por hora, cobertura de cache e volume de leitura de cache nas últimas 24 horas.",
"cachedRequests": "Solicitações Cacheadas",
@@ -6266,16 +6300,6 @@
"peakCacheRate": "Taxa de Pico",
"trendHour": "Hora",
"activityVolume": "Atividade",
- "hour": "Hora",
- "activity": "Atividade",
- "requests": "solicitações",
- "noTrendData": "Nenhum dado de tendência disponível para as últimas 24 horas.",
- "reasoningCacheTitle": "Cache de Raciocínio (Gemini Thinking)",
- "reasoningCacheDesc": "Armazena e reutiliza blocos de raciocínio do Gemini para evitar geração redundante em fluxos de chamadas de ferramentas.",
- "reasoningCacheHits": "Acertos de Raciocínio",
- "reasoningCacheMisses": "Falhas de Raciocínio",
- "reasoningCacheSize": "Tamanho do Cache",
- "reasoningCacheTokens": "Tokens de Raciocínio Reutilizados",
"requestsShort": "reqs",
"inputShort": "In",
"cachedShort": "Em Cache",
@@ -6296,11 +6320,6 @@
"tableProvider": "Provedor",
"tableModel": "Modelo",
"performanceTitle": "Desempenho",
- "tableShare": "Participação",
- "justNow": "agora mesmo",
- "minutesAgo": "{minutes}m atrás",
- "hoursAgo": "{hours}h atrás",
- "daysAgo": "{days}d atrás",
"semanticCacheSectionDesc": "O próprio cache de resposta determinística do OmniRoute. Quando ativado, solicitações repetidas não streaming com temperature=0 podem ser servidas localmente sem atingir o provedor upstream.",
"semanticCacheDisabledDesc": "O cache semântico está desativado. O OmniRoute pulará o reuso de resposta local até que você o ative novamente nas Configurações.",
"semanticEntriesDesc": "Registros de cache semântico persistidos atualmente armazenados no SQLite. A atividade de cache de prompt do lado do provedor não está listada aqui.",
@@ -6351,7 +6370,12 @@
"cachePerformanceAvgLatency": "Latência Média (ms)",
"cachePerformanceP95Latency": "Latência p95 (ms)",
"retry": "Tentar novamente",
- "reasoningAvgChars": "Média de Caracteres"
+ "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"
},
"proxyConfigModal": {
"levelGlobal": "Global",
@@ -6368,7 +6392,7 @@
"custom": "Personalizado",
"selectSavedProxyPlaceholder": "Selecionar proxy salvo...",
"proxyType": "Tipo de Proxy",
- "host": "Anfitrião",
+ "host": "Host",
"hostPlaceholder": "1.2.3.4 ou proxy.exemplo.com",
"port": "Porta",
"authOptional": "Autenticação (opcional)",
@@ -6476,7 +6500,7 @@
"modalEditTitle": "Modal Edit Title",
"labelName": "Label Name",
"labelType": "Tipo",
- "labelHost": "Anfitrião",
+ "labelHost": "Host",
"labelPort": "Porta",
"labelUsername": "Usuário",
"labelPassword": "Senha",
@@ -6502,11 +6526,11 @@
"scopeProvider": "provedor",
"scopeAccount": "conta",
"scopeCombo": "combo",
- "bulkImportErrorMissingName": "Nome ausente (NAME)",
- "bulkImportErrorMissingHost": "Host ausente (HOST)",
- "bulkImportErrorInvalidPort": "Porta inválida (deve ser 1-65535)",
- "bulkImportErrorInvalidType": "Tipo inválido (use http, https ou socks5)",
- "bulkImportErrorInvalidStatus": "Status inválido (use active ou inactive)",
+ "bulkImportErrorMissingName": "NAME ausente",
+ "bulkImportErrorMissingHost": "HOST ausente",
+ "bulkImportErrorInvalidPort": "PORTA inválida (deve ser 1-65535)",
+ "bulkImportErrorInvalidType": "TIPO inválido (use http, https ou socks5)",
+ "bulkImportErrorInvalidStatus": "STATUS inválido (use active ou inactive)",
"errorLoadFailed": "Falha ao carregar registro de proxy",
"errorNameHostRequired": "Nome e host são obrigatórios",
"errorSaveFailed": "Falha ao salvar proxy",
@@ -6538,11 +6562,6 @@
"bulkImportErrorLine": "Linha {line}: {reason}",
"bulkImportMaxExceeded": "Máximo de 100 proxies por importação",
"bulkImportPreview": "Prévia",
- "bulkImportErrorMissingName": "NAME ausente",
- "bulkImportErrorMissingHost": "HOST ausente",
- "bulkImportErrorInvalidPort": "PORTA inválida (deve ser 1-65535)",
- "bulkImportErrorInvalidType": "TIPO inválido (use http, https ou socks5)",
- "bulkImportErrorInvalidStatus": "STATUS inválido (use active ou inactive)",
"clearAssignment": "(limpar atribuição)",
"bulkProxyAssignment": "Atribuição de Proxy em Massa"
},
@@ -6595,7 +6614,7 @@
"paused": "Pausado",
"pipelineLogsOn": "Logs de pipeline ativados",
"pipelineLogsOff": "Logs de pipeline desativados",
- "updatingPipelineLogs": "Atualizando logs de pipeline...",
+ "updatingPipelineLogs": "Refreshing logs de pipeline...",
"updatePipelineFailed": "Falha ao atualizar o registro de pipeline",
"capturePipeline": "Capturar payloads de pipeline para novas solicitações",
"searchPlaceholder": "Pesquisar modelos, provedores, contas, chaves de API, combos...",
@@ -6730,10 +6749,10 @@
"hintOpen": "aberto",
"hintConnsCooling": "conexões em cooldown",
"hintModelsBlocked": "modelos bloqueados",
- "resilienceTitle": "Resiliência em 3 Camadas",
+ "resilienceTitle": "Resiliência em 3 Tiers",
"resilienceSubtitle": "Espelha o modelo de resiliência documentado",
"providersHealthy": "{percent}% dos providers saudáveis",
- "layer": "Camada {n}",
+ "layer": "Tier {n}",
"layer1Title": "Circuit Breakers do Provedor",
"layer1Desc": "Bloqueia tráfego para providers falhando no upstream",
"layer2Title": "Cooldown de Conexões",