{
  "common": {
    "save": "Salvar",
    "cancel": "Cancelar",
    "delete": "Excluir",
    "loading": "Carregando...",
    "error": "Ocorreu um erro",
    "success": "Sucesso",
    "confirm": "Você tem certeza?",
    "refresh": "Atualizar",
    "close": "Fechar",
    "add": "Adicionar",
    "edit": "Editar",
    "search": "Pesquisar",
    "back": "Voltar",
    "next": "Próximo",
    "submit": "Enviar",
    "reset": "Redefinir",
    "copy": "Copiar",
    "copied": "Copiado!",
    "enabled": "Habilitado",
    "disabled": "Desativado",
    "active": "Ativo",
    "inactive": "Inativo",
    "noData": "Não há dados disponíveis",
    "nothingHere": "Nothing here yet",
    "configure": "Configurar",
    "manage": "Gerenciar",
    "name": "Nome",
    "actions": "Ações",
    "status": "Estado",
    "type": "Tipo",
    "model": "Modelo",
    "models": "modelos",
    "provider": "Provedor",
    "account": "Conta",
    "time": "Hora",
    "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": "Conexão de teste",
    "enable": "Habilitar",
    "disable": "Desativar",
    "columns": "Colunas",
    "newest": "Mais recente",
    "oldest": "Mais antigo",
    "all": "Todos",
    "none": "Nenhum",
    "yes": "Sim",
    "no": "Não",
    "on": "__MISSING__:ON",
    "off": "__MISSING__:OFF",
    "warning": "Aviso",
    "note": "Nota",
    "free": "Grátis",
    "skipToContent": "Pular para o conteúdo",
    "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.",
    "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...",
    "accept": "accept",
    "accountId": "accountId",
    "alias": "alias",
    "apiKeyId": "apiKeyId",
    "apiKeyName": "apiKeyName",
    "apiKeySecret": "apiKeySecret",
    "authorization": "authorization",
    "content-type": "content-type",
    "content-length": "content-length",
    "cookie": "cookie",
    "file": "file",
    "host": "host",
    "id": "id",
    "import": "import",
    "limit": "limit",
    "offset": "offset",
    "open": "open",
    "origin": "origin",
    "promptTokens": "promptTokens",
    "completionTokens": "completionTokens",
    "totalTokens": "totalTokens",
    "rawModel": "rawModel",
    "scope": "scope",
    "skill": "skill",
    "sortBy": "sortBy",
    "sortOrder": "sortOrder",
    "tab": "tab",
    "text": "text",
    "textarea": "textarea",
    "tool": "tool",
    "toolId": "toolId",
    "web": "web",
    "whereUsed": "whereUsed",
    "whitelist": "whitelist",
    "blacklist": "blacklist",
    "resolve": "resolve",
    "force": "force",
    "base64url": "base64url",
    "hex": "hex",
    "range": "range",
    "component": "component",
    "redirect_uri": "redirect_uri",
    "idempotency-key": "idempotency-key",
    "error_description": "error_description",
    "code": "code",
    "compatible": "compatible",
    "chat-completions": "chat-completions",
    "oauth": "oauth",
    "auth_token": "auth_token",
    "crypto": "crypto",
    "hours": "hours",
    "selfsigned": "selfsigned",
    "proxy_id": "proxy_id",
    "proxyId": "proxyId",
    "connectionId": "connectionId",
    "resolveConnectionId": "resolveConnectionId",
    "resolve_connection_id": "resolve_connection_id",
    "scope_id": "scope_id",
    "scopeId": "scopeId",
    "jwtSecret": "jwtSecret",
    "keytar": "keytar",
    "better-sqlite3": "better-sqlite3",
    "undici": "undici",
    "builder-id": "builder-id",
    "musicDesc": "musicDesc",
    "musicGeneration": "musicGeneration",
    "idc": "idc",
    "cloud-status-changed": "cloud-status-changed",
    "where_used": "where_used",
    "windowMs": "windowMs",
    "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": "Select Model",
    "combos": "Combos",
    "noModelsFound": "No models found",
    "clear": "Clear",
    "done": "Done",
    "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": "__MISSING__:Recommended",
    "batchConceptTitle": "Batch processing",
    "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.",
    "batchConceptHowItWorks": "How it works",
    "batchConceptBenefit50pct": "50% discount on input + output tokens",
    "batchConceptAsync24h": "Async with a 24h completion window",
    "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings",
    "filesConceptTitle": "Batch files",
    "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.",
    "filesConceptInput": "Input — your JSONL with one request per line",
    "filesConceptOutput": "Output — results from completed requests",
    "filesConceptError": "Errors — requests that failed",
    "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)",
    "wizardTitle": "New batch",
    "wizardClose": "Close",
    "wizardNext": "Next",
    "wizardBack": "Back",
    "wizardCancel": "Cancel",
    "wizardCreate": "Create batch",
    "wizardCreating": "Creating…",
    "wizardStep1Destination": "Destination",
    "wizardStep2Input": "Input",
    "wizardStep3Validate": "Validate",
    "wizardStep4Cost": "Cost & create",
    "wizardProviderLabel": "Provider",
    "wizardEndpointLabel": "Endpoint",
    "wizardModelLabel": "Model",
    "wizardInputKindJsonl": "JSONL",
    "wizardInputKindCsv": "CSV (we'll convert)",
    "wizardDropOrPick": "Drop a file or click to pick",
    "wizardCsvMappingTitle": "Map CSV columns → request fields",
    "wizardCsvMappingAddField": "Add field",
    "wizardValidationOk": "All lines valid",
    "wizardValidationErrors": "Validation errors",
    "wizardValidationPreview": "Preview (first 5 requests)",
    "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.",
    "wizardCostSync": "Sync cost",
    "wizardCostBatch": "Batch cost (-50%)",
    "wizardCostSavings": "Savings",
    "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.",
    "wizardErrorUpload": "Failed to upload file. Try again.",
    "wizardErrorCreate": "Failed to create batch. Try again.",
    "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.",
    "uploadModalTitle": "Upload batch file",
    "uploadModalDropOrPick": "Drop a .jsonl file or click to pick",
    "uploadModalUpload": "Upload",
    "uploadModalCancel": "Cancel",
    "uploadModalError": "Upload failed. Try again.",
    "uploadModalSuccess": "Uploaded",
    "uploadModalSizeLimit": "Max 512 MB",
    "batchListNewButton": "New batch",
    "batchListAutoRefresh": "Auto-refresh 30s",
    "batchListCostColumn": "Cost",
    "batchActionCancel": "Cancel",
    "batchActionDownloadOutput": "Download output",
    "batchActionDownloadErrors": "Download errors",
    "batchActionRetry": "Retry failed",
    "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.",
    "expirationBadgeCritical": "Critical",
    "expirationBadgeWarning": "Soon",
    "expirationBadgeNormal": "Pending",
    "expirationBadgeExpired": "Expired",
    "filesListUploadButton": "Upload",
    "filesListUsedByColumn": "Used by",
    "filesListUsedByNone": "None",
    "filesListDelete": "Delete",
    "filesListDownload": "Download",
    "batchDetailActionCancel": "Cancel batch",
    "batchDetailActionRetry": "Retry failed requests",
    "batchDetailCancelling": "Cancelling…",
    "batchDetailRetrying": "Preparing retry…",
    "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.",
    "batchActionCancelError": "Failed to cancel batch. Try again.",
    "batchActionRetryError": "Failed to retry failed requests. Try again.",
    "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)",
    "filesListUsedByRoleInput": "input",
    "filesListUsedByRoleOutput": "output",
    "filesListUsedByRoleError": "error",
    "batchListProgressPartial": "(partial)",
    "filesListSizeColumn": "Size",
    "batchListProviderColumn": "Provider",
    "batchListProviderUnknown": "—",
    "batchListBatchCreated": "Batch {id} created — refreshing list…",
    "batchListBatchCreatedDismiss": "Dismiss",
    "batchListRefreshing": "Refreshing…",
    "batchListRefresh": "Refresh",
    "uploadFileModalRemove": "Remove",
    "uploadFileModalUploading": "Uploading…",
    "wizardInputReading": "Reading file…",
    "wizardInputReady": "Ready",
    "wizardInputLargeFileLabel": "Large file — sampling validation",
    "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.",
    "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.",
    "wizardCostWindow24h": "24h completion window",
    "wizardValidationFieldsOk": "required fields valid",
    "batchListProviderOther": "Other",
    "batchListTitle": "Batches",
    "batchListCount": "{count} batches",
    "batchListRemovingCompleted": "Removing…",
    "batchListRemoveCompleted": "Remove completed",
    "batchListTableStatus": "Status",
    "batchListTableId": "ID",
    "batchListTableEndpoint": "Endpoint",
    "batchListTableModel": "Model",
    "batchListTableProgress": "Progress",
    "batchListTableCreated": "Created",
    "batchListTableExpires": "Expires",
    "batchListLoading": "Loading…",
    "batchListEmpty": "No batches found",
    "batchListValidating": "Validating…",
    "batchStatusAll": "All statuses",
    "batchStatusInProgress": "In progress",
    "batchStatusValidating": "Validating",
    "batchStatusFinalizing": "Finalizing",
    "batchStatusCompleted": "Completed",
    "batchStatusFailed": "Failed",
    "batchStatusCancelled": "Cancelled",
    "batchStatusCancelling": "Cancelling",
    "batchStatusExpired": "Expired",
    "batchStatusCompletedWithFailures": "completed with failures",
    "batchStatusInProgressWithFailures": "in progress (with failures)",
    "batchStatusFinalizingWithFailures": "finalizing (with failures)",
    "batchStatusCancelledWithFailures": "cancelled with failures",
    "batchStatusExpiredWithFailures": "expired (partial)",
    "wizardCostEstimating": "Estimating cost…",
    "wizardCostRequests": "Requests",
    "wizardCostInputTok": "input tok",
    "wizardCostOutputTok": "output tok",
    "wizardCostWindow": "Window",
    "wizardDestinationSelectProvider": "Select a provider…",
    "wizardDestinationSelectModel": "Select a model…",
    "wizardDestinationConnectProvider": "Connect a provider"
  },
  "sidebar": {
    "home": "Página inicial",
    "dashboard": "Painel",
    "providers": "Provedores",
    "combos": "Combos",
    "usage": "Uso",
    "analytics": "Análise",
    "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": "Documentos",
    "issues": "Problemas",
    "endpoints": "Endpoints",
    "endpointsSubtitle": "Seus URLs de conexão de IA",
    "apiManager": "Gerenciador de APIs",
    "apiManagerSubtitle": "Gerenciar chaves de API e acesso",
    "embeddedServices": "__MISSING__:Embedded Services",
    "embeddedServicesSubtitle": "__MISSING__:Manage local proxy services",
    "logs": "Registros",
    "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": "Registro de auditoria",
    "shutdown": "Desligamento",
    "restart": "Reiniciar",
    "shutdownConfirm": "Desligar o OmniRoute?",
    "restartConfirm": "Reiniciar o OmniRoute?",
    "version": "v{version}",
    "debug": "Depurar",
    "system": "Sistema",
    "help": "Ajuda",
    "primarySection": "Main",
    "cliSection": "CLI",
    "debugSection": "Debug",
    "systemSection": "System",
    "helpSection": "Help",
    "serverDisconnected": "Servidor desconectado",
    "serverDisconnectedMsg": "O servidor proxy foi interrompido 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": "Vermelho",
    "themeGreen": "Verde",
    "themeViolet": "Violeta",
    "themeOrange": "Laranja",
    "themeCyan": "Ciano",
    "cliToolsShort": "Ferramentas",
    "cache": "Cache",
    "cacheShort": "Cache",
    "batch": "Batch Jobs",
    "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": "Quota Sharing",
    "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": "__MISSING__:Authz",
    "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": "Rastreie os limites de uso do 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": "__MISSING__:Route inventory and bypass policy",
    "docsSubtitle": "Documentação",
    "issuesSubtitle": "Reportar um bug",
    "changelogSubtitle": "Notas de versão"
  },
  "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": "__MISSING__:Cancel",
      "step1Title": "__MISSING__:Select Integration",
      "step2Title": "__MISSING__:Configure Target",
      "step3Title": "__MISSING__:Events & Test",
      "back": "__MISSING__:Back",
      "next": "__MISSING__:Next",
      "finish": "__MISSING__:Finish",
      "step1Desc": "__MISSING__:Select the target integration system for this webhook."
    },
    "howItWorks": {
      "step1": "__MISSING__:Choose an integration provider (e.g. Slack, Discord, custom webhook) and set up the connection details.",
      "step2": "__MISSING__:Configure system events to subscribe to (e.g. completion errors, model fallbacks, or usage limits).",
      "step3": "__MISSING__:Verify the configuration by sending a test payload to make sure the endpoint receives it.",
      "step4": "__MISSING__:Secure your endpoint by validating the X-Webhook-Signature HMAC-SHA256 header using the webhook's secret.",
      "title": "__MISSING__:How Webhooks Work",
      "customOnly": "__MISSING__:Only applicable for custom endpoint integrations.",
      "hmacRecipeTitle": "__MISSING__:HMAC Verification Recipe",
      "hmacRecipe": "__MISSING__:To verify webhook payloads in Node.js, compute the HMAC-SHA256 of the raw request body using your secret key. Compare it to the X-Webhook-Signature header using timingSafeEqual.",
      "timeoutNote": "__MISSING__:Webhook deliveries have a timeout of 10 seconds.",
      "retryNote": "__MISSING__:Failed deliveries are retried up to 5 times with exponential backoff.",
      "docsLink": "__MISSING__:Read the full Webhooks developer guide",
      "hmacRecipePython": "__MISSING__:Python HMAC verification: hmac.new(secret, body, hashlib.sha256).hexdigest()",
      "hmacRecipeBash": "__MISSING__:Bash HMAC verification: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\""
    },
    "deliveries": {
      "title": "__MISSING__:Delivery Logs",
      "loadFailed": "__MISSING__:Failed to load webhook delivery logs.",
      "empty": "__MISSING__:No deliveries recorded yet. Trigger an event or send a test payload.",
      "status": "__MISSING__:Status",
      "event": "__MISSING__:Event",
      "latency": "__MISSING__:Latency",
      "at": "__MISSING__:Sent At"
    },
    "kinds": {
      "comingSoon": "__MISSING__:Coming Soon",
      "slack": "__MISSING__:Slack",
      "slackDesc": "__MISSING__:Post system events directly into a Slack channel",
      "telegram": "__MISSING__:Telegram",
      "telegramDesc": "__MISSING__:Send event messages using a Telegram bot",
      "discord": "__MISSING__:Discord",
      "discordDesc": "__MISSING__:Deliver real-time updates directly to a Discord server",
      "custom": "__MISSING__:Custom Webhook",
      "customDesc": "__MISSING__:Deliver system event payloads to any HTTPS endpoint",
      "email": "__MISSING__:Email Notification",
      "emailDesc": "__MISSING__:Receive summary updates via email",
      "pagerduty": "__MISSING__:PagerDuty",
      "pagerdutyDesc": "__MISSING__:Trigger alerts on PagerDuty for critical system issues",
      "teams": "__MISSING__:Microsoft Teams",
      "teamsDesc": "__MISSING__:Forward system notifications to Microsoft Teams channels"
    },
    "testPayloadSent": "__MISSING__:Test Payload Sent",
    "testResponse": "__MISSING__:Test Response",
    "validateUrl": {
      "checking": "__MISSING__:Checking URL...",
      "ok": "__MISSING__:URL is valid",
      "blockedPrivate": "__MISSING__:URL is a blocked private address",
      "invalidUrl": "__MISSING__:Invalid URL format"
    },
    "custom": {
      "endpointUrl": "__MISSING__:Endpoint URL",
      "endpointUrlPlaceholder": "__MISSING__:https://api.yourdomain.com/webhook",
      "secretKey": "__MISSING__:Secret Key",
      "secretKeyPlaceholder": "__MISSING__:Enter secret key or leave blank to auto-generate",
      "secretKeyHint": "__MISSING__:Used to sign the payload header for authentication."
    },
    "discord": {
      "webhookUrl": "__MISSING__:Discord Webhook URL",
      "webhookUrlPlaceholder": "__MISSING__:https://discord.com/api/webhooks/...",
      "webhookUrlHint": "__MISSING__:The webhook URL copied from your Discord channel integration settings.",
      "tutorial": "__MISSING__:How to create a Discord webhook:"
    },
    "slack": {
      "webhookUrl": "__MISSING__:Slack Webhook URL",
      "webhookUrlPlaceholder": "__MISSING__:https://hooks.slack.com/services/...",
      "webhookUrlHint": "__MISSING__:The webhook URL copied from your Slack Incoming Webhooks integration.",
      "tutorial": "__MISSING__:How to create a Slack webhook:"
    },
    "telegram": {
      "botToken": "__MISSING__:Telegram Bot Token",
      "botTokenPlaceholder": "__MISSING__:123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
      "botTokenHint": "__MISSING__:The HTTP API token received from @BotFather when creating your bot.",
      "chatId": "__MISSING__:Telegram Chat ID / Channel",
      "chatIdPlaceholder": "__MISSING__:-100123456789 or @channelname",
      "chatIdHint": "__MISSING__:The unique numerical identifier or public username of the chat/channel.",
      "tutorial": "__MISSING__:How to configure Telegram webhook:"
    }
  },
  "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..."
  },
  "themesPage": {
    "title": "Themes",
    "description": "Escolha um tema predefinido ou crie o seu próprio com uma única cor",
    "presetColors": "Popular colors",
    "customTheme": "Tema personalizado",
    "customThemeDesc": "Clique em criar tema e escolha uma cor",
    "createTheme": "Create theme",
    "activePreset": "Tema ativo"
  },
  "header": {
    "logout": "Sair",
    "language": "Idioma",
    "providers": "Provedores",
    "providerDescription": "Gerencie suas conexões de provedor de IA",
    "combos": "Combos",
    "comboDescription": "Combinações de modelos com substituto",
    "usage": "Uso e análise",
    "usageDescription": "Monitore o uso da API, o consumo de tokens e os registros de solicitação",
    "analytics": "Análise",
    "analyticsDescription": "Gráficos, tendências e insights de avaliação",
    "cliTools": "Ferramentas CLI",
    "cliToolsDescription": "Configurar ferramentas CLI",
    "home": "Página inicial",
    "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 Antrópico",
    "media": "Media",
    "mediaDescription": "Generate images, videos, and music",
    "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": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts",
    "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"
  },
  "home": {
    "quickStart": "Início rápido",
    "quickStartDesc": "Comece a trabalhar em 4 etapas. Conecte provedores, encaminhe modelos, monitore tudo.",
    "fullDocs": "Documentos completos",
    "step1Title": "1. Crie uma chave API",
    "step1Desc": "Vá para <endpoint>Endpoint</endpoint> -> Chaves registradas. Gere uma chave por ambiente.",
    "step2Title": "2. Conecte provedores",
    "step2Desc": "Adicione contas em <providers>Providers</providers>. Suporta OAuth, chave de API e níveis gratuitos.",
    "step3Title": "3. Aponte seu cliente",
    "step3Desc": "Defina o URL base como {url} em seu IDE ou cliente API.",
    "step4Title": "4. Monitore e otimize",
    "step4Desc": "Rastreie tokens, custos e erros em <logs>Logs de solicitação</logs> e <analytics>Analytics</analytics>.",
    "providersOverview": "Visão geral dos provedores",
    "configuredOf": "{configured} configurado de {total} provedores disponíveis",
    "noModelsAvailable": "Nenhum modelo disponível para este fornecedor.",
    "noProvidersConfigured": "Nenhum provedor configurado ainda",
    "addProvider": "Adicionar um provedor",
    "configureFirst": "Configure uma conexão primeiro em {providers}",
    "configureProvider": "Configurar provedor",
    "modelAvailable": "Modelo {count} 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": "Informar problema",
    "activeError": "{active} ativo · Erro {errors}",
    "oauthLabel": "OAuth",
    "apiKeyLabel": "Chave de API",
    "requestsShort": "{count} requisitos",
    "providerModelsTitle": "{provider} - Modelos",
    "copiedModel": "Copiado: {model}",
    "aliasLabel": "apelido",
    "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"
  },
  "analytics": {
    "title": "Análise",
    "usageAnalyticsTitle": "__MISSING__:Usage Analytics",
    "diversityScoreTitle": "Diversidade de Provedores",
    "diversityScoreDesc": "__MISSING__:Provider concentration snapshot for the recent traffic window.",
    "diversityShannonEntropy": "__MISSING__:Shannon entropy",
    "diversityWindow": "__MISSING__:Window: {count} reqs · Last {mins} mins",
    "diversityHealthy": "__MISSING__:Healthy Distribution",
    "diversityRiskHigh": "__MISSING__:High Vendor Lock-in Risk",
    "diversityRiskModerate": "__MISSING__:Moderate Distribution",
    "diversityScoreLabel": "__MISSING__:score",
    "diversityHigherExplanation": "__MISSING__:Higher values mean traffic is spread across multiple providers.",
    "diversityNoData": "__MISSING__:No recent usage data available.",
    "chartRequests": "__MISSING__:Requests",
    "chartInput": "__MISSING__:Input",
    "chartOutput": "__MISSING__:Output",
    "chartTotal": "__MISSING__:Total",
    "chartCost": "__MISSING__:Cost",
    "chartShare": "__MISSING__:Share",
    "chartServiceTier": "__MISSING__:Service Tier",
    "chartServiceTierSplit": "__MISSING__:Fast / Standard cost split",
    "chartCostPct": "__MISSING__:{pct}% of cost",
    "chartUsageDetail": "__MISSING__:Usage Detail",
    "chartCacheRead": "__MISSING__:Cache read",
    "chartCostByProvider": "__MISSING__:Cost by Provider",
    "chartNoCostData": "__MISSING__:No cost data",
    "chartModelUsageOverTime": "__MISSING__:Model Usage Over Time",
    "chartNoData": "__MISSING__:No data",
    "chartWeekly": "__MISSING__:Weekly",
    "chartModelBreakdown": "__MISSING__:Model Breakdown",
    "chartModel": "__MISSING__:Model",
    "chartProvider": "__MISSING__:Provider",
    "chartProviderBreakdown": "__MISSING__:Provider Breakdown",
    "filterAllKeys": "__MISSING__:All Keys",
    "filterSearchKeys": "__MISSING__:Search keys…",
    "filterNoKeysMatch": "__MISSING__:No keys match",
    "filterOneKey": "__MISSING__:1 key",
    "filterMultipleKeys": "__MISSING__:{count} keys",
    "rangeToday": "__MISSING__:Today",
    "rangeYesterday": "__MISSING__:Yesterday",
    "rangeLast3Days": "__MISSING__:Last 3 days",
    "rangeThisWeek": "__MISSING__:This week",
    "rangeLast14Days": "__MISSING__:Last 14 days",
    "rangeThisMonth": "__MISSING__:This month",
    "rangeQuickSelect": "__MISSING__:Quick Select",
    "rangeStart": "__MISSING__:Start",
    "rangeEnd": "__MISSING__:End",
    "rangeCancel": "__MISSING__:Cancel",
    "rangeApply": "__MISSING__:Apply",
    "rangeErrorInvalid": "__MISSING__:Start must be before end",
    "period1D": "__MISSING__:1D",
    "period7D": "__MISSING__:7D",
    "period30D": "__MISSING__:30D",
    "period90D": "__MISSING__:90D",
    "periodYTD": "__MISSING__:YTD",
    "periodAll": "__MISSING__:All",
    "totalTokens": "__MISSING__:Total Tokens",
    "inputTokens": "__MISSING__:Input Tokens",
    "outputTokens": "__MISSING__:Output Tokens",
    "estCost": "__MISSING__:Est. Cost",
    "infraTitle": "__MISSING__:Infrastructure",
    "infraAccounts": "__MISSING__:Accounts",
    "infraProviders": "__MISSING__:Providers",
    "infraApiKeys": "__MISSING__:API Keys",
    "infraModels": "__MISSING__:Models",
    "perfTitle": "__MISSING__:Performance",
    "perfAvgTokens": "__MISSING__:Avg Tokens/Req",
    "perfCostReq": "__MISSING__:Cost/Req",
    "perfIoRatio": "__MISSING__:I/O Ratio",
    "perfFastReq": "__MISSING__:Fast Requests",
    "highlightsTitle": "__MISSING__:Highlights",
    "highlightsTopModel": "__MISSING__:Top Model",
    "highlightsTopProvider": "__MISSING__:Top Provider",
    "highlightsBusiestDay": "__MISSING__:Busiest Day",
    "highlightsDiversity": "__MISSING__:Diversity",
    "highlightsFallbackRate": "__MISSING__:Fallback Rate",
    "customRange": "__MISSING__:Custom",
    "overviewDescription": "Monitore seus padrões de uso de API, consumo de tokens, custos e tendências de atividades em todos os provedores e modelos.",
    "evalsDescription": "Execute conjuntos de avaliação para testar e validar seus endpoints LLM. Compare a qualidade do modelo, detecte regressões e compare a latência.",
    "overview": "Visão geral",
    "evals": "Avaliações",
    "utilization": "Utilização",
    "utilizationDescription": "Tendências de uso de quota 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": "Quota ao nível do 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 de que deseja revogar esta chave de API?",
    "noKeys": "Ainda não há chaves de API",
    "noKeysDesc": "Crie sua primeira chave de API para autenticar solicitações em seu endpoint",
    "keyLabel": "Etiqueta-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 solicitações em seu endpoint",
    "totalKeys": "Total de chaves",
    "restricted": "Restrito",
    "totalRequests": "Total de solicitaçõ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 de forma independente. 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": "requisitos",
    "neverUsed": "Nunca usado",
    "deleteConfirm": "Excluir esta chave de API?",
    "usageTips": "Dicas de uso",
    "tipAuth": "Use chaves de API no cabeçalho de autorização como portador YOUR_KEY",
    "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 melhor segurança e controle de custos",
    "keyName": "Nome da chave",
    "keyNamePlaceholder": "por exemplo, chave de produção, chave de desenvolvimento",
    "keyNameDesc": "Escolha um nome descritivo para identificar a finalidade 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": "Concluído",
    "savePermissions": "Salvar permissões",
    "endpointRestrictions": "__MISSING__:Allowed Endpoints",
    "allEndpointsAllowed": "__MISSING__:This key can access all API endpoints.",
    "endpointsRestricted": "__MISSING__:Restricted to {count} endpoint{count, plural, one {} other {s}}.",
    "autoResolve": "Auto-Resolve",
    "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.",
    "keyActive": "Key Active",
    "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.",
    "accessSchedule": "Access Schedule",
    "accessScheduleDesc": "Restrict access to specific hours and days of the week.",
    "scheduleFrom": "From",
    "scheduleUntil": "Until",
    "scheduleDays": "Days",
    "scheduleTimezone": "Timezone",
    "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin",
    "scheduleActive": "Schedule",
    "disabled": "Disabled",
    "daySun": "Sun",
    "dayMon": "Mon",
    "dayTue": "Tue",
    "dayWed": "Wed",
    "dayThu": "Thu",
    "dayFri": "Fri",
    "daySat": "Sat",
    "allowAll": "Permitir tudo",
    "restrict": "Restringir",
    "allowAllInfo": "Esta chave pode acessar todos os modelos disponíveis.",
    "restrictInfo": "Esta chave pode acessar {selected} de modelos {total}.",
    "selected": "{count} selecionado",
    "all": "Todos",
    "clear": "Limpar",
    "searchModels": "Pesquise modelos por nome ou fornecedor...",
    "noModelsFound": "Nenhum modelo encontrado",
    "keyNameRequired": "O nome da chave é obrigatório",
    "keyNameTooLong": "O nome da chave deve ter {max} caracteres ou menos",
    "keyNameInvalid": "O nome da chave só pode conter letras, números, espaços, hifens e sublinhados",
    "invalidKeyName": "Nome de chave inválido",
    "failedCreateKey": "Falha ao criar chave",
    "failedCreateKeyRetry": "Falha ao criar chave. Por favor, tente novamente.",
    "invalidKeyId": "ID de chave inválido",
    "failedDeleteKey": "Falha ao excluir a chave",
    "failedDeleteKeyRetry": "Falha ao excluir a chave. Por favor, tente novamente.",
    "invalidModelsSelection": "Seleção de modelos inválidos",
    "cannotSelectMoreThanModels": "Não é possível selecionar mais de {max} modelos",
    "failedUpdatePermissions": "Falha ao atualizar as permissões",
    "failedUpdatePermissionsRetry": "Falha ao atualizar as permissões. Por favor, 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 {# model} other {# models}}",
    "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": "Modelo {count}",
    "models": "{count} modelos",
    "permissionsTitle": "Permissões: {name}",
    "allowAllDesc": "Esta chave pode acessar todos os modelos disponíveis.",
    "restrictDesc": "Esta chave pode acessar {selectedCount} de modelos {totalModels}.",
    "selectedCount": "{count} selecionado",
    "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": "__MISSING__:Search by name or token...",
    "activeOnly": "__MISSING__:Active only",
    "filterStatus": "__MISSING__:STATUS",
    "filterType": "__MISSING__:TYPE",
    "filterAll": "__MISSING__:All",
    "filterStatusActive": "__MISSING__:Active",
    "filterStatusDisabled": "__MISSING__:Disabled",
    "filterStatusBanned": "__MISSING__:Banned",
    "filterStatusExpired": "__MISSING__:Expired",
    "filterTypeStandard": "__MISSING__:Standard",
    "filterTypeManage": "__MISSING__:Manage",
    "filterTypeRestricted": "__MISSING__:Restricted",
    "shownOf": "__MISSING__:{shown} of {total} shown",
    "emptyFilterTitle": "__MISSING__:No keys match your filters",
    "emptyFilterClear": "__MISSING__:Clear filters",
    "endpointRestrictions": "Allowed Endpoints",
    "allEndpointsAllowed": "This key can access all API endpoints.",
    "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}."
  },
  "auditLog": {
    "title": "Registro de auditoria",
    "searchPlaceholder": "Ações de pesquisa...",
    "action": "Ação",
    "actor": "Ator",
    "target": "Alvo",
    "ipAddress": "Endereço IP",
    "timestamp": "Carimbo de data e hora",
    "noEntries": "Nenhuma entrada de auditoria encontrada",
    "filterByAction": "Filtrar por ação...",
    "filterByActor": "Filtrar por ator...",
    "filterEntriesAria": "Filtrar entradas de log de auditoria",
    "filterByActionTypeAria": "Filtrar por tipo de ação",
    "filterByActorAria": "Filtrar por ator",
    "refreshAuditLogAria": "Atualizar registro de auditoria",
    "tableAria": "Entradas de registro de auditoria",
    "failedFetchAuditLog": "Falha ao buscar o log de auditoria",
    "notAvailable": "—",
    "description": "Ações administrativas e eventos de segurança",
    "showing": "Mostrando entradas {count} (deslocamento {offset})",
    "previous": "Anterior"
  },
  "media": {
    "title": "Playground de Mídia",
    "subtitle": "Gere imagens, vídeos e música",
    "model": "Model",
    "prompt": "Prompt",
    "generate": "Gerar",
    "generating": "Generating...",
    "loadingModels": "Loading available models...",
    "noModels": "No models available. Configure providers with media capabilities first.",
    "error": "Generation Failed",
    "result": "Result",
    "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.",
    "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.",
    "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.",
    "kinds": {
      "embedding": "__MISSING__:Embedding",
      "image": "__MISSING__:Image",
      "imageToText": "__MISSING__:Image to Text",
      "tts": "__MISSING__:Text to Speech",
      "stt": "__MISSING__:Speech to Text",
      "webSearch": "__MISSING__:Web Search",
      "webFetch": "__MISSING__:Web Fetch",
      "video": "__MISSING__:Video",
      "music": "__MISSING__:Music"
    },
    "noProviders": "__MISSING__:No providers configured for this kind yet.",
    "addConnection": "__MISSING__:Add Connection",
    "backToProviders": "__MISSING__:Back to Providers",
    "connections": "__MISSING__:{count} Connections",
    "noConnections": "__MISSING__:No connections yet — add one from the provider page.",
    "loading": "__MISSING__:Loading..."
  },
  "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": "Search",
    "tabScrape": "Scrape",
    "tabCompare": "Compare",
    "modalitiesGuide": "Modalities guide",
    "searchConceptTitle": "Search",
    "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)",
    "scrapeConceptTitle": "Scrape",
    "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)",
    "compareConceptTitle": "Compare",
    "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap",
    "rerankConceptTitle": "Rerank",
    "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query",
    "autoConceptTitle": "Auto (cheapest)",
    "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials",
    "providerCatalogTitle": "Provider Catalog",
    "kindSearch": "Search",
    "kindFetch": "Fetch/Scrape",
    "statusConfigured": "Configured",
    "statusMissing": "No credential",
    "statusRateLimited": "Rate limited",
    "configureProvider": "Configure in Providers",
    "loadingProviders": "Loading providers…",
    "failedToLoadProviders": "Failed to load providers",
    "costPerQuery": "Cost/query",
    "freeQuota": "Free quota/mo",
    "scrapeUrl": "URL to scrape",
    "scrapeUrlPlaceholder": "https://example.com",
    "scrapeExtract": "Extract",
    "scrapeExtracting": "Extracting…",
    "scrapeFullPage": "Full page",
    "scrapeFormat": "Format",
    "formatMarkdown": "Markdown",
    "formatHtml": "HTML",
    "formatText": "Text",
    "scrapePreview": "Preview",
    "scrapeRaw": "Raw",
    "scrapeContentTruncated": "(truncated, view raw)",
    "scrapeMetadata": "Metadata",
    "scrapeProvider": "Provider",
    "scrapeSize": "Size",
    "compareRun": "Compare",
    "compareRunning": "Comparing…",
    "autoProvider": "Auto (cheapest)",
    "configuredStatus": "Configured",
    "rateLimitedStatus": "Rate limited",
    "noCredential": "No credential",
    "searchTypeLabel": "Type",
    "rerankModelLabel": "Rerank model",
    "noneOption": "None",
    "size": "Size"
  },
  "cliTools": {
    "title": "Ferramentas CLI",
    "noActiveProviders": "Nenhum provedor ativo",
    "noActiveProvidersDesc": "Adicione e conecte provedores primeiro para configurar as ferramentas CLI.",
    "mapModels": "Modelos de mapas",
    "testConnection": "Conexão de teste",
    "connectionStatus": "Status da conexão",
    "configureEndpoint": "Configurar ponto final",
    "instructions": "Instruções",
    "modelMapping": "Mapeamento de modelo",
    "baseUrl": "URL base",
    "apiKey": "Chave de API",
    "configured": "Configurado",
    "notConfigured": "Não configurado",
    "notInstalled": "Não instalado",
    "custom": "Personalizado",
    "unknown": "Desconhecido",
    "lastSavedAt": "Último salvo: {date}",
    "never": "Nunca",
    "justNow": "agora mesmo",
    "minutesAgoShort": "{count}m atrás",
    "hoursAgoShort": "{count}h atrás",
    "daysAgoShort": "{count}d atrás",
    "monthsAgoShort": "{count}mo atrás",
    "yearsAgoShort": "{count}anos atrás",
    "runtimeCheckFailed": "Falha na verificação de tempo de execução",
    "yourApiKeyPlaceholder": "sua chave de API",
    "modelPlaceholder": "provedor/id do modelo",
    "configurationSaved": "Configuração salva com sucesso.",
    "failedToSave": "Falha ao salvar a configuração.",
    "noApiKeysCreateOne": "Nenhuma chave de API – Crie uma na página Chaves",
    "defaultOmnirouteKey": "sk_omniroute (padrão)",
    "selectModel": "Selecione o modelo",
    "selectModelForAlias": "Selecione o modelo para {alias}",
    "selectModelForTool": "Selecione o modelo para {tool}",
    "select": "Selecione",
    "clear": "Limpar",
    "comingSoon": "Em breve",
    "checkingRuntime": "Verificando o status do tempo de execução...",
    "guideOnlyIntegration": "Integração somente guia (sem necessidade de tempo de execução local)",
    "cliRuntimeDetected": "Tempo de execução CLI detectado e pronto",
    "cliFoundNotRunnable": "CLI encontrada, mas não executável{reason}",
    "cliRuntimeNotDetected": "Tempo de execução da CLI não detectado",
    "binary": "Binário",
    "configPath": "Caminho de configuração",
    "configPathShort": "Configuração",
    "failedCheckRuntimeStatus": "Falha ao verificar o status do tempo de execução.",
    "copy": "Copiar",
    "copied": "Copiado",
    "copyConfig": "Copiar configuração",
    "saveConfig": "Salvar configuração",
    "selectionSaved": "Seleção salva",
    "guide": "Guia",
    "detected": "Detectado",
    "notReady": "Não está pronto",
    "active": "Ativo",
    "inactive": "Inativo",
    "startMitm": "Iniciar MITM",
    "stopMitm": "Pare o MITM",
    "mitmStarted": "MITM iniciado com sucesso!",
    "mitmStopped": "MITM parou com sucesso!",
    "failedStart": "Falha ao iniciar o MITM",
    "failedStop": "Falha ao parar o MITM",
    "saveMappings": "Salvar mapeamentos",
    "mappingsSaved": "Mapeamentos salvos!",
    "failedSaveMappings": "Falha ao salvar mapeamentos",
    "howItWorks": "Como funciona:",
    "antigravityHowWorksDesc": "A antigravidade envia solicitações ao endpoint do Google. O MITM os intercepta e os redireciona para o OmniRoute.",
    "antigravityStep1": "1. Inicie o MITM para rotear solicitações por meio do OmniRoute.",
    "antigravityStep2Prefix": "2. Adicionar",
    "antigravityStep2Suffix": "ao seu arquivo hosts como 127.0.0.1.",
    "antigravityStep3": "3. Abra o Antigravity e as solicitações serão proxy.",
    "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 obrigatória",
    "sudoPasswordHint": "A senha do administrador é necessária para modificar o arquivo hosts e as configurações de proxy do sistema.",
    "enterSudoPassword": "Digite a senha do sudo",
    "sudoPasswordRequiredError": "A senha Sudo é necessária.",
    "cancel": "Cancelar",
    "confirm": "Confirmar",
    "settingsApplied": "Configurações aplicadas com sucesso!",
    "failedApplySettings": "Falha ao aplicar configurações",
    "settingsReset": "Configurações redefinidas com sucesso!",
    "failedResetSettings": "Falha ao redefinir as configurações",
    "backupRestored": "Cópia de segurança restaurada!",
    "failedRestore": "Falha ao restaurar",
    "checkingCli": "Verificando {tool} CLI...",
    "cliNotRunnable": "{tool} CLI instalada, mas não executável",
    "cliNotInstalled": "{tool} CLI não instalada",
    "cliNotDetected": "{tool} CLI não detectada",
    "cliDetectedReady": "{tool} CLI detectada e pronta",
    "cliFoundFailedHealthcheck": "{tool} CLI foi encontrada, mas falhou na verificação de integridade do tempo de execução{reason}.",
    "installCliPrompt": "Instale {tool} CLI para usar este recurso.",
    "installCodexPrompt": "Instale o Codex CLI para usar o recurso de aplicação automática.",
    "hide": "Esconder",
    "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 o padrão",
    "providerModelPlaceholder": "provedor/id do modelo",
    "apply": "Aplicar",
    "reset": "Redefinir",
    "manualConfig": "Configuração manual",
    "backups": "Cópias de segurança",
    "configBackups": "Backups de configuração",
    "noBackupsYet": "Ainda não há backups. Os backups são criados automaticamente antes de cada aplicação ou redefinição.",
    "restore": "Restaurar",
    "backupRestoredReloading": "Cópia de segurança restaurada! Recarregando status...",
    "failedRestoreBackup": "Falha ao restaurar o backup",
    "applied": "Aplicado!",
    "failed": "Falha",
    "resetDone": "Redefinir!",
    "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 o padrão: sk_omniroute",
    "updateConfig": "Atualizar configuração",
    "applyConfig": "Aplicar configuração",
    "noBackupsAvailable": "Nenhum backup disponível.",
    "profileSaved": "Perfil \"{name}\" salvo!",
    "failedSaveProfile": "Falha ao salvar o perfil",
    "profileActivated": "Perfil ativado!",
    "failedActivateProfile": "Falha ao ativar o perfil",
    "profiles": "Perfis",
    "savedProfiles": "Perfis salvos",
    "noProfilesYet": "Nenhum perfil salvo ainda. Salve a configuração atual como um perfil abaixo.",
    "activate": "Ativar",
    "deleteProfile": "Excluir perfil",
    "profileNamePlaceholder": "Nome do perfil (por exemplo, conta pessoal)",
    "saveCurrent": "Salvar atual",
    "codexAuthNotePrefix": "Usos do Codex",
    "codexAuthNoteMiddle": "com",
    "codexAuthNoteSuffix": "Clique em \"Aplicar\" para configurar automaticamente.",
    "claudeManualConfiguration": "Claude CLI - Configuração manual",
    "codexManualConfiguration": "Codex CLI - Configuração manual",
    "droidManualConfiguration": "Droid de fábrica - configuração manual",
    "openClawManualConfiguration": "Garra Aberta - Configuração Manual",
    "clineManualConfiguration": "Configuração Manual do Cline",
    "kiloManualConfiguration": "Configuração Manual do Código Kilo",
    "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 when you want Qwen Code CLI with OmniRoute-managed provider settings and multi-provider model access.",
      "hermes": "Use quando precisar de um assistente leve de IA nativo do terminal para tarefas rápidas.",
      "hermes-agent": "__MISSING__:Use when you need Hermes Agent (by Nousresearch) with default, delegation, vision and auxiliary models routed through OmniRoute.",
      "custom": "Use para implementações de ferramentas personalizadas ou configurações genéricas compatíveis com OpenAI."
    },
    "toolDescriptions": {
      "antigravity": "IDE antigravidade do Google com MITM",
      "claude": "CLI do Código Claude Antrópico",
      "codex": "CLI do OpenAI Codex",
      "droid": "Assistente de IA Droid de fábrica",
      "openclaw": "Assistente de IA de garra aberta",
      "cline": "CLI do assistente de codificação Cline AI",
      "kilo": "CLI do assistente de IA do Kilo Code",
      "cursor": "Editor de código do cursor AI",
      "continue": "Continuar Assistente de IA",
      "opencode": "OpenCode AI coding agent (Terminal)",
      "kiro": "Amazon Kiro — AI-powered IDE",
      "windsurf": "Windsurf AI Code Editor",
      "copilot": "GitHub Copilot AI Assistant",
      "qwen": "Alibaba Qwen Code CLI",
      "amp": "Sourcegraph Amp coding assistant CLI",
      "hermes": "Assistente de Terminal Hermes AI",
      "hermes-agent": "__MISSING__:Hermes Agent (by Nousresearch) - Advanced terminal AI with multi-model support (delegation, vision, compression, etc.)",
      "custom": "Gerador genérico de configuração CLI ou SDK compatível com OpenAI"
    },
    "guides": {
      "cursor": {
        "notes": {
          "0": "Requer conta Cursor Pro para usar este recurso.",
          "1": "O cursor roteia solicitações por meio de seu próprio servidor, portanto, o endpoint local não é compatível. Ative o Cloud Endpoint nas configurações."
        },
        "steps": {
          "1": {
            "title": "Abra Configurações",
            "desc": "Vá para Configurações -> Modelos"
          },
          "2": {
            "title": "Habilitar API OpenAI",
            "desc": "Habilite a opção \"chave de API OpenAI\""
          },
          "3": {
            "title": "URL base"
          },
          "4": {
            "title": "Chave de API"
          },
          "5": {
            "title": "Adicionar modelo personalizado",
            "desc": "Clique em \"Ver todos os modelos\" -> \"Adicionar modelo personalizado\""
          },
          "6": {
            "title": "Selecione o modelo"
          }
        }
      },
      "continue": {
        "steps": {
          "1": {
            "title": "Abrir configuração",
            "desc": "Abra o arquivo de configuração Continuar"
          },
          "2": {
            "title": "Chave de API"
          },
          "3": {
            "title": "Selecione o modelo"
          },
          "4": {
            "title": "Adicionar configuração de modelo",
            "desc": "Adicione a seguinte configuração ao seu array de modelos:"
          }
        },
        "notes": {
          "0": "Continue usa um 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 de API.",
          "1": "Defina a URL base para seu endpoint 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 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 Configured Tab",
    "toolCategoriesDesc": "Tool Categories Desc",
    "allToolsTab": "All Tools Tab",
    "guidedClientsTab": "Guided Clients Tab",
    "mitmClientsTab": "Mitm Clients Tab",
    "customCliTab": "CLI personalizada",
    "toolCategories": "Tool Categories",
    "visibleToolsCount": "{count} ferramentas disponí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)"
  },
  "combos": {
    "title": "Combos",
    "description": "Crie combinações de modelos com roteamento ponderado e suporte substituto",
    "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 combinação",
    "editCombo": "Editar combinação",
    "deleteCombo": "Excluir combinação",
    "noModels": "Nenhum modelo",
    "noModelsYet": "Nenhum modelo adicionado ainda",
    "addModel": "Adicionar modelo",
    "addModelToCombo": "Adicionar modelo ao combo",
    "routingStrategy": "Estratégia de Roteamento",
    "maxRetries": "Máximo de tentativas",
    "timeout": "Tempo limite (ms)",
    "healthcheck": "Verificação de integridade",
    "priority": "Prioridade",
    "fallback": "Alternativa",
    "roundRobin": "Rodada Robin",
    "random": "Aleatório",
    "leastLatency": "Menor latência",
    "comboName": "Nome do combo",
    "comboNamePlaceholder": "meu-combo",
    "deleteConfirm": "Excluir este combo?",
    "noCombosYet": "Ainda não há combos",
    "comboCreated": "Combo criado com sucesso",
    "comboUpdated": "Combo atualizado com sucesso",
    "comboDeleted": "Combinação excluída",
    "failedCreate": "Falha ao criar combinação",
    "failedUpdate": "Falha ao atualizar o combo",
    "errorCreating": "Erro ao criar o combo",
    "errorUpdating": "Erro ao atualizar o combo",
    "errorDeleting": "Erro ao excluir o combo",
    "testFailed": "Falha na solicitação de teste",
    "failedToggle": "Falha ao alternar combinação",
    "testResults": "Resultados do teste — {name}",
    "resolvedBy": "Resolvido por:",
    "more": "+{count} mais",
    "reqs": "requisitos",
    "success": "sucesso",
    "proxyConfigured": "Proxy configurado",
    "copyComboName": "Copiar nome do combo",
    "enableCombo": "Ativar combinação",
    "disableCombo": "Desativar combinação",
    "testCombo": "Combinação de teste",
    "duplicate": "Duplicar",
    "proxyConfig": "Configuração de proxy",
    "nameRequired": "O nome é obrigatório",
    "nameInvalid": "Apenas letras, números, -, _, / e . permitido",
    "nameHint": "Letras, números, -, _, / e . permitido",
    "priorityDesc": "Fallback sequencial: tenta primeiro o modelo 1, depois o 2, etc.",
    "weightedDesc": "Distribui o tráfego por porcentagem de peso com substituto",
    "roundRobinDesc": "Distribuição circular: cada solicitação vai para o próximo modelo em rotação",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate",
    "randomDesc": "Seleção aleatória uniforme e, em seguida, retorno aos modelos restantes",
    "leastUsedDesc": "Escolhe o modelo com menos solicitações, equilibrando a carga ao longo do tempo",
    "costOptimizedDesc": "Rotas para o modelo mais barato primeiro com base no preço",
    "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": "Equilíbrio automático",
    "advancedSettings": "Configurações avançadas",
    "retryDelay": "Atraso de nova tentativa (ms)",
    "concurrencyPerModel": "Simultaneidade/Modelo",
    "queueTimeout": "Tempo limite da fila (ms)",
    "contextRelayHandoffThreshold": "Handoff Threshold",
    "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.",
    "contextRelayMaxMessages": "Max Messages For Summary",
    "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.",
    "contextRelaySummaryModel": "Summary Model",
    "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.",
    "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.",
    "advancedHint": "Deixe em branco para usar padrões globais. Eles substituem as configurações por provedor.",
    "failoverBeforeRetry": "Failover antes de tentar novamente",
    "maxSetRetries": "Máximo de tentativas definidas",
    "setRetryDelayMs": "Definir atraso de nova tentativa (ms)",
    "moveUp": "Subir",
    "moveDown": "Mover para baixo",
    "removeModel": "Remover",
    "saving": "Salvando...",
    "weighted": "Ponderado",
    "leastUsed": "Menos usado",
    "costOpt": "Opção de custo",
    "strategyGuideTitle": "How to use this strategy",
    "strategyGuideWhen": "When to use",
    "strategyGuideAvoid": "Avoid when",
    "strategyGuideExample": "Example",
    "strategyGuide": {
      "priority": {
        "when": "You have one preferred model and only want fallback on failure.",
        "avoid": "You need request distribution across models.",
        "example": "Primary coding model with cheaper backup for outages."
      },
      "weighted": {
        "when": "You need controlled traffic split across models.",
        "avoid": "You cannot maintain accurate weights over time.",
        "example": "80% stable model + 20% canary model rollout."
      },
      "round-robin": {
        "when": "You want predictable and even distribution.",
        "avoid": "Models differ too much in latency or cost.",
        "example": "Same model on multiple accounts to spread throughput."
      },
      "random": {
        "when": "You want simple distribution with minimal setup.",
        "avoid": "You need strict traffic guarantees.",
        "example": "Quick prototyping with equivalent models."
      },
      "least-used": {
        "when": "You want adaptive balancing based on live demand.",
        "avoid": "Traffic is too low to benefit from usage balancing.",
        "example": "Mixed workloads where one model often gets overloaded."
      },
      "cost-optimized": {
        "when": "Cost reduction is your top priority.",
        "avoid": "Pricing data is missing or outdated.",
        "example": "Background or batch jobs where lower cost is preferred."
      },
      "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": "Use when you want perfectly even spread — each model used once before repeating.",
        "avoid": "Avoid when models have different quality or latency and order matters.",
        "example": "Example: Multiple accounts of the same model to distribute usage evenly."
      },
      "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": "How many retries are attempted before failing a request.",
      "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.",
      "timeout": "Maximum request duration before aborting.",
      "healthcheck": "Skips unhealthy models/providers from routing decisions.",
      "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.",
      "queueTimeout": "How long a request can wait in queue before timing out.",
      "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": "Quick templates",
    "templatesDescription": "Apply a starting profile, then adjust models and config.",
    "templateApply": "Apply template",
    "templateHighAvailability": "High availability",
    "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.",
    "templateCostSaver": "Cost saver",
    "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.",
    "templateBalanced": "Balanced load",
    "templateBalancedDesc": "Least-used routing to spread demand over time.",
    "usageGuideHide": "Hide",
    "usageGuideDontShowAgain": "Don't show again",
    "usageGuideShow": "Show guide",
    "quickTestTitle": "Combo ready to validate",
    "quickTestDescription": "Run a test now to confirm fallback and latency behavior.",
    "testNow": "Test now",
    "pricingCoverage": "Pricing coverage",
    "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.",
    "pricingAvailable": "Pricing available",
    "pricingMissing": "No pricing",
    "pricingAvailableShort": "priced",
    "pricingMissingShort": "no-price",
    "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.",
    "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.",
    "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.",
    "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": "__MISSING__:Configuration View",
    "configOnlyHint": "__MISSING__:This panel shows routing inputs only. Live breaker state is available on the Health page.",
    "routingInputs": "__MISSING__:Routing Inputs",
    "routingInputsHint": "__MISSING__:Mode pack and weighting stay here; breaker runtime state stays on the Health page.",
    "emailVisibilityHint": "__MISSING__:Account emails here follow the global privacy toggle.",
    "emailVisibilityTooltip": "__MISSING__:Use the eye icon to reveal or hide account emails globally across combos, providers and quota screens.",
    "manualModel": "__MISSING__:Manual model",
    "manualModelInvalid": "__MISSING__:Enter a model as provider/model.",
    "manualModelUnknownProvider": "__MISSING__:Unknown provider prefix.",
    "builderDynamicAccountShort": "__MISSING__:Dynamic account",
    "builderNeedValidName": "__MISSING__:Define a valid combo name before continuing.",
    "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 baseline",
        "description": "Use one primary model and keep fallback chain short and reliable.",
        "tip1": "Put your most reliable model first.",
        "tip2": "Keep 1-2 backup models with similar quality.",
        "tip3": "Use safe retries to absorb transient provider failures."
      },
      "weighted": {
        "title": "Controlled traffic split",
        "description": "Great for canary rollouts and gradual migration between models.",
        "tip1": "Start with conservative split like 90/10.",
        "tip2": "Keep the total at 100% and auto-balance after changes.",
        "tip3": "Monitor success and latency before increasing canary weight."
      },
      "round-robin": {
        "title": "Predictable load sharing",
        "description": "Best when models are equivalent and you need smooth distribution.",
        "tip1": "Use at least 2 models.",
        "tip2": "Set concurrency limits to avoid burst overload.",
        "tip3": "Use queue timeout to fail fast under saturation."
      },
      "random": {
        "title": "Quick spread with low setup",
        "description": "Use when you need simple distribution without strict guarantees.",
        "tip1": "Use models with similar latency profiles.",
        "tip2": "Keep retries enabled to absorb random misses.",
        "tip3": "Prefer this for experimentation, not strict SLAs."
      },
      "least-used": {
        "title": "Adaptive balancing",
        "description": "Routes to less-used models to reduce hotspots over time.",
        "tip1": "Works better under continuous traffic.",
        "tip2": "Combine with health checks for safer balancing.",
        "tip3": "Track per-model usage to validate distribution gains."
      },
      "cost-optimized": {
        "title": "Budget-first routing",
        "description": "Routes to lower-cost models when pricing metadata is available.",
        "tip1": "Ensure pricing coverage for all selected models.",
        "tip2": "Keep a quality fallback for hard prompts.",
        "tip3": "Use for batch/background jobs where cost is the main KPI."
      },
      "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": "Shuffle deck distribution",
        "description": "Each model is used exactly once per cycle before reshuffling.",
        "tip1": "Use at least 2 models for meaningful distribution.",
        "tip2": "Works best with equivalent-performance models.",
        "tip3": "Ideal for load balancing across multiple API accounts."
      },
      "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"
  },
  "costs": {
    "title": "Custos",
    "pageDescription": "Acompanhe gastos, analise tendências e gerencie seu orçamento de IA em todos os fornecedores",
    "overview": "Visão geral",
    "budget": "Orçamento",
    "totalCost": "Custo total",
    "breakdown": "Divisão de custos",
    "noData": "Sem dados de custo",
    "byModel": "Por modelo",
    "byProvider": "Por provedor",
    "range7d": "7 dias",
    "range30d": "30 dias",
    "range90d": "90 dias",
    "rangeAll": "Todos os tempos",
    "spend30d": "Spend30D",
    "activeModels": "Active Models",
    "selectedWindow": "Selected Window",
    "activeProviders": "Active Providers",
    "overviewTitle": "Overview Title",
    "spend7d": "Spend7D",
    "avgCostPerRequest": "Avg Cost Per Request",
    "noCostDataDescription": "No Cost Data Description",
    "spendToday": "Spend Today",
    "overviewLoadFailed": "Overview Load Failed",
    "overviewDescription": "Overview Description",
    "providerShare": "Provider Share",
    "topProviders": "Top Providers",
    "costTrend": "Cost Trend",
    "noCostDataTitle": "No Cost Data Title",
    "topModels": "Top Models",
    "requestsInWindow": "Requests In Window",
    "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": "__MISSING__:Legacy / Free",
    "costExplorerTitle": "Explorador de custos",
    "costExplorerDescription": "Explore os gastos por fornecedor, modelo, chave de API, conta ou nível de serviço.",
    "groupProvider": "Fornecedor",
    "groupModel": "Modelo",
    "groupApiKey": "Chave de API",
    "groupAccount": "Conta",
    "groupServiceTier": "Nível de serviço",
    "serviceTierFast": "__MISSING__:Fast",
    "serviceTierFlex": "__MISSING__:Flex",
    "serviceTierStandard": "__MISSING__:Standard",
    "serviceTierBreakdownTitle": "__MISSING__:Service Tier",
    "serviceTierBreakdownSubtitle": "__MISSING__:Fast / Flex / Standard split",
    "serviceTierUsageSaved": "__MISSING__:usage saved",
    "serviceTierCostSaved": "__MISSING__:saved",
    "serviceTierCostShareSuffix": "__MISSING__:of cost",
    "dimension": "Dimensão",
    "share": "Quota",
    "legacyOrFree": "Legado / gratuito",
    "filterRows": "Filtrar linhas…",
    "filterCostExplorerRows": "Filtrar linhas do explorador de custos",
    "noMatchingCostRows": "Nenhuma linha de custo correspondente",
    "noMatchingCostRowsDescription": "Ajuste o texto de pesquisa, o agrupamento ou a janela temporal selecionada.",
    "showingCostRows": "A mostrar {shown} de {total} linhas correspondentes.",
    "showingTopCostRows": "A mostrar {shown} de {total} linhas correspondentes (top 50)."
  },
  "endpoint": {
    "title": "Ponto final da API",
    "available": "Terminais disponíveis",
    "cloudProxy": "Proxy de nuvem",
    "disableConfirm": "Tem certeza de que deseja desativar o proxy na nuvem?",
    "baseUrl": "URL base",
    "apiKeyLabel": "Chave de API",
    "registeredKeys": "Chaves Registradas",
    "chatCompletions": "Conclusões de bate-papo",
    "responses": "Respostas",
    "listModels": "Listar modelos",
    "usingCloudProxy": "Usando o Cloud Proxy",
    "usingLocalServer": "Usando servidor local",
    "machineId": "ID da máquina: {id}...",
    "disableCloud": "Desativar nuvem",
    "enableCloud": "Habilitar nuvem",
    "modelsAcrossEndpoints": "Modelos {models} em endpoints {endpoints}",
    "loadingModels": "Loading available models...",
    "chatDesc": "Bate-papo com e sem streaming com todos os provedores",
    "embeddings": "Incorporações",
    "embeddingsDesc": "Incorporações de texto para pipelines de pesquisa e RAG",
    "imageGeneration": "Geração de imagem",
    "imageDesc": "Gere imagens a partir de prompts de texto",
    "rerank": "Reclassificar",
    "rerankDesc": "Reclassificar documentos por relevância para uma consulta",
    "audioTranscription": "Transcrição de áudio",
    "audioTranscriptionDesc": "Transcrever arquivos de áudio para texto (Whisper)",
    "textToSpeech": "Texto para fala",
    "textToSpeechDesc": "Converta texto em fala com som 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 fornecedores 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 Gestão",
    "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 de nuvem",
    "whatYouGet": "O que você receberá",
    "cloudBenefitAccess": "Acesse sua API de qualquer lugar do mundo",
    "cloudBenefitShare": "Compartilhe endpoint com sua equipe facilmente",
    "cloudBenefitPorts": "Não há 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 for usado, ele será excluído automaticamente.",
    "cloudUnstableNote": "A nuvem está atualmente instável com Claude Code OAuth em alguns casos.",
    "cloudConnected": "Cloud Proxy conectado!",
    "connectingToCloud": "Conectando à nuvem...",
    "verifyingConnection": "Verificando conexão...",
    "connecting": "Conectando...",
    "verifying": "Verificando...",
    "connected": "Conectado!",
    "disableCloudTitle": "Desativar proxy de nuvem",
    "disableWarning": "Todas as sessões de autenticação serão excluídas da nuvem.",
    "syncingData": "Sincronizando os dados mais recentes...",
    "disablingCloud": "Desativando nuvem...",
    "syncing": "Sincronizando...",
    "disabling": "Desativando...",
    "cloudConnectedVerified": "Cloud Proxy 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 a nuvem",
    "failedEnable": "Falha ao ativar a nuvem",
    "cloudRequestTimeout": "Tempo limite de solicitação na nuvem",
    "cloudRequestFailed": "Falha na solicitação de nuvem",
    "cloudWorkerUnreachable": "Não foi possível entrar em contato com o trabalhador da nuvem. Certifique-se de que o serviço de nuvem esteja em execução (npm run dev in/cloud).",
    "connectionFailed": "Falha na conexão",
    "syncFailed": "Falha ao sincronizar dados na 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 fornecedor.",
    "chat": "Bate-papo",
    "embedding": "Incorporação",
    "image": "Imagem",
    "custom": "personalizado",
    "modelsCount": "{count, plural, one {# model} other {# models}}",
    "sectionTitle": "Integration Surface",
    "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints",
    "tabApis": "OpenAI-compatible APIs",
    "tabProtocols": "Protocols",
    "tabsAria": "Endpoint sections",
    "protocolsTitle": "Protocols",
    "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.",
    "mcpCardTitle": "MCP Server",
    "mcpCardDescription": "Model Context Protocol over stdio",
    "a2aCardTitle": "A2A Server",
    "a2aCardDescription": "Agent2Agent JSON-RPC endpoint",
    "protocolToolsLabel": "Tools",
    "protocolTasksLabel": "Tasks",
    "protocolActiveStreamsLabel": "Active streams",
    "protocolLastActivity": "Last activity",
    "quickStart": "Quick Start",
    "openMcpDashboard": "Open MCP management",
    "openA2aDashboard": "Open A2A management",
    "mcpQuickStartTitle": "MCP Quick Start",
    "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.",
    "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.",
    "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.",
    "a2aQuickStartTitle": "A2A Quick Start",
    "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.",
    "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.",
    "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `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": "Video Generation",
    "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.",
    "tailscaleRequestFailed": "Failed to load Tailscale status",
    "tailscaleEnableFailed": "Failed to enable Tailscale Funnel",
    "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.",
    "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login",
    "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.",
    "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled",
    "tailscaleStarted": "Tailscale Funnel enabled",
    "tailscaleDisableFailed": "Failed to disable Tailscale Funnel",
    "tailscaleStopped": "Tailscale Funnel disabled",
    "tailscaleInstallFailed": "Failed to install Tailscale",
    "tailscaleInstallProgress": "Working...",
    "tailscaleInstalled": "Tailscale installed successfully",
    "tailscaleRunning": "Running",
    "tailscaleNeedsLogin": "Needs Login",
    "tailscaleStoppedState": "Stopped",
    "tailscaleNotInstalled": "Not installed",
    "tailscaleUnsupported": "Unsupported",
    "tailscaleError": "Error",
    "tailscaleDisable": "Stop Funnel",
    "tailscaleInstallAndEnable": "Install & Enable",
    "tailscaleLoginAndEnable": "Login & Enable",
    "tailscaleEnable": "Enable Funnel",
    "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.",
    "tailscaleTitle": "Tailscale Funnel",
    "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.",
    "tailscaleBinaryPath": "Binary: {path}",
    "tailscaleLastError": "Last error: {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 no 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": "__MISSING__:This endpoint is only accessible locally (loopback only)",
    "badgeAlwaysProtectedTooltip": "__MISSING__:This endpoint is always protected and requires authorization",
    "badgeInternalTooltip": "__MISSING__:This is an internal system endpoint",
    "tierAll": "__MISSING__:All",
    "tierAuth": "__MISSING__:Authenticated",
    "tierLoopback": "__MISSING__:Loopback",
    "tierAlwaysProtected": "__MISSING__:Always Protected",
    "tierPublic": "__MISSING__:Public",
    "hideInternal": "__MISSING__:Hide Internal",
    "showInternal": "__MISSING__:Show Internal"
  },
  "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. Esta seção listará todas as APIs REST disponíveis com documentação e testes.",
    "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"
  },
  "mcpDashboard": {
    "loading": "Loading MCP dashboard...",
    "activate": "activate",
    "deactivate": "deactivate",
    "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?",
    "switchComboFailed": "Failed to switch combo state.",
    "switchComboSuccess": "Combo \"{combo}\" updated.",
    "confirmApplyProfile": "Apply resilience profile \"{profile}\"?",
    "applyProfileFailed": "Failed to apply resilience profile.",
    "applyProfileSuccess": "Profile \"{profile}\" applied.",
    "confirmResetBreakers": "Reset all circuit breakers?",
    "resetBreakersFailed": "Failed to reset circuit breakers.",
    "resetBreakersSuccess": "Circuit breakers reset.",
    "processStatus": "Process status",
    "online": "Online",
    "offline": "Offline",
    "disableLabel": "__MISSING__:Disable {label}",
    "enableLabel": "__MISSING__:Enable {label}",
    "transportMode": "__MISSING__:Transport Mode",
    "transportStdioDesc": "__MISSING__:Local — IDE spawns process via omniroute --mcp",
    "transportSseDesc": "__MISSING__:Remote — Server-Sent Events over HTTP",
    "transportStreamableHttpDesc": "__MISSING__:Remote — Modern bidirectional HTTP",
    "copy": "__MISSING__:Copy",
    "mcpDashboardCopyUrl": "Copiar URL",
    "mcpDisabledTitle": "__MISSING__:MCP is disabled",
    "mcpDisabledDesc": "__MISSING__:Enable MCP above to configure transport mode and view server telemetry.",
    "mcpIntro": "__MISSING__:Model Context Protocol — {tools} tools across {scopes} scopes, {transports} transports (stdio / SSE / Streamable HTTP).",
    "mcpStep1": "__MISSING__:Run via {code}",
    "mcpStep2": "__MISSING__:Configure your MCP client to connect over stdio transport.",
    "mcpStep3": "__MISSING__:Invoke tools like {code1} and {code2}.",
    "pid": "PID",
    "sessionUptime": "Session uptime",
    "lastHeartbeat": "Last heartbeat",
    "activity24h": "Activity (24h)",
    "totalCalls": "Total calls",
    "successRate": "Success rate",
    "avgLatency": "Avg latency",
    "topTools": "Top tools",
    "noToolCalls24h": "No tool calls in the last 24 hours.",
    "runtimeDetails": "Runtime details",
    "transport": "Transport",
    "scopesEnforced": "Scopes enforced",
    "yes": "yes",
    "no": "no",
    "lastCall": "Last call",
    "heartbeatPath": "Heartbeat path",
    "operationalControls": "Operational controls",
    "switchCombo": "Switch combo",
    "inactive": "inactive",
    "active": "active",
    "activateCombo": "Activate combo",
    "deactivateCombo": "Deactivate combo",
    "applyResilienceProfile": "Apply resilience profile",
    "profileAggressive": "aggressive",
    "profileBalanced": "balanced",
    "profileConservative": "conservative",
    "applyProfile": "Apply profile",
    "resetCircuitBreakers": "Reset circuit breakers",
    "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.",
    "resetAllBreakers": "Reset all breakers",
    "toolsAndScopes": "Tools and scopes",
    "tableTool": "Tool",
    "tableScopes": "Scopes",
    "tablePhase": "Phase",
    "tableAudit": "Audit",
    "auditLog": "Audit log",
    "auditSummary": "Calls: {total} | page {page} of {totalPages}",
    "allTools": "All tools",
    "allResults": "All results",
    "success": "Success",
    "failure": "Failure",
    "apiKeyIdPlaceholder": "apiKeyId",
    "loadingAuditEntries": "Loading audit entries...",
    "noAuditEntriesForFilters": "No audit entries found for current filters.",
    "tableTimestamp": "Timestamp",
    "tableDuration": "Duration",
    "tableResult": "Result",
    "tableApiKey": "API key",
    "failed": "failed",
    "previous": "Previous",
    "next": "Next",
    "apiKeyId": "Api Key Id",
    "offset": "Offset",
    "limit": "Limit",
    "tool": "Tool"
  },
  "a2aDashboard": {
    "loading": "Loading A2A dashboard...",
    "confirmCancelTask": "Cancel task {taskId}?",
    "cancelTaskFailed": "Failed to cancel task.",
    "cancelTaskSuccess": "Task {taskId} cancelled.",
    "smokeSendFailed": "message/send smoke test failed.",
    "smokeSendSuccessWithTask": "message/send ok (task {taskId}).",
    "smokeSendSuccess": "message/send ok.",
    "smokeStreamFailed": "message/stream smoke test failed.",
    "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).",
    "smokeStreamNoTaskId": "message/stream finished without task id.",
    "health": "Health",
    "ok": "ok",
    "totalTasks": "Total tasks",
    "activeStreams": "Active streams",
    "lastTask": "Last task",
    "taskStateOverview": "Task state overview",
    "state": {
      "submitted": "submitted",
      "working": "working",
      "completed": "completed",
      "failed": "failed",
      "cancelled": "cancelled"
    },
    "agentCard": "Agent card",
    "agentCardPath": "__MISSING__:/.well-known/agent.json",
    "version": "Version",
    "url": "URL",
    "capabilities": "Capacidades",
    "agentCardNotAvailable": "Cartão de agente não disponível.",
    "quickValidation": "Validação rápida",
    "quickValidationDescription": "Executa chamadas smoke através do endpoint `/a2a` ativo.",
    "runMessageSend": "Run message/send",
    "runMessageStream": "Run message/stream",
    "taskManagement": "Gerenciamento de tarefas",
    "taskSummary": "{total} tasks | page {page} of {totalPages}",
    "allStates": "all",
    "allSkills": "all skills",
    "loadingTasks": "Loading tasks...",
    "noTasksForFilters": "No tasks found for current filters.",
    "tableTask": "Task",
    "tableSkill": "Skill",
    "tableState": "State",
    "tableUpdated": "Updated",
    "tableActions": "Actions",
    "view": "View",
    "cancel": "Cancel",
    "previous": "Previous",
    "next": "Next",
    "taskDetail": "Task detail",
    "close": "Close",
    "metadata": "Metadata",
    "events": "Events",
    "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": "__MISSING__:Online",
    "offline": "__MISSING__:Offline",
    "disableLabel": "__MISSING__:Disable {label}",
    "enableLabel": "__MISSING__:Enable {label}",
    "a2aDisabledTitle": "__MISSING__:A2A is disabled",
    "a2aDisabledDesc": "__MISSING__:Enable A2A above to view task telemetry, agent details, and validation tools.",
    "a2aIntro": "__MISSING__:Agent2Agent JSON-RPC 2.0 endpoint — send tasks, stream responses, cancel in-flight jobs.",
    "a2aStep1": "__MISSING__:Discover the agent card at {code}.",
    "a2aStep2": "__MISSING__:Send JSON-RPC to {code1} using {code2} or {code3}.",
    "a2aStep3": "__MISSING__:Track and cancel tasks with {code1} and {code2}."
  },
  "memory": {
    "title": "Gerenciamento de Memória",
    "description": "Visualize e gerencie entradas de memória armazenadas",
    "memories": "Memórias",
    "totalEntries": "Total de Entradas",
    "tokensUsed": "Tokens Usados",
    "hitRate": "Taxa de Acerto",
    "loading": "Carregando memórias...",
    "noMemories": "Nenhuma memória encontrada",
    "search": "Buscar memórias...",
    "allTypes": "Todos os Tipos",
    "export": "Exportar",
    "import": "Importar",
    "addMemory": "Adicionar Memória",
    "type": "Tipo",
    "key": "Chave",
    "content": "Conteúdo",
    "created": "Criado",
    "actions": "Ações",
    "delete": "Delete",
    "factual": "Factual",
    "episodic": "Episódica",
    "procedural": "Procedural",
    "semantic": "Semântica",
    "a": "A",
    "pipelineOk": "Pipeline OK ({latencyMs}ms)",
    "pipelineError": "Erro de pipeline",
    "healthUnknown": "Saúde desconhecida",
    "checkingHealth": "Verificando…",
    "checkHealth": "Verifique a saúde",
    "pageInfo": "Página {page} de {totalPages} ({total} total)",
    "previous": "Anterior",
    "next": "Próximo",
    "cancel": "Cancelar",
    "save": "Salvar",
    "keyPlaceholder": "por exemplo usuário.preferências.tema",
    "contentPlaceholder": "Valor ou conteúdo JSON para lembrar"
  },
  "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": "__MISSING__:Total Skills",
    "enabledSkills": "__MISSING__:Enabled",
    "totalExecutions": "__MISSING__:Executions",
    "successRate": "__MISSING__:Success Rate",
    "marketplaceTab": "__MISSING__:Marketplace",
    "applyFilters": "__MISSING__:Apply filters",
    "popularDefaultsLabel": "__MISSING__:Popular by default for selected provider:",
    "onMode": "__MISSING__:ON",
    "offMode": "__MISSING__:OFF",
    "autoMode": "__MISSING__:AUTO",
    "installSkillButton": "__MISSING__:Install Skill",
    "installSkillModalTitle": "__MISSING__:Install Skill",
    "installJsonPlaceholder": "__MISSING__:Paste skill manifest JSON here...",
    "installing": "__MISSING__:Installing...",
    "installSuccess": "__MISSING__:Skill installed ({id})",
    "installError": "__MISSING__:Install failed",
    "invalidJson": "__MISSING__:Invalid JSON",
    "searchMarketplacePlaceholder": "__MISSING__:Search skills...",
    "searchMarketplace": "__MISSING__:Search Marketplace",
    "marketplaceEmpty": "__MISSING__:No skills found in marketplace",
    "marketplaceError": "__MISSING__:Search failed",
    "installingFromMarketplace": "__MISSING__:Installing from marketplace...",
    "popularSkills": "__MISSING__:Popular Skills",
    "skillsMarketplace": "Mercado de habilidades",
    "searching": "__MISSING__:Searching...",
    "pageInfo": "__MISSING__:Page {page} of {totalPages} ({total} total)",
    "previous": "__MISSING__:Previous",
    "next": "__MISSING__:Next",
    "activeProvider": "__MISSING__:Active provider:",
    "changeInSettings": "__MISSING__:Change this in Settings → Memory & Skills.",
    "installs": "__MISSING__:installs",
    "marketplaceSkillsMpHint": "__MISSING__:Configure your SkillsMP API key in Settings to browse the marketplace.",
    "marketplaceSkillsShHint": "__MISSING__:Search the skills.sh open directory to discover and install agent skills.",
    "installSkillModalDesc": "__MISSING__:Paste a skill manifest JSON or upload a .json file.",
    "uploadJson": "__MISSING__:Upload JSON",
    "cancel": "__MISSING__:Cancel",
    "installSkill": "Instalar habilidade"
  },
  "health": {
    "title": "Saúde do sistema",
    "description": "Monitoramento em tempo real da sua instância OmniRoute",
    "healthy": "Saudável",
    "degraded": "Degradado",
    "down": "Para baixo",
    "uptime": "Tempo de atividade",
    "memory": "Memória",
    "memoryRss": "Memória (RSS)",
    "heap": "Pilha",
    "cpu": "CPU",
    "database": "Banco de dados",
    "version": "Versão",
    "lastCheck": "Última verificação",
    "providerHealth": "Saúde do Provedor",
    "systemMetrics": "Métricas do sistema",
    "tokenHealth": "Saúde do token",
    "refreshAll": "Atualizar tudo",
    "checkNow": "Verifique agora",
    "loadingHealth": "Carregando dados de saúde...",
    "failedToLoad": "Falha ao carregar dados de integridade: {error}",
    "retry": "Tentar novamente",
    "allOperational": "Todos os sistemas operacionais",
    "issuesDetected": "Problemas de sistema detectados",
    "updatedAt": "{time} atualizado",
    "latency": "Latência",
    "latencyP50": "p50",
    "latencyP95": "pág.95",
    "latencyP99": "p99",
    "millisecondsShort": "{value}ms",
    "notAvailable": "—",
    "totalRequests": "Total de solicitações",
    "noDataYet": "Ainda não há dados",
    "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": "Não há dados disponíveis sobre disjuntores. Faça alguns pedidos primeiro.",
    "providerHealthStatusAria": "Estado de saúde do provedor",
    "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} íntegro",
    "nodeVersion": "Nó {version}",
    "failures": "{count} falha",
    "failuresPlural": "{count} falhas",
    "lastFailure": "Último",
    "rateLimitStatus": "Status do limite de taxa",
    "activeLimiters": "{count} limitador ativo",
    "activeLimitersPlural": "{count} limitadores ativos",
    "queued": "Na fila",
    "queuedCount": "{count} na fila",
    "running": "correndo",
    "runningCount": "{count} em execução",
    "ok": "OK",
    "activeLockouts": "Bloqueios ativos",
    "resetConfirm": "Redefinir todos os disjuntores para um estado íntegro? Isto limpará todas as contagens de falhas e restaurará todos os provedores ao status operacional.",
    "resetAllTitle": "Reinicialize todos os disjuntores para um estado saudável",
    "resetting": "Redefinindo...",
    "resetAll": "Redefinir tudo",
    "until": "Até {time}",
    "limitExhausted": "Exhausted",
    "learnedFromHeaders": "Learned from headers",
    "remainingOfLimit": "{remaining}/{limit} remaining",
    "throttleStatus": "Throttle: {value}",
    "lastHeaderUpdate": "Header update: {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": "__MISSING__:Provider Health Matrix",
    "providerHealthMatrixDescription": "__MISSING__:Provider × account × model states from breakers, cooldowns, lockouts and logs.",
    "healthMatrixRange": "__MISSING__:Health matrix range",
    "providerFilter": "__MISSING__:Provider filter",
    "onlyIssues": "__MISSING__:Only issues",
    "refresh": "__MISSING__:Refresh",
    "accounts": "__MISSING__:Accounts",
    "models": "__MISSING__:Models",
    "issues": "__MISSING__:Issues",
    "loadingProviderHealthMatrix": "__MISSING__:Loading provider health matrix...",
    "failedProviderHealthMatrix": "__MISSING__:Failed to load Provider Health Matrix: {error}",
    "noProvidersMatchedFilters": "__MISSING__:No providers matched the current filters.",
    "modelPillSummary": "__MISSING__:{requests} req · {successRate} success · {latency} avg",
    "modelLockoutSummary": "__MISSING__:{reason} · {duration} left",
    "locked": "__MISSING__:locked",
    "inferred": "__MISSING__:inferred",
    "inactive": "__MISSING__:Inactive",
    "noConnectionId": "__MISSING__:no connection id",
    "accountModelSummary": "__MISSING__:{connectionId} · {count} models",
    "cooldown": "__MISSING__:cooldown",
    "durationRemaining": "__MISSING__:{duration} remaining",
    "noSyncedModelsOrTraffic": "__MISSING__:No synced models or recent traffic yet.",
    "providerRowSummary": "__MISSING__:{active}/{total} active accounts · {requests} req · {successRate} success · {latency} avg",
    "cooldownCount": "__MISSING__:{count} cooldown",
    "lockoutCount": "__MISSING__:{count} lockouts",
    "issueCount": "__MISSING__:{count} issues",
    "score": "__MISSING__:Score",
    "lastRequest": "__MISSING__:Last request",
    "lastError": "__MISSING__:Last error"
  },
  "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}"
  },
  "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."
  },
  "limits": {
    "title": "Limites e cotas",
    "rateLimit": "Limite de taxa",
    "remaining": "Restante",
    "requestsPerMinute": "Solicitações/min",
    "tokensPerMinute": "Tokens/min",
    "dailyLimit": "Limite Diário"
  },
  "logs": {
    "title": "Registros",
    "requestLogs": "Solicitar registros",
    "proxyLogs": "Registros de proxy",
    "auditLog": "Registro de auditoria",
    "console": "Consola",
    "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 de log de auditoria",
    "filterByActionTypeAria": "Filtrar por tipo de ação",
    "filterByActorAria": "Filtrar por ator",
    "refreshAuditLogAria": "Atualizar registro de auditoria",
    "tableAria": "Entradas de registro de auditoria",
    "failedFetchAuditLog": "Falha ao buscar o log de auditoria",
    "showing": "Mostrando entradas {count} (deslocamento {offset})",
    "search": "Pesquisar",
    "timestamp": "Carimbo de data e hora",
    "action": "Ação",
    "actor": "Ator",
    "target": "Alvo",
    "details": "Detalhes",
    "ipAddress": "Endereço IP",
    "notAvailable": "—",
    "noEntries": "Nenhuma entrada de registro de auditoria encontrada",
    "previous": "Anterior",
    "next": "Próximo",
    "providerWarningTitle": "Provider Warning Title",
    "viewDetails": "View Details",
    "eventMetadata": "Event Metadata",
    "eventPayload": "Event Payload",
    "requestId": "Request Id",
    "providerWarningDesc": "Provider Warning Desc",
    "a": "A",
    "offset": "Offset",
    "limit": "Limit",
    "status": "Status",
    "resourceType": "Resource Type",
    "totalEntries": "Total Entries",
    "tab": "Tab",
    "auditModalSubtitle": "Audit Modal Subtitle",
    "close": "Close",
    "runningRequests": "Active Requests",
    "runningRequestsDesc": "Real-time view of currently running upstream requests",
    "clearAll": "Limpar tudo",
    "confirmClearActiveRequests": "Limpar todas as solicitações ativas?",
    "model": "Model",
    "provider": "Provider",
    "account": "Account",
    "elapsed": "Elapsed",
    "activeStage": "__MISSING__:Stage",
    "activeStageUnknown": "__MISSING__:Not sent to upstream yet",
    "activeStageRegistered": "__MISSING__:Registered",
    "activeStagePayloadPrepared": "__MISSING__:Payload prepared",
    "activeStageWaitingAccountSlot": "__MISSING__:Waiting for account slot",
    "activeStageWaitingRateLimit": "__MISSING__:Waiting for rate limiter",
    "activeStageRateLimitSlotAcquired": "__MISSING__:Rate limit slot acquired",
    "activeStageSendingToProvider": "__MISSING__:Sending to upstream",
    "activeStageProviderResponseStarted": "__MISSING__:Upstream response started",
    "count": "Count",
    "payloads": "Payloads",
    "viewPayloads": "View",
    "activeCount": "{count} active",
    "clientPayload": "Client Request Payload",
    "upstreamPayload": "Upstream Provider Payload",
    "upstreamNotSentYet": "Not sent to upstream yet",
    "runningRequestDetailMeta": "Account: {account} — Elapsed: {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"
    }
  },
  "onboarding": {
    "welcome": "Bem vindo",
    "security": "Segurança",
    "test": "Teste",
    "ready": "Pronto!",
    "setPassword": "Definir senha",
    "addProvider": "Adicione seu primeiro provedor",
    "getStarted": "Comece",
    "skip": "Pular",
    "skipWizard": "Ignorar totalmente o assistente",
    "skipPassword": "Ignorar configuração de senha",
    "skipAndContinue": "Pular e continuar",
    "passwordLabel": "Senha",
    "confirmPassword": "Confirmar senha",
    "enterPassword": "Digite a senha",
    "confirmPasswordPlaceholder": "Confirmar senha",
    "passwordsMismatch": "As senhas não coincidem",
    "setupComplete": "Configuração concluída!",
    "goToDashboard": "Vá para Painel →",
    "welcomeDesc": "OmniRoute é o seu proxy local da API AI. Ele roteia solicitações para vários 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 posteriormente.",
    "apiKeyRequired": "Chave API (obrigatória)",
    "customUrlOptional": "URL personalizado (opcional)",
    "testDesc": "Vamos verificar se a conexão do seu provedor funciona.",
    "runTest": "Execute o 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 do painel posteriormente.",
    "testFailed": "O teste falhou, mas você pode configurar isso mais tarde.",
    "couldNotTest": "Não foi possível testar agora. Você pode testar no painel.",
    "doneDesc": "Está tudo pronto! Sua instância do OmniRoute está configurada e pronta para fazer proxy de solicitações de IA.",
    "yourEndpoint": "Seu ponto final:",
    "continue": "Continuar",
    "retry": "Tentar novamente",
    "failedSetPassword": "Falha ao definir a senha. Tente novamente.",
    "failedAddProvider": "Falha ao adicionar provedor. Tente novamente.",
    "connectionError": "Erro de conexão. Por favor, 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": "Gerenciamento de chave de API"
  },
  "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 do modelo",
    "accounts": "Contas",
    "newAccount": "Nova conta",
    "deleteConfirm": "Tem certeza de que deseja excluir este provedor?",
    "testing": "Testando...",
    "testConnection": "Conexão de teste",
    "testSuccess": "Conexão bem-sucedida",
    "testFailed": "Falha na conexão",
    "available": "Disponível",
    "cooldown": "Recarga",
    "unavailable": "Indisponível",
    "unknown": "Desconhecido",
    "oauthLabel": "OAuth",
    "compatibleLabel": "Compatível",
    "chat": "Bate-papo",
    "responses": "Respostas",
    "messages": "Mensagens",
    "oauthProviders": "Provedores OAuth",
    "freeProviders": "Provedores Gratuitos",
    "apiKeyProviders": "Provedores de chaves de API",
    "compatibleProviders": "Provedores compatíveis com chave de API",
    "testAll": "Teste tudo",
    "testAllOAuth": "Teste todas as conexões OAuth",
    "testAllFree": "Teste todas as conexões gratuitas",
    "testAllApiKey": "Teste todas as conexões de chave de API",
    "testAllCompatible": "Teste todas as conexões compatíveis",
    "connected": "{count} Conectado",
    "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": "__MISSING__:Free tier available",
    "noAuthLabel": "__MISSING__:No Auth",
    "noAuthProviders": "__MISSING__:No Auth Providers",
    "upstreamProxyLabel": "__MISSING__:Upstream Proxy",
    "freeAggregated": "__MISSING__:All providers with free tier (also shown in their native category)",
    "deprecated": "Obsoleto",
    "deprecatedProvider": "Este provedor foi descontinuado",
    "riskNotice": {
      "title": "__MISSING__:Before continuing",
      "tooltip": "__MISSING__:Provider with usage caveats — click for details",
      "oauth": "__MISSING__:This provider uses your official product session/OAuth, which is not authorized for proxy/router use.\n\nWe don't recommend intensive autonomous agent usage (OpenCloud-style, long multi-step flows, large batches) — the upstream may react by restricting or banning the account.\n\nUse at your own risk.",
      "webCookie": "__MISSING__:This provider authenticates through your web session cookies. The upstream service may invalidate the session at any time, requiring you to log in again. Not recommended for long unattended operations.\n\nUse at your own risk.",
      "deprecated": "__MISSING__:This provider was discontinued by its upstream and may stop working without notice. Existing connections may continue working until the upstream fully removes access. Consider alternatives.",
      "dontShowAgain": "__MISSING__:Don't show this again for this provider",
      "understand": "__MISSING__:I understand, continue",
      "cancel": "__MISSING__:Cancel"
    },
    "disabled": "Desativado",
    "enableProvider": "Habilitar provedor",
    "disableProvider": "Desativar provedor",
    "testResults": "Resultados do teste",
    "noCompatibleYet": "Nenhum provedor compatível adicionado ainda",
    "compatibleHint": "Use os botões acima para adicionar endpoints compatíveis com OpenAI ou Antrópico",
    "addOpenAICompatible": "Adicionar compatível com OpenAI",
    "addAnthropicCompatible": "Adicionar Compatível Antrópico",
    "addNewProvider": "Adicionar novo provedor",
    "backToProviders": "Voltar para Provedores",
    "configureNewProvider": "Configure um novo provedor de IA para usar com seus aplicativos.",
    "providerLabel": "Provedor",
    "selectProvider": "Selecione um provedor",
    "selectedProvider": "Provedor selecionado",
    "authMethod": "Método de autenticação",
    "apiKeyLabel": "Chave de API",
    "apiKeyRequired": "A chave de API é obrigatória",
    "selectProviderRequired": "Selecione um provedor",
    "enterApiKey": "Insira sua chave API",
    "apiKeySecure": "Sua chave API será criptografada e armazenada com segurança.",
    "oauth2Connect": "Conecte-se com OAuth2",
    "oauth2Label": "OAuth2",
    "oauth2Desc": "Conecte sua conta usando autenticação OAuth2.",
    "displayName": "Nome de exibição",
    "displayNamePlaceholder": "por exemplo, API de produção, ambiente de desenvolvimento",
    "displayNameHint": "Opcional. Um nome amigável para identificar esta configuração.",
    "active": "Ativo",
    "activeDescription": "Habilite este provedor para uso em seus aplicativos",
    "cancel": "Cancelar",
    "createProvider": "Criar provedor",
    "failedCreate": "Falha ao criar provedor",
    "errorOccurred": "Ocorreu um erro. Por favor, tente novamente.",
    "modelStatus": "Status do modelo",
    "showConfiguredOnly": "Configured only",
    "allModelsOperational": "Todos os modelos operacionais",
    "modelsWithIssues": "{count} modelo(s) com problemas",
    "allModelsNormal": "Todos os modelos estão respondendo normalmente.",
    "cooldownCleared": "Tempo de espera liberado para {model}",
    "failedClearCooldown": "Falha ao limpar o tempo de espera",
    "loadingAvailability": "Carregando disponibilidade do modelo...",
    "clearCooldown": "Limpar",
    "clearing": "Limpando...",
    "until": "Até {time}",
    "providerTestFailed": "Falha no teste do provedor",
    "providerTestTimeout": "Provider test timed out — too many connections to test at once",
    "modeTest": "{mode} Teste",
    "passedCount": "{count} aprovado",
    "failedCount": "{count} falhou",
    "testedCount": "{count} testado",
    "millisecondsAbbr": "{value}ms",
    "okShort": "OK",
    "errorShort": "ERRO",
    "noActiveConnectionsInGroup": "Nenhuma conexão ativa encontrada para este grupo.",
    "allTestsPassed": "Todos os testes {total} foram aprovados",
    "testSummary": "{passed}/{total} aprovado, {failed} falhou",
    "nameLabel": "Nome",
    "prefixLabel": "Prefixo",
    "baseUrlLabel": "URL base",
    "apiTypeLabel": "Tipo de API",
    "prefixHint": "Obrigatório. Prefixo exclusivo 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": "A conexão é válida!",
    "connectionFailed": "Falha na conexão. Verifique o URL e a 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 o alias",
    "failedSaveConnection": "Falha ao salvar conexão",
    "failedSaveConnectionRetry": "Falha ao salvar a conexão. Por favor, tente novamente.",
    "failedRetestConnection": "Falha ao testar novamente a conexão",
    "deleteCompatibleNodeConfirm": "Excluir este nó compatível com {type}?",
    "anthropicCompatibleDetails": "Detalhes compatíveis com antrópicos",
    "openaiCompatibleDetails": "Detalhes compatíveis com OpenAI",
    "messagesApi": "API de mensagens",
    "responsesApi": "API de respostas",
    "embeddings": "Embeddings",
    "audioTranscriptions": "Audio Transcriptions",
    "audioSpeech": "Audio Speech",
    "imagesGenerations": "Images Generations",
    "chatCompletions": "Conclusões de bate-papo",
    "importingModels": "Importando...",
    "importFromModels": "Importar de /modelos",
    "modelsImported": "{count} models imported",
    "allModelsAlreadyImported": "Todos os modelos já foram importados",
    "noNewModelsToImport": "Nenhum modelo novo para importar — todos os modelos já estão no registo ou na lista de modelos personalizados",
    "skippingExistingModels": "A ignorar {count} modelos existentes",
    "autoSync": "Sincronização automática",
    "autoSyncTooltip": "Atualiza automaticamente a lista de modelos a cada 24 horas (configurável via MODEL_SYNC_INTERVAL_HOURS)",
    "autoSyncEnabled": "Sincronização automática ativada — modelos serão atualizados periodicamente",
    "autoSyncDisabled": "Sincronização automática desativada",
    "autoSyncToggleFailed": "Falha ao alternar sincronização automática",
    "clearAllModels": "Limpar todos os modelos",
    "clearAllModelsConfirm": "Tem certeza que deseja remover todos os modelos deste provedor?",
    "clearAllModelsSuccess": "Todos os modelos limpos",
    "clearAllModelsFailed": "Falha ao limpar modelos",
    "addConnectionToImport": "Adicione uma conexão para permitir a importação.",
    "noModelsConfigured": "Nenhum modelo configurado",
    "connectionCount": "{count} conexõ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 ativar a proteção de limite de taxa",
    "disableRateLimitProtection": "Clique para desativar a proteção de limite de taxa",
    "productionKey": "Chave de produção",
    "enterNewApiKey": "Insira a nova chave de 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 Antrópico",
    "openaiCompatibleName": "Compatível com OpenAI",
    "failedImportModels": "Falha ao importar modelos",
    "noModelsReturnedFromEndpoint": "Nenhum modelo foi retornado do endpoint /models.",
    "importingModelsProgress": "Importando {current} de modelos {total}...",
    "foundModelsStartingImport": "Modelos {count} encontrados. Iniciando importação...",
    "importingModelById": "Importando {modelId}...",
    "importSuccessCount": "{count, plural, one {# model} other {# models}} importado com sucesso!",
    "noNewModelsAddedExisting": "Nenhum novo modelo foi adicionado (todos já existem).",
    "importDoneCount": "✓ Pronto! {count, plural, one {# model imported.} other {# models imported.}}",
    "unexpectedErrorOccurred": "Ocorreu um erro inesperado",
    "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}",
    "messagesPath": "mensagens",
    "responsesPath": "respostas",
    "chatCompletionsPath": "bate-papo/conclusões",
    "add": "Adicionar",
    "edit": "Editar",
    "delete": "Excluir",
    "anthropic": "Antrópico",
    "openai": "OpenAI",
    "singleConnectionPerCompatible": "Somente 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": "Configure o proxy para todas as conexões deste provedor",
    "providerProxy": "Proxy do 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 de tempo de execução",
    "statusAuthFailed": "falha na autenticação",
    "statusRateLimited": "taxa limitada",
    "statusNetworkIssue": "problema de rede",
    "statusTestUnsupported": "teste sem suporte",
    "statusUnavailable": "indisponível",
    "statusFailed": "falhou",
    "statusError": "erro",
    "oauthAccount": "Conta OAuth",
    "errorTypeRuntime": "Tempo de execução local",
    "errorTypeUpstreamAuth": "Autenticação upstream",
    "errorTypeMissingCredential": "Credencial ausente",
    "errorTypeRefreshFailed": "Falha na atualização",
    "errorTypeTokenExpired": "O token expirou",
    "errorTypeRateLimited": "Taxa limitada",
    "errorTypeUpstreamUnavailable": "Upstream indisponível",
    "errorTypeNetworkError": "Erro de rede",
    "errorTypeTestUnsupported": "Teste sem suporte",
    "errorTypeUpstreamError": "Erro de envio",
    "proxySourceGlobal": "Globais",
    "proxySourceProvider": "Provedor",
    "proxySourceKey": "Chave",
    "proxyConfiguredBySource": "Proxy ({source}): {host}",
    "autoPriority": "Automático: {priority}",
    "proxy": "Procurador",
    "retestAuthentication": "Testar novamente a autenticação",
    "retest": "Teste novamente",
    "disableConnection": "Desativar conexão",
    "enableConnection": "Habilitar conexão",
    "reauthenticateConnection": "Autentique novamente 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": "antrópico/claude-3-opus",
    "customModels": "Modelos personalizados",
    "customModelsHint": "Adicione IDs de modelo que não estão na lista padrão. Eles estarã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": "por exemplo 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 o modelo personalizado",
    "modelAddedSuccess": "Modelo {modelId} adicionado com sucesso",
    "failedAddModelTryAgain": "Falha ao adicionar modelo. Por favor, tente novamente.",
    "failedSaveImportedModel": "Falha ao salvar o modelo importado no banco de dados personalizado",
    "failedImportModelsTryAgain": "Falha ao importar modelos. Por favor, tente novamente.",
    "failedRemoveModelFromDatabase": "Falha ao remover o modelo do banco de dados",
    "modelRemovedSuccess": "Modelo removido com sucesso",
    "failedDeleteModelTryAgain": "Falha ao excluir modelo. Por favor, 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": "Falha na validação da chave de API. Verifique sua chave e tente novamente.",
    "addProviderApiKeyTitle": "Adicionar chave de API {provider}",
    "checking": "Verificando...",
    "check": "Verifique",
    "valid": "Válido",
    "invalid": "Inválido",
    "creating": "Criando...",
    "validationChecksAnthropicCompatible": "A validação verifica {provider} verificando a chave de API.",
    "validationChecksOpenAiCompatible": "A validação verifica {provider} via /models em seu URL base.",
    "priorityLabel": "Prioridade",
    "saving": "Salvando...",
    "save": "Salvar",
    "editConnection": "Editar conexão",
    "accountName": "Nome da conta",
    "email": "E-mail",
    "healthCheckMinutes": "Verificação de integridade (min)",
    "healthCheckHint": "Intervalo de atualização de token proativo. 0 = desabilitado.",
    "selectAllModels": "Selecionar todos",
    "deselectAllModels": "Desmarcar todos",
    "modelsActiveCount": "{active}/{total} ativos",
    "noModelsMatch": "Nenhum modelo corresponde a \"{filter}\"",
    "groupLabel": "Environment",
    "groupPlaceholder": "e.g. eKaizen, Personal",
    "failedTestConnection": "Falha ao testar a conexão",
    "failed": "Falha",
    "leaveBlankKeepCurrentApiKey": "Deixe em branco para manter a chave API atual.",
    "editCompatibleTitle": "Editar {type} Compatível",
    "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.",
    "apiKeyForCheck": "Chave API (para verificação)",
    "compatibleProdPlaceholder": "{type} Compatível (Produção)",
    "tokenRefreshed": "Token refreshed successfully",
    "tokenRefreshFailed": "Token refresh failed",
    "applyCodexAuthLocal": "Apply auth",
    "exportCodexAuthFile": "Export 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": "Codex auth.json applied locally",
    "codexAuthApplyFailed": "Failed to apply Codex auth.json locally",
    "codexAuthExported": "Codex auth.json exported",
    "codexAuthExportFailed": "Failed to export Codex auth.json",
    "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": "Account Id Hint",
    "accountIdLabel": "Account Id Label",
    "accountIdPlaceholder": "Account Id Placeholder",
    "addAnotherApiKey": "Add another API key or paste multiple keys",
    "addCcCompatible": "Add Cc Compatible",
    "aggregatorsGateways": "Aggregators Gateways",
    "enterpriseCloud": "Empresa e nuvem",
    "apiFormatLabel": "Api Format Label",
    "apiKeyOptionalHint": "Api Key Optional Hint",
    "apiKeyOptionalLabel": "Api Key Optional Label",
    "apiRegionChina": "Api Region China",
    "apiRegionHint": "Api Region Hint",
    "apiRegionInternational": "Api Region International",
    "apiRegionLabel": "Api Region Label",
    "apikey": "Apikey",
    "audio": "Audio",
    "audioProvidersHeading": "Audio Providers Heading",
    "cloudAgentProviders": "Provedores de agentes em nuvem",
    "audioShortLabel": "Audio Short Label",
    "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint",
    "bailianBaseUrlHint": "Bailian Base Url Hint",
    "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": "Blackbox Web Cookie Hint",
    "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder",
    "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": "Block Claude Extra Usage Description",
    "blockClaudeExtraUsageLabel": "Block Claude Extra Usage Label",
    "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}",
    "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}",
    "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.",
    "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint",
    "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder",
    "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint",
    "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description",
    "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label",
    "ccCompatibleDetailsTitle": "Cc Compatible Details Title",
    "ccCompatibleLabel": "Cc Compatible Label",
    "ccCompatibleModelsDescription": "Cc Compatible Models Description",
    "ccCompatibleNameHint": "Cc Compatible Name Hint",
    "ccCompatibleNamePlaceholder": "Cc Compatible Name Placeholder",
    "ccCompatiblePrefixHint": "Cc Compatible Prefix Hint",
    "ccCompatiblePrefixPlaceholder": "Cc Compatible Prefix Placeholder",
    "ccCompatibleValidationHint": "Cc Compatible Validation Hint",
    "claudeExtraUsageShort": "Claude Extra Usage Short",
    "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title",
    "codex5hToggleTitle": "Codex5H Toggle Title",
    "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.",
    "codexFastServiceTierLabel": "Codex fast service tier",
    "codexWeeklyToggleTitle": "Codex Weekly Toggle Title",
    "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder",
    "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder",
    "compatible": "Compatible",
    "configuredCount": "Configured Count",
    "consoleApiKeyOracleHint": "Console Api Key Oracle Hint",
    "consoleApiKeyOracleLabel": "Console Api Key Oracle Label",
    "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder",
    "cpaModeDisabledTitle": "Cpa Mode Disabled Title",
    "cpaModeEnabledTitle": "Cpa Mode Enabled Title",
    "customUserAgentHint": "Custom User Agent Hint",
    "customUserAgentLabel": "Custom User Agent Label",
    "databricksBaseUrlHint": "Databricks Base Url Hint",
    "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.",
    "defaultThinkingStrengthLabel": "Default thinking strength",
    "deleteAllExtraApiKeys": "Delete all",
    "excludedModelsHint": "Excluded Models Hint",
    "excludedModelsLabel": "Excluded Models Label",
    "excludedModelsPlaceholder": "Excluded Models Placeholder",
    "expirationBannerExpired": "Expiration Banner Expired",
    "expirationBannerExpiredDesc": "Expiration Banner Expired Desc",
    "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon",
    "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc",
    "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}",
    "extraApiKeysHint": "Extra Api Keys Hint",
    "extraApiKeysLabel": "Extra Api Keys Label",
    "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": "Google Pse Info",
    "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": "__MISSING__:Client profile",
    "antigravityClientProfileHint": "__MISSING__:Choose which Antigravity client identity OmniRoute presents to the API.",
    "antigravityClientProfileIde": "__MISSING__:IDE",
    "antigravityClientProfileHarness": "__MISSING__:Harness / CLI",
    "codexFastTierActiveChip": "__MISSING__:Codex Fast tier is active",
    "tierFast": "__MISSING__:Fast",
    "antigravityProjectIdLabel": "ID do projeto do Google Cloud",
    "antigravityProjectIdPlaceholder": "meu-gcp-project-id",
    "grokWebCookieHint": "Grok Web Cookie Hint",
    "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder",
    "herokuBaseUrlHint": "Heroku Base Url Hint",
    "hideEmail": "Hide Email",
    "imageProviders": "Image Providers",
    "videoProviders": "Geração de Vídeo",
    "embeddingRerankProviders": "Incorporações e reclassificação",
    "imagesShortLabel": "Images Short Label",
    "llmProviders": "Llm Providers",
    "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint",
    "localProviderBaseUrlHint": "Local Provider Base Url Hint",
    "localProviders": "Local Providers",
    "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error",
    "museSparkWebCookieHint": "Muse Spark Web Cookie Hint",
    "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder",
    "oauth": "Oauth",
    "openCliTools": "Open Cli Tools",
    "openSettings": "Open Settings",
    "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.",
    "openaiResponsesStoreLabel": "OpenAI Responses store",
    "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info",
    "perplexityWebCookieHint": "Perplexity Web Cookie Hint",
    "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder",
    "personalAccessTokenLabel": "Personal Access Token Label",
    "qoderPatHint": "Qoder Pat Hint",
    "qoderPatPlaceholder": "Qoder Pat Placeholder",
    "refreshOauthTokenTitle": "Refresh Oauth Token Title",
    "regionHint": "Region Hint",
    "regionLabel": "Region Label",
    "removeThisKey": "Remove This Key",
    "routingTagsHint": "Routing Tags Hint",
    "routingTagsLabel": "Routing Tags Label",
    "routingTagsPlaceholder": "Routing Tags Placeholder",
    "search": "Search",
    "searchEngineIdHint": "Search Engine Id Hint",
    "searchEngineIdLabel": "Search Engine Id Label",
    "searchEngineIdRequired": "Search Engine Id Required",
    "searchProvider": "Search Provider",
    "searchProviderDesc": "Search Provider Desc",
    "searchProviders": "Pesquisar fornecedores...",
    "searchProvidersHeading": "Search Providers Heading",
    "searxngBaseUrlHint": "Searxng Base Url Hint",
    "searxngInfo": "Searxng Info",
    "sessionCookieLabel": "Session Cookie Label",
    "showEmail": "Show Email",
    "snowflakeBaseUrlHint": "Snowflake Base Url Hint",
    "supportedEndpointAudio": "Supported Endpoint Audio",
    "supportedEndpointChat": "Supported Endpoint Chat",
    "supportedEndpointEmbeddings": "Supported Endpoint Embeddings",
    "supportedEndpointImages": "Supported Endpoint Images",
    "supportedEndpointsLabel": "Supported Endpoints Label",
    "tagGroupHint": "Tag Group Hint",
    "tagGroupLabel": "Tag Group Label",
    "tagGroupPlaceholder": "Tag Group Placeholder",
    "testModel": "Test Model",
    "testingModel": "Testing Model",
    "toggleOffShort": "Toggle Off Short",
    "toggleOnShort": "Toggle On Short",
    "tokenExpiredBadge": "Token Expired Badge",
    "tokenExpiredTitle": "Token Expired Title",
    "tokenExpiresSoonTitle": "Token Expires Soon Title",
    "tokenShort": "Token Short",
    "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}",
    "unhideModel": "Unhide Model",
    "upstreamProxyProviders": "Upstream Proxy Providers",
    "validationModelIdHint": "Validation Model Id Hint",
    "validationModelIdLabel": "Validation Model Id Label",
    "validationModelIdPlaceholder": "Validation Model Id Placeholder",
    "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token",
    "webCookieProviders": "Web Cookie Providers",
    "weeklyShort": "Weekly Short",
    "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint",
    "zedImportButton": "Zed Import Button",
    "zedImportFailed": "Zed Import Failed",
    "zedImportHint": "Zed Import Hint",
    "zedImportNetworkError": "Zed Import Network Error",
    "zedImportNone": "Zed Import None",
    "zedImportSuccess": "Zed Import Success",
    "zedImporting": "Zed Importing",
    "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 de IDE",
    "ideProvidersDesc": "Editores com assinatura de IA integrada. Use a página do provedor para importar credenciais diretamente das chaves do 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": "__MISSING__:Web Fetch",
    "webFetchTooltip": "__MISSING__:Providers that extract content from web URLs (HTML → Markdown, scrape, screenshot)",
    "webFetchProvidersHeading": "__MISSING__:Web Fetch Providers",
    "compatibleProvidersDesc": "__MISSING__:OpenAI-compatible and Anthropic-compatible endpoints you host or configure. Point any OpenAI SDK to your own URL and route requests here.",
    "oauthProvidersDesc": "__MISSING__:Providers authenticated via OAuth — sign in once and OmniRoute handles token rotation automatically.",
    "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": "__MISSING__:Standard API key providers. Add your key once and OmniRoute routes, retries, and rate-limits on your behalf.",
    "noAuthProvidersDesc": "__MISSING__:Open endpoints that require no credentials — ready to use immediately without any sign-up.",
    "upstreamProxyProvidersDesc": "__MISSING__:Route outbound traffic through an upstream proxy before it reaches the provider. Useful for corporate networks or traffic inspection.",
    "webFetchProvidersDesc": "__MISSING__:Providers that fetch and extract content from web URLs. Use them to ground prompts with live web data.",
    "aggregatorsGatewaysDesc": "__MISSING__:Multi-provider aggregators and AI gateways that expose a single unified API across dozens of underlying models.",
    "enterpriseCloudDesc": "__MISSING__:Enterprise-tier and cloud-hosted models with enhanced SLAs, compliance certifications, and dedicated capacity.",
    "cloudAgentProvidersDesc": "__MISSING__:Autonomous cloud agents that execute long-running tasks with plan approval and live status tracking.",
    "localProvidersDesc": "__MISSING__:Self-hosted models running on your own hardware. No data leaves your infrastructure.",
    "searchProvidersDesc": "__MISSING__:Web and document search providers. Attach them to LLM calls for Retrieval-Augmented Generation.",
    "audioProvidersDesc": "__MISSING__:Text-to-speech and speech-to-text providers for voice I/O and audio transcription pipelines.",
    "embeddingRerankProvidersDesc": "__MISSING__:Vector embedding and reranking providers for semantic search, RAG pipelines, and similarity scoring.",
    "imageProvidersDesc": "__MISSING__:Image generation and vision providers — create images from text or analyse existing ones.",
    "videoProvidersDesc": "__MISSING__:Video generation providers. Create short video clips from text prompts or images.",
    "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"
  },
  "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": "__MISSING__:Drop paragraph (contains)",
    "routingOpDropParagraphStartsWithLabel": "__MISSING__:Drop paragraph (starts with)",
    "routingOpReplaceTextLabel": "__MISSING__:Replace text",
    "routingOpReplaceRegexLabel": "__MISSING__:Replace regex",
    "routingOpDropBlockContainsLabel": "__MISSING__:Drop block (contains)",
    "routingOpPrependSystemBlockLabel": "__MISSING__:Prepend system block",
    "routingOpAppendSystemBlockLabel": "__MISSING__:Append system block",
    "routingOpInjectBillingHeaderLabel": "__MISSING__:Inject billing header",
    "routingOpObfuscateWordsLabel": "__MISSING__:Obfuscate words (ZWJ)",
    "routingOpDropParagraphContainsDesc": "__MISSING__:Removes any paragraph (text block split on blank lines) inside the system prompt whose text contains ANY of the listed substrings. Use to strip third-party client fingerprints like 'github.com/anomalyco/opencode' or 'docs.openwebui.com' that Anthropic's classifier flags.",
    "routingOpDropParagraphStartsWithDesc": "__MISSING__:Removes any paragraph that STARTS WITH one of the listed prefixes. Use for identity lines like 'You are OpenCode' or 'You are Open WebUI' that announce the calling client.",
    "routingOpReplaceTextDesc": "__MISSING__:Replaces a literal substring with another literal substring. Use for known trigger phrases — e.g. rewrite 'Here is some useful information about the environment you are running in:' to 'Environment context you are running in:' (an empirically-validated trigger phrase).",
    "routingOpReplaceRegexDesc": "__MISSING__:Replaces text matching a regular expression. Use when you need patterns (character classes, optional whitespace, anchors) instead of literal substrings. A malformed pattern is caught at runtime when the op runs.",
    "routingOpDropBlockContainsDesc": "__MISSING__:Removes ENTIRE system blocks (not just paragraphs) whose text contains any of the listed substrings. Use when a whole block is fingerprint-bearing and you want it gone — e.g. an injected MCP-server description.",
    "routingOpPrependSystemBlockDesc": "__MISSING__:Inserts a new text block at the FRONT of the system array. Use to add the SDK identity 'You are a Claude agent, built on Anthropic's Claude Agent SDK.' that Anthropic's classifier expects.",
    "routingOpAppendSystemBlockDesc": "__MISSING__:Inserts a new text block at the END of the system array. Use for cosmetic additions that don't need to be at position [0].",
    "routingOpInjectBillingHeaderDesc": "__MISSING__:Prepends the special 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' text block that Anthropic's classifier validates. Required for CC bridge relay endpoints; for the native claude provider OmniRoute already injects its own billing line so this op is usually redundant there.",
    "routingOpObfuscateWordsDesc": "__MISSING__:Inserts a Zero-Width-Joiner character after the first letter of each listed word, so 'opencode' becomes 'o‍pencode'. Reads identical to humans but bypasses classifier word matches. Targets system blocks, user/assistant messages, and tool descriptions.",
    "routingNeedlesHint": "__MISSING__:List of substrings. A paragraph matches if it contains ANY one of them. Add one per line via 'Add entry'.",
    "routingPrefixesHint": "__MISSING__:List of strings. A paragraph matches if it starts with any one of them (leading whitespace is trimmed before matching).",
    "routingCaseSensitiveHint": "__MISSING__:When ON, 'OpenCode' and 'opencode' are different strings. When OFF (default), the comparison ignores case.",
    "routingMatchLiteralHint": "__MISSING__:Exact literal substring to find. No regex syntax — special chars like . * ? are treated as themselves.",
    "routingReplacementTextHint": "__MISSING__:Replacement string. Leave blank to delete the match. The output preserves surrounding text.",
    "routingAllOccurrencesHint": "__MISSING__:When ON (default), every instance is replaced. When OFF, only the first match is replaced.",
    "routingPatternHint": "__MISSING__:JavaScript regex source. Don't wrap in slashes — just 'foo(.*)bar'. Server rejects patterns that fail to compile.",
    "routingRegexFlagsHint": "__MISSING__:JavaScript regex flags (g = all matches, i = case-insensitive, s = dot matches newline, m = multiline). Default 'g'.",
    "routingBlockTextHint": "__MISSING__:Full text of the new system block. Use a literal string; the system block stores text only.",
    "routingIdempotencyKeyHint": "__MISSING__:Optional. If set, the op skips when a block whose text starts with this key is already present. Prevents double-prepend on retries.",
    "routingBillingEntrypointHint": "__MISSING__:Value injected as 'cc_entrypoint='. Anthropic accepts 'sdk-cli' (Agent SDK), 'cli' (Claude Code CLI), or other documented values.",
    "routingBillingVersionFormatHint": "__MISSING__:How the 3-char build hash after cc_version= is computed. 'ex-machina' = sha256 of CCH_SALT+chars-from-first-user-msg+version (per-message). 'omniroute-daystamp' = sha256 of YYYY-MM-DD+version (stable per-day).",
    "routingBillingCchAlgoHint": "__MISSING__:How the 5-char cch= token is computed. 'sha256-first-user' = sha256 of first user message text. 'xxhash64-body' = body-level signing fills it later. 'static-zero' = literal '00000' placeholder.",
    "routingObfuscateWordsHint": "__MISSING__:Lowercase words to obfuscate. ZWJ insertion is applied case-insensitively, so 'opencode' also matches 'OpenCode' and 'OPENCODE'.",
    "routingObfuscateTargetsHint": "__MISSING__:Which body regions to scan for the words: system blocks, user/assistant messages, and/or tool descriptions.",
    "routingObfuscateTargetsLabel": "__MISSING__:Targets",
    "routingSummarizeDropParagraphContains": "__MISSING__:drop paragraphs containing: {items}",
    "routingSummarizeDropParagraphStartsWith": "__MISSING__:drop paragraphs starting with: {items}",
    "routingSummarizeReplaceText": "__MISSING__:replace \"{match}\" → \"{replacement}\"",
    "routingSummarizeReplaceRegex": "__MISSING__:regex /{pattern}/{flags} → \"{replacement}\"",
    "routingSummarizeDropBlockContains": "__MISSING__:drop blocks containing: {items}",
    "routingSummarizePrependSystemBlock": "__MISSING__:prepend block: \"{text}\"",
    "routingSummarizeAppendSystemBlock": "__MISSING__:append block: \"{text}\"",
    "routingSummarizeInjectBillingHeader": "__MISSING__:inject billing header (entrypoint={entrypoint}, version={versionFormat}, cch={cchAlgo})",
    "routingSummarizeObfuscateWords": "__MISSING__:obfuscate {count} word(s) via ZWJ in {targets}",
    "routingDefaultAutoVariantLKGP": "__MISSING__:Last Known Good Provider",
    "routingDefaultAutoVariantLKGPDesc": "__MISSING__:Last Known Good Provider",
    "routingDefaultAutoVariantCoding": "__MISSING__:Quality-first for code",
    "routingDefaultAutoVariantCodingDesc": "__MISSING__:Quality-first for code",
    "routingDefaultAutoVariantFast": "__MISSING__:Low-latency routing",
    "routingDefaultAutoVariantFastDesc": "__MISSING__:Low-latency routing",
    "routingDefaultAutoVariantCheap": "__MISSING__:Cost-optimized",
    "routingDefaultAutoVariantCheapDesc": "__MISSING__:Cost-optimized",
    "routingDefaultAutoVariantOffline": "__MISSING__:High availability",
    "routingDefaultAutoVariantOfflineDesc": "__MISSING__:High availability",
    "routingDefaultAutoVariantSmart": "__MISSING__:Best discovery (10% explore)",
    "routingDefaultAutoVariantSmartDesc": "__MISSING__:Best discovery (10% explore)",
    "routingOpSummaryCount": "__MISSING__:{count, plural, =0 {no ops} one {# op} other {# ops}}",
    "routingOpEnabled": "__MISSING__:enabled",
    "routingOpDisabled": "__MISSING__:disabled",
    "routingOpStatusSeparator": "__MISSING__: · ",
    "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": "Alerta do sistema",
    "thinkingBudget": "Pensando no orçamento",
    "proxy": "Procurador",
    "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 IP",
    "comboDefaults": "Padrões de combinação",
    "fallbackChains": "Cadeias substitutas",
    "changePassword": "Alterar senha",
    "enablePassword": "Habilitar 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": "Habilitar cache",
    "cacheTTL": "Cache TTL",
    "maxCacheSize": "Tamanho máximo do cache",
    "clearCache": "Limpar Cache",
    "cacheCleared": "Cache cleared successfully",
    "clearCacheFailed": "Failed to clear cache",
    "cacheHits": "Acessos de cache",
    "cacheMisses": "Perdas de cache",
    "hitRate": "Taxa de acerto",
    "cacheEntries": "Entradas de 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 Nova Tentativa",
    "maxRetries": "Máximo de tentativas",
    "retryDelay": "Atraso na nova tentativa",
    "timeoutMs": "Tempo limite (ms)",
    "enableSystemPrompt": "Habilitar prompt do sistema",
    "systemPromptText": "Texto de 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": "Habilite o pensamento",
    "maxThinkingTokens": "Tokens de pensamento máximo",
    "enableProxy": "Habilitar proxy",
    "proxyUrl": "URL proxy",
    "pricingRates": "Formato de taxas de preços",
    "currentPricing": "Visão geral de preços atuais",
    "loadingPricing": "Carregando dados de preços...",
    "noPricing": "Não há dados de preços disponíveis",
    "input": "Entrada",
    "output": "Saída",
    "cached": "Em cache",
    "reasoning": "Raciocínio",
    "cacheCreation": "Criação de Cache",
    "customPricing": "Preço personalizado",
    "databaseSize": "Tamanho do banco de dados",
    "backupDb": "Banco de dados de backup",
    "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": "Habilitar registros de solicitação",
    "logRetention": "Retenção de registros",
    "ipWhitelist": "Lista de permissões de IP",
    "ipBlacklist": "Lista negra de IP",
    "addIP": "Adicionar IP",
    "savedSuccessfully": "Configurações salvas com sucesso",
    "ai": "IA",
    "advanced": "Avançado",
    "localMode": "Modo Local — Todos os dados armazenados em sua máquina",
    "settingsSectionsAria": "Seções de configurações",
    "switchThemes": "Alternar entre temas claros e escuros",
    "themeSelectionAria": "Seleção de tema",
    "themeLight": "Luz",
    "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 registros de verificação de integridade",
    "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": "Liberar cache",
    "flushing": "Rubor…",
    "size": "Tamanho",
    "hits": "Acessos",
    "evictions": "Despejos",
    "loadingCacheStats": "Carregando estatísticas de cache…",
    "globalProxy": "Procurador global",
    "globalProxyDesc": "Configure um proxy de saída global para todas as chamadas de API. Provedores individuais, combos e chaves podem substituir isso.",
    "noGlobalProxy": "Nenhum proxy global configurado",
    "globalLabel": "Globais",
    "configure": "Configurar",
    "globalSystemPrompt": "Alerta do sistema global",
    "saved": "Salvo",
    "beforePromptLabel": "__MISSING__:Before Prompt",
    "beforePromptDesc": "__MISSING__:Injected before agent/provider system instructions",
    "beforePromptPlaceholder": "__MISSING__:Instructions inserted before agent/provider prompt...",
    "afterPromptLabel": "__MISSING__:After Prompt",
    "afterPromptDesc": "__MISSING__:Injected after agent/provider system instructions",
    "afterPromptPlaceholder": "__MISSING__:Instructions inserted after agent/provider prompt...",
    "chars": "{count} caracteres",
    "thinkingBudgetTitle": "Pensando no orçamento",
    "thinkingBudgetDesc": "Controle o uso do token de raciocínio de IA em todas as solicitações",
    "passthrough": "Passagem",
    "passthroughDesc": "Sem alterações – o cliente controla o orçamento pensado",
    "auto": "Auto Combo",
    "autoDesc": "Pool de roteamento inteligente (Otimizado)",
    "custom": "Personalizado",
    "customDesc": "Defina um orçamento fixo de tokens para todas as solicitações",
    "adaptive": "Adaptativo",
    "adaptiveDesc": "Dimensione o orçamento com base na complexidade da solicitação",
    "effortNone": "Nenhum (0 tokens)",
    "effortLow": "Baixo (tokens de 1K)",
    "effortMedium": "Médio (10 mil tokens)",
    "effortHigh": "Alto (128 mil tokens)",
    "tokenBudget": "Orçamento de token",
    "tokens": "fichas",
    "baseEffortLevel": "Nível de esforço básico",
    "adaptiveHint": "O modo adaptativo é dimensionado a partir desse nível básico com base na contagem de mensagens, no uso da ferramenta e no comprimento do prompt.",
    "requireLogin": "Exigir login",
    "requireLoginDesc": "Quando LIGADO, o painel requer senha. Quando DESLIGADO, acesse sem login.",
    "currentPassword": "Senha atual",
    "enterCurrentPassword": "Digite a senha atual",
    "newPassword": "Nova senha",
    "enterNewPassword": "Digite a nova senha",
    "confirmPassword": "Confirme a nova senha",
    "confirmPasswordPlaceholder": "Confirme a nova senha",
    "passwordsNoMatch": "As senhas não coincidem",
    "passwordUpdated": "Senha atualizada com sucesso",
    "failedUpdatePassword": "Falha ao atualizar a senha",
    "errorOccurred": "Ocorreu um erro",
    "updatePassword": "Atualizar senha",
    "setPassword": "Definir senha",
    "apiEndpointProtection": "Proteção de endpoint de API",
    "requireAuthModels": "Exigir chave de API para /models",
    "requireAuthModelsDesc": "Quando ativado, o endpoint /v1/models retorna 404 para solicitações não autenticadas. Impede a 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": "Oculte provedores específicos da resposta /v1/models. Os provedores bloqueados não aparecerão nas listagens de modelos.",
    "providersBlocked": "{count} provedor(es) bloqueado(s) em /models",
    "blockProviderTitle": "Bloquear {provider}",
    "unblockProviderTitle": "Desbloquear {provider}",
    "cliFingerprint": "CLI Fingerprint Matching",
    "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.",
    "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active",
    "enableFingerprintTitle": "Enable fingerprint for {provider}",
    "disableFingerprintTitle": "Disable fingerprint for {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": "Preencha primeiro",
    "fillFirstDesc": "Use contas em ordem de prioridade",
    "roundRobin": "Rodada Robin",
    "roundRobinDesc": "Percorrer todas as contas",
    "p2c": "P2C",
    "p2cDesc": "Escolha 2 aleatoriamente, use o mais saudável",
    "random": "Aleatório",
    "randomDesc": "Conta aleatória a cada solicitação",
    "leastUsed": "Menos usado",
    "leastUsedDesc": "Escolha a conta usada menos recentemente",
    "costOpt": "Opção de custo",
    "costOptDesc": "Prefira a 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": "Strict Random",
    "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling",
    "stickyLimit": "Limite pegajoso",
    "stickyLimitDesc": "Chamadas por conta antes de mudar",
    "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 Deteção",
    "newPattern": "ex: \"gerar um título\"",
    "aliasPatternPlaceholder": "claude-soneto-*",
    "aliasTargetPlaceholder": "claude-soneto-4-20250514",
    "pattern": "Padrão",
    "targetModel": "Modelo alvo",
    "add": "+ Adicionar",
    "session": "Sessão",
    "sessionDetailsAria": "Detalhes da sessão",
    "status": "Estado",
    "authenticated": "Autenticado",
    "guest": "Convidado",
    "loginTime": "Hora de login",
    "sessionAge": "Idade 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 IP",
    "ipAccessControlDesc": "Bloquear ou permitir endereços IP específicos",
    "ipModeDisabled": "Desativado",
    "ipModeBlacklist": "Lista negra",
    "ipModeWhitelist": "Lista de permissões",
    "ipModeWhitelistPriority": "Prioridade WL",
    "addIpAddress": "Adicionar endereço IP",
    "ipAddressPlaceholder": "192.168.1.0/24 ou 10.0.*.*",
    "block": "+ Bloquear",
    "allow": "+ Permitir",
    "blocked": "Bloqueado ({count})",
    "allowed": "Permitido ({count})",
    "temporaryBans": "Banimentos temporários ({count})",
    "minLeft": "{min}m restantes",
    "auditLog": "Registro de auditoria",
    "searchAuditLogs": "Pesquisar registros de auditoria...",
    "failedLoadAuditLog": "Falha ao carregar o log de auditoria",
    "noAuditEvents": "Nenhum evento de auditoria encontrado",
    "action": "Ação",
    "actor": "Ator",
    "details": "Detalhes",
    "time": "Hora",
    "fallbackChainsTitle": "Cadeias substitutas",
    "fallbackChainsDesc": "Definir ordem de fallback do provedor por modelo",
    "addChain": "+ Adicionar corrente",
    "modelName": "Nome do modelo",
    "modelNamePlaceholder": "claude-soneto-4-20250514",
    "providersCommaSeparated": "Provedores (separados por vírgula, em ordem de prioridade)",
    "providersCommaSeparatedPlaceholder": "antrópico, openai, gêmeos",
    "createChain": "Criar cadeia",
    "noFallbackChains": "Sem cadeias de fallback",
    "noFallbackChainsDesc": "Crie uma cadeia para definir a ordem de fallback do provedor para um modelo.",
    "loadingFallbackChains": "Carregando cadeias de fallback...",
    "deleteChainConfirm": "Excluir cadeia substituta para \"{model}\"?",
    "chainCreated": "Cadeia criada para {model}",
    "chainDeleted": "Cadeia excluída para {model}",
    "failedCreateChain": "Falha ao criar cadeia",
    "failedDeleteChain": "Falha ao excluir a cadeia",
    "deleteChain": "Excluir cadeia",
    "fillModelAndProviders": "Preencha o nome do modelo e os fornecedores",
    "addAtLeastOneProvider": "Adicione pelo menos um provedor",
    "comboDefaultsTitle": "Padrões de combinação",
    "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 de combinação global",
    "defaultStrategy": "Estratégia padrão",
    "defaultStrategyDesc": "Aplicado a novos combos sem estratégia explícita",
    "comboStrategyAria": "Estratégia combinada",
    "priority": "Prioridade",
    "weighted": "Ponderado",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Hands off context between providers with automatic summarization",
    "maxRetriesLabel": "Máximo de tentativas",
    "retryDelayLabel": "Atraso de nova tentativa (ms)",
    "timeoutLabel": "Tempo limite (ms)",
    "healthCheck": "Verificação de saúde",
    "healthCheckDesc": "Verifique previamente a disponibilidade do provedor",
    "trackMetrics": "Rastrear métricas",
    "trackMetricsDesc": "Registrar métricas de solicitação por combinação",
    "providerOverrides": "Substituições de provedor",
    "providerOverridesDesc": "Substitua o tempo limite e novas tentativas por provedor. As configurações do provedor substituem os padrões globais.",
    "providerMaxRetriesAria": "{provider} máximo de novas tentativas",
    "providerTimeoutAria": "{provider} tempo limite ms",
    "removeProviderOverrideAria": "Remover substituição de {provider}",
    "newProviderNamePlaceholder": "por exemplo google, abraai...",
    "newProviderNameAria": "Novo nome do provedor",
    "retries": "novas tentativas",
    "ms": "senhora",
    "saveComboDefaults": "Salvar padrões de combinação",
    "maxNestingDepth": "Profundidade máxima de aninhamento",
    "concurrencyPerModel": "Simultaneidade/Modelo",
    "queueTimeout": "Tempo limite da fila (ms)",
    "contextRelayHandoffThreshold": "Handoff Threshold",
    "contextRelayMaxMessages": "Max Messages For Summary",
    "contextRelaySummaryModel": "Summary Model",
    "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.",
    "providerProfiles": "Perfis de Provedores",
    "providerProfilesDesc": "Configurações de resiliência separadas para provedores OAuth (baseado em sessão) e chave de API (medida). Os provedores OAuth têm limites mais rígidos devido aos limites de taxas mais baixos.",
    "oauthProviders": "Provedores OAuth",
    "apiKeyProviders": "Provedores de chaves de API",
    "transientCooldown": "Recarga transitória",
    "rateLimitCooldown": "Recarga do Limite de Taxa",
    "maxBackoffLevel": "Nível máximo de espera",
    "cbThreshold": "Limite CB",
    "cbResetTime": "Tempo de reinicialização do CB",
    "rateLimiting": "Limitação de taxa",
    "rateLimitingDesc": "Os provedores de chaves de API são automaticamente limitados por taxas com padrões seguros. Os limites são aprendidos nos cabeçalhos de resposta e se adaptam ao longo do tempo.",
    "defaultSafetyNet": "Rede de segurança padrão",
    "rpm": "RPM",
    "minGap": "Intervalo mínimo",
    "maxConcurrent": "Máximo simultâneo",
    "activeLimiters": "Limitadores Ativos",
    "noActiveLimiters": "Ainda não há limitadores de taxa ativos.",
    "reservoir": "Reservatório",
    "running": "Correndo",
    "queued": "Na fila",
    "circuitBreakers": "Disjuntores",
    "breakerStateClosed": "Fechado",
    "breakerStateOpen": "Abrir",
    "breakerStateHalfOpen": "Meio aberto",
    "tripped": "{count} tropeçou",
    "healthy": "{count} íntegro",
    "resetAll": "Redefinir tudo",
    "noCircuitBreakers": "Nenhum disjuntor ativo ainda. Eles são criados automaticamente quando as solicitações fluem pelo pipeline combinado.",
    "failures": "{count} falha(s)",
    "policiesLocked": "Políticas e identificadores bloqueados",
    "allOperational": "Todos os sistemas operacionais – sem bloqueios ou disjuntores desarmados",
    "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 o status de resiliência",
    "saveFailed": "Falha ao salvar",
    "resetFailed": "Falha na redefinição",
    "loadingResilience": "Carregando status de resiliência...",
    "retry": "Tentar novamente",
    "systemStorage": "Sistema e armazenamento",
    "allDataLocal": "Todos os dados armazenados localmente em 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 de dados",
    "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": "Ainda não há backup",
    "backupNow": "Faça backup agora",
    "backupRestore": "Backup e restauração",
    "viewBackups": "Ver backups",
    "hide": "Esconder",
    "backupRetentionDesc": "Os instantâneos do banco de dados são criados automaticamente antes da restauração e a cada 15 minutos quando os dados são alterados. Retenção: 24 horas + 30 backups diários com rotação inteligente.",
    "loadingBackups": "Carregando backups...",
    "noBackupsYet": "Nenhum backup disponível ainda. Os backups serão criados automaticamente quando os dados forem alterados.",
    "backupsAvailable": "{count} backup(s) disponíveis",
    "refresh": "Atualizar",
    "confirm": "Confirmar?",
    "yes": "Sim",
    "no": "Não",
    "restore": "Restaurar",
    "invalidFileType": "Tipo de arquivo inválido. Somente 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 de dados 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 {# connection} other {# connections}}",
    "noChangesSinceBackup": "Nenhuma alteração 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ço do modelo",
    "modelPricingDesc": "Configurar taxas de custo por modelo • Todas as taxas em tokens de US$/1 milhão",
    "registry": "Registro",
    "priced": "Preço",
    "searchProvidersModels": "Pesquise fornecedores ou modelos...",
    "showAll": "Mostrar tudo",
    "noProvidersMatch": "Nenhum provedor corresponde à sua pesquisa.",
    "howPricingWorks": "Como funciona o preço",
    "cacheWrite": "Gravação em cache",
    "unsaved": "não salvo",
    "resetDefaults": "Redefinir padrões",
    "saveProvider": "Salvar provedor",
    "model": "Modelo",
    "models": "modelos",
    "moreProviders": "{count} mais provedores",
    "withPricing": "com preços configurados",
    "policiesCircuitBreakers": "Políticas e disjuntores",
    "activeIssuesDetected": "Problemas ativos detectados",
    "off": "Desligado",
    "resetPricingConfirm": "Redefinir todos os preços de {provider} para os padrões?",
    "pricingDescInput": "Entrada: tokens enviados ao modelo",
    "pricingDescOutput": "Saída: tokens gerados",
    "pricingDescCached": "Armazenado em cache: entrada reutilizada (~50% da taxa de entrada)",
    "pricingDescReasoning": "Raciocínio: tokens de pensamento (volta para Saída)",
    "pricingDescCacheWrite": "Cache Write: criando entradas de cache (volta para Input)",
    "pricingDescFormula": "Custo = (entrada × taxa_de_entrada) + (saída × taxa_de_saída) + (em cache × taxa_de_cache) por milhão de tokens.",
    "pricingSettingsTitle": "Configurações de preços",
    "totalModels": "Modelos totais",
    "active": "Ativo",
    "costCalculation": "Cálculo de custos",
    "costCalculationDesc": "Os custos são calculados com base no uso do token e nas taxas de preços configuradas para cada modelo.",
    "pricingFormat": "Formato de preços",
    "pricingFormatDesc": "Todas as taxas são em tokens de US$/1 milhão (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 entrada armazenados em cache (normalmente 50% da taxa de entrada)",
    "reasoningTokenDesc": "Tokens especiais de raciocínio/pensamento (substituição para taxa de produção)",
    "cacheCreationTokenDesc": "Tokens usados para criar entradas de cache (fallback para taxa de entrada)",
    "customPricingNote": "Você pode substituir o preço padrão de modelos específicos. As substituições personalizadas têm prioridade sobre os 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": "Unknown Error",
    "pricingSourceLiteLLM": "Pricing Source Lite Llm",
    "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm",
    "clearSyncedPricingFailed": "Clear Synced Pricing Failed",
    "pricingSourceUser": "Pricing Source User",
    "pageDescription": "Page Description",
    "pricingSyncStatus": "Pricing Sync Status",
    "whitelist": "Whitelist",
    "syncDisabled": "Sync Disabled",
    "pricingLoadFailed": "Pricing Load Failed",
    "pricingSyncDescription": "Pricing Sync Description",
    "clearSyncedPricingSuccess": "Clear Synced Pricing Success",
    "clearSyncedPricingFailedWithReason": "Falha ao limpar o preço: {reason}",
    "pricingSourceDefault": "Pricing Source Default",
    "pricingSyncSuccess": "Pricing Sync Success",
    "enableSyncError": "Enable Sync Error",
    "syncEnabled": "Sync Enabled",
    "blacklist": "Blacklist",
    "pricingSourceModelsDev": "Pricing Source Models Dev",
    "syncedModels": "Synced Models",
    "budget": "Budget",
    "pricingSyncTitle": "Pricing Sync Title",
    "pricingResetFailedWithReason": "Falha ao redefinir o preço: {reason}",
    "tab": "Tab",
    "pricingSavedProvider": "Preço salvo para {provider}",
    "pricingSyncFailed": "Pricing Sync Failed",
    "pricingSaveFailedWithReason": "Falha ao salvar o preço: {reason}",
    "pricingResetProvider": "Redefinição de preços para {provider}",
    "nextSync": "Next Sync",
    "pricingSyncFailedWithReason": "Falha na sincronização de preços: {reason}",
    "clearSyncedPricing": "Clear Synced Pricing",
    "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": "__MISSING__:Control whether OmniRoute reuses only stored Gemini thought signatures or accepts validated client-provided signatures in Antigravity-compatible tool-call flows.",
    "routingAntigravitySignatureEnabledLabel": "__MISSING__:Enabled",
    "routingAntigravitySignatureEnabledDesc": "__MISSING__:Current behavior. Ignore client-provided signatures and keep using the stored OmniRoute flow.",
    "routingAntigravitySignatureBypassLabel": "__MISSING__:Bypass",
    "routingAntigravitySignatureBypassDesc": "__MISSING__:Accept client-provided signatures after lightweight validation and fall back to the stored signature when invalid.",
    "routingAntigravitySignatureBypassStrictLabel": "__MISSING__:Bypass Strict",
    "routingAntigravitySignatureBypassStrictDesc": "__MISSING__:Require full protobuf validation before accepting a client-provided signature.",
    "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": "__MISSING__:Configure whether OmniRoute preserves client-provided cache_control markers",
    "routingClientCacheControlAutoDesc": "__MISSING__:For deterministic Claude-compatible flows, preserve client-provided cache_control as-is. If the request has no cache_control, OmniRoute does not inject any bridge-owned markers for CC-compatible third-party proxy compatibility.",
    "routingClientCacheControlAlwaysLabel": "__MISSING__:Always Preserve",
    "routingClientCacheControlAlwaysDesc": "__MISSING__:Always forward client-provided cache_control headers to upstream providers as-is.",
    "routingClientCacheControlNeverLabel": "__MISSING__:Never Preserve",
    "routingClientCacheControlNeverDesc": "__MISSING__:Always remove client cache_control headers and let OmniRoute manage caching where native provider flows support it.",
    "routingZeroConfigTitle": "Roteamento automático de configuração zero",
    "routingZeroConfigDesc": "__MISSING__:Enable automatic provider selection using the auto/ prefix. When enabled, requests to auto, auto/coding, auto/fast, etc. will dynamically route across all connected providers.",
    "routingDefaultAutoVariant": "Variante automática padrão",
    "visionBridge": "Ponte da Visão",
    "visionBridgeDesc": "__MISSING__:Run an automatic vision-to-text fallback before routing image requests to text-only models.",
    "visionBridgeEnabledLabel": "__MISSING__:Enabled",
    "visionBridgeEnabledDesc": "__MISSING__:Toggle the pre-call bridge that replaces image parts with extracted text.",
    "visionBridgeModel": "Modelo de ponte",
    "visionBridgeModelPlaceholder": "openai/gpt-4o-mini",
    "visionBridgeModelHint": "__MISSING__:Any OmniRoute model ID that supports vision can be used here.",
    "visionBridgePrompt": "Alerta de ponte",
    "visionBridgePromptPlaceholder": "Descreva esta imagem de forma concisa.",
    "visionBridgePromptHint": "__MISSING__:Sent to the vision model before the extracted description is injected back into the original request.",
    "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": "__MISSING__:Configure request payload mutations by model and protocol. Changes are persisted in settings and hot reloaded into the runtime immediately after save.",
    "payloadRuleDefaultTitle": "__MISSING__:default",
    "payloadRuleDefaultDesc": "__MISSING__:Applies params only when the target path is missing from the outgoing payload.",
    "payloadRuleOverrideTitle": "__MISSING__:override",
    "payloadRuleOverrideDesc": "__MISSING__:Forces values onto the payload, replacing anything already present at that path.",
    "payloadRuleFilterTitle": "__MISSING__:filter",
    "payloadRuleFilterDesc": "__MISSING__:Removes blocked params from the payload before the upstream request is sent.",
    "payloadRuleDefaultRawTitle": "__MISSING__:defaultRaw",
    "payloadRuleDefaultRawDesc": "__MISSING__:Like default, but string values are parsed as JSON first when possible. The legacy input alias default-raw is also accepted on save.",
    "payloadEditorTitle": "__MISSING__:Editor",
    "payloadEditorDesc": "__MISSING__:Use the runtime schema shape: default, override, filter, defaultRaw. The API also accepts the legacy input key default-raw.",
    "payloadEditorReady": "__MISSING__:Ready",
    "payloadResetInfo": "__MISSING__:Editor reset to the neutral template. Save to apply it.",
    "payloadSaveSuccess": "__MISSING__:Payload rules saved and hot reloaded.",
    "payloadJsonParseError": "__MISSING__:JSON parse error: {error}",
    "payloadMustBeObject": "__MISSING__:Payload rules must be a JSON object.",
    "payloadInvalidJson": "__MISSING__:Invalid JSON payload.",
    "payloadValidJsonRequired": "__MISSING__:Payload rules must be valid JSON before saving.",
    "savePayloadRules": "__MISSING__:Save Payload Rules",
    "requestLimitsTitle": "__MISSING__:Request Limits",
    "requestLimitsDesc": "__MISSING__:Configure global request limits and concurrency guards.",
    "maxRequestSizeLabel": "__MISSING__:Max Request Size (MB)",
    "maxRequestSizeDesc": "__MISSING__:Maximum allowed size for incoming API requests.",
    "maxResponseSizeLabel": "__MISSING__:Max Response Size (MB)",
    "maxResponseSizeDesc": "__MISSING__:Maximum allowed size for outgoing API responses.",
    "maxRequestTokensLabel": "__MISSING__:Max Request Tokens",
    "maxRequestTokensDesc": "__MISSING__:Maximum total tokens allowed in a single request.",
    "maxResponseTokensLabel": "__MISSING__:Max Response Tokens",
    "maxResponseTokensDesc": "__MISSING__:Maximum total tokens allowed in a single response.",
    "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": "__MISSING__:Service tier",
    "codexFastTierTierPriority": "__MISSING__:Priority",
    "codexFastTierTierFlex": "__MISSING__:Flex",
    "codexFastTierTierDefault": "__MISSING__:Default",
    "codexFastTierModelsLabel": "__MISSING__:Fast-tier models",
    "codexFastTierModelsHint": "__MISSING__:Only checked models receive service_tier when Fast Tier is enabled.",
    "codexFastTierModelCheckbox": "__MISSING__:Enable Fast Tier for {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": "__MISSING__:Authz Inventory",
      "description": "__MISSING__:5-tier route classification with live bypass policy. Read shows the full taxonomy; mutations re-prompt for the management password.",
      "loading": "__MISSING__:Loading inventory…",
      "loadError": "__MISSING__:Failed to load authz inventory",
      "tier": {
        "LOCAL_ONLY": "__MISSING__:Local only",
        "ALWAYS_PROTECTED": "__MISSING__:Always protected",
        "MANAGEMENT": "__MISSING__:Management",
        "CLIENT_API": "__MISSING__:Client API",
        "PUBLIC": "__MISSING__:Public"
      },
      "bypass": {
        "section": "__MISSING__:Manage-scope bypass",
        "kill_switch": {
          "label": "__MISSING__:Bypass kill-switch",
          "desc": "__MISSING__:Master toggle. When off, no LOCAL_ONLY prefix is reachable from non-loopback regardless of the per-prefix list."
        },
        "prefix": {
          "label": "__MISSING__:Bypassable prefixes",
          "desc": "__MISSING__:LOCAL_ONLY prefixes that manage-scope API keys (or dashboard sessions) may reach from non-loopback hosts.",
          "add": "__MISSING__:Add prefix",
          "placeholder": "__MISSING__:/api/mcp/v2/",
          "empty": "__MISSING__:No prefixes configured. Bypass effectively off."
        },
        "cli_tools_runtime_note": "__MISSING__:Spawn-capable prefix. Compile-time deny; cannot be made bypassable. Shown read-only."
      },
      "password": {
        "prompt": {
          "label": "__MISSING__:Current password",
          "desc": "__MISSING__:Re-confirm to apply security-impacting changes."
        },
        "placeholder": "__MISSING__:Current management password",
        "cancel": "__MISSING__:Cancel",
        "submit": "__MISSING__:Apply"
      },
      "save": "__MISSING__:Save changes",
      "saved": "__MISSING__:Authz settings updated",
      "pending": "__MISSING__:Unsaved changes",
      "badge": {
        "bypassable": "__MISSING__:Bypassable via manage scope",
        "strict": "__MISSING__:Strict loopback",
        "auth_required": "__MISSING__:Auth required",
        "public": "__MISSING__:Public",
        "always_protected": "__MISSING__:Always protected",
        "spawn_capable": "__MISSING__:Spawn-capable"
      },
      "error": {
        "PASSWORD_REQUIRED": "__MISSING__:Current password required to apply these changes.",
        "PASSWORD_MISMATCH": "__MISSING__:Current password is incorrect.",
        "INSUFFICIENT_SCOPE": "__MISSING__:API key lacks the manage scope.",
        "BYPASS_PREFIX_NOT_ALLOWED": "__MISSING__:One or more prefixes target spawn-capable routes and cannot be bypassed.",
        "GENERIC": "__MISSING__:Failed to update authz settings."
      }
    },
    "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": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.",
    "forcedFingerprintBadge": "Required",
    "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": "__MISSING__:Vercel Relay deployed successfully",
    "vercelRelayButton": "__MISSING__:Deploy Vercel Relay",
    "vercelRelayModalTitle": "__MISSING__:Deploy Vercel Relay",
    "vercelRelayWarning": "__MISSING__:Warning: A Vercel deployment token is required. This token will only be used to create the serverless relay and will never be stored by OmniRoute.",
    "vercelRelayTokenLabel": "__MISSING__:Vercel Access Token",
    "vercelRelayProjectNameLabel": "__MISSING__:Vercel Project Name",
    "vercelRelayFreeTierNote": "__MISSING__:Relays are lightweight proxy endpoints deployed on Vercel's free tier to bypass local network/region limitations.",
    "vercelRelayDeploying": "__MISSING__:Deploying...",
    "vercelRelayDeploy": "__MISSING__:Deploy",
    "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."
  },
  "contextRtk": {
    "title": "RTK Engine",
    "description": "Command-aware compression for tool output, terminal logs and build results.",
    "enabled": "Enabled",
    "intensity": "Intensity",
    "intensityMinimal": "Minimal",
    "intensityStandard": "Standard",
    "intensityAggressive": "Aggressive",
    "toolResults": "Tool results",
    "assistantMessages": "Assistant messages",
    "codeBlocks": "Code blocks",
    "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 lines",
    "maxChars": "Max chars",
    "deduplicateThreshold": "Limite de desduplicação",
    "customFilters": "Filtros personalizados",
    "detectedType": "Tipo detectado",
    "confidence": "Confiança",
    "beforeAfter": "Antes / Depois",
    "trustProjectFilters": "Confiar nos filtros do projeto",
    "rawOutputRetention": "Retenção de saída bruta",
    "rawOutputNever": "Nunca",
    "rawOutputFailures": "Falhas",
    "rawOutputAlways": "Sempre",
    "rawOutputMaxBytes": "Máximo de bytes de saída bruta",
    "filterTesting": "Filter Testing",
    "pasteOutput": "Paste tool output to test filtering...",
    "presetHigh": "Agressivo",
    "presetLow": "Luz",
    "presetMaxChars": "Máximo de caracteres de saída",
    "presetMaxLines": "Máximo de linhas de saída",
    "presetMedium": "Padrão",
    "run": "Run",
    "result": "Result",
    "previewEmpty": "Run a sample to preview RTK output.",
    "detected": "Detected",
    "masterSwitchOffAlert": "__MISSING__:Token Saver master switch is OFF — these settings will not affect requests until you turn it on from the Endpoint page.",
    "tokensFiltered": "Tokens filtered",
    "filtersActive": "Filters active",
    "requests": "Requests",
    "avgSavings": "Avg savings",
    "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."
  },
  "contextCombos": {
    "title": "Compression Combos",
    "description": "Define how engines are combined for different routing scenarios.",
    "createCombo": "Create Compression Combo",
    "editCombo": "Edit",
    "deleteCombo": "Delete",
    "deleteConfirm": "Delete this compression combo?",
    "pipeline": "Pipeline",
    "addStep": "Add Step",
    "removeStep": "Remove",
    "name": "Name",
    "descriptionField": "Description",
    "languagePacks": "Language Packs",
    "outputMode": "Output Mode",
    "assignToRouting": "Assign to Routing Combos",
    "noAssignments": "No routing combos available",
    "default": "Default",
    "setAsDefault": "Set as Default",
    "save": "Save",
    "cancel": "Cancel",
    "enabled": "Enabled"
  },
  "contextCaveman": {
    "title": "Caveman Engine",
    "description": "Rule-based message compression, language packs, analytics and output mode controls.",
    "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 saved",
    "savingsPercent": "Savings %",
    "avgLatency": "Avg latency",
    "languagePacks": "Language Packs",
    "languagePacksDesc": "Enable compression rules for specific languages.",
    "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": "Enabled",
    "autoDetect": "Auto-detect language",
    "rulesCount": "{count} rules",
    "inputCompressionTitle": "__MISSING__:Input compression",
    "inputCompressionDesc": "__MISSING__:Rewrite chat history with shorter wording. Reduces input tokens by ~50%.",
    "analyticsTitle": "Compression Analytics",
    "noAnalytics": "No compression analytics yet.",
    "outputMode": "Modo de saída",
    "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.",
    "outputModeTitle": "Output Mode",
    "quickSettings": "Configurações rápidas",
    "quickSettingsDesc": "Configurações básicas de compactação para começar",
    "autoClarity": "Auto-Clarity Bypass",
    "bypassConditions": "Bypass conditions",
    "bypassConditionsList": "de segurança, irreversível, de esclarecimento, sensível à 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": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.",
      "full": "Respond terse and compact. Preserve all technical substance.",
      "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols."
    }
  },
  "translator": {
    "title": "Tradutor",
    "metaTitle": "Parque do Tradutor | OmniRoute",
    "metaDescription": "Depure, teste e visualize traduções de formatos de API entre provedores",
    "playgroundTitle": "Parque do Tradutor",
    "playground": "Parque infantil",
    "realtime": "Atividade de tradução em tempo real",
    "chatTester": "Testador de bate-papo",
    "testBench": "Bancada de testes",
    "liveMonitor": "Monitoramento ao vivo",
    "modeDescriptionPlayground": "Cole qualquer corpo de solicitação de API e veja como o OmniRoute o traduz entre formatos de provedor (OpenAI ↔ Claude ↔ Gemini ↔ API de respostas)",
    "modeDescriptionChatTester": "Envie solicitações de chat reais por meio do OmniRoute e inspecione todo o percurso: entrada, solicitação traduzida, resposta do provedor e saída traduzida.",
    "modeDescriptionTestBench": "Execute cenários predefinidos e compare a compatibilidade entre provedores e modelos.",
    "modeDescriptionLiveMonitor": "Assista a eventos de tradução em tempo real à medida que as solicitações fluem pelo OmniRoute.",
    "modeDescriptionFallback": "Depure, teste e visualize como o OmniRoute traduz solicitações de API entre provedores.",
    "recentTranslations": "Traduções recentes",
    "noTranslations": "Ainda não há traduções",
    "source": "Fonte",
    "target": "Alvo",
    "time": "Hora",
    "model": "Modelo",
    "status": "Estado",
    "latency": "Latência",
    "totalTranslations": "Total de traduções",
    "successful": "Bem sucedido",
    "errors": "Erros",
    "avgLatency": "Latência média",
    "millisecondsShort": "{value}ms",
    "notAvailableSymbol": "—",
    "liveAutoRefreshing": "Ao vivo – atualização automática",
    "paused": "Pausado",
    "eventsAppearHint": "Os eventos de tradução aparecem aqui conforme as solicitações fluem pelo OmniRoute. Use qualquer um destes métodos para gerar eventos:",
    "chatTesterTab": "Guia Testador de bate-papo",
    "testBenchTab": "Aba Bancada de Teste",
    "externalApiCalls": "Chamadas de API externas",
    "ideCliIntegrations": "Integrações IDE/CLI",
    "inMemoryNote": "Nota: Os eventos são armazenados na memória e redefinidos quando o servidor é reiniciado.",
    "ok": "OK",
    "errorShort": "ERRO",
    "formatConverter": "Conversor de formato",
    "formatConverterDescription": "Cole ou digite um corpo de solicitação JSON. O tradutor detectará automaticamente o formato de origem e o converterá para o formato de destino. Use isto para depurar como o OmniRoute traduz solicitações entre formatos (OpenAI ↔ Claude ↔ Gemini ↔ API de respostas).",
    "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": "Automático",
    "swapFormats": "Trocar formatos",
    "translateAction": "Traduzir",
    "clear": "Limpar",
    "inputPlaceholder": "Cole o corpo da solicitação aqui ou selecione um modelo abaixo...",
    "exampleTemplates": "Modelos de exemplo",
    "exampleTemplatesHint": "- Clique para carregar",
    "templateLoadHint": "O modelo carrega a solicitação no formato {format}. Altere o formato de origem para carregar em um formato diferente.",
    "compatibilityTester": "Testador de compatibilidade",
    "compatibilityReport": "Relatório de compatibilidade",
    "testBenchDescription": "Execute cenários predefinidos (Simple Chat, Tool Calling, etc.) para verificar a tradução e a compatibilidade do provedor. Selecione um formato de origem e um provedor de destino e execute todos os testes para ver uma porcentagem de compatibilidade. Use isso para descobrir quais recursos funcionam entre os provedores.",
    "targetProvider": "Provedor de destino",
    "runAllTests": "Execute todos os testes",
    "runTest": "Executar teste",
    "reRun": "Executar novamente",
    "running": "Correndo...",
    "passed": "passou",
    "failed": "falhou",
    "passedIconLabel": "✅ Aprovado",
    "chunks": "pedaços",
    "scenarioSimpleChat": "Bate-papo simples",
    "scenarioToolCalling": "Chamada de ferramenta",
    "scenarioMultiTurn": "Multivoltas",
    "scenarioThinking": "Pensando",
    "scenarioSystemPrompt": "Alerta do sistema",
    "scenarioStreaming": "Transmissão",
    "templateNames": {
      "simple-chat": "Bate-papo simples",
      "tool-calling": "Chamada de ferramenta",
      "multi-turn": "Multivoltas",
      "thinking": "Pensando",
      "system-prompt": "Alerta do sistema",
      "streaming": "Transmissão",
      "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ória",
      "thinking": "Pensamento/raciocínio estendido",
      "system-prompt": "Instruções complexas do sistema",
      "streaming": "Solicitaçã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 útil.",
        "userGreeting": "Olá! Como você está hoje?"
      },
      "toolCalling": {
        "userWeather": "Como está o clima em São Paulo?",
        "toolDescription": "Obtenha o clima atual para um local",
        "cityNameDescription": "Nome da cidade"
      },
      "multiTurn": {
        "system": "Você é um assistente de codificação.",
        "userInitial": "Escreva uma função para classificar um array em Python.",
        "assistantExample": "Aqui está uma função de classificação simples:\n\n```píton\ndef sort_array(arr):\n    retornar classificado (arr)\n```",
        "userFollowUp": "Agora classifique em ordem decrescente."
      },
      "thinking": {
        "question": "Qual é a soma dos primeiros 100 números primos?"
      },
      "systemPrompt": {
        "systemInstruction": "Você é um engenheiro de software sênior especializado em sistemas distribuídos. Responda às perguntas de forma concisa usando as melhores práticas do setor. Sempre forneça exemplos de código quando relevante. Formate suas respostas usando markdown.",
        "question": "Como faço para implementar um padrão de disjuntor?"
      },
      "streaming": {
        "prompt": "Conte-me uma pequena história 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 Antrópico",
    "noTemplateForFormat": "Nenhum modelo para este formato",
    "translationFailed": "Falha na tradução: {error}",
    "pipelineDebugger": "Depurador de pipeline",
    "translationPipeline": "Pipeline de Tradução",
    "pipelineVisualization": "Visualização de pipeline",
    "pipelineVisualizationHint": "Envie uma mensagem para ver como sua solicitação flui através de detecção → tradução → chamada do provedor.",
    "chatTesterDescription": "Envie mensagens em um formato de cliente específico e inspecione cada etapa do pipeline de tradução.",
    "chatTesterFlow": "Solicitação do cliente → Detecção de formato → OpenAI Intermediário → Formato do provedor → Resposta",
    "clickStepToInspect": "Clique em qualquer etapa para inspecionar os dados nessa fase.",
    "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 um",
    "chatMessageHintSuffix": "solicitação, traduzida por meio do pipeline e enviada ao provedor selecionado.",
    "youWithFormat": "Você ({format})",
    "assistant": "Assistente",
    "typeMessage": "Digite uma mensagem...",
    "send": "Enviar",
    "clientRequest": "Solicitação do cliente",
    "clientRequestDescription": "O corpo da solicitação que seu cliente enviaria",
    "formatDetected": "Formato detectado",
    "formatDetectedDescription": "OmniRoute detecta automaticamente o formato da API na estrutura da solicitação",
    "openaiIntermediate": "OpenAI intermediário",
    "openaiIntermediateDescription": "Todos os formatos são primeiro normalizados para o formato OpenAI (a 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 fluxo SSE bruto da API do provedor",
    "unexpectedError": "Ocorreu um erro inesperado",
    "error": "Erro",
    "errorMessage": "Erro: {message}",
    "requestFailed": "Falha na solicitaçã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 à medida que as chamadas de API fluem pelo OmniRoute. Os eventos vêm do buffer na memória (redefinições na reinicialização). Usar",
    "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:"
  },
  "usage": {
    "title": "Uso",
    "loggerTab": "Registrador",
    "proxyTab": "Procurador",
    "budgetManagement": "Gestão Orçamentária",
    "budgetSaved": "Limites de orçamento salvos",
    "budgetSaveFailed": "Falha ao salvar o orçamento",
    "loadingBudgetData": "Carregando dados do orçamento...",
    "noApiKeysTitle": "Sem chaves 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": "por exemplo 5h00",
    "monthlyLimitPlaceholder": "por exemplo 50,00",
    "warningThresholdPlaceholder": "80",
    "saveLimits": "Salvar Limites",
    "budgetOk": "Orçamento OK — {remaining} restantes",
    "budgetExceeded": "Orçamento excedido — solicitações podem ser bloqueadas",
    "totalRequests": "Total de solicitações",
    "noDataYet": "Ainda não há dados",
    "latency": "Latência",
    "latencyP50": "p50",
    "latencyP95": "pág.95",
    "latencyP99": "p99",
    "promptCache": "Cache de prompt",
    "systemHealth": "Saúde do sistema",
    "entries": "Entradas",
    "activeCount": "{count} ativo",
    "openCircuitBreakersDetected": "Disjuntores abertos detectados",
    "hitRate": "Taxa de acerto",
    "hitsMisses": "Acertos / Erros",
    "circuitBreakers": "Disjuntores",
    "lockedIPs": "IPs bloqueados",
    "lockoutsAutoRefreshHint": "Bloqueios de limite de taxa por modelo • Atualização automática de 10s",
    "lockedCount": "{count, plural, one {# locked} other {# locked}}",
    "timeLeft": "{time} restantes",
    "howItWorks": "Como funciona",
    "howItWorksSubtitle": "Saiba como as avaliações validam suas respostas do LLM",
    "define": "Definir",
    "defineStepDescription": "Crie casos de teste com prompts de entrada e critérios de saída esperados usando estratégias como contém, regex ou correspondência exata.",
    "run": "Corre",
    "runStepDescription": "Execute casos de teste em seus endpoints LLM por meio do OmniRoute. Cada caso é enviado como uma solicitação de API real.",
    "evaluate": "Avaliar",
    "evaluateStepDescription": "As respostas são comparadas com os critérios esperados. Veja aprovação/reprovação para cada caso com métricas de latência e feedback detalhado.",
    "evalsStrategyContainsLabel": "__MISSING__:Contains",
    "evalsStrategyExactLabel": "__MISSING__:Exact Match",
    "evalsStrategyRegexLabel": "__MISSING__:Regex",
    "evalsStrategyCustomLabel": "__MISSING__:Custom Logic",
    "evalsStrategyContainsDescription": "__MISSING__:Checks if the LLM output contains the expected substring.",
    "evalsStrategyExactDescription": "__MISSING__:Checks if the LLM output exactly matches the expected value.",
    "evalsStrategyRegexDescription": "__MISSING__:Validates the LLM output against a regular expression pattern.",
    "evalsStrategyCustomDescription": "__MISSING__:Custom evaluation logic (configured via JSON).",
    "historyColumnSuiteName": "__MISSING__:Suite Name",
    "historyColumnTarget": "__MISSING__:Target",
    "historyColumnPassRate": "__MISSING__:Pass Rate",
    "historyColumnAvgLatencyMs": "__MISSING__:Avg Latency",
    "historyColumnCreatedAt": "__MISSING__:Executed",
    "evalSuites": "Suítes de avaliação",
    "evalSuitesHint": "Clique em um conjunto para visualizar casos de teste e execute para avaliar seus endpoints LLM",
    "evalsLoading": "Carregando suítes de avaliação...",
    "noEvalSuitesFound": "Nenhuma suíte Eval encontrada",
    "noEvalSuitesDescription": "Os conjuntos de avaliação podem ser definidos por meio da API ou em código. Eles testam os resultados do modelo em relação aos resultados esperados usando estratégias como contém, regex, correspondência exata e funções personalizadas.",
    "columnCase": "Caso",
    "columnStatus": "Estado",
    "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": "Pesquisar suítes...",
    "passSuffix": "passar",
    "casesCount": "{count, plural, one {# case} other {# cases}}",
    "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} aprovado · {failed} reprovado · {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": "Ainda não há resultados",
    "testCasesCount": "Casos de teste ({count})",
    "noTestCasesDefined": "Nenhum caso de teste definido",
    "runEvalHint": "Clique em \"Executar avaliação\" para executar todos os casos em seu endpoint LLM. Cada teste envia uma solicitação real através do OmniRoute.",
    "notifyNoTestCases": "Nenhum caso de teste definido para este pacote",
    "notifyAllCasesPassed": "Todos os casos {total} foram aprovados ✅",
    "notifySomeCasesFailed": "{passed}/{total} aprovado, {failed} falhou",
    "notifyEvalRunFailed": "Falha na execução da avaliação",
    "notifyEvalTitle": "Avaliação: {name}",
    "modelEvals": "Avaliações de modelos",
    "evalsHeroDescription": "Teste e valide seus endpoints LLM executando conjuntos de avaliação predefinidos. Cada conjunto contém casos de teste que enviam prompts reais por meio do OmniRoute e comparam as respostas com os critérios esperados, ajudando você a detectar regressões, comparar modelos e garantir a qualidade da resposta entre os 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 atualmente bloqueado",
    "activeSessions": "Sessões ativas",
    "noSessions": "Nenhuma sessão ativa",
    "sessionsHint": "As sessões aparecem conforme as solicitações fluem pelo proxy",
    "sessionsTrackedHint": "Rastreado por solicitação de impressão digital • Atualização automática 5s",
    "session": "Sessão",
    "age": "Idade",
    "requests": "Solicitaçõ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-se a provedores com OAuth para rastrear o uso e os limites de cota de API.",
    "accountsCount": "{count, plural, one {# account} other {# accounts}}",
    "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/A",
    "rawPlanWithValue": "Plano bruto: {plan}",
    "noPlanFromProvider": "Nenhum plano do provedor",
    "noQuotaData": "Sem dados de cota",
    "cardExpand": "__MISSING__:Expand",
    "cardCollapse": "__MISSING__:Collapse",
    "moreQuotas": "__MISSING__:+{count} more",
    "ungrouped": "Ungrouped",
    "viewFlat": "Flat",
    "viewByEnvironment": "By Environment",
    "noQuotaDataAvailable": "Não há dados de cota disponíveis",
    "noAccountsForTierFilter": "Nenhuma conta encontrada para filtro de nível",
    "tierAll": "Todos",
    "tierEnterprise": "Empresa",
    "tierTeam": "Equipe",
    "tierBusiness": "Negócios",
    "tierUltra": "Ultra",
    "tierPro": "Pró",
    "tierPlus": "Mais",
    "tierFree": "Grátis",
    "tierLite": "__MISSING__:Lite",
    "tierUnknown": "Desconhecido",
    "statTotal": "__MISSING__:Total",
    "statCritical": "__MISSING__:Critical",
    "statAlert": "__MISSING__:Alert",
    "statHealthy": "__MISSING__:Healthy",
    "filterPurchaseTypeLabel": "__MISSING__:Type",
    "filterTierLabel": "__MISSING__:Tier",
    "purchaseAll": "__MISSING__:All",
    "purchaseOauthSub": "__MISSING__:Subscription",
    "purchaseOauthFree": "__MISSING__:OAuth Free",
    "purchaseApiKey": "__MISSING__:API Key",
    "creditsLabel": "__MISSING__:Credits",
    "creditBalanceHint": "__MISSING__:Remaining balance",
    "unlimitedLabel": "__MISSING__:Unlimited",
    "refreshing": "__MISSING__:Refreshing",
    "resetsIn": "__MISSING__:Resets in",
    "editCutoffs": "Editar pontos de corte",
    "forceRefresh": "Atualizar agora",
    "suiteBuilderSaveFailed": "Failed to save suite",
    "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": "API Key",
    "scorecardPassRate": "Pass Rate",
    "targetTypeModel": "Model",
    "actualOutputLabel": "Actual Output",
    "evalTargetHint": "Select a model or combo to evaluate.",
    "suiteBuilderDeleted": "Suite deleted successfully",
    "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.",
    "nextResetUtc": "Next reset (UTC)",
    "scorecardHint": "Aggregated pass rates across all evaluation suites.",
    "suiteLatestRunsHint": "Most recent evaluation runs for this suite.",
    "saving": "Saving",
    "suiteBuilderCaseModelLabel": "Model (optional)",
    "evalControlsTitle": "Evaluation Controls",
    "suiteBuilderEditTitle": "Edit Eval Suite",
    "suiteBuilderCaseStrategyLabel": "Validation Strategy",
    "notifySelectDifferentCompareTarget": "Please select a different target for comparison",
    "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.",
    "evalCompareHint": "Optionally compare results against a second target.",
    "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.",
    "historyEmpty": "No evaluation history yet",
    "suiteBuilderUpdated": "Suite updated successfully",
    "resetInterval": "Reset Interval",
    "suiteBuilderCreateTitle": "Create Eval Suite",
    "activePeriodSpend": "Active Period Spend",
    "evalApiKeyHint": "Select which API key to use for evaluation requests.",
    "evalCompareOptional": "Compare (optional)",
    "suiteBuilderDeleteFailed": "Failed to delete suite",
    "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...",
    "scorecardCases": "Cases",
    "runCompletedWithScore": "Evaluation completed — {score}% pass rate",
    "suiteBuilderCustomBadge": "Custom",
    "targetSuiteDefaults": "Suite defaults",
    "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.",
    "suiteBuilderNameLabel": "Suite Name",
    "scorecardSuites": "Suites",
    "evalCompareTarget": "Compare Target",
    "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini",
    "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.",
    "recentRunsTitle": "Recent Runs",
    "suiteBuilderCaseSystemPromptLabel": "System Prompt",
    "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci",
    "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": "e.g. Coding Quality Suite",
    "suiteBuilderAddCase": "Add Case",
    "cancel": "Cancel",
    "evalTarget": "Target",
    "suiteBuilderCaseNameLabel": "Case Name",
    "weeklyLimitUsd": "Weekly Limit (USD)",
    "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python",
    "suiteBuilderNameRequired": "Suite name is required",
    "suiteBuilderCaseUserPromptLabel": "User Prompt",
    "daily": "Daily",
    "resultErrorLabel": "Error",
    "suiteBuilderBuiltInBadge": "Built-in",
    "suiteBuilderCaseCardTitle": "Test Case",
    "suiteBuilderDuplicateCase": "Duplicar",
    "weeklyLimitPlaceholder": "e.g. 50.00",
    "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.",
    "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}",
    "weekly": "Weekly",
    "runEvalRunning": "Running evaluation...",
    "delete": "Delete",
    "resetTimeUtc": "Reset Time (UTC)",
    "evalApiKeyAuto": "Auto (use default)",
    "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...",
    "targetComparisonTitle": "Target Comparison",
    "save": "Save",
    "suiteBuilderCreated": "Suite created successfully",
    "suiteLatestRuns": "Latest Runs",
    "suiteBuilderCaseExpectedLabel": "Expected Value",
    "historyLatency": "Latency",
    "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python",
    "targetTypeCombo": "Combo",
    "scorecardPassed": "Passed",
    "suiteBuilderCaseTagsLabel": "Tags",
    "suiteBuilderNewSuite": "New Suite",
    "notifyEvalLoadFailed": "Failed to load evaluation data",
    "notConfigured": "Not Configured",
    "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test",
    "intervalLabel": "Interval",
    "suiteBuilderCreateAction": "Create Suite",
    "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.",
    "suiteBuilderUpdatedAt": "Updated",
    "errorBadge": "Error",
    "suiteBuilderCasesTitle": "Test Cases",
    "edit": "Edit",
    "monthly": "Monthly",
    "suiteBuilderCasesRequired": "At least one test case is required",
    "weeklyLimitSummary": "Weekly budget limit summary",
    "suiteBuilderDescriptionLabel": "Description",
    "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.",
    "compareCompletedWithScore": "Comparison completed — {score}% pass rate",
    "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": "__MISSING__:Updated",
    "lastRefreshed": "__MISSING__:Last refreshed",
    "providerQuota": "__MISSING__:Provider Quota",
    "providerQuotaHomeHint": "__MISSING__:Live status across connected accounts"
  },
  "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": "ID do construtor AWS",
    "awsIamIdentity": "Centro de identidade AWS IAM",
    "googleAccount": "Conta do Google",
    "githubAccount": "Conta GitHub",
    "importToken": "Token de importação",
    "pasteToken": "Cole o token de atualização do Kiro IDE.",
    "awsRegion": "Região AWS",
    "autoDetecting": "Detecção automática de tokens...",
    "readingFromCache": "Lendo do cache SSO da AWS",
    "readingFromCursor": "Lendo do banco de dados Cursor IDE",
    "initializing": "Inicializando...",
    "pricingConfig": "Configuração de preços",
    "loadingPricing": "Carregando dados de preços...",
    "pricingRatesFormat": "Formato de taxas de preços",
    "noPricingData": "Não há dados de preços disponíveis",
    "noModelsFound": "Nenhum modelo encontrado"
  },
  "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 registros...",
    "loadingProxyLogs": "Carregando registros de proxy...",
    "noLogEntries": "Nenhuma entrada de registro encontrada",
    "noPayloadData": "Não há dados de carga disponíveis para esta entrada de log.",
    "proxyEvent": "Evento proxy",
    "proxy": "Procurador",
    "level": "Nível",
    "directNative": "Direto (nativo)",
    "combo": "Combinação",
    "inputTokens": "Eu:",
    "outputTokens": "Ó:"
  },
  "stats": {
    "usageOverview": "Visão geral do 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 do token",
    "totalOAuth": "OAuth total",
    "healthy": "Saudável",
    "warning": "Aviso",
    "errored": "Erro",
    "lastCheck": "Última verificação",
    "noData": "Sem dados",
    "share": "Compartilhar",
    "unableToLoad": "Não foi possível carregar as métricas do sistema",
    "product": "Produto",
    "resources": "Recursos",
    "company": "Empresa"
  },
  "auth": {
    "welcome": "Bem vindo",
    "signIn": "Faça login",
    "enterPassword": "Digite sua senha para continuar",
    "password": "Senha",
    "unifiedProxy": "Proxy de API de IA unificado",
    "unifiedAiApiProxy": "Proxy de API de IA unificado",
    "unifiedAiApiProxyDesc": "Encaminhe solicitações para vários provedores de IA por meio de um único endpoint. Balanceamento de carga, failover e rastreamento de uso integrados.",
    "passwordNotEnabled": "A proteção por senha não está ativada",
    "loading": "Carregando...",
    "invalidPassword": "Senha inválida",
    "errorOccurredRetry": "Ocorreu um erro. Por favor, tente novamente.",
    "configureInstance": "Vamos configurar sua instância do OmniRoute",
    "runOnboardingWizard": "Execute o assistente de integração para configurar sua senha e conectar seu primeiro provedor de IA.",
    "startOnboarding": "Comece a integração",
    "secureYourInstance": "Proteja sua instância",
    "setPasswordDescription": "Defina uma senha para proteger seu painel e proteger seus endpoints de API contra acesso não autorizado.",
    "configurePassword": "Configurar senha",
    "continue": "Continuar",
    "windowWillClose": "Esta janela fechará automaticamente...",
    "closeTabNow": "Você pode fechar esta guia agora.",
    "copyUrlManual": "Copie o URL da barra de endereço e cole-o no aplicativo.",
    "accessDeniedDescription": "Você não tem permissão para acessar este recurso. Verifique sua chave API ou entre em contato com o administrador.",
    "goToDashboard": "Vá para o painel",
    "featureMultiProviderTitle": "Multi-Provedor",
    "featureMultiProviderDesc": "OpenAI, Antrópico, Google e muito mais",
    "featureLoadBalancingTitle": "Balanceamento de carga",
    "featureLoadBalancingDesc": "Distribua solicitações de forma inteligente",
    "featureUsageTrackingTitle": "Rastreamento de uso",
    "featureUsageTrackingDesc": "Monitore custos e tokens",
    "resetPassword": "Redefinir senha",
    "resetDescription": "Escolha um método para recuperar o acesso ao seu painel",
    "stopServer": "Pare o servidor OmniRoute",
    "processing": "Processando...",
    "pleaseWait": "Aguarde enquanto concluímos a autorização.",
    "authSuccess": "Autorização bem-sucedida!",
    "copyUrl": "Copie este URL",
    "accessDenied": "Acesso negado",
    "methodCliTitle": "Método 1: redefinição CLI",
    "methodCliDescription": "Execute o seguinte comando no servidor onde o OmniRoute está sendo executado:",
    "methodCliHint": "Isso solicitará que você defina uma nova senha. O servidor deve ser parado primeiro.",
    "methodManualTitle": "Método 2: reinicialização manual",
    "methodManualDescription": "Exclua a senha do banco de dados e defina uma nova na inicialização:",
    "setPasswordInYour": "Defina uma nova senha em seu",
    "fileLabelSuffix": "arquivo:",
    "newPasswordPlaceholder": "sua_nova_senha",
    "deleteSettingsFile": "Excluir",
    "orRemovePasswordHashField": "ou remova o campo passwordHash",
    "restartServerWithNewPassword": "Reinicie o servidor - ele usará a nova senha",
    "backToLogin": "Voltar ao 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": "Waiting for authorization...",
    "waitingForGoogleAuthorization": "Waiting for Google authorization...",
    "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...",
    "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...",
    "waitingForQoderAuthorization": "Waiting for Qoder authorization...",
    "exchangingCodeForTokens": "Exchanging code for 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."
  },
  "landing": {
    "brandName": "OmniRoute",
    "navigateHome": "Navegue até a casa",
    "toggleMenu": "Alternar menu",
    "featuresLink": "Recursos",
    "docsLink": "Documentos",
    "github": "GitHub",
    "versionLive": "v1.0 agora está ativo",
    "oneEndpoint": "Um ponto final para",
    "allProviders": "Todos os provedores de IA",
    "heroDescription": "Proxy de endpoint de IA com painel da web – uma porta JavaScript do CLIProxyAPI. Funciona perfeitamente com Claude Code, OpenAI Codex, Cline, RooCode e outras ferramentas CLI.",
    "getStarted": "Comece",
    "viewOnGithub": "Ver no GitHub",
    "powerfulFeatures": "Recursos poderosos",
    "featuresSubtitle": "Tudo o que você precisa para gerenciar sua infraestrutura de IA em um só lugar, desenvolvida para escalar.",
    "featureUnifiedEndpointTitle": "Ponto final unificado",
    "featureUnifiedEndpointDesc": "Acesse todos os provedores por meio de um único URL de API padrão.",
    "featureEasySetupTitle": "Configuração fácil",
    "featureEasySetupDesc": "Comece a trabalhar em minutos com o comando npx.",
    "featureModelFallbackTitle": "Modelo substituto",
    "featureModelFallbackDesc": "Alterne automaticamente os provedores em caso de falha ou alta latência.",
    "featureUsageTrackingTitle": "Rastreamento de uso",
    "featureUsageTrackingDesc": "Análise detalhada e monitoramento de custos em todos os modelos.",
    "featureOAuthApiKeysTitle": "Chaves OAuth e API",
    "featureOAuthApiKeysDesc": "Gerencie credenciais com segurança em um cofre.",
    "featureCloudSyncTitle": "Sincronização na nuvem",
    "featureCloudSyncDesc": "Sincronize suas configurações entre dispositivos instantaneamente.",
    "featureCliSupportTitle": "Suporte CLI",
    "featureCliSupportDesc": "Funciona com Claude Code, Codex, Cline, Cursor e muito mais.",
    "featureDashboardTitle": "Painel",
    "featureDashboardDesc": "Painel visual para análise de tráfego em tempo real.",
    "howItWorks": "Como funciona o OmniRoute",
    "howItWorksDescription": "Os dados fluem perfeitamente da sua aplicação através da nossa camada de roteamento inteligente até o melhor fornecedor para o trabalho.",
    "howItWorksStep1Title": "1. CLI e SDKs",
    "howItWorksStep1Description": "Suas solicitações partem de suas ferramentas favoritas ou de nosso SDK unificado. Basta alterar o URL base.",
    "howItWorksStep2Title": "2. Hub OmniRoute",
    "howItWorksStep2Description": "Nosso mecanismo analisa o prompt, verifica a integridade do provedor e encaminha para obter menor latência ou custo.",
    "howItWorksStep3Title": "3. Provedores de IA",
    "howItWorksStep3Description": "A solicitação é atendida por OpenAI, Anthropic, Gemini ou outros instantaneamente.",
    "getStartedIn30Seconds": "Comece em 30 segundos",
    "getStartedDescription": "Instale o OmniRoute, configure seus provedores por meio do painel da web e comece a rotear solicitações de IA.",
    "installOmniRoute": "Instalar OmniRoute",
    "installStepDescription": "Execute o comando npx para iniciar o servidor instantaneamente",
    "openDashboard": "Abra o painel",
    "openDashboardStepDescription": "Configure provedores e chaves de API via interface web",
    "routeRequests": "Solicitações de rota",
    "routeRequestsStepDescription": "Aponte suas ferramentas CLI para {endpoint}",
    "terminal": "terminal",
    "copy": "Copiar",
    "copied": "✓ Copiado",
    "startingOmniRoute": "Iniciando o OmniRoute...",
    "serverRunningOnLabel": "Servidor em execução",
    "dashboardLabel": "Painel",
    "readyToRoute": "Pronto para rota! ✓",
    "configureProvidersNote": "📝 Configure provedores no painel ou use variáveis de ambiente",
    "dataLocation": "Localização dos dados:",
    "dataLocationMacLinux": " macOS/Linux:",
    "dataLocationWindows": " Janelas:",
    "product": "Produto",
    "dashboardLink": "Painel",
    "changelog": "Registro de alterações",
    "resources": "Recursos",
    "documentation": "Documentação",
    "npm": "NPM",
    "legal": "Jurídico",
    "mitLicense": "Licença MIT",
    "footerTagline": "O endpoint unificado para geração de IA. Conecte, encaminhe e gerencie seus provedores de IA com facilidade.",
    "copyright": "© {year} OmniRoute. Todos os direitos reservados.",
    "flowToolClaudeCode": "Código Claude",
    "flowToolOpenAICodex": "Códice OpenAI",
    "flowToolCline": "Cline",
    "flowToolCursor": "Cursor",
    "flowProviderOpenAI": "OpenAI",
    "flowProviderAnthropic": "Antrópico",
    "flowProviderGemini": "Gêmeos",
    "flowProviderGithubCopilot": "Copiloto GitHub",
    "interactiveDiagram": "Diagrama interativo visível na área de trabalho",
    "ctaTitle": "Pronto para simplificar sua infraestrutura de IA?",
    "ctaDescription": "Junte-se aos desenvolvedores que estão simplificando suas integrações de IA com o OmniRoute. Código aberto e gratuito para começar.",
    "startFree": "Comece grátis",
    "readDocumentation": "Leia a documentaçã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 do cliente",
    "protocolsToc": "Protocols",
    "apiReference": "Referência de 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 respostas.",
    "oauthAutoRefresh": "Conexão OAuth com atualização automática de token.",
    "fullStreaming": "Suporte completo de streaming para todos os modelos.",
    "docsLabel": "Documentos",
    "docsHeroDescription": "Gateway de IA para LLMs de vários provedores. Um endpoint para OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor e mais de 20 provedores.",
    "openDashboard": "Abra o painel",
    "endpointPage": "Página de ponto final",
    "github": "GitHub",
    "reportIssue": "Reportar problema",
    "onThisPage": "Nesta página",
    "documentationVersion": "Documentação - v{version}",
    "quickStartStep1Title": "1. Instale e execute",
    "quickStartStep1Prefix": "Corre",
    "quickStartStep1Middle": "ou clone do GitHub e execute",
    "quickStartStep2Title": "2. Crie uma chave API",
    "quickStartStep2Text": "Vá para Endpoint -> Chaves Registradas. Gere uma chave por ambiente.",
    "quickStartStep3Title": "3. Conecte provedores",
    "quickStartStep3Text": "Adicione contas de provedor por meio de login OAuth, chave de API ou conexão automática de nível gratuito.",
    "quickStartStep4Title": "4. Defina o URL da base do cliente",
    "quickStartStep4Prefix": "Aponte seu cliente IDE ou API para",
    "quickStartStep4Suffix": "Use o prefixo do 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 multiprovedor",
    "featureRoutingText": "Encaminhe solicitações para mais de 30 provedores de IA por meio de um único endpoint compatível com OpenAI. Suporta APIs de chat, respostas, áudio e imagem.",
    "featureCombosTitle": "Combos e Balanceamento",
    "featureCombosText": "Crie combinações de modelos com cadeias de fallback e estratégias de balanceamento: round-robin, prioridade, aleatório, menos usado e com custo otimizado.",
    "featureUsageTitle": "Uso e rastreamento de custos",
    "featureUsageText": "Contagem de tokens em tempo real, cálculo de custos por provedor/modelo e detalhamento de uso por chave de API e conta.",
    "featureAnalyticsTitle": "Painel analítico",
    "featureAnalyticsText": "Análise visual com gráficos de solicitações, tokens, erros, latência, custos e popularidade do modelo ao longo do tempo.",
    "featureHealthTitle": "Monitoramento de Saúde",
    "featureHealthText": "Verificações de integridade em tempo real, status do provedor, estados de disjuntores e detecção automática de limite de taxa com espera exponencial.",
    "featureCliTitle": "Ferramentas CLI",
    "featureCliText": "Gerencie configurações de IDE, exporte/importe backups, descubra perfis de codex e defina configurações no painel.",
    "featureSecurityTitle": "Segurança e Políticas",
    "featureSecurityText": "Autenticação de chave de API, filtragem de IP, proteção contra injeção de prompt, políticas de domínio, gerenciamento de sessão e registro de auditoria.",
    "featureCloudSyncTitle": "Sincronização na 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": "Nível gratuito",
    "providerTypeOAuth": "OAuth",
    "providerTypeApiKey": "Chave de API",
    "useCaseSingleEndpointTitle": "Endpoint único para muitos provedores",
    "useCaseSingleEndpointText": "Aponte os clientes para uma 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 combinados no Dashboard e mantenha a configuração do cliente estável enquanto os provedores alternam internamente.",
    "useCaseUsageVisibilityTitle": "Visibilidade de uso, custo e depuração",
    "useCaseUsageVisibilityText": "Rastreie tokens e custos por provedor, conta e chave de API nas guias Uso e Análise.",
    "clientCherryStudioTitle": "Estúdio Cereja",
    "baseUrlLabel": "URL base",
    "chatEndpointLabel": "Ponto de extremidade do bate-papo",
    "modelRecommendationLabel": "Recomendação de modelo: prefixo explícito",
    "clientCodexTitle": "Modelos de copiloto Codex/GitHub",
    "clientCodexBullet1": "Use IDs de modelo com",
    "clientCodexBullet2": "Os modelos da família Codex roteiam automaticamente para",
    "clientCodexBullet3": "Os modelos não-Codex continuam",
    "clientCursorTitle": "Cursor IDE",
    "clientCursorBullet1": "Usar",
    "clientCursorBullet1Suffix": "prefixo para modelos Cursor.",
    "clientCursorBullet2": "Conexão OAuth - faça login na página Provedores.",
    "clientClaudeTitle": "Código Claude / Antigravidade",
    "clientClaudeBullet1Prefix": "Usar",
    "clientClaudeBullet1Middle": "(Cláudio) ou",
    "clientClaudeBullet1Suffix": "Prefixo (antigravidade).",
    "clientWindsurfTitle": "Windsurf",
    "clientWindsurfBullet1": "Use OmniRoute como uma URL base compatível com OpenAI e mantenha prefixos de provedor explícitos para roteamento determinístico.",
    "clientWindsurfBullet2": "Aponte modelos para `/v1/chat/completions` para tráfego geral e preserve `/v1/responses` para fluxos no estilo Codex.",
    "clientWindsurfBullet3": "Use Dashboard -> CLI Tools para obter um guia de configuração do Windsurf pronto.",
    "clientClineTitle": "Cline",
    "clientClineBullet1": "Cline funciona melhor com prefixos explícitos de provedor/modelo para que o roteador nunca precise adivinhar o back-end.",
    "clientClineBullet2": "Use `/v1/chat/completions` para modelos gerais e reutilize o mesmo URL base do OmniRoute em contas diferentes.",
    "clientClineBullet3": "Use o painel de provedores para validar a chave OAuth/API antes de depurar problemas de tempo de execução do Cline.",
    "clientKimiTitle": "Codificação Kimi",
    "clientKimiBullet1": "Use o OmniRoute como um URL base estável enquanto alterna contas ou combinações de provedores abaixo.",
    "clientKimiBullet2": "Prefira modelos prefixados em fluxos de codificação para que o substituto e a trilha de auditoria permaneçam explícitos.",
    "clientKimiBullet3": "Use `/v1/responses` quando desejar roteamento no estilo Respostas nativo para clientes que usam ferramentas.",
    "protocolsTitle": "Protocols: MCP & A2A",
    "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.",
    "protocolMcpTitle": "MCP (Model Context Protocol)",
    "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.",
    "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.",
    "protocolMcpStep2": "Point your MCP client to stdio transport.",
    "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.",
    "protocolA2aTitle": "A2A (Agent2Agent)",
    "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.",
    "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.",
    "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.",
    "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.",
    "protocolTroubleshootingTitle": "Protocol Troubleshooting",
    "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.",
    "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.",
    "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.",
    "endpointChatNote": "Endpoint de chat compatível com OpenAI (padrão).",
    "endpointResponsesNote": "Endpoint da API de respostas (Codex, série o).",
    "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 embeddings de texto (OpenAI, Cohere, Voyage).",
    "endpointImagesNote": "Geração de imagens (NanoBanana).",
    "endpointRewriteChatNote": "Auxiliar de reescrita para clientes sem /v1.",
    "endpointRewriteResponsesNote": "Reescreva o auxiliar para respostas sem /v1.",
    "endpointRewriteModelsNote": "Reescreva o auxiliar para descoberta de modelo 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": "rotas para GitHub Copilot.",
    "provider": "Provedor",
    "type": "Tipo",
    "troubleshootingModelRouting": "Se o cliente falhar com o roteamento do modelo, use provedor/modelo explícito (por exemplo: gh/gpt-5.1-codex).",
    "troubleshootingAmbiguousModels": "Se você receber erros de modelo ambíguos, escolha um prefixo de provedor em vez de um ID de modelo simples.",
    "troubleshootingCodexFamily": "Para modelos da família GitHub Codex, mantenha o modelo como gh/codex-model; roteador seleciona /respostas automaticamente.",
    "troubleshootingTestConnection": "Use Painel > Provedores > Testar conexão antes de testar em IDEs ou clientes externos.",
    "troubleshootingCircuitBreaker": "Se um provedor mostrar o disjuntor aberto, aguarde o resfriamento ou verifique a página de integridade para obter detalhes.",
    "troubleshootingOAuth": "Para provedores OAuth, autentique novamente se os tokens expirarem. Verifique o indicador de status do cartão do provedor.",
    "endpointCompletionsNote": "Endpoint de conclusões legado para geração de texto.",
    "endpointModerationsNote": "Moderação de conteúdo e classificação de segurança.",
    "endpointRerankNote": "Reclassificação de documentos para geração aumentada de recuperação (Cohere, Jina).",
    "endpointSearchNote": "Pesquisa na web com 5 provedores (Serper, Brave, Exa, Tavily, Perplexity).",
    "endpointSearchAnalyticsNote": "Análises e métricas para solicitações de pesquisa.",
    "endpointVideoNote": "Geração de vídeo (fluxos de trabalho ComfyUI, SD WebUI).",
    "endpointMusicNote": "Geração de música por meio de fluxos de trabalho ComfyUI.",
    "endpointMessagesNote": "Endpoint de mensagens nativas antrópicas.",
    "endpointCountTokensNote": "Contar tokens para uma determinada carga de mensagem.",
    "endpointFilesNote": "Upload de arquivos para entradas multimodais.",
    "endpointBatchesNote": "Processamento em lote para solicitações de API em massa.",
    "endpointWsNote": "Endpoint WebSocket para streaming em tempo real.",
    "mgmtProvidersListNote": "Liste todas as conexões de provedores registradas.",
    "mgmtProvidersCreateNote": "Crie uma nova conexão de provedor.",
    "mgmtProvidersUpdateNote": "Atualize uma conexão de provedor existente.",
    "mgmtProvidersDeleteNote": "Exclua uma conexão de provedor.",
    "mgmtProvidersTestNote": "Teste a conectividade e a autenticação de um provedor.",
    "mgmtProvidersModelsNote": "Liste os modelos disponíveis para um fornecedor específico.",
    "mgmtSettingsGetNote": "Recuperar as configurações atuais do aplicativo.",
    "mgmtSettingsUpdateNote": "Atualize as configurações do aplicativo.",
    "mgmtPayloadRulesGetNote": "Obtenha regras de transformação de carga útil.",
    "mgmtPayloadRulesUpdateNote": "Atualize as regras de transformação de carga útil.",
    "mcpToolsTitle": "Ferramentas MCP",
    "mcpToolsDescription": "OmniRoute expõe ferramentas {count} por meio do Model Context Protocol para orquestração de agentes.",
    "mcpToolsCount": "{count} ferramentas",
    "mcpToolsToc": "Ferramentas MCP",
    "mcpToolsRoutingTitle": "Roteamento e descoberta",
    "mcpToolsRoutingDesc": "Verificações de integridade, gerenciamento combinado, monitoramento de cotas, relatórios de custos e acesso ao catálogo de modelos.",
    "mcpToolsOperationsTitle": "Operações e Estratégia",
    "mcpToolsOperationsDesc": "Simulação de rotas, proteção orçamentária, mudança de estratégia, perfis de resiliência e métricas de provedores.",
    "mcpToolsCacheTitle": "Gerenciamento de Cache",
    "mcpToolsCacheDesc": "Visualize estatísticas de cache e libere caches semânticos ou de assinatura.",
    "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": "Pesquise, adicione e limpe entradas de memória de conversação persistentes.",
    "mcpToolsSkillsTitle": "Habilidades",
    "mcpToolsSkillsDesc": "Liste, habilite, execute e monitore execuções de habilidades personalizadas.",
    "featureAutoComboTitle": "Combinação automática",
    "featureAutoComboText": "Crie automaticamente combos otimizados com base em seus provedores conectados, padrões de uso e capacidades do modelo.",
    "featureSearchTitle": "Pesquisa na Web",
    "featureSearchText": "Pesquisa integrada na web com 5 provedores (Serper, Brave, Exa, Tavily, Perplexity), incluindo análises e rastreamento de custos.",
    "featureMemoryTitle": "Sistema de memória",
    "featureMemoryText": "Memória conversacional persistente com extração, injeção, recuperação e resumo entre sessões.",
    "featureSkillsTitle": "Quadro de Competências",
    "featureSkillsText": "Sistema de habilidades extensível com habilidades integradas e personalizadas, execução de sandbox, interceptação de solicitações e injeção de contexto.",
    "featureAcpTitle": "Comunicação do Agente",
    "featureAcpText": "Registro do Agent Communication Protocol (ACP) para gerenciar fluxos de trabalho entre agentes e orquestração de ferramentas.",
    "protocolAcpTitle": "ACP (Comunicação do Agente)",
    "protocolAcpDesc": "Registre e gerencie agentes por meio do registro ACP para comunicação entre agentes e compartilhamento de ferramentas.",
    "protocolAcpStep1": "Navegue até Painel → Agentes para visualizar os agentes ACP registrados.",
    "protocolAcpStep2": "Registre novos agentes com recursos e configuração de endpoint.",
    "protocolAcpStep3": "Use ferramentas CLI para configurar canais de comunicação do agente."
  },
  "legal": {
    "privacyPolicy": "Política de Privacidade",
    "termsOfService": "Termos de Serviço",
    "providerConfigurations": "Configurações do provedor",
    "apiKeys": "Chaves de API",
    "usageLogs": "Registros de uso",
    "applicationSettings": "Configurações do aplicativo",
    "viewExportAnalytics": "Visualize e exporte análises de uso",
    "clearHistory": "Limpe o histórico de uso a qualquer momento",
    "configureRetention": "Configurar políticas de retenção de log",
    "backupRestore": "Faça backup e restaure seu banco de dados",
    "privacyMetadataTitle": "Política de Privacidade | OmniRoute",
    "privacyMetadataDescription": "Política de privacidade para o roteador proxy OmniRoute AI API.",
    "termsMetadataTitle": "Termos de Serviço | OmniRoute",
    "termsMetadataDescription": "Termos de serviço do roteador proxy OmniRoute AI API.",
    "backToHome": "De volta para casa",
    "lastUpdated": "Última atualização: {date}",
    "policyLastUpdatedDate": "13 de fevereiro de 2026",
    "listSeparator": "-",
    "questionsVisit": "Perguntas? Visite nosso",
    "githubRepository": "Repositório GitHub",
    "privacySection1Title": "1. Arquitetura local primeiro",
    "privacySection1Text": "OmniRoute foi projetado como um aplicativo local. Todo o processamento e armazenamento de dados ocorre inteiramente em sua máquina. Não existe um servidor centralizado que coleta suas informações.",
    "privacySection2Title": "2. Dados que armazenamos",
    "privacyDataStoredIn": "Os seguintes dados são armazenados localmente em",
    "privacyDataProviderConfigurationsDesc": "URLs de conexão, tipos de provedores e configurações de prioridade",
    "privacyDataApiKeysDesc": "criptografado e armazenado localmente para autenticação com provedores de IA",
    "privacyDataUsageLogsDesc": "contagens de solicitações, uso de token, nomes de modelos, carimbos de data/hora e tempos de resposta",
    "privacyDataApplicationSettingsDesc": "preferências de tema, estratégia de roteamento e configurações combinadas",
    "privacySection3Title": "3. Sem telemetria",
    "privacySection3Text": "OmniRoute não coleta telemetria, análises ou relatórios de falhas. 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 terceirizados de IA",
    "privacySection4Text": "Ao fazer chamadas de API por meio do OmniRoute, suas solicitações são encaminhadas para os provedores de IA que você configurou (por exemplo: OpenAI, Anthropic, Google). Esses provedores têm suas próprias políticas de privacidade que regem a forma como lidam com seus dados. Por favor, revise:",
    "privacyOpenAiPolicy": "Política de privacidade da OpenAI",
    "privacyAnthropicPolicy": "Política de Privacidade Antrópica",
    "privacyGooglePolicy": "Política de privacidade do Google",
    "privacySection5Title": "5. Sincronização na nuvem (opcional)",
    "privacySection5Text": "Se você ativar o recurso opcional de sincronização em nuvem, as configurações do provedor e as chaves de API poderão ser transmitidas para um endpoint de nuvem configurado. Este recurso está desabilitado por padrão e requer aceitação explícita.",
    "privacySection6Title": "6. Registro",
    "privacyLoggingIntro": "Os logs de solicitaçã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",
    "privacySection7TextEnd": "diretório ou usando os recursos de backup e restauração do banco de dados no painel.",
    "termsSection1Title": "1. Visão geral",
    "termsSection1Text": "OmniRoute é um roteador proxy API AI local que opera inteiramente em sua máquina. Ele roteia solicitações para vários 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 terceirizados (OpenAI, Anthropic, Google, etc.).",
    "termsResponsibilityCompliance": "Você deve cumprir os termos de serviço de cada provedor de IA cuja API você acessa por meio do OmniRoute.",
    "termsResponsibilitySecurity": "Você é responsável pela segurança da instalação local do OmniRoute, incluindo a definição de uma senha e a restrição do acesso à rede.",
    "termsSection3Title": "3. Como funciona",
    "termsSection3Text": "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. OmniRoute não modifica o conteúdo de suas solicitaçõ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 de dados SQLite.",
    "termsNoTransmission": "O OmniRoute não transmite nenhum dado para servidores externos, a menos que você habilite explicitamente os recursos de sincronização na nuvem.",
    "termsDataLocationText": "Logs de uso, chaves de API e configuração são armazenados em",
    "termsSection5Title": "5. Isenção de responsabilidade",
    "termsSection5Text": "OmniRoute é fornecido \"como está\" sem qualquer tipo de garantia. Não somos responsáveis ​​por quaisquer custos incorridos através do uso da API, interrupções de serviço ou perda de dados. Sempre mantenha backups de sua configuração.",
    "termsSection6Title": "6. Código aberto",
    "termsSection6Text": "OmniRoute é um software de código aberto. Você é livre para inspecioná-lo, modificá-lo e distribuí-lo sob os termos de sua licença."
  },
  "agents": {
    "title": "CLI Agents",
    "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.",
    "refresh": "Refresh",
    "installed": "Installed",
    "notFound": "Not Found",
    "builtIn": "Built-in",
    "custom": "Custom",
    "remove": "Remove",
    "addCustomAgent": "Add Custom Agent",
    "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.",
    "agentName": "Agent Name",
    "binaryName": "Binary Name",
    "versionCommand": "Version Command",
    "spawnArgs": "Spawn Args",
    "addAgent": "Add Agent",
    "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": "Cli Tools Redirect Title",
    "cliToolsRedirectDesc": "Cli Tools Redirect Desc",
    "spawnArgsPlaceholder": "Spawn Args Placeholder",
    "binaryNamePlaceholder": "Binary Name Placeholder",
    "versionCommandPlaceholder": "Version Command Placeholder",
    "architectureTitle": "Architecture Title",
    "flowLocalBinary": "Flow Local Binary",
    "flowOmniRoute": "Flow Omni Route",
    "agentNamePlaceholder": "Agent Name Placeholder",
    "architectureDescription": "Architecture Description",
    "flowExecute": "Flow Execute",
    "flowSpawn": "Flow Spawn",
    "cliToolsRedirectCta": "Cli Tools Redirect Cta",
    "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": "__MISSING__:{count} skills — control OmniRoute via REST / HTTP",
    "cliSkillsSubtitle": "__MISSING__:{count} skills — control OmniRoute via the omniroute terminal binary",
    "howToUseStep1": "__MISSING__:Click <bold>{copyUrl}</bold> on the skill you want your agent to know about.",
    "howToUseStep2": "__MISSING__:In your AI agent (Claude, Cursor, Cline…), say:",
    "howToUseStep2Code": "__MISSING__:Use the skill at [pasted-url]",
    "howToUseStep3": "__MISSING__:The agent fetches the SKILL.md and learns OmniRoute's API or CLI — no manual docs needed."
  },
  "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": "__MISSING__:No tasks yet",
    "noTasksDesc": "__MISSING__:Create your first task to get started.",
    "tasksTab": "__MISSING__:Tasks",
    "agentsTab": "__MISSING__:Agents",
    "settingsTab": "__MISSING__:Settings",
    "agentsEnabled": "__MISSING__:Enabled",
    "agentsDisabled": "__MISSING__:Disabled",
    "filterAllProviders": "__MISSING__:All Providers",
    "filterAll": "__MISSING__:All",
    "autoRefreshing": "__MISSING__:Auto-refreshing",
    "viewPR": "__MISSING__:View Pull Request",
    "connected": "__MISSING__:Connected",
    "notConnected": "__MISSING__:Not connected",
    "configure": "__MISSING__:Configure",
    "settingsTitle": "__MISSING__:Cloud Agent Settings",
    "settingsDesc": "__MISSING__:Configure local preferences for cloud agents.",
    "settingEnableAgents": "__MISSING__:Enable cloud agents",
    "settingEnableAgentsDesc": "__MISSING__:Allow OmniRoute to orchestrate autonomous coding agents.",
    "settingAutoPR": "__MISSING__:Auto-create PR",
    "settingAutoPRDesc": "__MISSING__:When a task is completed, automatically create a Pull Request with the changes.",
    "settingRequireApproval": "__MISSING__:Require plan approval",
    "settingRequireApprovalDesc": "__MISSING__:Always wait for manual approval before an agent executes a proposed plan.",
    "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"
  },
  "templateNames": {
    "simple-chat": "Simple Chat",
    "streaming": "Streaming",
    "system-prompt": "System Prompt",
    "thinking": "Thinking",
    "tool-calling": "Tool Calling",
    "multi-turn": "Multi-turn",
    "vision": "Visão",
    "schema-coercion": "Coerção de esquema"
  },
  "templateDescriptions": {
    "simple-chat": "Basic chat template",
    "streaming": "Streaming template",
    "system-prompt": "System prompt template",
    "thinking": "Thinking template",
    "tool-calling": "Tool calling template",
    "multi-turn": "Multi-turn template",
    "vision": "Modelo multimodal com entrada de imagem",
    "schema-coercion": "Aplicação de esquema de saída estruturada/JSON"
  },
  "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?"
    }
  },
  "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": "__MISSING__:Loading 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": "__MISSING__:Provider",
    "tableModel": "__MISSING__:Model",
    "performanceTitle": "__MISSING__:Performance",
    "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": "__MISSING__:Share",
    "justNow": "__MISSING__:just now",
    "minutesAgo": "__MISSING__:{minutes}m ago",
    "hoursAgo": "__MISSING__:{hours}h ago",
    "daysAgo": "__MISSING__:{days}d ago",
    "entries": "Entries"
  },
  "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."
  },
  "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"
  },
  "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"
  },
  "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"
  },
  "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": "__MISSING__:Scope",
    "labelProxy": "__MISSING__:Proxy",
    "scopeGlobal": "__MISSING__:global",
    "scopeProvider": "__MISSING__:provider",
    "scopeAccount": "__MISSING__:account",
    "scopeCombo": "__MISSING__: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"
  },
  "playground": {
    "title": "Title",
    "description": "Description",
    "endpoint": "Endpoint",
    "provider": "Provider",
    "model": "Model",
    "accountKey": "Account Key",
    "autoAccounts": "Automático ({count} contas)",
    "noAccounts": "No Accounts",
    "send": "Send",
    "cancel": "Cancel",
    "audioFile": "Audio File",
    "attachImages": "Attach Images",
    "multipartFormData": "Multipart Form Data",
    "upToImages": "Up To Images",
    "selectAudioFile": "Select Audio File",
    "clearAll": "Clear All",
    "request": "Request",
    "response": "Response",
    "transcription": "Transcription",
    "copy": "Copy",
    "resetToDefault": "Reset To Default",
    "downloadAudio": "Download Audio",
    "copyText": "Copy Text",
    "transcriptionHint": "Transcription Hint",
    "imagesGenerated": "{count} imagens geradas",
    "generatedImage": "Imagem gerada {index}",
    "save": "Save",
    "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": "Compare",
    "tabApi": "API",
    "tabBuild": "Build",
    "configPane": "Config",
    "systemPrompt": "System prompt",
    "systemPromptPlaceholder": "You are a helpful assistant.",
    "modelPlaceholder": "e.g. openai/gpt-4o",
    "endpointLabel": "Endpoint",
    "parametersLabel": "Parameters",
    "collapseConfig": "Collapse config pane",
    "expandConfig": "Expand config pane",
    "temperature": "Temperature",
    "maxTokens": "Max tokens",
    "topP": "Top-p",
    "presencePenalty": "Presence penalty",
    "frequencyPenalty": "Frequency penalty",
    "seedPlaceholder": "Random (leave empty)",
    "presetsLabel": "Presets",
    "loadPreset": "Load preset",
    "savePreset": "Save preset",
    "noPresets": "No presets",
    "presetNamePlaceholder": "Preset name",
    "savingPreset": "Saving…",
    "nameRequired": "Name is required",
    "failedToSavePreset": "Failed to save preset",
    "improvePrompt": "Improve prompt",
    "improvingPrompt": "Improving…",
    "improvePromptTitle": "Improve your prompt with AI",
    "setModelFirst": "Set a model first",
    "improveQuotaWarning": "This will consume quota from the model configured in Config.",
    "improveConfirm": "Improve",
    "exportCode": "Export code",
    "exportCodeTitle": "Export Code",
    "noStateToExport": "No playground state available to export.",
    "copyCode": "Copy",
    "copiedCode": "Copied!",
    "addModel": "+ Add model",
    "runAll": "Run all",
    "cancelAll": "Cancel all",
    "maxColumnsReached": "Maximum {max} columns",
    "modelPlaceholderCompare": "Model (Cmd+K)…",
    "ttft": "TTFT",
    "tps": "TPS",
    "metricsDisclaimer": "client-side estimate",
    "tokensLabel": "Tokens",
    "costLabel": "Cost",
    "costEstimated": "(estimated)",
    "toolsLabel": "Tools",
    "addTool": "Add tool",
    "toolNamePlaceholder": "Function name",
    "toolDescPlaceholder": "Description (optional)",
    "toolParamsInvalid": "Parameters must be valid JSON",
    "structuredOutputLabel": "Structured Output",
    "enableJsonMode": "Enable JSON mode",
    "disableJsonMode": "Disable JSON mode",
    "invalidJson": "Invalid JSON",
    "running": "Running…",
    "runLabel": "Run",
    "enterToolResult": "Enter tool result…"
  },
  "miniPlayground": {
    "endpoint": "__MISSING__:Endpoint",
    "apiKey": "__MISSING__:API Key",
    "model": "__MISSING__:Model",
    "voice": "__MISSING__:Voice",
    "speed": "__MISSING__:Speed",
    "input": "__MISSING__:Input",
    "url": "__MISSING__:URL",
    "format": "__MISSING__:Format",
    "depth": "__MISSING__:Depth",
    "copyCurl": "__MISSING__:Copy cURL",
    "copied": "__MISSING__:Copied!",
    "run": "__MISSING__:Run",
    "running": "__MISSING__:Running...",
    "response": "__MISSING__:Response",
    "tunnel": "__MISSING__:Tunnel",
    "send": "__MISSING__:Send",
    "selectKey": "__MISSING__:Select key",
    "testLabel": "__MISSING__:Test",
    "expandTest": "__MISSING__:Expand test",
    "collapseTest": "__MISSING__:Collapse test",
    "revealKey": "__MISSING__:Reveal key",
    "hideKey": "__MISSING__:Hide key",
    "download": "__MISSING__:Download",
    "play": "__MISSING__:Play",
    "query": "__MISSING__:Query",
    "numResults": "__MISSING__:Max results",
    "prompt": "__MISSING__:Prompt",
    "size": "__MISSING__:Size",
    "duration": "__MISSING__:Duration",
    "question": "__MISSING__:Question",
    "audioFile": "__MISSING__:Audio file",
    "noKeysFound": "__MISSING__:No API keys found. Add one in the Keys section.",
    "exampleLabel": "__MISSING__:Example",
    "latency": "__MISSING__:{ms}ms",
    "statsLine": "__MISSING__:{ms}ms · {tokensIn} in / {tokensOut} out tokens"
  },
  "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}."
  },
  "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",
    "colClientIp": "Client 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"
  },
  "endpointOptions": {
    "speech": "Speech",
    "search": "Search",
    "images": "Images",
    "chat": "Chat",
    "music": "Music",
    "responses": "Responses",
    "rerank": "Rerank",
    "video": "Video",
    "embeddings": "Embeddings",
    "transcription": "Transcription"
  },
  "toolDescriptions": {
    "cline": "Cline",
    "openclaw": "Openclaw",
    "droid": "Droid",
    "codex": "Codex",
    "claude": "Claude",
    "kilo": "Kilo"
  },
  "runtime": {
    "title": "Runtime",
    "description": "Realtime observability — 3-layer resilience + sessions + quota alerts",
    "pause": "Pause",
    "resume": "Resume",
    "refreshNow": "Refresh now",
    "kpiSessions": "Sessions",
    "kpiCircuits": "Circuits",
    "kpiCooldowns": "Cooldowns",
    "kpiLockouts": "Lockouts",
    "hintStickyBound": "{count} sticky-bound",
    "hintRecovering": "{count} recovering",
    "hintAllHealthy": "all healthy",
    "hintOpen": "open",
    "hintConnsCooling": "connections cooling",
    "hintModelsBlocked": "models blocked",
    "resilienceTitle": "3-Layer Resilience",
    "resilienceSubtitle": "Mirrors the documented resilience model",
    "providersHealthy": "{percent}% providers healthy",
    "layer": "Layer {n}",
    "layer1Title": "Provider Circuit Breakers",
    "layer1Desc": "Stop traffic to providers failing at the upstream level",
    "layer2Title": "Connection Cooldowns",
    "layer2Desc": "Skip one bad account/key; other connections keep serving",
    "layer3Title": "Model Lockouts",
    "layer3Desc": "Per-model rate-limit locks; same connection still serves other models",
    "badgeAffectedOf": "{affected} of {total} affected",
    "badgeCooling": "{count} cooling",
    "badgeLocked": "{count} locked",
    "emptyCircuits": "No circuit breakers active yet",
    "emptyCooldowns": "No connection cooldowns active",
    "emptyLockouts": "No model lockouts",
    "moreCooldowns": "+{count} more cooldowns",
    "moreLockouts": "+{count} more lockouts",
    "feedTitle": "Live Feed",
    "feedSubtitle": "Last {count} events",
    "feedFilterAll": "All",
    "feedFilterCircuits": "Circuits",
    "feedFilterCooldowns": "Cooldowns",
    "feedFilterLockouts": "Lockouts",
    "feedFilterSessions": "Sessions",
    "feedFilterQuotas": "Quotas",
    "feedClear": "Clear",
    "feedEmptyWaiting": "Waiting for events... (polled every 5s)",
    "feedEmptyFiltered": "No events match this filter",
    "sessionsTitle": "Active Sessions",
    "sessionsSubtitle": "Sticky-bound request fingerprints (live)",
    "sessionsActive": "{count} active",
    "sessionsEmptyTitle": "No active sessions",
    "sessionsEmptyHint": "Sessions appear as requests flow through the proxy",
    "tblSession": "Session",
    "tblAge": "Age",
    "tblIdle": "Idle",
    "tblReqs": "Reqs",
    "tblBoundTo": "Bound to",
    "topApiKeys": "Top API keys",
    "quotaMonitorsTitle": "Quota Monitors",
    "quotaMonitorsSubtitle": "Live quota state per account window",
    "openQuota": "Open Quota",
    "allQuotasHealthy": "All quotas healthy",
    "statusExhausted": "EXHAUSTED",
    "statusAlerting": "ALERTING",
    "statusError": "ERROR",
    "moreSuffix": "+{count} more"
  },
  "quotaShare": {
    "title": "Quota Sharing",
    "description": "Share provider quotas across API keys with % limits",
    "newPool": "New pool",
    "betaTitle": "Beta — UI preview.",
    "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.",
    "kpiActivePools": "Active pools",
    "kpiKeysAllocated": "Keys allocated",
    "kpiAvgUnallocated": "Avg unallocated",
    "kpiProvidersWithQuota": "Providers w/ quota",
    "emptyTitle": "No pools configured",
    "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.",
    "loading": "Loading…",
    "removePool": "Remove pool",
    "removeConfirm": "Remove this pool?",
    "pool": "Pool",
    "used": "used",
    "allocationsCount": "Allocations ({count})",
    "allocatedFree": "{allocated}% allocated · {free}% free",
    "noAllocations": "No keys allocated yet",
    "capLabel": "cap {value}",
    "notTrackedYet": "(not tracked yet)",
    "policy": "Policy",
    "policyHard": "hard",
    "policySoft": "soft",
    "policyBurst": "burst",
    "policyHardHint": "Block when key exhausts allocation",
    "policySoftHint": "Allow overflow, alert only",
    "policyBurstHint": "Allow burst into free pool",
    "editAllocations": "Edit allocations",
    "newPoolTitle": "New quota pool",
    "providerConnection": "Provider connection (account)",
    "selectConnection": "Select a connection…",
    "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.",
    "quotaWindow": "Quota window",
    "selectWindow": "Select a window…",
    "alreadyUsedSuffix": "(already used)",
    "windowReset": "Reset",
    "duplicatePoolError": "A pool for this connection + window already exists",
    "cancel": "Cancel",
    "createPool": "Create pool",
    "editTitle": "Edit allocations",
    "noKeysAdded": "No keys allocated. Add one below.",
    "totalLabel": "Total: {percent}%",
    "totalExceeded": "⚠ exceeds 100%",
    "addKey": "+ Add key…",
    "equalSplit": "Equal split",
    "save": "Save allocations",
    "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"
  },
  "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"
  }
}
