fix(i18n): add missing dashboard message keys across locales

Populate newly introduced dashboard and provider UI message keys in all
locale bundles to prevent missing translation lookups after the v3.7.0
changes.

Also fix quota reset handling so expired limits are only marked stale
when usage is still pending, adjust combo form dark-mode backgrounds,
and expand the prepublish hash rewrite to handle nested package paths.
This commit is contained in:
diegosouzapw
2026-04-25 20:56:43 -03:00
parent 3dba954900
commit d9120c7b56
35 changed files with 31983 additions and 487 deletions

View File

@@ -255,7 +255,7 @@ if (sanitisedCount > 0) {
// to ensure all require() calls use the real package names.
{
const serverOutput = join(APP_DIR, ".next", "server");
const HASH_RE = /(['"\\])([a-z@][a-z0-9@./_-]+-[0-9a-f]{16})\1/g;
const HASH_RE = /(['"\\])([a-z@][a-z0-9@./_-]+?-[0-9a-f]{16}(?:\/[^'"\\]+)?)\1/g;
let patchedFiles = 0;
let patchedMatches = 0;
const walkDir = (dir: string) => {
@@ -277,7 +277,7 @@ if (sanitisedCount > 0) {
const src = readFileSync(full, "utf8");
let count = 0;
const patched = src.replace(HASH_RE, (_, q, name) => {
const base = name.replace(/-[0-9a-f]{16}$/, "");
const base = name.replace(/-[0-9a-f]{16}(?=\/|$)/, "");
count++;
return `${q}${base}${q}`;
});

View File

@@ -2801,7 +2801,7 @@ function ComboFormModal({ isOpen, combo, onClose, onSave, activeProviders, combo
}
className={`py-1.5 px-2 rounded-md text-xs font-medium transition-all ${
strategy === s.value
? "bg-white dark:bg-bg-main shadow-sm text-primary"
? "bg-white dark:bg-white/5 shadow-sm text-primary"
: "text-text-muted hover:text-text-main"
}`}
>
@@ -2913,7 +2913,7 @@ function ComboFormModal({ isOpen, combo, onClose, onSave, activeProviders, combo
}}
placeholder="provider/model"
data-testid="combo-manual-model-input"
className="flex-1 text-xs py-2 px-2 rounded border border-black/10 dark:border-white/10 bg-white dark:bg-bg-main text-text-main focus:border-primary focus:outline-none font-mono"
className="flex-1 text-xs py-2 px-2 rounded border border-black/10 dark:border-white/10 bg-white dark:bg-white/5 text-text-main focus:border-primary focus:outline-none font-mono"
/>
<Button
onClick={handleAddManualModel}
@@ -2946,7 +2946,7 @@ function ComboFormModal({ isOpen, combo, onClose, onSave, activeProviders, combo
value={builderProviderId}
onChange={handleBuilderProviderChange}
data-testid="combo-builder-provider"
className="w-full text-xs py-2 px-2 rounded border border-black/10 dark:border-white/10 bg-white dark:bg-bg-main text-text-main focus:border-primary focus:outline-none"
className="w-full text-xs py-2 px-2 rounded border border-black/10 dark:border-white/10 bg-white dark:bg-white/5 text-text-main focus:border-primary focus:outline-none"
>
<option value="">
{builderLoading
@@ -2971,7 +2971,7 @@ function ComboFormModal({ isOpen, combo, onClose, onSave, activeProviders, combo
onChange={handleBuilderModelChange}
disabled={!selectedBuilderProvider}
data-testid="combo-builder-model"
className="w-full text-xs py-2 px-2 rounded border border-black/10 dark:border-white/10 bg-white dark:bg-bg-main text-text-main focus:border-primary focus:outline-none disabled:opacity-50"
className="w-full text-xs py-2 px-2 rounded border border-black/10 dark:border-white/10 bg-white dark:bg-white/5 text-text-main focus:border-primary focus:outline-none disabled:opacity-50"
>
<option value="">
{selectedBuilderProvider
@@ -2996,7 +2996,7 @@ function ComboFormModal({ isOpen, combo, onClose, onSave, activeProviders, combo
onChange={handleBuilderConnectionChange}
disabled={!selectedBuilderModel}
data-testid="combo-builder-account"
className="w-full text-xs py-2 px-2 rounded border border-black/10 dark:border-white/10 bg-white dark:bg-bg-main text-text-main focus:border-primary focus:outline-none disabled:opacity-50"
className="w-full text-xs py-2 px-2 rounded border border-black/10 dark:border-white/10 bg-white dark:bg-white/5 text-text-main focus:border-primary focus:outline-none disabled:opacity-50"
>
<option value={COMBO_BUILDER_AUTO_CONNECTION}>
{getI18nOrFallback(
@@ -3079,7 +3079,7 @@ function ComboFormModal({ isOpen, combo, onClose, onSave, activeProviders, combo
<select
value={builderComboRefName}
onChange={(e) => setBuilderComboRefName(e.target.value)}
className="flex-1 text-xs py-2 px-2 rounded border border-black/10 dark:border-white/10 bg-white dark:bg-bg-main text-text-main focus:border-primary focus:outline-none"
className="flex-1 text-xs py-2 px-2 rounded border border-black/10 dark:border-white/10 bg-white dark:bg-white/5 text-text-main focus:border-primary focus:outline-none"
>
<option value="">
{getI18nOrFallback(

View File

@@ -157,10 +157,18 @@ function normalizeQuotaEntry(name: string, quota: any = {}, extras: any = {}) {
const usedRaw = Number(quota?.used || 0);
const totalRaw = Number(quota?.total || 0);
const resetAt = quota?.resetAt || null;
const staleAfterReset = isPastResetWindow(resetAt);
// T13: Only consider it stale if the reset time passed AND there's still usage shown.
// If usage is already 0 (or remaining is 100%), it's naturally reset and doesn't need to be marked as stale.
const passedReset = isPastResetWindow(resetAt);
const remainingPercentageRaw = safePercentage(quota?.remainingPercentage);
const hasPendingUsage =
usedRaw > 0 || (remainingPercentageRaw !== undefined && remainingPercentageRaw < 100);
const staleAfterReset = passedReset && hasPendingUsage;
const used = staleAfterReset ? 0 : usedRaw;
const total = Number.isFinite(totalRaw) ? totalRaw : 0;
const remainingPercentageRaw = safePercentage(quota?.remainingPercentage);
const remainingPercentage =
staleAfterReset && total > 0
? 100

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -144,7 +144,511 @@
"combos": "Combos",
"noModelsFound": "Nenhum modelo encontrado",
"clear": "Claro",
"done": "Feito"
"done": "Feito",
"errorOccurred": "Error Occurred",
"comboDeleted": "Combo Deleted",
"hide": "Hide",
"creating": "Creating",
"comboCreated": "Combo Created",
"swapFormats": "Swap Formats",
"daysAgo": "Days Ago",
"retries": "Retries",
"errorDuringRestore": "Error During Restore",
"eventsAppearHint": "Events Appear Hint",
"noLockouts": "No Lockouts",
"webSearchDesc": "Web Search Desc",
"audioProvidersHeading": "Audio Providers Heading",
"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",
"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",
"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"
},
"sidebar": {
"home": "Início",
@@ -201,7 +705,36 @@
"themeCyan": "Ciano",
"cliToolsShort": "Ferramentas",
"cache": "Cache",
"cacheShort": "Cache"
"cacheShort": "Cache",
"batch": "Testes em Lote",
"themeSystem": "Theme System",
"whitelabelingDesc": "Whitelabeling Desc",
"switchThemes": "Switch Themes",
"themeAccentDesc": "Theme Accent Desc",
"uploadFavicon": "Upload Favicon",
"themeDark": "Theme Dark",
"customLogoDesc": "Custom Logo Desc",
"sidebarVisibilityToggle": "Sidebar Visibility Toggle",
"themeAccent": "Theme Accent",
"resetFavicon": "Reset Favicon",
"whitelabeling": "Whitelabeling",
"darkMode": "Dark Mode",
"uploadLogo": "Upload Logo",
"themeLight": "Theme Light",
"appName": "App Name",
"appNameDesc": "App Name Desc",
"resetLogo": "Reset Logo",
"customFavicon": "Custom Favicon",
"hideHealthLogs": "Hide Health Logs",
"customLogo": "Custom Logo",
"appearance": "Appearance",
"themeSelectionAria": "Theme Selection Aria",
"themeCreate": "Theme Create",
"customFaviconDesc": "Custom Favicon Desc",
"logoPreview": "Logo Preview",
"themeCustom": "Theme Custom",
"hideHealthLogsDesc": "Hide Health Logs Desc",
"faviconPreview": "Favicon Preview"
},
"themesPage": {
"title": "Temas",
@@ -1335,7 +1868,39 @@
"completionsLegacy": "Conclusões (legado)",
"completionsLegacyDesc": "Conclusões de texto herdadas do OpenAI — aceita string de prompt e formato de array de mensagens",
"musicDesc": "Gere músicas e faixas de áudio via ComfyUI (Stable Audio, MusicGen)",
"musicGeneration": "Geração Musical"
"musicGeneration": "Geração Musical",
"tailscaleRequestFailed": "Failed to load Tailscale status",
"tailscaleEnableFailed": "Falha ao habilitar o Tailscale Funnel",
"tailscaleWaitingForLogin": "Conclua o login do Tailscale na aba aberta do navegador. O OmniRoute tentará novamente de forma automática.",
"tailscaleLoginTimedOut": "Tempo limite expirado aguardando o login do Tailscale",
"tailscaleWaitingForFunnel": "Habilite o Funnel para este dispositivo na aba aberta do navegador. O OmniRoute continuará verificando.",
"tailscaleFunnelTimedOut": "Tempo limite expirado aguardando o Tailscale Funnel ser habilitado",
"tailscaleStarted": "Tailscale Funnel habilitado",
"tailscaleDisableFailed": "Falha ao desabilitar o Tailscale Funnel",
"tailscaleStopped": "Tailscale Funnel desabilitado",
"tailscaleInstallFailed": "Falha ao instalar o Tailscale",
"tailscaleInstallProgress": "Trabalhando...",
"tailscaleInstalled": "Tailscale instalado com sucesso",
"tailscaleRunning": "Executando",
"tailscaleNeedsLogin": "Requer Login",
"tailscaleStoppedState": "Parado",
"tailscaleNotInstalled": "Não instalado",
"tailscaleUnsupported": "Não suportado",
"tailscaleError": "Erro",
"tailscaleDisable": "Parar Funnel",
"tailscaleInstallAndEnable": "Instalar e Habilitar",
"tailscaleLoginAndEnable": "Login e Habilitar",
"tailscaleEnable": "Habilitar Funnel",
"tailscaleUrlNotice": "Usa seu endereço .ts.net do Tailscale. Login e aprovação do Funnel podem ser necessários no primeiro uso.",
"tailscaleTitle": "Tailscale Funnel",
"tailscaleNeedsLoginHint": "Autentique esta máquina com o Tailscale, depois habilite o Funnel.",
"tailscaleBinaryPath": "Binário: {path}",
"tailscaleLastError": "Último erro: {error}",
"tailscaleInstallTitle": "Install Tailscale",
"tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.",
"tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.",
"tailscaleSudoPlaceholder": "Optional sudo password",
"tailscaleInstalling": "Installing"
},
"endpoints": {
"tabProxy": "Proxy de terminal",
@@ -1415,7 +1980,11 @@
"tableApiKey": "Chave API",
"failed": "falhou",
"previous": "Anterior",
"next": "Próxima"
"next": "Próxima",
"apiKeyId": "Api Key Id",
"offset": "Offset",
"limit": "Limit",
"tool": "Tool"
},
"a2aDashboard": {
"loading": "Carregando painel A2A...",
@@ -1469,7 +2038,11 @@
"close": "Fechar",
"metadata": "Metadados",
"events": "Eventos",
"artifacts": "Artefatos"
"artifacts": "Artefatos",
"tablePhase": "Table Phase",
"offset": "Offset",
"limit": "Limit",
"skill": "Skill"
},
"memory": {
"title": "Gerenciamento de Memória",
@@ -1494,7 +2067,8 @@
"episodic": "Episódica",
"procedural": "Processual",
"semantic": "Semântica",
"delete": "Excluir"
"delete": "Excluir",
"a": "A"
},
"skills": {
"title": "Skills",
@@ -1521,7 +2095,9 @@
"timeout": "Tempo esgotado",
"timeoutDesc": "Tempo máximo de espera por resposta",
"networkAccess": "Acesso à Rede",
"networkAccessDesc": "Permitir requisições de rede de saída"
"networkAccessDesc": "Permitir requisições de rede de saída",
"mode": "Mode",
"q": "Q"
},
"health": {
"title": "Saúde do Sistema",
@@ -1663,7 +2239,11 @@
"notAvailable": "—",
"noEntries": "Nenhuma entrada de log de auditoria encontrada",
"previous": "Anterior",
"next": "Próximo"
"next": "Próximo",
"a": "A",
"offset": "Offset",
"limit": "Limit",
"tab": "Tab"
},
"onboarding": {
"welcome": "Bem-vindo",
@@ -2172,7 +2752,20 @@
"databricksBaseUrlHint": "Obrigatório: cole a URL base do serving-endpoints do Databricks. O app adicionará /chat/completions.",
"snowflakeBaseUrlHint": "Obrigatório: cole a URL base da conta Snowflake. O app adicionará /api/v2/cortex/inference:complete.",
"searxngBaseUrlHint": "Obrigatório: cole a URL base da sua instância SearXNG. O app usará /search e request format=json. URLs locais/privadas exigem OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true para validação no dashboard.",
"localProviderBaseUrlHint": "Obrigatório: cole a URL base OpenAI-compatible /v1 do seu {provider} (padrão: {baseUrl}). URLs locais/privadas exigem OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true para validação no dashboard."
"localProviderBaseUrlHint": "Obrigatório: cole a URL base OpenAI-compatible /v1 do seu {provider} (padrão: {baseUrl}). URLs locais/privadas exigem OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true para validação no dashboard.",
"a": "A",
"accountConcurrencyCapHint": "Account Concurrency Cap Hint",
"accountConcurrencyCapLabel": "Account Concurrency Cap Label",
"apikey": "Apikey",
"audio": "Audio",
"compatible": "Compatible",
"oauth": "Oauth",
"search": "Search",
"testModel": "Test Model",
"testingModel": "Testing Model",
"unhideModel": "Unhide Model",
"perModelQuotaDescription": "Per Model Quota Description",
"perModelQuotaLabel": "Per Model Quota Label"
},
"settings": {
"title": "Configurações",
@@ -2717,7 +3310,15 @@
"wildcardPatternModeDesc": "Use aliases curinga com * e ? quando uma família de modelos deve ser mapeada para um alvo.",
"noExactAliasesConfigured": "Nenhum aliase de correspondência exata configurado.",
"wildcardRulesTitle": "Regras curinga",
"noWildcardAliasesConfigured": "Nenhum aliase curinga configurado."
"noWildcardAliasesConfigured": "Nenhum aliase curinga configurado.",
"overview": "Overview",
"pageDescription": "Page Description",
"whitelist": "Whitelist",
"enableSyncError": "Enable Sync Error",
"blacklist": "Blacklist",
"budget": "Budget",
"tab": "Tab",
"nextSync": "Next Sync"
},
"translator": {
"title": "Tradutor",
@@ -3147,7 +3748,12 @@
"tierPro": "Pro",
"tierPlus": "Plus",
"tierFree": "Free",
"tierUnknown": "Desconhecido"
"tierUnknown": "Desconhecido",
"saving": "Saving",
"cancel": "Cancel",
"delete": "Delete",
"save": "Save",
"edit": "Edit"
},
"modals": {
"waitingAuth": "Aguardando Autorização",
@@ -3784,6 +4390,102 @@
"promptCacheSectionDesc": "Mostra a atividade de cache de prompt do provedor a partir do histórico de uso para que você possa ver onde o controle de cache está ativo e quanta reutilização de entrada você está obtendo.",
"trendHour": "Hora",
"noTrendData": "Nenhuma atividade de cache de prompt foi registrada nas últimas 24 horas.",
"cacheRateDesc": "do total de solicitações"
"cacheRateDesc": "do total de solicitações",
"disabled": "Disabled",
"totalRequests": "Total Requests"
},
"playground": {
"endpointOptions": {
"images": "Images",
"video": "Video",
"chat": "Chat",
"speech": "Speech",
"rerank": "Rerank",
"transcription": "Transcription",
"responses": "Responses",
"search": "Search",
"music": "Music",
"embeddings": "Embeddings"
},
"transcriptionHint": "Transcription Hint",
"noAccounts": "No Accounts",
"attachImages": "Attach Images",
"cancel": "Cancel",
"downloadAudio": "Download Audio",
"title": "Title",
"request": "Request",
"send": "Send",
"description": "Description",
"multipartFormData": "Multipart Form Data",
"generatedImage": "Generated Image",
"upToImages": "Up To Images",
"autoAccounts": "Auto Accounts",
"imagesGenerated": "Images Generated",
"model": "Model",
"clearAll": "Clear All",
"response": "Response",
"endpoint": "Endpoint",
"copyText": "Copy Text",
"resetToDefault": "Reset To Default",
"audioFile": "Audio File",
"provider": "Provider",
"save": "Save",
"accountKey": "Account Key",
"transcription": "Transcription",
"selectAudioFile": "Select Audio File",
"copy": "Copy"
},
"endpointOptions": {
"speech": "Speech",
"search": "Search",
"images": "Images",
"chat": "Chat",
"music": "Music",
"responses": "Responses",
"rerank": "Rerank",
"video": "Video",
"embeddings": "Embeddings",
"transcription": "Transcription"
},
"proxyRegistry": {
"errorLoadFailed": "Error Load Failed",
"errorMigrateFailed": "Error Migrate Failed",
"noProxies": "No Proxies",
"errorSaveFailed": "Error Save Failed",
"modalCreateTitle": "Modal Create Title",
"tableUsage": "Table Usage",
"failed": "Failed",
"successRate": "Success Rate",
"errorDeleteFailed": "Error Delete Failed",
"loading": "Loading",
"importLegacy": "Import Legacy",
"test": "Test",
"title": "Title",
"errorBulkFailed": "Error Bulk Failed",
"description": "Description",
"avgLatency": "Avg Latency",
"bulkAssign": "Bulk Assign",
"errorNameHostRequired": "Error Name Host Required",
"tableStatus": "Table Status",
"addProxy": "Add Proxy",
"tableActions": "Table Actions",
"tableEndpoint": "Table Endpoint",
"delete": "Delete",
"errorForceDeleteConfirm": "Error Force Delete Confirm",
"noData": "No Data",
"edit": "Edit",
"assignmentsCount": "Assignments Count",
"modalEditTitle": "Modal Edit Title",
"labelName": "Label Name",
"tableName": "Table Name",
"tableHealth": "Table Health"
},
"toolDescriptions": {
"cline": "Cline",
"openclaw": "Openclaw",
"droid": "Droid",
"codex": "Codex",
"claude": "Claude",
"kilo": "Kilo"
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff