{
  "common": {
    "save": "Сохранить",
    "cancel": "Отмена",
    "delete": "Удалить",
    "loading": "Загрузка...",
    "error": "Произошла ошибка",
    "success": "Успех",
    "confirm": "Вы уверены?",
    "refresh": "Обновить",
    "close": "Закрыть",
    "add": "Добавить",
    "edit": "Редактировать",
    "search": "Поиск",
    "back": "Назад",
    "next": "Далее",
    "submit": "Отправить",
    "reset": "Сброс",
    "copy": "Копировать",
    "copied": "Скопировано!",
    "enabled": "Включено",
    "disabled": "Отключено",
    "active": "Активный",
    "inactive": "Неактивный",
    "noData": "Нет доступных данных",
    "nothingHere": "Nothing here yet",
    "configure": "Настроить",
    "manage": "Управление",
    "name": "Имя",
    "actions": "Действия",
    "status": "Статус",
    "type": "Тип",
    "model": "Модель",
    "models": "модели",
    "provider": "Поставщик",
    "account": "Аккаунт",
    "time": "Время",
    "details": "Подробности",
    "created": "Создано",
    "lastUsed": "Последнее обновление",
    "loadMore": "Загрузить больше",
    "noResults": "Результаты не найдены",
    "reloadPage": "Обновить страницу",
    "connected": "Подключено",
    "disconnected": "Отключено",
    "notConfigured": "Не настроено",
    "testConnection": "Тестовое соединение",
    "enable": "Включить",
    "disable": "Отключить",
    "columns": "Столбцы",
    "newest": "Новейший",
    "oldest": "Самый старый",
    "all": "Все",
    "none": "Нет",
    "yes": "Да",
    "no": "Нет",
    "on": "ВКЛ.",
    "off": "Выкл.",
    "warning": "Предупреждение",
    "note": "Примечание",
    "free": "Бесплатно",
    "skipToContent": "Перейти к содержимому",
    "maintenanceServerIssues": "На сервере возникли проблемы. Некоторые функции могут быть недоступны.",
    "maintenanceServerUnreachable": "Сервер недоступен. Повторное подключение...",
    "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": "Гугл",
    "TOOL_ALLOWLIST": "Белый список инструментов",
    "TOOL_DENYLIST": "Список запрещенных инструментов",
    "Failed to save pricing": "Не удалось сохранить цену.",
    "Failed to reset pricing": "Не удалось сбросить цены.",
    "apikey": "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": "Поставщики облачных агентов",
    "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": "Только бесплатно",
    "addFirstProvider": "Добавьте своего первого провайдера",
    "addFirstProviderDesc": "Подключите поставщика искусственного интеллекта, чтобы начать маршрутизацию запросов через OmniRoute. Вы можете использовать бесплатных провайдеров, ключи API или учетные записи OAuth.",
    "learnMore": "Узнать больше",
    "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": "Поставщики бесплатного уровня",
    "freeTierLabel": "Доступен бесплатный уровень",
    "freeTierProvidersDesc": "Поставщики с бесплатными уровнями — некоторым требуется регистрация ключа API, другим вообще не нужны учетные данные.",
    "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": "Администратор геймификации",
    "monitorAnomaliesAndHealth": "Мониторинг аномалий и работоспособности системы",
    "flaggedAnomalies": "Помеченные аномалии",
    "noAnomaliesDetected": "Аномалий не обнаружено",
    "apiKey": "API-ключ",
    "xpLastHour": "Опыт (1 час)",
    "zScore": "Z-оценка",
    "tokensCommunityServers": "Серверы сообщества",
    "tokensServerNamePlaceholder": "Имя сервера",
    "tokensApiKeyPlaceholder": "API-ключ",
    "tokensTokenBalance": "Баланс токенов",
    "tokensSendTokens": "Отправить токены",
    "tokensRecipientApiKeyId": "Идентификатор ключа API получателя",
    "tokensRecipientApiKeyIdPlaceholder": "Введите идентификатор API-ключа получателя",
    "tokensReasonOptional": "Причина (необязательно)",
    "tokensReasonPlaceholder": "например бонус, награда",
    "tokensTransactionHistory": "История транзакций",
    "tokensNoTransactionsYet": "Транзакций пока нет",
    "tokensInviteCodes": "Пригласительные коды",
    "tokensMaxUses": "Максимальное использование",
    "tokensRedeemCode": "Активировать код",
    "tokensRedeemCodePlaceholder": "Введите пригласительный код",
    "tokensYourActiveInvites": "Ваши активные приглашения",
    "tierCoverageTitle": "Уровень покрытия",
    "tierCoverageSubtitle": "Поставщики настроены для каждого резервного уровня",
    "batchDetailCopyId": "Копировать идентификатор",
    "batchDetailClose": "Закрыть",
    "batchDetailEndpoint": "Конечная точка",
    "batchDetailModel": "Модель",
    "batchDetailWindow": "Окно",
    "batchDetailCreated": "Создано",
    "providerTopologyEmpty": "Пока ни один провайдер не подключен",
    "badgeToastUnlocked": "Значок разблокирован!",
    "batchListSearchPlaceholder": "Поиск по идентификатору, конечной точке, модели…",
    "batchListDeleteAllCompletedTitle": "Удалить все завершенные пакеты",
    "batchListBatchesTable": "Пакеты",
    "changelogViewerLoading": "Загрузка журнала изменений с GitHub...",
    "profileLoading": "Загрузка профиля...",
    "profileHowToEarn": "Как заработать",
    "bootstrapBannerDismiss": "Уволить",
    "batchListDeleteBatchTitle": "Удалить пакет и его файлы",
    "leaderboardYourRank": "Ваш ранг",
    "leaderboardLoading": "Загрузка таблицы лидеров...",
    "batchFileDetailCopyId": "Копировать идентификатор",
    "batchFileDetailClose": "Закрыть",
    "batchFileDetailFailedToLoad": "Не удалось загрузить содержимое файла",
    "batchFilesListSearchPlaceholder": "Поиск по идентификатору или имени файла…",
    "batchFilesListFilesTable": "Файлы",
    "batchPageLoadingMore": "Загрузка еще…",
    "recommended": "Рекомендуется",
    "understand": "Я понимаю",
    "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",
    "filesListUsedByRoleInput": "input",
    "filesListUsedByRoleOutput": "output",
    "filesListUsedByRoleError": "error",
    "filesListSizeColumn": "Size",
    "batchListProgressPartial": "(partial)",
    "batchListProviderColumn": "Provider",
    "batchListProviderUnknown": "—",
    "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",
    "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",
    "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)"
  },
  "sidebar": {
    "home": "Главная",
    "dashboard": "Панель управления",
    "providers": "Провайдеры",
    "combos": "Комбо",
    "usage": "Использование",
    "analytics": "Аналитика",
    "costs": "Затраты",
    "health": "Здоровье",
    "proxy": "Прокси",
    "limits": "Лимиты и квоты",
    "cliTools": "Инструменты интерфейса командной строки",
    "media": "Медиа",
    "settings": "Настройки",
    "translator": "Переводчик",
    "playground": "Площадка",
    "searchTools": "Инструменты поиска",
    "agents": "Агенты",
    "cloudAgents": "Облачные агенты",
    "memory": "Память",
    "skills": "Навыки",
    "omniSkills": "Омнискиллс",
    "agentSkills": "Навыки агента",
    "docs": "Документы",
    "issues": "Проблемы",
    "endpoints": "Конечные точки",
    "endpointsSubtitle": "URL-адреса вашего подключения к AI",
    "apiManager": "Менеджер API",
    "apiManagerSubtitle": "Управление ключами API и доступом",
    "embeddedServices": "Встроенные Сервисы",
    "embeddedServicesSubtitle": "Управление локальными прокси-сервисами",
    "logs": "Журналы",
    "webhooks": "Вебхуки",
    "webhooksSubtitle": "Получайте уведомления о событиях",
    "combosSubtitle": "Групповые поставщики для аварийного переключения",
    "batchSubtitle": "Обработка нескольких запросов",
    "contextCavemanSubtitle": "Быстрое сжатие",
    "contextRtkSubtitle": "Выходная фильтрация",
    "auditLog": "Журнал аудита",
    "shutdown": "Выключить",
    "restart": "Перезапуск",
    "shutdownConfirm": "Выключить OmniRoute?",
    "restartConfirm": "Перезапустить OmniRoute?",
    "version": "v{version}",
    "debug": "Отладка",
    "system": "Система",
    "help": "Помощь",
    "primarySection": "Основные",
    "cliSection": "CLI",
    "debugSection": "Отладка",
    "systemSection": "Система",
    "helpSection": "Справка",
    "serverDisconnected": "Сервер отключен",
    "serverDisconnectedMsg": "Прокси-сервер остановлен или перезагружается.",
    "expandSidebar": "Развернуть боковую панель",
    "collapseSidebar": "Свернуть боковую панель",
    "themes": "Темы",
    "presetColors": "Популярные цвета",
    "createTheme": "Создать тему",
    "chooseColor": "Выберите один цвет",
    "themeCoral": "Коралловый",
    "themeBlue": "Синий",
    "themeRed": "Красный",
    "themeGreen": "Зелёный",
    "themeViolet": "Фиолетовый",
    "themeOrange": "Оранжевый",
    "themeCyan": "Голубой",
    "cliToolsShort": "Инструменты",
    "cache": "Кэш",
    "cacheShort": "Кэш",
    "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": "Engine Combos",
    "routingSection": "Routing",
    "protocolsSection": "Protocols",
    "agentsAiSection": "Agents & AI",
    "cacheContextSection": "Cache & Context",
    "analyticsSection": "Analytics",
    "costsSection": "Costs",
    "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": "А2А Аудит",
    "settingsGeneral": "General",
    "settingsAppearance": "Appearance",
    "settingsAi": "AI Settings",
    "settingsSecurity": "Security",
    "settingsFeatureFlags": "Флаги функций",
    "settingsAuthz": "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": "Dashboard overview",
    "providersSubtitle": "Manage AI providers",
    "quotaTrackerSubtitle": "Track usage limits",
    "providerQuotaSubtitle": "Track provider usage limits",
    "runtimeSubtitle": "Realtime resilience & sessions",
    "contextCombosSubtitle": "Combine compression engines",
    "cliToolsSubtitle": "Configure CLI runtimes",
    "agentsSubtitle": "Manage local agents",
    "cloudAgentsSubtitle": "Manage cloud-based agents",
    "apiEndpointsSubtitle": "Expose custom endpoints",
    "proxySubtitle": "HTTP proxy settings",
    "mitmProxySubtitle": "MITM interception",
    "oneProxySubtitle": "Public proxy gateway",
    "leaderboard": "Leaderboard",
    "profile": "Profile",
    "tokens": "Tokens",
    "leaderboardSubtitle": "Rankings and achievements",
    "profileSubtitle": "Account and preferences",
    "tokensSubtitle": "Token usage and budgets",
    "usageSubtitle": "Traffic and usage stats",
    "analyticsComboHealthSubtitle": "Combo target reliability",
    "analyticsUtilizationSubtitle": "Provider utilization",
    "costsSubtitle": "Spend breakdown",
    "cacheSubtitle": "Cache hit rates",
    "analyticsCompressionSubtitle": "Token savings stats",
    "analyticsSearchSubtitle": "Search tool analytics",
    "analyticsEvalsSubtitle": "Eval suite results",
    "logsSubtitle": "Application logs",
    "logsProxySubtitle": "Proxy traffic logs",
    "consoleLogsSubtitle": "Console output",
    "logsActivitySubtitle": "User activity log",
    "healthSubtitle": "System health check",
    "costsPricingSubtitle": "Per-model pricing rules",
    "costsBudgetSubtitle": "Budget limits",
    "costsQuotaShareSubtitle": "Share provider quotas across keys",
    "auditLogSubtitle": "Authorization audit",
    "auditMcpSubtitle": "MCP server audit",
    "auditA2aSubtitle": "A2A protocol audit",
    "translatorSubtitle": "Format conversion",
    "playgroundSubtitle": "Test prompts live",
    "searchToolsSubtitle": "Search tool registry",
    "memorySubtitle": "Persistent agent memory",
    "omniSkillsSubtitle": "Sandbox skill registry",
    "agentSkillsSubtitle": "A2A skill registry",
    "mcpSubtitle": "MCP server controls",
    "a2aSubtitle": "A2A protocol server",
    "mediaSubtitle": "Cached media files",
    "batchFilesSubtitle": "Batch input/output files",
    "settingsSubtitle": "All settings",
    "settingsGeneralSubtitle": "App basics",
    "settingsAppearanceSubtitle": "Theme and layout",
    "settingsAiSubtitle": "AI behavior defaults",
    "globalRoutingSubtitle": "Global routing rules",
    "settingsResilienceSubtitle": "Retries and breakers",
    "settingsAdvancedSubtitle": "Power user options",
    "settingsSecuritySubtitle": "Auth and encryption",
    "settingsFeatureFlagsSubtitle": "Переключить возможности системы",
    "settingsSidebar": "Sidebar",
    "settingsSidebarSubtitle": "Customize sidebar layout",
    "settingsAuthzSubtitle": "Политика маршрутизации инвентаря и обхода",
    "docsSubtitle": "Documentation",
    "issuesSubtitle": "Report a bug",
    "changelogSubtitle": "Release notes",
    "costsQuotaPlans": "Планы и Квоты",
    "costsQuotaPlansSubtitle": "Настройте планы по провайдеру",
    "activity": "Активность",
    "activitySubtitle": "Дружелюбная лента недавних событий",
    "logsGroup": "Журналы",
    "systemGroup": "Система",
    "costsOverview": "Обзор",
    "costsOverviewSubtitle": "Консолидированный анализ затрат",
    "agentBridge": "Агентский Мост",
    "agentBridgeSubtitle": "Перехват трафика агента IDE",
    "trafficInspector": "Инспектор Трафика",
    "trafficInspectorSubtitle": "Мониторинг вызовов LLM + отладка любого HTTPS-трафика",
    "cliCode": "CLI Кодов",
    "cliCodeSubtitle": "Инструменты кода, указывающие на OmniRoute",
    "cliAgents": "CLI Агенты",
    "cliAgentsSubtitle": "Автономные CLI-агенты",
    "acpAgents": "Агенты ACP",
    "acpAgentsSubtitle": "CLIs, запущенные OmniRoute"
  },
  "webhooks": {
    "title": "Вебхуки",
    "description": "Настройте обратные вызовы HTTP для системных событий.",
    "configuredWebhooks": "Настроенные вебхуки",
    "configuredWebhooksDesc": "Управляйте конечными точками доставки, подписанными событиями, статусом и тестовыми отправками.",
    "addWebhook": "Добавить вебхук",
    "editWebhook": "Изменить вебхук",
    "name": "Имя",
    "namePlaceholder": "Мониторинг производства",
    "unnamedWebhook": "Безымянный вебхук",
    "url": "URL-адрес конечной точки",
    "events": "События",
    "allEvents": "Все события",
    "secret": "Секрет",
    "secretPlaceholder": "Оставьте поле пустым, чтобы автоматически сгенерировать секрет.",
    "secretEditPlaceholder": "Оставьте пустым, чтобы сохранить текущий секрет",
    "status": "Статус",
    "active": "Активный",
    "inactive": "Неактивный",
    "errored": "Ошибка",
    "total": "Итого",
    "lastTriggered": "Последний запуск",
    "actions": "Действия",
    "enabled": "Включено",
    "enabledDesc": "Отключенные веб-перехватчики остаются сохраненными, но не получают доставки.",
    "refresh": "Обновить",
    "loading": "Загрузка вебхуков...",
    "never": "Никогда",
    "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}",
    "testWebhook": "Отправить тест",
    "testSuccess": "Тестовый вебхук отправлен успешно.",
    "testFailed": "Проверка вебхука не удалась.",
    "saveSuccess": "Вебхук успешно сохранен.",
    "saveFailed": "Не удалось сохранить вебхук.",
    "loadFailed": "Не удалось загрузить вебхуки.",
    "delete": "Удалить",
    "deleteConfirm": "Вы уверены, что хотите удалить этот вебхук?",
    "deleteSuccess": "Вебхук успешно удален.",
    "deleteFailed": "Не удалось удалить вебхук.",
    "edit": "Редактировать",
    "enable": "Включить",
    "disable": "Отключить",
    "noWebhooks": "Вебхуки пока не настроены.",
    "signatureTitle": "Подписи вебхуков",
    "signatureDescription": "Каждая доставка включает заголовок X-Webhook-Signature, подписанный HMAC-SHA256 с использованием секрета веб-перехватчика. Проверьте подпись, прежде чем доверять полезной нагрузке.",
    "wizard": {
      "cancel": "Отменить",
      "step1Title": "Выбрать интеграцию",
      "step2Title": "Настроить Цель",
      "step3Title": "События и тестирование",
      "back": "Назад",
      "next": "Далее",
      "finish": "Завершить",
      "step1Desc": "Выберите целевую интеграционную систему для этого вебхука."
    },
    "howItWorks": {
      "step1": "Выберите провайдера интеграции (например, Slack, Discord, пользовательский вебхук) и настройте детали подключения.",
      "step2": "Настройте системные события для подписки (например, ошибки завершения, резервные модели или лимиты использования).",
      "step3": "Проверьте конфигурацию, отправив тестовый полезный нагрузку, чтобы убедиться, что конечная точка ее получает.",
      "step4": "Обеспечьте безопасность вашей конечной точки, проверяя заголовок X-Webhook-Signature HMAC-SHA256 с использованием секрета вебхука.",
      "title": "Как работают вебхуки",
      "customOnly": "Применимо только для интеграций с пользовательскими конечными точками.",
      "hmacRecipeTitle": "Рецепт проверки HMAC",
      "hmacRecipe": "Чтобы проверить полезные нагрузки вебхуков в Node.js, вычислите HMAC-SHA256 сырого тела запроса с использованием вашего секретного ключа. Сравните его с заголовком X-Webhook-Signature, используя timingSafeEqual.",
      "timeoutNote": "Доставки вебхуков имеют тайм-аут в 10 секунд.",
      "retryNote": "Неудачные доставки повторяются до 5 раз с экспоненциальным увеличением времени ожидания.",
      "docsLink": "Прочитайте полный справочник разработчика по Webhooks",
      "hmacRecipePython": "Python HMAC проверка: hmac.new(secret, body, hashlib.sha256).hexdigest()",
      "hmacRecipeBash": "Проверка HMAC в Bash: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\""
    },
    "deliveries": {
      "title": "Журналы Доставки",
      "loadFailed": "Не удалось загрузить журналы доставки вебхуков.",
      "empty": "Пока нет зафиксированных доставок. Запустите событие или отправьте тестовую нагрузку.",
      "status": "Статус",
      "event": "Событие",
      "latency": "Задержка",
      "at": "Отправлено в"
    },
    "kinds": {
      "comingSoon": "Скоро будет",
      "slack": "Slack",
      "slackDesc": "Публикуйте системные события напрямую в канал Slack",
      "telegram": "Телеграм",
      "telegramDesc": "Отправляйте сообщения о событиях с помощью бота Telegram",
      "discord": "Discord",
      "discordDesc": "Доставляйте обновления в реальном времени прямо на сервер Discord",
      "custom": "Пользовательский вебхук",
      "customDesc": "Доставлять полезные нагрузки системных событий на любой HTTPS-эндпоинт",
      "email": "Уведомление по электронной почте",
      "emailDesc": "Получать обновления сводки по электронной почте",
      "pagerduty": "PagerDuty",
      "pagerdutyDesc": "Запускать оповещения в PagerDuty для критических системных проблем",
      "teams": "Microsoft Teams",
      "teamsDesc": "Перенаправить системные уведомления в каналы Microsoft Teams"
    },
    "testPayloadSent": "Тестовый полезный нагрузка отправлена",
    "testResponse": "Тестовый ответ",
    "validateUrl": {
      "checking": "Проверка URL...",
      "ok": "URL действителен",
      "blockedPrivate": "URL является заблокированным частным адресом",
      "invalidUrl": "Неверный формат URL"
    },
    "custom": {
      "endpointUrl": "URL конечной точки",
      "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook",
      "secretKey": "Секретный ключ",
      "secretKeyPlaceholder": "Введите секретный ключ или оставьте пустым для автоматической генерации",
      "secretKeyHint": "Используется для подписи заголовка полезной нагрузки для аутентификации."
    },
    "discord": {
      "webhookUrl": "URL вебхука Discord",
      "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...",
      "webhookUrlHint": "URL вебхука, скопированная из настроек интеграции вашего канала Discord.",
      "tutorial": "Как создать вебхук Discord:"
    },
    "slack": {
      "webhookUrl": "URL вебхука Slack",
      "webhookUrlPlaceholder": "https://hooks.slack.com/services/...",
      "webhookUrlHint": "URL вебхука, скопированная из вашей интеграции Slack Incoming Webhooks.",
      "tutorial": "Как создать вебхук Slack:"
    },
    "telegram": {
      "botToken": "Токен бота Telegram",
      "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
      "botTokenHint": "Токен HTTP API, полученный от @BotFather при создании вашего бота.",
      "chatId": "ID чата Telegram / Канал",
      "chatIdPlaceholder": "-100123456789 или @channelname",
      "chatIdHint": "Уникальный числовой идентификатор или публичное имя пользователя чата/канала.",
      "tutorial": "Как настроить вебхук Telegram:"
    }
  },
  "compliance": {
    "auditTitle": "Аудит",
    "auditDescription": "Просматривайте события соответствия и вызовы инструментов MCP с помощью единого оперативного представления.",
    "complianceTab": "Соответствие",
    "mcpTab": "МКП Аудит",
    "title": "Комплаенс-аудит",
    "description": "События политики, доступа, поставщика и безопасности, записываемые в журнал аудита соответствия.",
    "eventType": "Тип события",
    "eventTypePlaceholder": "Фильтровать по действию или типу события",
    "severity": "Серьезность",
    "allSeverities": "Все степени серьезности",
    "info": "Информация",
    "warning": "Предупреждение",
    "critical": "Критический",
    "sourceIp": "Исходный IP-адрес",
    "userOrKey": "Пользователь/Ключ",
    "action": "Действие",
    "result": "Результат",
    "details": "Подробности",
    "timestamp": "Временная метка",
    "from": "От",
    "to": "Чтобы",
    "refresh": "Обновить",
    "export": "Экспорт",
    "clearFilters": "Очистить фильтры",
    "loading": "Загрузка событий аудита...",
    "showing": "Показаны {count} из {total} событий",
    "policyViolation": "Нарушение политики",
    "accessDenied": "Доступ запрещен",
    "injectionBlocked": "Впрыск заблокирован",
    "noEvents": "Событий, связанных с соблюдением требований, не зафиксировано.",
    "failedFetch": "Не удалось получить журнал аудита соответствия.",
    "viewDetails": "Посмотреть детали",
    "closeDetails": "Закрыть детали",
    "notAvailable": "—",
    "system": "система",
    "previous": "Предыдущий",
    "next": "Далее",
    "mcpAudit": "МКП Аудит",
    "mcpAuditDesc": "Записи аудита вызовов инструментов, записанные сервером MCP.",
    "failedFetchMcpAudit": "Не удалось получить журнал аудита MCP.",
    "tool": "Инструмент",
    "toolPlaceholder": "Фильтровать по названию инструмента",
    "duration": "Продолжительность",
    "apiKey": "API-ключ",
    "output": "Выход",
    "allResults": "Все результаты",
    "success": "Успех",
    "failure": "Неудача",
    "noMcpEvents": "События аудита MCP не зарегистрированы.",
    "a2aAudit": "А2А Аудит",
    "a2aAuditDesc": "Контрольный журнал выполнения задачи, записанный сервером A2A.",
    "a2aShowingTasks": "Показаны {count} из {total} задач",
    "a2aSkill": "Навык",
    "a2aSkillPlaceholder": "Фильтровать по названию навыка",
    "a2aState": "Государство",
    "a2aAllStates": "Все штаты",
    "a2aStateSubmitted": "Отправлено",
    "a2aStateWorking": "Работаю",
    "a2aStateCompleted": "Завершено",
    "a2aStateFailed": "Не удалось",
    "a2aStateCancelled": "Отменено",
    "a2aTaskId": "Идентификатор задачи",
    "a2aEvents": "События",
    "a2aArtifacts": "Артефакты",
    "a2aNoTasks": "Задачи A2A не зарегистрированы.",
    "a2aLoadingTasks": "Загрузка задач A2A...",
    "actor": "Актер",
    "actorPlaceholder": "Фильтровать по актеру",
    "eventTypes": {
      "apiKey.activate": "Ключ API активирован",
      "apiKey.ban": "Ключ API заблокирован",
      "apiKey.deactivate": "Ключ API деактивирован",
      "apiKey.regenerate": "Ключ API восстановлен",
      "apiKey.scopes.grant": "Предоставленные области ключа API",
      "apiKey.scopes.revoke": "Области API-ключа отозваны",
      "apiKey.scopes.update": "Области ключа API обновлены",
      "apiKey.unban": "API Ключ Разблокирован",
      "auth.login.error": "Ошибка входа",
      "auth.login.failed": "Не удалось войти",
      "auth.login.locked": "Вход заблокирован",
      "auth.login.misconfigured": "Ошибка конфигурации входа",
      "auth.login.setup_required": "Требуется настройка входа",
      "auth.login.success": "Успешный вход",
      "auth.logout.success": "Успешный выход",
      "compliance.cleanup": "Очистка соответствия",
      "provider.credentials.applied": "Учетные данные поставщика применены",
      "provider.credentials.batch_revoked": "Учетные данные поставщика отозваны批量",
      "provider.credentials.bulk_created": "Учетные данные поставщика созданы массово",
      "provider.credentials.bulk_imported": "Учетные данные поставщика массово импортированы",
      "provider.credentials.created": "Учетные данные провайдера созданы",
      "provider.credentials.imported": "Учетные данные поставщика импортированы",
      "provider.credentials.revoked": "Учетные данные провайдера отозваны",
      "provider.credentials.updated": "Учетные данные провайдера обновлены",
      "provider.validation.ssrf_blocked": "Провайдер SSRF заблокирован",
      "quota.plan.updated": "План квоты обновлён",
      "quota.pool.created": "Создан пул квот",
      "quota.pool.deleted": "Пул квот удалён",
      "quota.pool.updated": "Квота пула обновлена",
      "quota.store.driver_changed": "Драйвер хранилища квот изменен",
      "server.start": "Запуск сервера",
      "service.reveal_api_key": "Ключ API сервиса раскрыт",
      "settings.update": "Настройки обновлены",
      "settings.update_failed": "Не удалось обновить настройки",
      "sync.token.created": "Токен синхронизации создан",
      "sync.token.revoked": "Токен синхронизации отозван"
    }
  },
  "themesPage": {
    "title": "Темы",
    "description": "Выбери готовую тему или создай свою из одного цвета",
    "presetColors": "Популярные цвета",
    "customTheme": "Своя тема",
    "customThemeDesc": "Нажми создать тему и выбери один цвет",
    "createTheme": "Создать тему",
    "activePreset": "Активная тема"
  },
  "header": {
    "logout": "Выход из системы",
    "language": "Язык",
    "providers": "Провайдеры",
    "providerDescription": "Управляйте подключениями к поставщикам ИИ",
    "combos": "Комбо",
    "comboDescription": "Комбинации моделей с резервным вариантом",
    "usage": "Использование и аналитика",
    "usageDescription": "Отслеживайте использование API, потребление токенов и журналы запросов.",
    "analytics": "Аналитика",
    "analyticsDescription": "Диаграммы, тенденции и аналитические сведения об оценках",
    "cliTools": "Инструменты интерфейса командной строки",
    "cliToolsDescription": "Настройка инструментов CLI",
    "home": "Главная",
    "homeDescription": "Добро пожаловать в OmniRoute",
    "endpoint": "Конечные точки",
    "endpointDescription": "Управление прокси-эндпоинтами, MCP, A2A и API-эндпоинтами",
    "mcp": "MCP",
    "mcpDescription": "Управление сервером Model Context Protocol и инструментами",
    "a2a": "A2A",
    "a2aDescription": "Задачи и наблюдаемость протокола Agent-to-Agent",
    "settings": "Настройки",
    "settingsDescription": "Управляйте своими предпочтениями",
    "openaiCompatible": "Совместимость с OpenAI",
    "anthropicCompatible": "Антропная совместимость",
    "media": "Медиа",
    "mediaDescription": "Создание изображений, видео и музыки",
    "themes": "Темы",
    "themesDescription": "Выберите цветовую тему для всей панели",
    "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": "А2А Аудит",
    "auditA2aDescription": "Контрольный журнал выполнения задач A2A, переходы между состояниями и записи вызовов навыков",
    "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": "Флаги функций",
    "featureFlagsDescription": "Возможности системы управления и экспериментальные возможности",
    "featureFlagsActive": "{count} активен",
    "featureFlagsInactive": "{count} неактивен",
    "featureFlagsOverrides": "{count} Переопределения БД",
    "featureFlagsSearch": "Поиск по флагам...",
    "featureFlagsCategoryAll": "Все",
    "featureFlagsCategorySecurity": "Безопасность",
    "featureFlagsCategoryNetwork": "Сеть",
    "featureFlagsCategoryPolicies": "Политика",
    "featureFlagsCategoryRuntime": "Время выполнения",
    "featureFlagsCategoryCli": "интерфейс командной строки",
    "featureFlagsCategoryHealth": "Здоровье",
    "featureFlagsSourceDb": "БД",
    "featureFlagsSourceEnv": "ЕНВ",
    "featureFlagsSourceDefault": "ДЕФ",
    "featureFlagsReset": "Сброс",
    "featureFlagsResetAll": "Сбросить все переопределения",
    "featureFlagsResetAllConfirm": "Вы уверены, что хотите сбросить все переопределения флагов функций? Это вернет все флаги к их ENV или значениям по умолчанию.",
    "featureFlagsRestartRequired": "Для подачи заявки требуется перезагрузка",
    "featureFlagsNoResults": "Нет флагов, соответствующих вашему запросу",
    "featureFlagsSaved": "Флаг обновлен",
    "featureFlagsError": "Не удалось обновить флаг",
    "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings",
    "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration",
    "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings",
    "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging",
    "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining",
    "omniSkillsDescription": "Установите и управляйте песочными навыками для автоматизированного выполнения запросов и инструментов"
  },
  "home": {
    "quickStart": "Быстрый старт",
    "quickStartDesc": "Приступайте к работе в 4 шага. Подключайте провайдеров, маршрутизируйте модели, контролируйте все.",
    "fullDocs": "Полная документация",
    "step1Title": "1. Создайте ключ API.",
    "step1Desc": "Перейдите к <endpoint>Конечная точка API</endpoint> → Зарегистрированные ключи. Создайте один ключ для каждой среды.",
    "step2Title": "2. Подключите провайдеров",
    "step2Desc": "Добавьте учетные записи в <providers>Провайдеры</providers>. Поддерживает OAuth, ключ API и уровни бесплатного пользования.",
    "step3Title": "3. Укажите своего клиента",
    "step3Desc": "Установите базовый URL-адрес {url} в клиенте IDE или API.",
    "step4Title": "4. Мониторинг и оптимизация",
    "step4Desc": "Отслеживайте токены, стоимость и ошибки в <logs>Журналы запросов</logs> и <analytics>Аналитика</analytics>.",
    "providersOverview": "Обзор провайдеров",
    "configuredOf": "{configured} настроен из {total} доступных поставщиков",
    "noModelsAvailable": "Нет доступных моделей для этого поставщика.",
    "noProvidersConfigured": "Поставщики еще не настроены",
    "addProvider": "Добавить провайдера",
    "configureFirst": "Сначала настройте соединение в {providers}.",
    "configureProvider": "Настроить поставщика",
    "modelAvailable": "Доступна модель {count}",
    "modelsAvailable": "Доступно {count} моделей",
    "connectionsActive": "Соединение {count} активно",
    "connectionsActivePlural": "{count} активных соединений",
    "copyModelName": "Скопировать название модели",
    "documentation": "Документация",
    "healthMonitor": "Монитор здоровья",
    "reportIssue": "Сообщить о проблеме",
    "activeError": "{active} активен · {errors} ошибка",
    "oauthLabel": "OAuth",
    "apiKeyLabel": "API-ключ",
    "requestsShort": "{count} требуется",
    "providerModelsTitle": "{provider} — Модели",
    "copiedModel": "Скопировано: {model}",
    "aliasLabel": "псевдоним",
    "updateNow": "Обновить",
    "updating": "Обновление...",
    "updateAvailableDesc": "Доступна новая версия. Нажмите для обновления.",
    "updateStarted": "Обновление начато...",
    "reloadingPageAutomatically": "Автоматическая перезагрузка страницы...",
    "providerTopology": "Топология провайдера"
  },
  "analytics": {
    "title": "Аналитика",
    "usageAnalyticsTitle": "Аналитика использования",
    "diversityScoreTitle": "Разнообразие поставщиков",
    "diversityScoreDesc": "Снимок концентрации провайдеров за недавний временной интервал трафика.",
    "diversityShannonEntropy": "Энтропия Шеннона",
    "diversityWindow": "Окно: {count} запросов · Последние {mins} мин",
    "diversityHealthy": "Здоровое распределение",
    "diversityRiskHigh": "Высокий риск привязки к поставщику",
    "diversityRiskModerate": "Умеренное распределение",
    "diversityScoreLabel": "счет",
    "diversityHigherExplanation": "Более высокие значения означают, что трафик распределяется между несколькими провайдерами.",
    "diversityNoData": "Нет доступных данных о недавнем использовании.",
    "chartRequests": "Запросы",
    "chartInput": "Ввод",
    "chartOutput": "Вывод",
    "chartTotal": "Итого",
    "chartCost": "Стоимость",
    "chartShare": "Поделиться",
    "chartServiceTier": "Уровень обслуживания",
    "chartServiceTierSplit": "Быстрый / Стандартный раздел затрат",
    "chartCostPct": "{pct}% от стоимости",
    "chartUsageDetail": "Детали использования",
    "chartCacheRead": "Чтение кэша",
    "chartCostByProvider": "Стоимость по Провайдеру",
    "chartNoCostData": "Нет данных о стоимости",
    "chartModelUsageOverTime": "Использование модели с течением времени",
    "chartNoData": "Нет данных",
    "chartWeekly": "Еженедельно",
    "chartModelBreakdown": "Разбор Модели",
    "chartModel": "Модель",
    "chartProvider": "Поставщик",
    "chartProviderBreakdown": "Разбивка по провайдерам",
    "filterAllKeys": "Все ключи",
    "filterSearchKeys": "Поиск ключей…",
    "filterNoKeysMatch": "Нет совпадающих ключей",
    "filterOneKey": "1 ключ",
    "filterMultipleKeys": "{count} ключей",
    "rangeToday": "Сегодня",
    "rangeYesterday": "Вчера",
    "rangeLast3Days": "Последние 3 дня",
    "rangeThisWeek": "На этой неделе",
    "rangeLast14Days": "Последние 14 дней",
    "rangeThisMonth": "Этот месяц",
    "rangeQuickSelect": "Быстрый выбор",
    "rangeStart": "Начать",
    "rangeEnd": "Конец",
    "rangeCancel": "Отменить",
    "rangeApply": "Применить",
    "rangeErrorInvalid": "Начало должно быть раньше конца",
    "period1D": "1D",
    "period7D": "7D",
    "period30D": "30Д",
    "period90D": "90D",
    "periodYTD": "Год к дате",
    "periodAll": "Все",
    "totalTokens": "Всего токенов",
    "inputTokens": "Входные токены",
    "outputTokens": "Токены вывода",
    "estCost": "Ориентировочная стоимость",
    "infraTitle": "Инфраструктура",
    "infraAccounts": "Учетные записи",
    "infraProviders": "Поставщики",
    "infraApiKeys": "API ключи",
    "infraModels": "Модели",
    "perfTitle": "Производительность",
    "perfAvgTokens": "Среднее количество токенов/запрос",
    "perfCostReq": "Стоимость/Запрос",
    "perfIoRatio": "Соотношение Ввод/Вывод",
    "perfFastReq": "Быстрые запросы",
    "highlightsTitle": "Основные моменты",
    "highlightsTopModel": "Топ Модель",
    "highlightsTopProvider": "Лучший Провайдер",
    "highlightsBusiestDay": "Самый Загруженный День",
    "highlightsDiversity": "Разнообразие",
    "highlightsFallbackRate": "Коэффициент резервирования",
    "customRange": "Пользовательский",
    "overviewDescription": "Отслеживайте шаблоны использования API, потребление токенов, затраты и тенденции активности среди всех поставщиков и моделей.",
    "evalsDescription": "Запустите оценочные пакеты для тестирования и проверки конечных точек LLM. Сравнивайте качество модели, обнаруживайте регрессии и измеряйте задержку тестирования.",
    "overview": "Обзор",
    "evals": "Оценки",
    "utilization": "Использование",
    "utilizationDescription": "Тенденции использования квоты поставщика и отслеживание ограничений скорости",
    "modelStatus": "Статус модели",
    "modelStatusCooldown": "Перезарядка",
    "modelStatusUnavailable": "Недоступно",
    "modelStatusError": "Ошибка",
    "comboHealth": "Здоровье комбо",
    "comboHealthDescription": "Квота на уровне комбо, распределение использования и метрики производительности",
    "compressionAnalyticsTitle": "Compression Analytics",
    "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.",
    "autoRoutingTotalAutoRequests": "Всего автоматических запросов",
    "autoRoutingAvgSelectionScore": "Средняя оценка выбора",
    "autoRoutingExplorationRate": "Скорость исследования",
    "autoRoutingLkgpHitRate": "Частота попаданий LKGP",
    "autoRoutingRequestsByVariant": "Запросы по варианту",
    "autoRoutingTopRoutedProviders": "Лучшие провайдеры маршрутизации",
    "comboHealthWorstQuotaLeft": "Осталась худшая квота",
    "comboHealthUsageSkew": "Перекос в использовании",
    "comboHealthSuccessRate": "Уровень успеха",
    "comboHealthQuotaHealth": "Состояние квоты",
    "comboHealthRequests": "Запросы",
    "comboHealthTokens": "Токены",
    "comboHealthAvgLatency": "Средняя задержка",
    "comboHealthTotalRequests": "Всего запросов",
    "comboHealthExecutionTargets": "Цели выполнения",
    "comboHealthSuccess": "Успех",
    "comboHealthLatency": "Задержка",
    "comboHealthQuota": "Квота",
    "comboHealthTitle": "Комбо здоровье",
    "comboHealthUnableToLoad": "Невозможно загрузить комбо-здоровье.",
    "comboHealthGettingStarted": "Начало работы",
    "compressionAnalyticsTotalRequests": "Всего запросов",
    "compressionAnalyticsTokensSaved": "Токены сохранены",
    "compressionAnalyticsAvgSavings": "Средняя экономия",
    "compressionAnalyticsAvgDuration": "Средняя продолжительность",
    "compressionAnalyticsReceipts": "Квитанции",
    "compressionAnalyticsFallbacks": "Резервные варианты",
    "compressionAnalyticsPromptTokens": "Токены подсказки",
    "compressionAnalyticsCompletionTokens": "Жетоны завершения",
    "compressionAnalyticsTotalTokens": "Всего токенов",
    "compressionAnalyticsCacheTokens": "Кэш-токены",
    "compressionAnalyticsNoDataYet": "Данных о сжатии пока нет.",
    "searchAnalyticsTotalSearches": "Всего поисков",
    "searchAnalyticsCacheHitRate": "Скорость попадания в кэш",
    "searchAnalyticsTotalCost": "Общая стоимость",
    "searchAnalyticsAvgResponse": "Средний ответ",
    "searchAnalyticsNoSearchesYet": "Поисков пока нет",
    "providerUtilizationTitle": "Использование провайдера",
    "providerUtilizationFailedToLoad": "Не удалось загрузить данные об использовании.",
    "providerUtilizationNoData": "Нет данных об использовании",
    "providerUtilizationGettingStarted": "Начало работы",
    "providerUtilizationLatestSnapshot": "Последний снимок квоты",
    "providerUtilizationRemainingCapacity": "Оставшаяся емкость"
  },
  "apiManager": {
    "title": "API-ключи",
    "createKey": "Создать ключ API",
    "key": "Ключ",
    "revokeKey": "Отозвать ключ",
    "revokeConfirm": "Вы уверены, что хотите отозвать этот ключ API?",
    "noKeys": "Ключей API пока нет",
    "noKeysDesc": "Создайте свой первый ключ API для аутентификации запросов к вашей конечной точке.",
    "keyLabel": "Ключевая этикетка",
    "permissions": "Разрешения",
    "expiresAt": "Срок действия истекает",
    "never": "Никогда",
    "revoke": "Отозвать",
    "showKey": "Показать ключ",
    "hideKey": "Скрыть ключ",
    "copyKey": "Копировать ключ API",
    "allModels": "Все модели",
    "selectedModels": "Выбранные модели",
    "readOnly": "Только чтение",
    "fullAccess": "Полный доступ",
    "keyManagement": "Управление ключами API",
    "keyManagementDesc": "Создавайте ключи API для аутентификации запросов к вашей конечной точке и управляйте ими.",
    "totalKeys": "Всего ключей",
    "restricted": "Ограниченный",
    "totalRequests": "Всего запросов",
    "modelsAvailable": "Доступные модели",
    "registeredKeys": "Зарегистрированные ключи",
    "keysRegistered": "Зарегистрировано {count} ключей",
    "keyRegistered": "Ключ {count} зарегистрирован",
    "keysSecurityNote": "Каждый ключ изолирует отслеживание использования и может быть отозван независимо. Ключи маскируются после создания в целях безопасности.",
    "createFirstKey": "Создайте свой первый ключ",
    "name": "Имя",
    "usage": "Использование",
    "created": "Создано",
    "actions": "Действия",
    "reqs": "требования",
    "neverUsed": "Никогда не использовался",
    "deleteConfirm": "Удалить этот ключ API?",
    "usageTips": "Советы по использованию",
    "tipAuth": "Используйте ключи API в заголовке авторизации в качестве носителя YOUR_KEY.",
    "tipSecure": "Ключи отображаются только один раз во время создания — храните их в надежном месте.",
    "tipSeparate": "Создавайте отдельные ключи для разных клиентов или сред.",
    "tipRestrict": "Ограничьте ключи определенными моделями для повышения безопасности и контроля затрат.",
    "keyName": "Имя ключа",
    "keyNamePlaceholder": "например, Ключ производства, Ключ разработки",
    "keyNameDesc": "Выберите описательное имя, чтобы определить назначение этого ключа.",
    "managementAccessDesc": "Разрешить этому API-ключу управлять конфигурацией OmniRoute.",
    "selfServiceVisibility": "Видимость самообслуживания",
    "selfServiceVisibilityDesc": "Управляет тем, что этот ключ может видеть о собственном использовании и общей upstream-квоте.",
    "ownUsageVisibility": "Собственная стоимость и использование токенов",
    "ownUsageVisibilityDesc": "Разрешить этому ключу вызывать свой endpoint статуса для просмотра собственного использования в USD, процента бюджета и сумм токенов.",
    "sharedAccountQuotaVisibility": "Общая квота аккаунта",
    "sharedAccountQuotaVisibilityDesc": "Разрешить этому ключу видеть общую квоту upstream-аккаунта, когда настроено одно явное подключение.",
    "keyCreated": "Ключ API создан",
    "keyCreatedSuccess": "Ключ успешно создан!",
    "keyCreatedNote": "Скопируйте и сохраните этот ключ сейчас — он больше не будет отображаться.",
    "done": "Готово",
    "savePermissions": "Сохранить разрешения",
    "endpointRestrictions": "Allowed Endpoints",
    "allEndpointsAllowed": "This key can access all API endpoints.",
    "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.",
    "autoResolve": "Авторазрешение",
    "autoResolveDesc": "Автоматически сопоставлять неоднозначные имена моделей с нативным провайдером для этого API-ключа.",
    "streamDefaultMode": "Совместимость по умолчанию для потока",
    "streamDefaultModeDesc": "Управление пропущенными флагами `stream` для этого ключа. Режим JSON возвращает нестриминговые ответы, если клиент явно не запрашивает SSE.",
    "streamDefaultLegacy": "Унаследованный",
    "streamDefaultJson": "Совместимый с JSON",
    "streamDefaultBadge": "JSON поток по умолчанию",
    "keyActive": "Ключ активен",
    "keyActiveDesc": "Включить или отключить этот API-ключ. Отключённые ключи сразу отклоняются с 403.",
    "accessSchedule": "Расписание доступа",
    "accessScheduleDesc": "Ограничьте доступ определёнными часами и днями недели.",
    "scheduleFrom": "С",
    "scheduleUntil": "До",
    "scheduleDays": "Дни",
    "scheduleTimezone": "Часовой пояс",
    "scheduleTimezoneHint": "Используйте имена часовых поясов IANA, например America/New_York, Europe/Berlin",
    "scheduleActive": "Расписание",
    "disabled": "Отключено",
    "daySun": "Вс",
    "dayMon": "Пн",
    "dayTue": "Вт",
    "dayWed": "Ср",
    "dayThu": "Чт",
    "dayFri": "Пт",
    "daySat": "Сб",
    "allowAll": "Разрешить все",
    "restrict": "Ограничить",
    "allowAllInfo": "Этот ключ дает доступ ко всем доступным моделям.",
    "restrictInfo": "Этот ключ может получить доступ к {selected} из моделей {total}.",
    "selected": "{count} выбрано",
    "all": "Все",
    "clear": "Очистить",
    "searchModels": "Поиск моделей по названию или поставщику...",
    "noModelsFound": "Модели не найдены",
    "keyNameRequired": "Укажите имя ключа.",
    "keyNameTooLong": "Имя ключа должно содержать не более {max} символов.",
    "keyNameInvalid": "Имя ключа может содержать только буквы, цифры, пробелы, дефисы и подчеркивания.",
    "invalidKeyName": "Неверное имя ключа",
    "failedCreateKey": "Не удалось создать ключ",
    "failedCreateKeyRetry": "Не удалось создать ключ. Пожалуйста, попробуйте еще раз.",
    "invalidKeyId": "Неверный идентификатор ключа",
    "failedDeleteKey": "Не удалось удалить ключ",
    "failedDeleteKeyRetry": "Не удалось удалить ключ. Пожалуйста, попробуйте еще раз.",
    "invalidModelsSelection": "Неверный выбор моделей",
    "cannotSelectMoreThanModels": "Невозможно выбрать более {max} моделей.",
    "failedUpdatePermissions": "Не удалось обновить разрешения.",
    "failedUpdatePermissionsRetry": "Не удалось обновить разрешения. Пожалуйста, попробуйте еще раз.",
    "unknownProvider": "неизвестно",
    "copyMaskedKey": "Копировать замаскированный ключ",
    "keyOnlyAvailableAtCreation": "Полный ключ доступен только при создании — скопируйте его сразу после генерации",
    "modelsCount": "{count, plural, one {# модель} few {# модели} many {# моделей} other {# модели}}",
    "lastUsedOn": "Последний: {date}",
    "editPermissions": "Редактировать разрешения",
    "deleteKey": "Удалить ключ",
    "regenerateKey": "Восстановить ключ",
    "regenerateConfirm": "Вы уверены, что хотите восстановить этот ключ API? Старый ключ будет немедленно аннулирован.",
    "failedRegenerateKey": "Не удалось восстановить ключ API.",
    "failedRegenerateKeyRetry": "Не удалось повторно создать ключ API. Пожалуйста, попробуйте еще раз.",
    "model": "{count} модель",
    "models": "{count} модели",
    "permissionsTitle": "Разрешения: {name}",
    "allowAllDesc": "Этот ключ дает доступ ко всем доступным моделям.",
    "restrictDesc": "Этот ключ может получить доступ к {selectedCount} из моделей {totalModels}.",
    "selectedCount": "{count} выбрано",
    "maxActiveSessions": "Макс. активные сеансы",
    "apiManagerCustomRateLimits": "Пользовательские лимиты ставок",
    "apiManagerCustomRateLimitsDesc": "Переопределить глобальные ограничения по умолчанию. Оставьте пустым, чтобы использовать значения по умолчанию.",
    "apiManagerRateLimitRequestsPlaceholder": "Запросы",
    "apiManagerRateLimitReqPer": "запрос /",
    "apiManagerRateLimitSecondsPlaceholder": "Секунды",
    "apiManagerRemoveLimitTitle": "Удалить лимит",
    "apiManagerTimezonePlaceholder": "Америка/Сан-Паулу",
    "noLogPayloadPrivacy": "Конфиденциальность полезной нагрузки без регистрации",
    "bannedStatus": "Запрещенный статус",
    "managementApiAccess": "Доступ к API управления",
    "expirationDate": "Срок годности",
    "managementAccess": "Доступ к управлению",
    "allowedConnections": "Разрешенные соединения",
    "searchPlaceholder": "Поиск по имени или токену...",
    "activeOnly": "Только активные",
    "filterStatus": "СТАТУС",
    "filterType": "ТИП",
    "filterAll": "Все",
    "filterStatusActive": "Активный",
    "filterStatusDisabled": "Отключено",
    "filterStatusBanned": "Заблокировано",
    "filterStatusExpired": "Истек срок действия",
    "filterTypeStandard": "Стандартный",
    "filterTypeManage": "Управление",
    "filterTypeRestricted": "Ограниченный",
    "shownOf": "{shown} из {total} показано",
    "emptyFilterTitle": "Нет ключей, соответствующих вашим фильтрам",
    "emptyFilterClear": "Сбросить фильтры",
    "disableNonPublicModels": "Отключить непубличные модели",
    "disableNonPublicModelsDesc": "Отклонять запросы на модели, которые не обнаружены или не помечены как общедоступные в каталоге провайдера",
    "normalKeysSection": "Обычные клавиши",
    "quotaKeysSection": "Ключи квоты",
    "quotaPill": "КВОТА",
    "quotaModeOnly": "qtSd-only"
  },
  "auditLog": {
    "title": "Журнал аудита",
    "searchPlaceholder": "Поиск действий...",
    "action": "Действие",
    "actor": "Актер",
    "target": "Цель",
    "ipAddress": "IP-адрес",
    "timestamp": "Временная метка",
    "noEntries": "Записи аудита не найдены",
    "filterByAction": "Фильтровать по действию...",
    "filterByActor": "Фильтровать по актеру...",
    "filterEntriesAria": "Фильтрация записей журнала аудита",
    "filterByActionTypeAria": "Фильтровать по типу действия",
    "filterByActorAria": "Фильтровать по актеру",
    "refreshAuditLogAria": "Обновить журнал аудита",
    "tableAria": "Записи журнала аудита",
    "failedFetchAuditLog": "Не удалось получить журнал аудита.",
    "notAvailable": "н/д",
    "description": "Административные действия и события безопасности",
    "showing": "Показаны записи {count} (смещение {offset})",
    "previous": "Предыдущий"
  },
  "media": {
    "title": "Медиа-площадка",
    "subtitle": "Генерируйте изображения, видео и музыку",
    "model": "Модель",
    "prompt": "Промпт",
    "generate": "Сгенерировать",
    "generating": "Генерация...",
    "loadingModels": "Загрузка доступных моделей...",
    "noModels": "Нет доступных моделей. Сначала настройте провайдеров с возможностями медиа.",
    "error": "Сбой генерации",
    "result": "Результат",
    "imageDescription": "Создавайте изображения по текстовым промптам с помощью OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI и других.",
    "videoDescription": "Создавайте видео с AnimateDiff, Stable Video Diffusion через ComfyUI или SD WebUI.",
    "musicDescription": "Создавайте музыку с помощью Stable Audio Open или MusicGen через ComfyUI.",
    "kinds": {
      "embedding": "Встраивание",
      "image": "Изображение",
      "imageToText": "Изображение в текст",
      "tts": "Текст в Речь",
      "stt": "Речь в текст",
      "webSearch": "Веб-поиск",
      "webFetch": "Веб-извлечение",
      "video": "Видео",
      "music": "Музыка"
    },
    "noProviders": "Для этого типа еще не настроены провайдеры.",
    "addConnection": "Добавить соединение",
    "backToProviders": "Назад к Провайдерам",
    "connections": "{count} Подключения",
    "noConnections": "Пока нет подключений — добавьте одно на странице провайдера.",
    "loading": "Загрузка..."
  },
  "search": {
    "searchQuery": "Поисковый запрос",
    "searchResults": "Результаты поиска",
    "cachedResult": "В кэше",
    "searchCost": "Стоимость",
    "searchTools": "Инструменты поиска",
    "searchToolsDesc": "Продвинутое тестирование поиска с сравнением провайдеров",
    "compareProviders": "Сравнить провайдеров",
    "rerankResults": "Переранжировать результаты",
    "searchHistory": "История поиска",
    "urlOverlap": "Пересечение URL",
    "noSearchProviders": "Провайдеры поиска не настроены. Добавьте их в настройках.",
    "noRerankModels": "Модель для rerank недоступна",
    "webSearch": "Веб-поиск",
    "provider": "Провайдер",
    "searchType": "Тип поиска",
    "maxResults": "Макс. результатов",
    "filters": "Фильтры",
    "country": "Страна",
    "language": "Язык",
    "timeRange": "Диапазон времени",
    "includeDomains": "Включить домены",
    "excludeDomains": "Исключить домены",
    "safeSearch": "Безопасный поиск",
    "safeSearchOff": "Выкл.",
    "safeSearchModerate": "Умеренный",
    "safeSearchStrict": "Строгий",
    "queryPlaceholder": "Введите поисковый запрос...",
    "providerAuto": "авто (самый дешёвый)",
    "searchTypeWeb": "веб",
    "searchTypeNews": "новости",
    "optionAny": "любой",
    "timeRangeDay": "Последний день",
    "timeRangeWeek": "Последняя неделя",
    "timeRangeMonth": "Последний месяц",
    "timeRangeYear": "Последний год",
    "domainPlaceholder": "example.com",
    "requestTimedOut": "Время запроса истекло ({seconds}с)",
    "networkError": "Ошибка сети",
    "formatted": "Отформатировано",
    "rawJson": "JSON",
    "cacheMiss": "промах кэша",
    "cacheHit": "попадание в кэш",
    "latency": "Задержка",
    "cost": "Стоимость",
    "results": "Результаты",
    "rerank": "Переранжировать",
    "rerankModel": "Модель rerank",
    "positionDelta": "Изменение позиции",
    "emptyState": "Отправьте поисковый запрос, чтобы увидеть результаты",
    "copy": "Копировать",
    "resetToDefault": "Сбросить настройки по умолчанию",
    "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": "Инструменты интерфейса командной строки",
    "noActiveProviders": "Нет активных провайдеров",
    "noActiveProvidersDesc": "Сначала добавьте и подключите поставщиков, чтобы настроить инструменты CLI.",
    "mapModels": "Сопоставление моделей",
    "testConnection": "Тестовое соединение",
    "connectionStatus": "Статус соединения",
    "configureEndpoint": "Настроить конечную точку",
    "instructions": "Инструкции",
    "modelMapping": "Сопоставление модели",
    "baseUrl": "Базовый URL",
    "apiKey": "API-ключ",
    "configured": "Настроен",
    "notConfigured": "Не настроено",
    "notInstalled": "Не установлено",
    "custom": "Пользовательский",
    "unknown": "Неизвестно",
    "lastSavedAt": "Последнее сохранение: {date}",
    "never": "Никогда",
    "justNow": "только что",
    "minutesAgoShort": "{count} мин назад",
    "hoursAgoShort": "{count}ч назад",
    "daysAgoShort": "{count}дн назад",
    "monthsAgoShort": "{count}мес. назад",
    "yearsAgoShort": "{count}г назад",
    "runtimeCheckFailed": "Проверка времени выполнения не удалась",
    "yourApiKeyPlaceholder": "ваш-API-ключ",
    "modelPlaceholder": "поставщик/идентификатор модели",
    "configurationSaved": "Конфигурация успешно сохранена.",
    "failedToSave": "Не удалось сохранить конфигурацию.",
    "noApiKeysCreateOne": "Нет ключей API — создайте их на странице «Ключи».",
    "defaultOmnirouteKey": "sk_omniroute (по умолчанию)",
    "selectModel": "Выберите модель",
    "selectModelForAlias": "Выберите модель для {alias}",
    "selectModelForTool": "Выберите модель для {tool}",
    "select": "Выбрать",
    "clear": "Очистить",
    "comingSoon": "Скоро",
    "checkingRuntime": "Проверка статуса выполнения...",
    "guideOnlyIntegration": "Интеграция только для справки (локальная среда выполнения не требуется)",
    "cliRuntimeDetected": "Среда выполнения CLI обнаружена и готова",
    "cliFoundNotRunnable": "CLI найден, но не запускается{reason}",
    "cliRuntimeNotDetected": "Среда выполнения CLI не обнаружена",
    "binary": "Бинарник",
    "configPath": "Путь конфигурации",
    "configPathShort": "Конфигурация",
    "failedCheckRuntimeStatus": "Не удалось проверить статус выполнения.",
    "copy": "Копировать",
    "copied": "Скопировано",
    "copyConfig": "Копировать конфигурацию",
    "saveConfig": "Сохранить конфигурацию",
    "selectionSaved": "Выбор сохранен.",
    "guide": "Руководство",
    "detected": "Обнаружено",
    "notReady": "Не готов",
    "active": "Активный",
    "inactive": "Неактивный",
    "startMitm": "Запустить МИТМ",
    "stopMitm": "Остановить МИТМ",
    "mitmStarted": "MITM стартовал успешно!",
    "mitmStopped": "MITM успешно остановлен!",
    "failedStart": "Не удалось запустить MITM",
    "failedStop": "Не удалось остановить MITM",
    "saveMappings": "Сохранить сопоставления",
    "mappingsSaved": "Сопоставления сохранены!",
    "failedSaveMappings": "Не удалось сохранить сопоставления.",
    "howItWorks": "Как это работает:",
    "antigravityHowWorksDesc": "Antigravity отправляет запросы на конечную точку Google. MITM перехватывает их и перенаправляет в OmniRoute.",
    "antigravityStep1": "1. Запустите MITM для маршрутизации запросов через OmniRoute.",
    "antigravityStep2Prefix": "2. Добавить",
    "antigravityStep2Suffix": "в файл хостов как 127.0.0.1.",
    "antigravityStep3": "3. Откройте Antigravity, и запросы будут проксироваться.",
    "mitmHowWorksDesc": "{toolName} отправляет запросы на конечную точку своего провайдера. MITM перехватывает и перенаправляет их в OmniRoute.",
    "mitmStep1": "1. Запустите MITM, чтобы направлять запросы через OmniRoute.",
    "mitmStep2Prefix": "2. Добавьте",
    "mitmStep2Suffix": "в ваш hosts-файл как 127.0.0.1.",
    "mitmStep3": "3. Откройте {toolName}, и запросы будут проксироваться.",
    "sudoPasswordRequiredTitle": "Требуется пароль Sudo",
    "sudoPasswordHint": "Пароль администратора необходим для изменения файлов хостов и настроек системного прокси.",
    "enterSudoPassword": "Введите пароль sudo",
    "sudoPasswordRequiredError": "Требуется пароль Sudo.",
    "cancel": "Отмена",
    "confirm": "Подтвердить",
    "settingsApplied": "Настройки успешно применены!",
    "failedApplySettings": "Не удалось применить настройки.",
    "settingsReset": "Настройки успешно сброшены!",
    "failedResetSettings": "Не удалось сбросить настройки",
    "backupRestored": "Бэкап восстановлен!",
    "failedRestore": "Не удалось восстановить",
    "checkingCli": "Проверка {tool} CLI...",
    "cliNotRunnable": "{tool} CLI установлен, но не запускается",
    "cliNotInstalled": "{tool} CLI не установлен",
    "cliNotDetected": "{tool} CLI не обнаружен",
    "cliDetectedReady": "{tool} CLI обнаружен и готов",
    "cliFoundFailedHealthcheck": "{tool} CLI найден, но проверка работоспособности во время выполнения не выполнена {reason}.",
    "installCliPrompt": "Чтобы использовать эту функцию, установите {tool} CLI.",
    "installCodexPrompt": "Установите Codex CLI, чтобы использовать функцию автоматического применения.",
    "hide": "Скрыть",
    "howToInstall": "Как установить",
    "installationGuide": "Руководство по установке",
    "platforms": "macOS/Linux/Windows:",
    "afterInstallationRun": "После установки запустите",
    "toVerify": "чтобы проверить.",
    "current": "Текущий",
    "baseUrlPlaceholder": "https://.../v1",
    "resetToDefault": "Сбросить настройки по умолчанию",
    "providerModelPlaceholder": "поставщик/идентификатор модели",
    "apply": "Применить",
    "reset": "Сброс",
    "manualConfig": "Ручная настройка",
    "backups": "Резервные копии",
    "configBackups": "Резервные копии конфигурации",
    "noBackupsYet": "Резервных копий пока нет. Резервные копии создаются автоматически перед каждым применением или сбросом.",
    "restore": "Восстановить",
    "backupRestoredReloading": "Бэкап восстановлен! Статус перезагрузки...",
    "failedRestoreBackup": "Не удалось восстановить резервную копию",
    "applied": "Применено!",
    "failed": "Не удалось",
    "resetDone": "Сбросить!",
    "omnirouteConfiguredOpenAiCompatible": "OmniRoute настроен как поставщик, совместимый с OpenAI.",
    "provider": "Поставщик",
    "model": "Модель",
    "providers": "Провайдеры",
    "auth": "Авторизация",
    "noApiKeysAvailable": "Нет доступных ключей API",
    "usingDefaultOmniroute": "Использование по умолчанию: sk_omniroute",
    "updateConfig": "Обновить конфигурацию",
    "applyConfig": "Применить конфигурацию",
    "noBackupsAvailable": "Резервные копии отсутствуют.",
    "profileSaved": "Профиль «{name}» сохранен!",
    "failedSaveProfile": "Не удалось сохранить профиль",
    "profileActivated": "Профиль активирован!",
    "failedActivateProfile": "Не удалось активировать профиль",
    "profiles": "Профили",
    "savedProfiles": "Сохраненные профили",
    "noProfilesYet": "Ни один профиль еще не сохранен. Сохраните текущую конфигурацию как профиль ниже.",
    "activate": "Активировать",
    "deleteProfile": "Удалить профиль",
    "profileNamePlaceholder": "Имя профиля (например, Личный кабинет)",
    "saveCurrent": "Сохранить текущий",
    "codexAuthNotePrefix": "Кодекс использует",
    "codexAuthNoteMiddle": "с",
    "codexAuthNoteSuffix": "Нажмите «Применить» для автоматической настройки.",
    "claudeManualConfiguration": "Клод CLI — ручная настройка",
    "codexManualConfiguration": "Интерфейс командной строки Codex — ручная настройка",
    "droidManualConfiguration": "Заводской дроид – ручная настройка",
    "openClawManualConfiguration": "Открытый коготь — ручная настройка",
    "clineManualConfiguration": "Ручная настройка Cline",
    "kiloManualConfiguration": "Ручная настройка кода Kilo",
    "whenToUseLabel": "Когда использовать",
    "openToolDocs": "Открыть документацию по инструменту",
    "toolUseCases": {
      "claude": "Используйте, если вам нужны надежные рабочие процессы планирования и длительные рефакторинги нескольких файлов с помощью Claude Code.",
      "codex": "Используйте, когда ваша команда стандартизирует потоки интерфейса командной строки OpenAI Codex и аутентификацию на основе профилей.",
      "droid": "Используйте, когда вам нужен легкий агент терминала, ориентированный на быстрое кодирование и циклы выполнения команд.",
      "openclaw": "Используйте, если вам нужен агент кодирования в стиле Open Claw, но маршрутизируемый через политики OmniRoute.",
      "cline": "Используйте, если вы настраиваете агенты кодирования внутри редакторов и хотите выполнить управляемую настройку с помощью моделей OmniRoute.",
      "kilo": "Используйте, когда ваш рабочий процесс зависит от команд Kilo Code и быстрого итеративного редактирования.",
      "cursor": "Используйте при кодировании в Cursor, если вам нужны пользовательские модели, совместимые с OpenAI, через OmniRoute.",
      "continue": "Используйте при запуске Продолжить в IDE, если вам нужна переносимая конфигурация поставщика на основе JSON.",
      "opencode": "Используйте, если вы предпочитаете запускать собственные агенты терминала и автоматизировать скрипты через OpenCode.",
      "kiro": "Используйте при интеграции Kiro и централизованном управлении маршрутизацией модели из OmniRoute.",
      "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.",
      "antigravity": "Используйте, когда трафик Антигравитации/Киро необходимо перехватить через MITM и направить в OmniRoute.",
      "copilot": "Используйте его, если вам нужен пользовательский интерфейс в стиле чата Copilot, одновременно обеспечивая соблюдение ключей OmniRoute и правил маршрутизации.",
      "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": "Используйте, когда вам нужен легкий помощник с искусственным интеллектом, встроенный в терминал, для быстрых задач.",
      "hermes-agent": "Используйте, когда вам нужен Hermes Agent (от Nousresearch) с моделями по умолчанию, делегирования, видения и вспомогательными, маршрутизированными через OmniRoute.",
      "custom": "Используйте для пользовательских реализаций инструментов или общих конфигураций, совместимых с OpenAI."
    },
    "toolDescriptions": {
      "antigravity": "Google Antigravity IDE с MITM",
      "claude": "Антропный код Клода CLI",
      "codex": "Интерфейс командной строки Кодекса OpenAI",
      "droid": "Искусственный интеллект заводского дроида",
      "openclaw": "Открытый ИИ-помощник когтя",
      "cline": "Cline - CLI помощника по коду с ИИ",
      "kilo": "Интерфейс командной строки Kilo Code AI Assistant",
      "cursor": "Редактор кода курсора AI",
      "continue": "Продолжить AI-помощник",
      "opencode": "OpenCode - агент кодирования с ИИ в терминале",
      "kiro": "Amazon Kiro - IDE с ИИ",
      "windsurf": "Редактор кода Windsurf с ИИ",
      "copilot": "Ассистент GitHub Copilot с ИИ",
      "qwen": "Alibaba Qwen Code CLI",
      "amp": "Sourcegraph Amp coding assistant CLI",
      "hermes": "Помощник по терминалу Hermes AI",
      "hermes-agent": "Агент Hermes (от Nousresearch) - Продвинутый терминальный ИИ с поддержкой нескольких моделей (делегирование, зрение, сжатие и т.д.)",
      "custom": "Универсальный генератор конфигурации CLI или SDK, совместимый с OpenAI."
    },
    "guides": {
      "cursor": {
        "notes": {
          "0": "Для использования этой функции требуется учетная запись Cursor Pro.",
          "1": "Курсор маршрутизирует запросы через собственный сервер, поэтому локальная конечная точка не поддерживается. Пожалуйста, включите Cloud Endpoint в настройках."
        },
        "steps": {
          "1": {
            "title": "Открыть настройки",
            "desc": "Зайдите в Настройки -> Модели."
          },
          "2": {
            "title": "Включить API OpenAI",
            "desc": "Включите опцию «Ключ OpenAI API»."
          },
          "3": {
            "title": "Базовый URL"
          },
          "4": {
            "title": "API-ключ"
          },
          "5": {
            "title": "Добавить пользовательскую модель",
            "desc": "Нажмите «Просмотреть всю модель» -> «Добавить пользовательскую модель»."
          },
          "6": {
            "title": "Выберите модель"
          }
        }
      },
      "continue": {
        "steps": {
          "1": {
            "title": "Открыть конфигурацию",
            "desc": "Открыть файл конфигурации «Продолжить»"
          },
          "2": {
            "title": "API-ключ"
          },
          "3": {
            "title": "Выберите модель"
          },
          "4": {
            "title": "Добавить конфигурацию модели",
            "desc": "Добавьте следующую конфигурацию в массив моделей:"
          }
        },
        "notes": {
          "0": "Continue использует JSON-файл конфигурации."
        }
      },
      "opencode": {
        "steps": {
          "1": {
            "title": "Установите OpenCode",
            "desc": "Установите через npm: npm install -g opencode-ai"
          },
          "2": {
            "title": "API-ключ"
          },
          "3": {
            "title": "Задайте базовый URL",
            "desc": "opencode config set baseUrl {baseUrl}"
          },
          "4": {
            "title": "Выберите модель"
          },
          "5": {
            "title": "Используйте вариант мышления",
            "desc": "Для thinking-моделей запускайте с --variant high/low/max (пример команды ниже)."
          }
        },
        "notes": {
          "0": "OpenCode требует настройки API-ключа.",
          "1": "Установите базовый URL на ваш endpoint OmniRoute."
        }
      },
      "kiro": {
        "steps": {
          "1": {
            "title": "Откройте настройки Kiro",
            "desc": "Перейдите в Настройки → Поставщик ИИ"
          },
          "2": {
            "title": "Базовый URL",
            "desc": "Вставьте URL вашего эндпоинта OmniRoute"
          },
          "3": {
            "title": "API-ключ"
          },
          "4": {
            "title": "Выберите модель"
          }
        },
        "notes": {
          "0": "Kiro требует аккаунт Amazon."
        }
      },
      "windsurf": {
        "steps": {
          "1": {
            "title": "Откройте настройки ИИ",
            "desc": "Нажмите значок настроек ИИ в Windsurf или откройте Настройки"
          },
          "2": {
            "title": "Добавьте кастомного провайдера",
            "desc": "Выберите \"Add custom provider\" (OpenAI-совместимый)"
          },
          "3": {
            "title": "Базовый URL",
            "desc": "http://127.0.0.1:20128/v1"
          },
          "4": {
            "title": "API-ключ",
            "desc": "Выберите ключ API OmniRoute"
          },
          "5": {
            "title": "Выберите модель",
            "desc": "Выберите модель из выпадающего списка"
          }
        }
      }
    },
    "autoConfiguredTab": "Auto Configured Tab",
    "toolCategoriesDesc": "Tool Categories Desc",
    "allToolsTab": "All Tools Tab",
    "guidedClientsTab": "Guided Clients Tab",
    "mitmClientsTab": "Mitm Clients Tab",
    "customCliTab": "Пользовательский интерфейс командной строки",
    "toolCategories": "Tool Categories",
    "visibleToolsCount": "Доступно {count} инструментов",
    "customCliBuilderTitle": "OpenAI-совместимый конструктор командной строки",
    "customCliBuilderDescription": "Создавайте переменные окружения и фрагменты JSON для любого интерфейса командной строки или SDK, который принимает базовый URL-адрес, совместимый с OpenAI, ключ API и идентификатор модели.",
    "customCliNoModels": "Подключите хотя бы одного поставщика, чтобы заполнить селекторы моделей.",
    "customCliNameLabel": "Имя CLI",
    "customCliNamePlaceholder": "например Моя команда CLI",
    "customCliDefaultModelLabel": "Модель по умолчанию",
    "customCliDefaultModelHelp": "Используйте любой идентификатор модели OmniRoute или комбинацию. Большинству OpenAI-совместимых интерфейсов командной строки требуется только базовый URL-адрес /v1 плюс строка модели.",
    "customCliKeyHelper": "Для локальной установки OmniRoute может использовать sk_omniroute. В облачном режиме выберите один из ключей API управления.",
    "customCliAliasMappingsLabel": "Сопоставления псевдонимов",
    "customCliAliasMappingsHelp": "Необязательные вспомогательные псевдонимы для сценариев-оболочек или файлов конфигурации, которым нужны стабильные сокращенные имена.",
    "customCliAddAlias": "Добавить псевдоним",
    "customCliNoMappings": "Сопоставлений псевдонимов пока нет. Добавьте его, если ваша оболочка или командные сценарии используют стабильные короткие имена.",
    "customCliAliasPlaceholder": "например обзор",
    "customCliTargetModelLabel": "Целевая модель",
    "customCliEndpointHintLabel": "Как подключить конечную точку",
    "customCliEndpointHint": "Направьте любой OpenAI-совместимый клиент на базовый URL-адрес OmniRoute/v1. Конечная точка завершения необработанного чата — {endpoint}. Используйте блок JSON, когда инструменту нужен объект поставщика, или сценарий env, когда он считывает переменные OPENAI_*.",
    "customCliEnvBlockTitle": "Фрагмент конверта/оболочки",
    "customCliJsonBlockTitle": "Блок JSON поставщика",
    "copilotConfigGenerator": "Генератор конфигураций GitHub Copilot",
    "copilotApiKey": "API-ключ",
    "copilotFilterModelsPlaceholder": "Фильтровать модели...",
    "copilotMaxInputTokens": "Максимальное количество входных токенов",
    "copilotMaxOutputTokens": "Максимальное количество токенов вывода",
    "copilotToolCalling": "Вызов инструмента",
    "copilotPasteInto": "Вставить в: ",
    "wireApiChatCompletions": "Завершения чата (/chat/completions)",
    "wireApiResponses": "API ответов (/responses)"
  },
  "combos": {
    "title": "Комбо",
    "description": "Создавайте комбинации моделей с взвешенной маршрутизацией и поддержкой резервного варианта.",
    "autoCatalogTitle": "Каталог автомаршрутизации",
    "autoCatalogTemplateCount": "{count} шаблонов",
    "autoCatalogDescription": "Встроенные комбинации auto/* разрешаются динамически от подключенных провайдеров. Используйте любой из этих идентификаторов в качестве поля модели — настройка не требуется.",
    "autoCatalogExpand": "Развернуть каталог автотрассировки",
    "autoCatalogCollapse": "Свернуть каталог автотрассировки",
    "createCombo": "Создать комбо",
    "editCombo": "Редактировать комбо",
    "deleteCombo": "Удалить комбо",
    "noModels": "Нет моделей",
    "noModelsYet": "Модели еще не добавлены",
    "addModel": "Добавить модель",
    "addModelToCombo": "Добавить модель в комбинацию",
    "routingStrategy": "Стратегия маршрутизации",
    "maxRetries": "Макс. повторов",
    "timeout": "Тайм-аут (мс)",
    "healthcheck": "Проверка здоровья",
    "priority": "Приоритет",
    "fallback": "Резервный вариант",
    "roundRobin": "Круговая система",
    "random": "Случайный",
    "leastLatency": "Наименьшая задержка",
    "comboName": "Имя комбинации",
    "comboNamePlaceholder": "мое комбо",
    "deleteConfirm": "Удалить это комбо?",
    "noCombosYet": "Комбинаций пока нет",
    "comboCreated": "Комбо успешно создано",
    "comboUpdated": "Комбо успешно обновлено",
    "comboDeleted": "Комбо удалено.",
    "failedCreate": "Не удалось создать комбо",
    "failedUpdate": "Не удалось обновить комбо.",
    "errorCreating": "Ошибка создания комбо",
    "errorUpdating": "Ошибка обновления комбо",
    "errorDeleting": "Ошибка удаления комбо.",
    "testFailed": "Тестовый запрос не выполнен",
    "failedToggle": "Не удалось переключить комбо.",
    "testResults": "Результаты теста — {name}",
    "resolvedBy": "Решено:",
    "more": "+{count} подробнее",
    "reqs": "требования",
    "success": "успех",
    "proxyConfigured": "Прокси настроен",
    "copyComboName": "Скопировать название комбинации",
    "enableCombo": "Включить комбо",
    "disableCombo": "Отключить комбо",
    "testCombo": "Тестовое комбо",
    "duplicate": "Дублировать",
    "proxyConfig": "Конфигурация прокси",
    "nameRequired": "Требуется имя",
    "nameInvalid": "Только буквы, цифры, -, _, / и . разрешено",
    "nameHint": "Буквы, цифры, -, _, / и . разрешено",
    "priorityDesc": "Последовательный откат: сначала пробуется модель 1, затем 2 и т. д.",
    "weightedDesc": "Распределяет трафик по весовому проценту с резервным вариантом",
    "roundRobinDesc": "Круговое распределение: каждый запрос переходит к следующей модели по очереди.",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate",
    "randomDesc": "Равномерный случайный выбор, затем возврат к оставшимся моделям",
    "leastUsedDesc": "Выбирает модель с наименьшим количеством запросов, балансируя нагрузку с течением времени.",
    "costOptimizedDesc": "Маршруты к самой дешевой модели в первую очередь на основе цены",
    "resetAware": "Запись с учетом сброса",
    "resetAwareDesc": "Балансирует оставшуюся квоту с 5-часовым и еженедельным сбросом, затем выполняет циклический анализ одинаковых результатов.",
    "strictRandom": "Строгий случайный",
    "strictRandomDesc": "Перемешивание колоды - каждая модель используется по одному разу перед новым перемешиванием",
    "models": "Модели",
    "autoBalance": "Автобаланс",
    "advancedSettings": "Расширенные настройки",
    "retryDelay": "Задержка повтора (мс)",
    "concurrencyPerModel": "Параллелизм/модель",
    "queueTimeout": "Тайм-аут очереди (мс)",
    "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": "Оставьте пустым, чтобы использовать глобальные значения по умолчанию. Они переопределяют настройки каждого провайдера.",
    "failoverBeforeRetry": "Аварийное переключение перед повторной попыткой",
    "maxSetRetries": "Макс. набор повторов",
    "setRetryDelayMs": "Установить задержку повтора (мс)",
    "moveUp": "Вверх",
    "moveDown": "Двигаться вниз",
    "removeModel": "Удалить",
    "saving": "Сохранение...",
    "weighted": "Взвешенный",
    "leastUsed": "Наименее используемый",
    "costOpt": "Оптимизация по стоимости",
    "strategyGuideTitle": "Как использовать эту стратегию",
    "strategyGuideWhen": "Когда использовать",
    "strategyGuideAvoid": "Когда избегать",
    "strategyGuideExample": "Пример",
    "strategyGuide": {
      "priority": {
        "when": "У вас есть одна предпочтительная модель, и нужен только резервный вариант при сбое.",
        "avoid": "Вам нужна распределённая нагрузка между несколькими моделями.",
        "example": "Основная кодовая модель с более дешёвым резервом на случай отказа."
      },
      "weighted": {
        "when": "Вам нужен контролируемый раздел трафика между моделями.",
        "avoid": "Вы не можете поддерживать точные веса со временем.",
        "example": "80% стабильная модель + 20% canary rollout."
      },
      "round-robin": {
        "when": "Нужна предсказуемая и равномерная выдача запросов.",
        "avoid": "Модели слишком сильно отличаются по задержке или стоимости.",
        "example": "Одна и та же модель на нескольких аккаунтах для распределения пропускной способности."
      },
      "random": {
        "when": "Нужна простая схема распределения без сложной настройки.",
        "avoid": "Вам нужны строгие гарантии по трафику.",
        "example": "Быстрое прототипирование на эквивалентных моделях."
      },
      "least-used": {
        "when": "Нужно адаптивное балансирование по живой нагрузке.",
        "avoid": "Трафика слишком мало, чтобы выиграть от балансировки по использованию.",
        "example": "Смешанные нагрузки, где одна модель часто перегружается."
      },
      "cost-optimized": {
        "when": "Снижение стоимости - ваш главный приоритет.",
        "avoid": "Данные о ценах отсутствуют или устарели.",
        "example": "Фоновые или пакетные задачи, где важнее низкая стоимость."
      },
      "reset-aware": {
        "when": "Вы осуществляете маршрутизацию между несколькими учетными записями с помощью телеметрии квот и различных окон сброса.",
        "avoid": "Телеметрия квот недоступна для большинства учетных записей.",
        "example": "Предпочитайте 60%-ный еженедельный сброс учетной записи завтра, чем 80%-ный сброс учетной записи позже."
      },
      "strict-random": {
        "when": "Используйте, когда нужен идеально ровный spread - каждая модель используется один раз перед повтором.",
        "avoid": "Избегайте, когда модели отличаются по качеству или задержке и важен порядок.",
        "example": "Пример: несколько аккаунтов одной модели для равномерного распределения использования."
      },
      "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": "Используйте, если вы хотите полностью исчерпать квоту одного провайдера, прежде чем переходить к следующему.",
        "avoid": "Избегайте случаев, когда вам нужна балансировка нагрузки на уровне запросов между поставщиками.",
        "example": "Пример: используйте все кредиты Deepgram на 200 долларов США, прежде чем вернуться к Groq."
      },
      "auto": {
        "when": "Используйте, когда вам нужна многофакторная скоринговая маршрутизация на основе стоимости, задержки и качества.",
        "avoid": "Избегайте случаев, когда вам требуется строгий порядок приоритетов или историческое постоянство.",
        "example": "Пример: сбалансируйте запросы между моделями с разной силой."
      },
      "lkgp": {
        "when": "Используйте, если вы хотите проложить маршрут на основе исторических показателей успешности и производительности.",
        "avoid": "Избегайте случаев, когда исторические данные ограничены или ненадежны.",
        "example": "Пример: перенаправление к моделям с хорошим опытом выполнения конкретных задач."
      },
      "context-optimized": {
        "when": "Используйте, когда вам нужно оптимизировать использование контекстных окон в разных моделях.",
        "avoid": "Избегайте случаев, когда модели имеют одинаковую длину контекста или задачи просты.",
        "example": "Пример. Распределите длинные разговоры между моделями с более крупными контекстными окнами."
      }
    },
    "advancedHelp": {
      "maxRetries": "Сколько повторных попыток выполняется до отказа запроса.",
      "retryDelay": "Начальная пауза между повторными попытками. Большие значения уменьшают всплески нагрузки.",
      "timeout": "Максимальная продолжительность запроса до прерывания.",
      "healthcheck": "Пропускает нездоровые модели и провайдеров при принятии решений маршрутизации.",
      "concurrencyPerModel": "Максимальное количество одновременных запросов, разрешенных для каждой модели в циклическом переборе.",
      "queueTimeout": "Как долго запрос может находиться в очереди до истечения времени ожидания.",
      "failoverBeforeRetry": "Если этот параметр включен, любая ошибка восходящего потока запускает немедленное переключение на следующий комбинированный целевой объект, пропуская все повторные попытки и резервные URL-адреса.",
      "maxSetRetries": "Количество повторных попыток достижения полного набора целей, если каждая цель не удалась. 0 = нет повторной попытки на заданном уровне.",
      "setRetryDelayMs": "Задержка между повторными попытками на уровне набора, дающая время на разрешение временных проблем."
    },
    "templatesTitle": "Быстрые шаблоны",
    "templatesDescription": "Примените стартовый профиль, затем настройте модели и конфигурации.",
    "templateApply": "Применить шаблон",
    "templateHighAvailability": "Высокая доступность",
    "templateHighAvailabilityDesc": "Маршрутизация по приоритету с проверкой состояния и безопасными повторными попытками.",
    "templateCostSaver": "Экономия",
    "templateCostSaverDesc": "Маршрутизация с оптимизацией по стоимости для задач, где важен бюджет.",
    "templateBalanced": "Сбалансированная нагрузка",
    "templateBalancedDesc": "Маршрутизация по наименее используемым моделям для равномерного распределения спроса.",
    "usageGuideHide": "Скрыть",
    "usageGuideDontShowAgain": "Больше не показывать",
    "usageGuideShow": "Показать руководство",
    "quickTestTitle": "Комбо готово к проверке",
    "quickTestDescription": "Запустите тест сейчас, чтобы подтвердить поведение резервирования и задержки.",
    "testNow": "Проверить сейчас",
    "pricingCoverage": "Покрытие цен",
    "pricingCoverageHint": "Оптимизация по стоимости работает лучше всего, когда у всех моделей комбо есть цены.",
    "pricingAvailable": "Цены доступны",
    "pricingMissing": "Без цен",
    "pricingAvailableShort": "есть цена",
    "pricingMissingShort": "нет цены",
    "warningRoundRobinSingleModel": "Round robin наиболее полезен минимум с 2 моделями.",
    "warningCostOptimizedPartialPricing": "Только у {priced} из {total} моделей есть цены. Маршрутизация может быть лишь частично чувствительна к стоимости.",
    "warningCostOptimizedNoPricing": "Для этого комбо не найдены данные о ценах. Оптимизация по стоимости может маршрутизировать неожиданно.",
    "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": "Готовы сохранить?",
    "readinessDescription": "Прежде чем создавать или обновлять эту комбинацию, просмотрите контрольный список.",
    "readinessCheckName": "Имя комбинации действительно",
    "readinessCheckModels": "Выбрана хотя бы одна модель",
    "readinessCheckWeights": "Взвешенная сумма составляет 100 %.",
    "readinessCheckWeightsOptional": "Правило веса не требуется",
    "readinessCheckPricing": "Доступны данные о ценах",
    "readinessCheckPricingOptional": "Правило ценообразования не требуется",
    "saveBlockedTitle": "Сохранение блокируется до тех пор, пока не будут исправлены следующие элементы:",
    "saveBlockName": "Определите имя комбинации.",
    "saveBlockModels": "Добавьте хотя бы одну модель.",
    "saveBlockWeighted": "Установите веса на 100 % (текущее: {total}%).",
    "saveBlockPricing": "Добавьте цены хотя бы на одну модель или выберите другую стратегию.",
    "recommendationsLabel": "Рекомендуемая настройка",
    "applyRecommendations": "Применить рекомендации",
    "recommendationsUpdated": "Рекомендации обновлены для {strategy}.",
    "recommendationsApplied": "Рекомендации применены к этому комбо.",
    "intelligentPanelTitle": "Intelligent Routing Dashboard",
    "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.",
    "configOnlyStatus": "Представление конфигурации",
    "configOnlyHint": "Эта панель показывает только входные данные маршрутизации. Состояние автоматического выключателя в реальном времени доступно на странице состояния.",
    "routingInputs": "Маршрутизация Входов",
    "routingInputsHint": "Режим упаковки и вес остаются здесь; состояние выполнения размыкателя остается на странице состояния.",
    "emailVisibilityHint": "Электронные адреса аккаунтов здесь следуют глобальному переключателю конфиденциальности.",
    "emailVisibilityTooltip": "Используйте значок глаза, чтобы показать или скрыть адреса электронной почты аккаунта глобально на экранах комбинаций, провайдеров и квот.",
    "manualModel": "Ручная модель",
    "manualModelInvalid": "Введите модель в формате provider/model.",
    "manualModelUnknownProvider": "Неизвестный префикс провайдера.",
    "builderDynamicAccountShort": "Динамический аккаунт",
    "builderNeedValidName": "Определите допустимое имя комбо перед продолжением.",
    "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": "Базовая отказоустойчивая схема",
        "description": "Используйте одну основную модель и держите цепочку резервов короткой и надёжной.",
        "tip1": "Ставьте самую надёжную модель первой.",
        "tip2": "Держите 1-2 резервные модели схожего качества.",
        "tip3": "Используйте безопасные повторные попытки, чтобы сгладить временные сбои провайдера."
      },
      "weighted": {
        "title": "Контролируемый раздел трафика",
        "description": "Подходит для canary-раскатки и постепенной миграции между моделями.",
        "tip1": "Начинайте с осторожного распределения, например 90/10.",
        "tip2": "Держите сумму на уровне 100% и включайте автобаланс после изменений.",
        "tip3": "Отслеживайте успешность и задержку перед увеличением веса canary."
      },
      "round-robin": {
        "title": "Предсказуемое распределение нагрузки",
        "description": "Лучше всего, когда модели эквивалентны и нужна плавная выдача.",
        "tip1": "Используйте минимум 2 модели.",
        "tip2": "Задайте лимиты параллелизма, чтобы избежать всплесков нагрузки.",
        "tip3": "Используйте тайм-аут очереди, чтобы быстро падать при насыщении."
      },
      "random": {
        "title": "Быстрое распределение с минимальной настройкой",
        "description": "Используйте, когда нужно простое распределение без жёстких гарантий.",
        "tip1": "Берите модели со схожими задержками.",
        "tip2": "Оставляйте повторные попытки включёнными, чтобы сглаживать случайные промахи.",
        "tip3": "Подходит для экспериментов, но не для строгих SLA."
      },
      "least-used": {
        "title": "Адаптивное балансирование",
        "description": "Маршрутизирует на менее используемые модели, чтобы со временем уменьшать горячие точки.",
        "tip1": "Лучше работает при постоянном потоке запросов.",
        "tip2": "Комбинируйте с проверкой здоровья для более безопасного балансирования.",
        "tip3": "Отслеживайте использование по моделям, чтобы подтвердить выигрыш в распределении."
      },
      "cost-optimized": {
        "title": "Маршрутизация с приоритетом бюджета",
        "description": "Маршрутизирует на более дешёвые модели, когда доступны данные о ценах.",
        "tip1": "Убедитесь, что цены есть для всех выбранных моделей.",
        "tip2": "Держите качественный резерв для сложных запросов.",
        "tip3": "Подходит для пакетных и фоновых задач, где стоимость - главный KPI."
      },
      "reset-aware": {
        "title": "Ротация аккаунтов с учетом сброса",
        "description": "Балансирует оставшуюся квоту поставщика с учетом времени сброса.",
        "tip1": "Используйте явные шаги учетной записи или маршрутизацию тегов учетной записи для поставщиков с телеметрией квот.",
        "tip2": "Сеанс настройки по сравнению с еженедельными весами, когда кратковременное утомление более рискованно.",
        "tip3": "Держите галстук небольшим, чтобы эквивалентные счета по-прежнему равномерно менялись."
      },
      "strict-random": {
        "title": "Распределение по перемешиванию",
        "description": "Каждая модель используется ровно один раз за цикл перед повторным перемешиванием.",
        "tip1": "Используйте минимум 2 модели для осмысленного распределения.",
        "tip2": "Лучше всего работает с моделями схожей производительности.",
        "tip3": "Идеально для балансировки нагрузки между несколькими API-аккаунтами."
      },
      "fill-first": {
        "description": "Последовательно исчерпайте квоты поставщиков, прежде чем отступить.",
        "tip1": "Используйте для маршрутизации на основе квот с четкими резервными цепочками.",
        "tip2": "Точно устанавливайте квоты, чтобы избежать преждевременного отката.",
        "tip3": "Лучше всего работает с поставщиками, предлагающими бесплатные уровни или кредитные корзины.",
        "title": "Исчерпание квоты"
      },
      "auto": {
        "description": "Маршрут основан на оценке стоимости, задержки, качества и работоспособности в реальном времени.",
        "tip1": "Позвольте двигателю автоматически сбалансировать несколько факторов.",
        "tip2": "Отслеживайте в журналах, какие факторы влияют на решения о маршрутизации.",
        "tip3": "Используйте для сложных рабочих нагрузок, где ни один фактор не доминирует.",
        "title": "Многофакторная оптимизация"
      },
      "lkgp": {
        "description": "Маршрут основан на исторических показателях и моделях успеха.",
        "tip1": "Для точных прогнозов требуется достаточная история запросов.",
        "tip2": "Подходит для рабочих нагрузок с согласованными шаблонами производительности модели.",
        "tip3": "Контролируйте точность прогнозов и при необходимости корректируйте веса.",
        "title": "Маршрутизация на основе истории"
      },
      "context-optimized": {
        "description": "Оптимизируйте маршрутизацию на основе использования контекстного окна и эффективности токена.",
        "tip1": "Направляйте длинные разговоры к моделям с более крупными контекстными окнами.",
        "tip2": "Отслеживайте использование контекста, чтобы избежать ненужной траты токенов.",
        "tip3": "Лучше всего подходит для диалогового ИИ, требующего длительного сохранения контекста.",
        "title": "Оптимизация контекста"
      },
      "context-relay": {
        "description": "Лучше всего, если ожидается ротация учетных записей и следующая учетная запись должна наследовать упрощенную сводку задач.",
        "tip1": "Используйте с поставщиками, меняющими учетные записи для одного и того же семейства моделей.",
        "tip2": "Установите порог передачи ниже жестких ограничений квоты на время создания сводки.",
        "tip3": "Устанавливайте специальную сводную модель только в том случае, если основная модель слишком дорога или нестабильна.",
        "title": "Приоритет непрерывности сеанса"
      },
      "p2c": {
        "description": "Направьтесь к поставщику с наименьшей текущей нагрузкой на основе показателей в реальном времени.",
        "tip1": "Отслеживайте показатели работоспособности поставщика для точной оценки нагрузки.",
        "tip2": "Лучше всего работает с однородными пулами поставщиков.",
        "tip3": "Отрегулируйте чувствительность, чтобы избежать колебаний во время пиков трафика.",
        "title": "Сила двух вариантов"
      }
    },
    "templateFreeStack": "Бесплатный стек ($0)",
    "templateFreeStackDesc": "Round robin по всем бесплатным провайдерам: Kiro (Claude), Qoder (5 моделей), Qwen (4 модели), Gemini CLI. Ноль стоимости, кодинг без остановки.",
    "auto": "Авто",
    "autoDesc": "Автоматическая стратегия - система сама выбирает подходящее поведение.",
    "lkgp": "LKGP",
    "lkgpDesc": "Маршрутизация по последней известной хорошей политике",
    "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": "Этот конкретный шаг поставщика/модели/учетной записи уже есть в списке.",
    "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": "Завершите каждый этап, чтобы определить комбинации, шаги построения, выбрать стратегию маршрутизации и просмотреть результаты.",
    "builderStepsDescription": "Создайте каждый шаг комбинации по порядку: поставщик, модель, затем учетная запись. Это позволяет повторно использовать одного и того же поставщика и модель в разных учетных записях.",
    "selectProvider": "Выберите поставщика",
    "selectProviderPlaceholder": "Выберите провайдера",
    "selectModel": "Выберите модель",
    "selectModelPlaceholder": "Сначала выберите провайдера",
    "selectAccount": "Выберите учетную запись",
    "selectComboToReference": "Выберите комбинацию для ссылки",
    "comboReference": "Справочник по комбинациям",
    "addComboReference": "Добавить ссылку на комбинацию",
    "addStepBeforeContinue": "Пожалуйста, добавьте хотя бы один шаг, прежде чем перейти к следующему этапу.",
    "previewNextStep": "Предварительный просмотр следующего шага",
    "autoSelectAccount": "Автоматически выбирать учетную запись во время выполнения",
    "modePackBalanced": "Сбалансированный",
    "modePackBudget": "Бюджет",
    "modePackPerformance": "Производительность",
    "modePackCustom": "Пользовательский",
    "browseLegacyCatalog": "Просмотрите устаревший каталог комбинаций",
    "agentFeaturesTitle": "Возможности агента",
    "agentFeaturesDescription": "Включите расширенные функции для агентов, использующих эту комбинацию.",
    "agentFeaturesSystemMessageOverride": "Переопределить системное сообщение",
    "agentFeaturesSystemMessagePlaceholder": "Вы профессиональный помощник...",
    "agentFeaturesSystemMessageHint": "Переопределение системных сообщений для агентов",
    "agentFeaturesToolFilterRegex": "/regex-шаблон/",
    "agentFeaturesToolFilterHint": "Регулярное выражение фильтра инструментов для агентов",
    "agentFeaturesContextCacheHint": "Включить контекстное кэширование для инструментов агента",
    "agentFeaturesContextCacheProtection": "Защита кэша от мутаций инструментов агента",
    "agentFeaturesContextLength": "Длина контекста",
    "agentFeaturesContextLengthPlaceholder": "например 128000",
    "agentFeaturesContextLengthHint": "Определяет контекстное окно для этого комбо в /v1/models.",
    "agentFeaturesContextLengthErrorInteger": "Длина контекста должна быть допустимым целым числом.",
    "agentFeaturesContextLengthErrorRange": "Длина контекста должна быть от 1000 до 2000000.",
    "compressionOverride": "Переопределение сжатия",
    "modePack": "Пакет режимов"
  },
  "costs": {
    "title": "Затраты",
    "pageDescription": "Отслеживайте расходы, анализируйте тенденции и управляйте своим бюджетом на ИИ среди всех поставщиков.",
    "overview": "Обзор",
    "budget": "Бюджет",
    "totalCost": "Общая стоимость",
    "breakdown": "Распределение затрат",
    "noData": "Нет данных о стоимости",
    "byModel": "По модели",
    "byProvider": "По поставщику",
    "range7d": "7 дней",
    "range30d": "30 дней",
    "range90d": "90 дней",
    "rangeAll": "Все время",
    "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": "Использование токена",
    "totalTokens": "Всего токенов",
    "inputTokens": "Входные токены",
    "outputTokens": "Выходные токены",
    "inputOutputRatio": "Соотношение ввода/вывода",
    "tokens": "жетоны",
    "routingEfficiency": "Эффективность маршрутизации",
    "fallbackCount": "Резервные запросы",
    "fallbackRate": "Резервный курс",
    "modelCoverage": "Покрытие модели",
    "modelCoverageDesc": "% запросов с явной моделью",
    "outOfRequests": "из {total} запросов",
    "costByApiKey": "Стоимость по ключу API",
    "costByAccount": "Стоимость по аккаунту",
    "apiKeyName": "API-ключ",
    "account": "Аккаунт",
    "requests": "Запросы",
    "cost": "Стоимость",
    "dayStreak": "дневная полоса",
    "weeklyUsagePattern": "Еженедельный график использования",
    "activityHeatmap": "Активность (365 дней)",
    "less": "Меньше",
    "more": "Подробнее",
    "monthlyForecast": "Ежемесячный прогноз",
    "forecastBasis": "На основе последних {days} дней",
    "avgDailyCost": "Среднее ежедневная стоимость",
    "daysRemaining": "Осталось {days} дней",
    "periodComparison": "Сравнение периодов",
    "previousPeriod": "Предыдущая половина",
    "currentPeriod": "Текущая половина",
    "exportCSV": "Экспортировать в формате CSV",
    "exportJSON": "Экспортировать в формате JSON",
    "legacyFreeLabel": "Устаревший / Бесплатный",
    "costExplorerTitle": "Обозреватель затрат",
    "costExplorerDescription": "Изучайте расходы по поставщику, модели, ключу API, аккаунту или уровню сервиса.",
    "groupProvider": "Поставщик",
    "groupModel": "Модель",
    "groupApiKey": "Ключ API",
    "groupAccount": "Аккаунт",
    "groupServiceTier": "Уровень сервиса",
    "serviceTierFast": "Быстрый",
    "serviceTierFlex": "Флекс",
    "serviceTierStandard": "Стандартный",
    "serviceTierBreakdownTitle": "Уровень обслуживания",
    "serviceTierBreakdownSubtitle": "Быстрый / Гибкий / Стандартный сплит",
    "serviceTierUsageSaved": "использование сохранено",
    "serviceTierCostSaved": "сохранено",
    "serviceTierCostShareSuffix": "стоимость",
    "dimension": "Измерение",
    "share": "Доля",
    "legacyOrFree": "Устаревшее / бесплатно",
    "filterRows": "Фильтровать строки…",
    "filterCostExplorerRows": "Фильтровать строки обозревателя затрат",
    "noMatchingCostRows": "Нет подходящих строк затрат",
    "noMatchingCostRowsDescription": "Измените текст поиска, группировку или выбранное временное окно.",
    "showingCostRows": "Показано {shown} из {total} совпадающих строк.",
    "showingTopCostRows": "Показано {shown} из {total} совпадающих строк (топ 50)."
  },
  "endpoint": {
    "title": "Конечная точка API",
    "available": "Доступные конечные точки",
    "cloudProxy": "Облачный прокси",
    "disableConfirm": "Вы уверены, что хотите отключить облачный прокси?",
    "baseUrl": "Базовый URL",
    "apiKeyLabel": "API-ключ",
    "registeredKeys": "Зарегистрированные ключи",
    "chatCompletions": "Завершения чата",
    "responses": "Ответы",
    "listModels": "Получение списка моделей",
    "usingCloudProxy": "Использование облачного прокси",
    "usingLocalServer": "Использование локального сервера",
    "machineId": "Идентификатор машины: {id}...",
    "disableCloud": "Отключить облако",
    "enableCloud": "Включить облако",
    "modelsAcrossEndpoints": "{models} модели на {endpoints} конечных точках",
    "loadingModels": "Загрузка доступных моделей...",
    "chatDesc": "Потоковое и непотоковое чат со всеми провайдерами",
    "embeddings": "Вложения",
    "embeddingsDesc": "Встраивание текста для конвейеров поиска и RAG",
    "imageGeneration": "Генерация изображений",
    "imageDesc": "Генерация изображений из текстовых подсказок",
    "rerank": "Изменить рейтинг",
    "rerankDesc": "Изменение ранжирования документов по релевантности запросу",
    "audioTranscription": "Аудио транскрипция",
    "audioTranscriptionDesc": "Транскрипция аудиофайлов в текст (шепотом)",
    "textToSpeech": "Преобразование текста в речь",
    "textToSpeechDesc": "Преобразование текста в естественно звучащую речь",
    "musicGeneration": "Music Generation",
    "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)",
    "moderations": "Модерации",
    "moderationsDesc": "Модерация контента и классификация безопасности",
    "responsesDesc": "OpenAI Responses API для Codex и продвинутых агентных рабочих процессов",
    "listModelsDesc": "Список всех доступных моделей по всем подключённым провайдерам",
    "settingsApiDesc": "Чтение и изменение конфигурации OmniRoute через API",
    "settingsApi": "API настроек",
    "categoryCore": "Основные API",
    "categoryMedia": "Медиа и мультимодальность",
    "categorySearch": "Поиск и обнаружение",
    "categoryUtility": "Утилиты и управление",
    "webSearch": "Веб-поиск",
    "webSearchDesc": "Единый веб-поиск по нескольким провайдерам с автоматическим переключением и кэшированием",
    "searchProvider": "Поставщик поиска",
    "searchProviderDesc": "Этот поставщик используется для веб-поиска через POST /v1/search. Настройка модели не требуется — поисковые провайдеры готовы к использованию после подключения API-ключа.",
    "enableCloudTitle": "Включить облачный прокси",
    "whatYouGet": "Что вы получите",
    "cloudBenefitAccess": "Доступ к вашему API из любой точки мира",
    "cloudBenefitShare": "Легко делитесь конечной точкой со своей командой",
    "cloudBenefitPorts": "Нет необходимости открывать порты или настраивать брандмауэр",
    "cloudBenefitEdge": "Быстрая глобальная периферийная сеть",
    "cloudSessionNote": "Cloud сохранит ваш сеанс аутентификации в течение 1 дня. Если он не используется, он будет автоматически удален.",
    "cloudUnstableNote": "Cloud в настоящее время нестабильно работает с Claude Code OAuth в некоторых случаях.",
    "cloudConnected": "Облачный прокси подключен!",
    "connectingToCloud": "Подключение к облаку...",
    "verifyingConnection": "Проверка соединения...",
    "connecting": "Подключение...",
    "verifying": "Проверка...",
    "connected": "Подключено!",
    "disableCloudTitle": "Отключить облачный прокси",
    "disableWarning": "Все сеансы аутентификации будут удалены из облака.",
    "syncingData": "Синхронизация последних данных...",
    "disablingCloud": "Отключение облака...",
    "syncing": "Синхронизация...",
    "disabling": "Отключение...",
    "cloudConnectedVerified": "Облачный прокси подключен и проверен!",
    "connectedVerificationPending": "Подключено — ожидается проверка",
    "connectedVerificationPendingWithError": "Подключено — ожидается проверка: {error}",
    "cloudDisabledSuccess": "Облако успешно отключено",
    "syncedSuccess": "Синхронизировано успешно",
    "failedDisable": "Не удалось отключить облако.",
    "failedEnable": "Не удалось включить облако",
    "cloudRequestTimeout": "Тайм-аут запроса облака",
    "cloudRequestFailed": "Запрос в облако не выполнен.",
    "cloudWorkerUnreachable": "Не удалось связаться с облачным работником. Убедитесь, что облачная служба запущена (npm run dev в /cloud).",
    "connectionFailed": "Соединение не удалось",
    "syncFailed": "Не удалось синхронизировать облачные данные.",
    "cloudflaredTitle": "Cloudflare Quick Tunnel",
    "cloudflaredDescription": "Создайте временный Cloudflare Quick Tunnel для этой конечной точки, чтобы сделать её доступной из интернета без настройки DNS.",
    "cloudflaredUrlNotice": "Создаёт временный Cloudflare Quick Tunnel. URL-адреса меняются после перезапуска.",
    "cloudflaredEnable": "Включить туннель",
    "cloudflaredInstallAndEnable": "Установить и включить",
    "cloudflaredDisable": "Остановить туннель",
    "cloudflaredRunning": "Работает",
    "cloudflaredStarting": "Запуск",
    "cloudflaredStoppedState": "Остановлен",
    "cloudflaredNotInstalled": "Не установлен",
    "cloudflaredUnsupported": "Не поддерживается",
    "cloudflaredError": "Ошибка",
    "cloudflaredStarted": "Cloudflare-туннель запущен",
    "cloudflaredStopped": "Cloudflare-туннель остановлен",
    "cloudflaredRequestFailed": "Не удалось обновить Cloudflare-туннель",
    "cloudflaredTemporaryNote": "URL Quick Tunnel временные и изменятся после перезапуска.",
    "cloudflaredUnsupportedNote": "Эта платформа не поддерживает управляемую установку.",
    "cloudflaredIdleNote": "Создайте временный Cloudflare Quick Tunnel для этой конечной точки.",
    "cloudflaredLastError": "Последняя ошибка: {error}",
    "providerModelsTitle": "{provider} — Модели",
    "noModelsForProvider": "Нет доступных моделей для этого поставщика.",
    "chat": "Чат",
    "embedding": "Встраивание",
    "image": "Изображение",
    "custom": "Пользовательский",
    "modelsCount": "{count, plural, one {# модель} few {# модели} many {# моделей} other {# модели}}",
    "sectionTitle": "Интерфейс интеграции",
    "sectionDescription": "API, совместимые с OpenAI, и конечные точки операционных протоколов",
    "tabApis": "OpenAI-совместимые API",
    "tabProtocols": "Протоколы",
    "tabsAria": "Разделы конечной точки",
    "protocolsTitle": "Протоколы",
    "protocolsDescription": "MCP и A2A - полноценные конечные точки с отдельной наблюдаемостью и управлением.",
    "mcpCardTitle": "Сервер MCP",
    "mcpCardDescription": "Model Context Protocol через stdio",
    "a2aCardTitle": "Сервер A2A",
    "a2aCardDescription": "JSON-RPC конечная точка Agent2Agent",
    "protocolToolsLabel": "Инструменты",
    "protocolTasksLabel": "Задачи",
    "protocolActiveStreamsLabel": "Активные потоки",
    "protocolLastActivity": "Последняя активность",
    "quickStart": "Быстрый старт",
    "openMcpDashboard": "Открыть управление MCP",
    "openA2aDashboard": "Открыть управление A2A",
    "mcpQuickStartTitle": "MCP: быстрый старт",
    "mcpQuickStartStep1": "Запустите сервер MCP через `omniroute --mcp`.",
    "mcpQuickStartStep2": "Настройте MCP-клиент на подключение через stdio.",
    "mcpQuickStartStep3": "Вызывайте инструменты вроде `omniroute_get_health` и `omniroute_list_combos`.",
    "a2aQuickStartTitle": "A2A: быстрый старт",
    "a2aQuickStartStep1": "Откройте карточку агента по адресу `/.well-known/agent.json`.",
    "a2aQuickStartStep2": "Отправляйте JSON-RPC-запросы на `POST /a2a` через `message/send` или `message/stream`.",
    "a2aQuickStartStep3": "Отслеживайте и управляйте задачами через `tasks/get` и `tasks/cancel`.",
    "completionsLegacy": "Завершения (устар.)",
    "completionsLegacyDesc": "Устаревшие текстовые завершения OpenAI — поддерживают и строку prompt, и массив messages",
    "messagesApi": "Сообщения",
    "messagesApiDesc": "Формат API собственных антропных сообщений для Claude-совместимых провайдеров",
    "imageEdits": "Редактирование изображений",
    "imageEditsDesc": "Редактируйте и изменяйте существующие изображения с помощью ИИ (закрашивание, закрашивание, вариации)",
    "batchApi": "Пакетный API",
    "batchApiDesc": "Асинхронная обработка больших пакетов запросов (совместимость с OpenAI)",
    "filesApi": "Файловый API",
    "filesApiDesc": "Загружайте файлы и управляйте ими для пакетной обработки",
    "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": "Пароль Sudo (требуется в macOS/Linux)",
    "ngrokTitle": "Нгрок Туннель",
    "ngrokRunning": "Бег",
    "ngrokStarting": "Начало",
    "ngrokStoppedState": "Остановлено",
    "ngrokNeedsAuth": "Требуется авторизация",
    "ngrokNotInstalled": "Не установлено",
    "ngrokUnsupported": "Не поддерживается",
    "ngrokError": "Ошибка",
    "ngrokEnable": "Включить туннель",
    "ngrokDisable": "Остановить туннель",
    "ngrokUrlNotice": "Создает общедоступный туннель ngrok.",
    "ngrokAuthTokenLabel": "Токен авторизации (требуется, если NGROK_AUTHTOKEN не установлен)",
    "ngrokAuthTokenPlaceholder": "Введите свой токен авторизации ngrok",
    "ngrokLastError": "Последняя ошибка: {error}",
    "ngrokStarted": "туннель нгрока запущен",
    "ngrokStopped": "Туннель Нгрока остановлен",
    "ngrokRequestFailed": "Не удалось обновить туннель ngrok.",
    "tokenSaverSubtitle": "Тратьте меньше жетонов на каждый запрос.",
    "tokenSaverToolOutput": "Выход инструмента",
    "tokenSaverLlmOutput": "Выход LLM",
    "tokenSaverInputCompression": "Входное сжатие",
    "apiEndpointsCatalogUnavailable": "Каталог API недоступен",
    "apiEndpointsSearchPlaceholder": "Поиск конечных точек...",
    "apiEndpointsRequiresAuth": "Требуется авторизация",
    "apiEndpointsNoMatch": "Ни одна конечная точка не соответствует вашему фильтру.",
    "localServer": "Локальный сервер",
    "cloudOmniroute": "Облачный OmniRoute",
    "copyUrl": "Копировать URL",
    "badgeLoopbackTooltip": "Этот конечный пункт доступен только локально (только для обратной связи)",
    "badgeAlwaysProtectedTooltip": "Этот конечный пункт всегда защищен и требует авторизации",
    "badgeInternalTooltip": "Это конечная точка внутренней системы",
    "tierAll": "Все",
    "tierAuth": "Аутентифицировано",
    "tierLoopback": "Циклический вызов",
    "tierAlwaysProtected": "Всегда Защищено",
    "tierPublic": "Публичный",
    "hideInternal": "Скрыть внутренние",
    "showInternal": "Показать Внутренний"
  },
  "endpoints": {
    "tabProxy": "Прокси конечных точек",
    "tabApiEndpoints": "API-эндпоинты",
    "apiEndpointsTitle": "API-эндпоинты",
    "apiEndpointsDescription": "Бэкенд API-эндпоинты, доступные для использования другими приложениями и сервисами.",
    "comingSoon": "Скоро",
    "plannedFeatures": "Планируемые функции",
    "featureRestApi": "Каталог REST API с интерактивной документацией",
    "featureWebhooks": "Настройка вебхуков и подписки на события",
    "featureSwagger": "Автоматическая генерация спецификаций OpenAPI / Swagger",
    "featureAuth": "Управление API-ключами и OAuth-областями для каждого эндпоинта"
  },
  "mcpDashboard": {
    "loading": "Загрузка панели MCP...",
    "activate": "активировать",
    "deactivate": "деактивировать",
    "confirmSwitchCombo": "Подтвердить {action} комбо \"{combo}\"?",
    "switchComboFailed": "Не удалось переключить состояние комбо.",
    "switchComboSuccess": "Комбо \"{combo}\" обновлено.",
    "confirmApplyProfile": "Применить профиль устойчивости \"{profile}\"?",
    "applyProfileFailed": "Не удалось применить профиль устойчивости.",
    "applyProfileSuccess": "Профиль \"{profile}\" применён.",
    "confirmResetBreakers": "Сбросить все автоматические выключатели?",
    "resetBreakersFailed": "Не удалось сбросить автоматические выключатели.",
    "resetBreakersSuccess": "Автоматические выключатели сброшены.",
    "processStatus": "Статус процесса",
    "online": "В сети",
    "offline": "Не в сети",
    "disableLabel": "Отключить {label}",
    "enableLabel": "Включить {label}",
    "transportMode": "Режим Транспорта",
    "transportStdioDesc": "Локально — IDE запускает процесс через omniroute --mcp",
    "transportSseDesc": "Удаленный — События, отправляемые сервером по HTTP",
    "transportStreamableHttpDesc": "Удаленный — Современный двунаправленный HTTP",
    "copy": "Копировать",
    "mcpDashboardCopyUrl": "Копировать URL",
    "mcpDisabledTitle": "MCP отключен",
    "mcpDisabledDesc": "Включите MCP выше, чтобы настроить режим передачи и просмотреть телеметрию сервера.",
    "mcpIntro": "Протокол Контекста Модели — {tools} инструменты в {scopes} областях, {transports} транспортах (stdio / SSE / Streamable HTTP).",
    "mcpStep1": "Запустить через {code}",
    "mcpStep2": "Настройте свой клиент MCP для подключения через транспорт stdio.",
    "mcpStep3": "Вызовите инструменты, такие как {code1} и {code2}.",
    "pid": "PID",
    "sessionUptime": "Время работы сеанса",
    "lastHeartbeat": "Последний heartbeat",
    "activity24h": "Активность (24ч)",
    "totalCalls": "Всего вызовов",
    "successRate": "Успешность",
    "avgLatency": "Средняя задержка",
    "topTools": "Топ инструментов",
    "noToolCalls24h": "За последние 24 часа вызовов инструментов не было.",
    "runtimeDetails": "Детали среды выполнения",
    "transport": "Транспорт",
    "scopesEnforced": "Скоупы применяются",
    "yes": "да",
    "no": "нет",
    "lastCall": "Последний вызов",
    "heartbeatPath": "Путь heartbeat",
    "operationalControls": "Операционные элементы управления",
    "switchCombo": "Переключить комбо",
    "inactive": "неактивно",
    "active": "активно",
    "activateCombo": "Активировать комбо",
    "deactivateCombo": "Деактивировать комбо",
    "applyResilienceProfile": "Применить профиль устойчивости",
    "profileAggressive": "агрессивный",
    "profileBalanced": "сбалансированный",
    "profileConservative": "консервативный",
    "applyProfile": "Применить профиль",
    "resetCircuitBreakers": "Сбросить автоматические выключатели",
    "resetCircuitBreakersHelp": "Очищает текущее состояние выключателей и счётчики сбоев для провайдеров.",
    "resetAllBreakers": "Сбросить все выключатели",
    "toolsAndScopes": "Инструменты и скоупы",
    "tableTool": "Инструмент",
    "tableScopes": "Скоупы",
    "tablePhase": "Фаза",
    "tableAudit": "Аудит",
    "auditLog": "Журнал аудита",
    "auditSummary": "Вызовов: {total} | страница {page} из {totalPages}",
    "allTools": "Все инструменты",
    "allResults": "Все результаты",
    "success": "Успех",
    "failure": "Сбой",
    "apiKeyIdPlaceholder": "apiKeyId",
    "loadingAuditEntries": "Загрузка записей аудита...",
    "noAuditEntriesForFilters": "Записи аудита по текущим фильтрам не найдены.",
    "tableTimestamp": "Время",
    "tableDuration": "Длительность",
    "tableResult": "Результат",
    "tableApiKey": "API-ключ",
    "failed": "сбой",
    "previous": "Предыдущая",
    "next": "Следующая",
    "apiKeyId": "Api Key Id",
    "offset": "Offset",
    "limit": "Limit",
    "tool": "Tool"
  },
  "a2aDashboard": {
    "loading": "Загрузка панели A2A...",
    "confirmCancelTask": "Отменить задачу {taskId}?",
    "cancelTaskFailed": "Не удалось отменить задачу.",
    "cancelTaskSuccess": "Задача {taskId} отменена.",
    "smokeSendFailed": "smoke-тест message/send не пройден.",
    "smokeSendSuccessWithTask": "message/send успешно (задача {taskId}).",
    "smokeSendSuccess": "message/send успешно.",
    "smokeStreamFailed": "smoke-тест message/stream не пройден.",
    "smokeStreamSuccessWithTask": "message/stream успешно (задача {taskId}{stateSuffix}).",
    "smokeStreamNoTaskId": "message/stream завершился без идентификатора задачи.",
    "health": "Состояние",
    "ok": "ок",
    "totalTasks": "Всего задач",
    "activeStreams": "Активные потоки",
    "lastTask": "Последняя задача",
    "taskStateOverview": "Обзор состояний задач",
    "state": {
      "submitted": "отправлена",
      "working": "в работе",
      "completed": "завершена",
      "failed": "сбой",
      "cancelled": "отменена"
    },
    "agentCard": "Карточка агента",
    "agentCardPath": "/.well-known/agent.json",
    "version": "Версия",
    "url": "URL",
    "capabilities": "Возможности",
    "agentCardNotAvailable": "Карточка агента недоступна.",
    "quickValidation": "Быстрая проверка",
    "quickValidationDescription": "Выполняет smoke-вызовы через живую конечную точку `/a2a`.",
    "runMessageSend": "Запустить message/send",
    "runMessageStream": "Запустить message/stream",
    "taskManagement": "Управление задачами",
    "taskSummary": "{total} задач | страница {page} из {totalPages}",
    "allStates": "все",
    "allSkills": "все навыки",
    "loadingTasks": "Загрузка задач...",
    "noTasksForFilters": "Задачи по текущим фильтрам не найдены.",
    "tableTask": "Задача",
    "tableSkill": "Навык",
    "tableState": "Состояние",
    "tableUpdated": "Обновлено",
    "tableActions": "Действия",
    "view": "Просмотр",
    "cancel": "Отменить",
    "previous": "Предыдущая",
    "next": "Следующая",
    "taskDetail": "Детали задачи",
    "close": "Закрыть",
    "metadata": "Метаданные",
    "events": "События",
    "artifacts": "Артефакты",
    "tablePhase": "Table Phase",
    "offset": "Offset",
    "limit": "Limit",
    "skill": "Skill",
    "rpcEndpoint": "ПОСТ /a2a",
    "rpcMethodSend": "сообщение/отправить",
    "rpcMethodStream": "сообщение/поток",
    "rpcMethodGet": "задачи/получить",
    "rpcMethodCancel": "задачи/отмена",
    "serviceLabel": "А2А",
    "online": "В сети",
    "offline": "Офлайн",
    "disableLabel": "Отключить {label}",
    "enableLabel": "Включить {label}",
    "a2aDisabledTitle": "A2A отключен",
    "a2aDisabledDesc": "Включите A2A выше, чтобы просмотреть телеметрию задач, детали агента и инструменты валидации.",
    "a2aIntro": "Agent2Agent JSON-RPC 2.0 конечная точка — отправка задач, потоковые ответы, отмена выполняемых заданий.",
    "a2aStep1": "Откройте карточку агента по {code}.",
    "a2aStep2": "Отправьте JSON-RPC на {code1} с использованием {code2} или {code3}.",
    "a2aStep3": "Отслеживайте и отменяйте задачи с {code1} и {code2}."
  },
  "memory": {
    "a": "A",
    "actions": "Действия",
    "addMemory": "Добавить запись памяти",
    "allTypes": "Все типы",
    "cancel": "Отмена",
    "checkHealth": "Проверить здоровье",
    "checkingHealth": "Проверка…",
    "compactOld": "Компактный старый",
    "concept": {
      "title": "Разговорная Память",
      "description": "OmniRoute учится на каждом разговоре, запоминая факты, эпизоды, процедуры и семантические концепции, которые делают ответы более точными и контекстно осведомленными.",
      "howWorksToggle": "Как это работает",
      "howWorksContent": "1. Автоматическое извлечение: в конце каждого ответа факты и эпизоды обнаруживаются и сохраняются автоматически.\n2. Извлечение: перед каждым ответом наиболее релевантные воспоминания ищутся с помощью FTS5 (точно), векторного (семантического) или гибридного RRF.\n3. Инъекция: релевантные воспоминания внедряются в контекст помощника для улучшения качества ответа.\n4. Управление: используйте эту страницу для просмотра, редактирования, экспорта и сжатия старых воспоминаний."
    },
    "content": "Содержимое",
    "contentPlaceholder": "Значение или контент JSON, который нужно запомнить",
    "created": "Создано",
    "delete": "Delete",
    "deleteConfirmDesc": "Это действие нельзя отменить. Память будет удалена навсегда.",
    "deleteConfirmTitle": "Удалить память?",
    "description": "Постоянная кросс-сессионная память для диалогов",
    "editMemory": "Редактировать память",
    "editModal": {
      "title": "Редактировать память",
      "metadataLabel": "Метаданные (JSON)",
      "metadataInvalid": "Неверный JSON",
      "saveFailed": "Не удалось сохранить память"
    },
    "embedding": {
      "autoLabel": "Автоматический",
      "autoDesc": "Использует лучшее доступное: удаленный провайдер > статический > трансформеры",
      "remoteLabel": "Удаленный провайдер",
      "remoteDesc": "Использует встраивание через API провайдера (требуется ключ API)",
      "staticLabel": "Статическая локальная (зелье)",
      "staticDesc": "Локальная эмбеддинг без WASM или внешних зависимостей",
      "transformersLabel": "Transformers.js (MiniLM)",
      "transformersDesc": "Локальная эмбеддинг через @huggingface/transformers (~400МБ ОЗУ)",
      "providerModelLabel": "Поставщик / Модель",
      "noRemoteProviders": "Нет провайдеров с настроенным API-ключом",
      "selectProviderModel": "Выберите модель",
      "staticEnabledLabel": "Включить Статическую Зелье",
      "staticEnabledDesc": "Скачайте и используйте модель potion-base-8M локально",
      "transformersEnabledLabel": "Включить Transformers.js",
      "transformersEnabledDesc": "Подписаться на локальный MiniLM (~400MB RAM, ~3s холодный старт)",
      "transformersWarning": "Требуется ~400МБ ОЗУ и ~3с холодного старта при первом семантическом запросе."
    },
    "emptyState": {
      "title": "Пока нет воспоминаний",
      "description": "Воспоминания создаются автоматически из разговоров. Вы также можете добавить их вручную, используя кнопку выше."
    },
    "engine": {
      "statusTitle": "Статус Двигателя",
      "embeddingTitle": "Встраиваемый источник",
      "rerankTitle": "Пересортировать (необязательно)",
      "reindexNow": "Перестроить индекс сейчас",
      "reindexStarted": "Начата переиндексация ({pending} в ожидании)",
      "reindexFailed": "Не удалось запустить переиндексацию",
      "keywordLabel": "Ключевое слово (FTS5)",
      "keywordReason": "Поиск по ключевым словам всегда доступен",
      "embeddingLabel": "Встраивание",
      "vectorStoreLabel": "Векторное Хранилище",
      "qdrantLabel": "Qdrant",
      "rerankLabel": "Переоценить",
      "qdrantDisabled": "Отключено",
      "qdrantOk": "Здорово ({latencyMs}мс)",
      "qdrantError": "Ошибка подключения",
      "needsReindex": "{count} память(ей) нуждается в переиндексации",
      "configureCta": "Настроить",
      "vectorStoreInstallHint": "Чтобы включить векторный поиск: npm install sqlite-vec (нужен нативный Node.js, а не WASM), затем перезапустите."
    },
    "episodic": "Эпизодическая",
    "export": "Экспорт",
    "factual": "Фактическая",
    "healthUnknown": "Здоровье неизвестно",
    "hitRate": "Коэффициент попадания",
    "import": "Импорт",
    "importError": "Не удалось импортировать файл",
    "importResult": "{imported} импортировано, {skipped} пропущено",
    "key": "Ключ",
    "keyPlaceholder": "например user.preferences.theme",
    "loading": "Загрузка...",
    "memories": "Память",
    "next": "Далее",
    "noMemories": "Записей памяти не найдено",
    "pageInfo": "Страница {page} из {totalPages} (всего {total})",
    "pipelineError": "Ошибка конвейера",
    "pipelineOk": "Конвейер в порядке ({latencyMs}ms)",
    "playground": {
      "infoTitle": "Площадка Памяти",
      "infoDesc": "Симулируйте, что будет получено для данного запроса. Память не изменяется — предварительный просмотр только для чтения.",
      "queryLabel": "Тестовый запрос",
      "queryPlaceholder": "Введите вопрос или тестовую фразу...",
      "strategyLabel": "Стратегия",
      "strategyExact": "Точный (FTS5)",
      "strategySemantic": "Семантический (векторный)",
      "strategyHybrid": "Гибрид (RRF)",
      "budgetLabel": "Бюджет (токены)",
      "simulate": "Симулировать",
      "resultsTitle": "{count} результат(ов)",
      "resolutionTitle": "Разрешение поиска",
      "resolutionEmbedding": "Встраивание",
      "resolutionStore": "Векторное хранилище",
      "resolutionStrategy": "Используемая стратегия",
      "rerankApplied": "Переназначение применено",
      "fallback": "Резервный вариант",
      "noResults": "Не найдено ни одной записи для этого запроса.",
      "tokensUsed": "используемые токены",
      "none": "нет",
      "errorFetch": "Не удалось получить предварительный просмотр"
    },
    "previous": "Предыдущий",
    "procedural": "Процедурная",
    "qdrant": {
      "title": "Qdrant (Векторное Хранилище Уровень 2)",
      "description": "Дополнительная интеграция Qdrant для масштабируемого семантического поиска",
      "enableLabel": "Включить Qdrant",
      "enableDesc": "Когда включено, Qdrant используется в качестве основного хранилища векторов",
      "testConnection": "Проверить соединение",
      "testing": "Тестирование...",
      "statusActive": "Активный",
      "statusError": "Ошибка",
      "statusDisabled": "Отключено",
      "healthOk": "Соединение установлено ({latencyMs}мс)",
      "healthError": "Ошибка подключения",
      "saved": "Настройки сохранены",
      "saveError": "Не удалось сохранить",
      "portLabel": "Порт",
      "embeddingModelLabel": "Модель Встраивания",
      "optional": "необязательный",
      "apiKeyKeepPlaceholder": "Оставьте пустым, чтобы сохранить текущий ключ",
      "apiKeyOptional": "Оставьте пустым, если не используете аутентификацию",
      "removeApiKey": "Удалить",
      "quickSelectModel": "Быстрый выбор",
      "searchTestTitle": "Тест семантического поиска",
      "searchPlaceholder": "Введите тестовый запрос...",
      "searching": "Поиск...",
      "search": "Поиск",
      "cleanupTitle": "Очистить старые баллы",
      "cleanupDesc": "Удалить точки Qdrant для истекших воспоминаний (период хранения).",
      "cleaning": "Очистка...",
      "cleanNow": "Очистить сейчас",
      "cleanupSuccess": "{count} балл(ов) удалено",
      "cleanupFailed": "Очистка не удалась"
    },
    "rerank": {
      "enableLabel": "Включить Ререйтинг",
      "enableDesc": "Переставляет результаты с помощью модели повторной оценки после поиска",
      "warning": "Rerank добавляет +200-500 мс задержки и дополнительные расходы на запрос. Используйте с осторожностью.",
      "providerModelLabel": "Пересортировать Провайдер / Модель",
      "noProviderWithKey": "Нет провайдера с настроенным API-ключом. Настройте провайдера для использования rerank.",
      "selectProviderModel": "Выберите провайдера/модель"
    },
    "save": "Сохранить",
    "saving": "Сохранение...",
    "search": "Поиск",
    "semantic": "Семантическая",
    "summarize": {
      "title": "Компактные старые воспоминания",
      "noCandidates": "Нет доступных для компактации воспоминаний (критерий: старше 30 дней).",
      "candidatesDesc": "{count} воспоминаний будет сжато в сводки. Это действие нельзя отменить.",
      "confirm": "Компактный сейчас"
    },
    "tabs": {
      "memories": "Воспоминания",
      "playground": "Игровая площадка",
      "engine": "Двигатель"
    },
    "title": "Память",
    "tokensUsed": "Использовано токенов",
    "tooltip": {
      "totalEntries": "Всего сохраненных воспоминаний для этого ключа API",
      "tokensUsed": "Оценочное общее количество токенов, занимаемых активными памятью",
      "hitRate": "Коэффициент попаданий кэша по ID (не точность семантического воспоминания)",
      "factual": "Объективные, постоянные факты из контекста пользователя",
      "episodic": "События и впечатления из истории разговоров",
      "procedural": "Процедуры, рабочие процессы и инструкции, которые ассистент должен соблюдать",
      "semantic": "Концепции, предпочтения и предметные знания"
    },
    "totalEntries": "Всего записей",
    "type": "Тип",
    "memoryEnabled": "Включена память"
  },
  "skills": {
    "title": "Навыки",
    "description": "Инструменты для моделей",
    "skillsTab": "Навыки",
    "executionsTab": "Выполнения",
    "sandboxTab": "Песочница",
    "loading": "Загрузка...",
    "noSkills": "Навыки не найдены",
    "noExecutions": "Выполнений не найдено",
    "enabled": "Включено",
    "disabled": "Отключено",
    "version": "Версия",
    "tableDescription": "Описание",
    "skill": "Навык",
    "status": "Статус",
    "duration": "Длительность",
    "time": "Время",
    "sandboxConfig": "Конфигурация песочницы",
    "cpuLimit": "Лимит CPU",
    "cpuLimitDesc": "Максимальное число ядер или доля CPU, доступная песочнице.",
    "memoryLimit": "Лимит памяти",
    "memoryLimitDesc": "Максимальный объём памяти, доступный песочнице.",
    "timeout": "Тайм-аут",
    "timeoutDesc": "Максимальная длительность выполнения до принудительного завершения.",
    "networkAccess": "Доступ к сети",
    "networkAccessDesc": "Разрешить навыку сетевые запросы.",
    "mode": "Mode",
    "q": "Q",
    "filterSkillsPlaceholder": "Фильтрация навыков по имени, описанию или тегу",
    "allModes": "Все режимы",
    "totalSkills": "Всего навыков",
    "enabledSkills": "Включено",
    "totalExecutions": "Исполнения",
    "successRate": "Уровень Успеха",
    "marketplaceTab": "Маркетплейс",
    "applyFilters": "Применить фильтры",
    "popularDefaultsLabel": "Популярно по умолчанию для выбранного провайдера:",
    "onMode": "ВКЛ.",
    "offMode": "ВЫКЛ.",
    "autoMode": "АВТО",
    "installSkillButton": "Установить Навык",
    "installSkillModalTitle": "Установить навык",
    "installJsonPlaceholder": "Вставьте JSON манифеста навыков сюда...",
    "installing": "Установка...",
    "installSuccess": "Навык установлен ({id})",
    "installError": "Установка не удалась",
    "invalidJson": "Неверный JSON",
    "searchMarketplacePlaceholder": "Поиск навыков...",
    "searchMarketplace": "Поиск Маркета",
    "marketplaceEmpty": "Навыки не найдены на рынке",
    "marketplaceError": "Поиск не удался",
    "installingFromMarketplace": "Установка из магазина...",
    "popularSkills": "Популярные навыки",
    "skillsMarketplace": "Рынок навыков",
    "searching": "Поиск...",
    "pageInfo": "Страница {page} из {totalPages} ({total} всего)",
    "previous": "Предыдущий",
    "next": "Далее",
    "activeProvider": "Активный провайдер:",
    "changeInSettings": "Измените это в Настройки → Память и Навыки.",
    "installs": "установки",
    "marketplaceSkillsMpHint": "Настройте свой ключ API SkillsMP в Настройках, чтобы просматривать рынок.",
    "marketplaceSkillsShHint": "Ищите в открытом каталоге skills.sh, чтобы обнаружить и установить навыки агентов.",
    "installSkillModalDesc": "Вставьте JSON манифест навыка или загрузите файл .json.",
    "uploadJson": "Загрузить JSON",
    "cancel": "Отменить",
    "installSkill": "Установить навык"
  },
  "health": {
    "title": "Здоровье системы",
    "description": "Мониторинг вашего экземпляра OmniRoute в режиме реального времени",
    "healthy": "Здоровый",
    "degraded": "Деградированный",
    "down": "Вниз",
    "uptime": "Время работы",
    "memory": "Память",
    "memoryRss": "Память (RSS)",
    "heap": "Куча",
    "cpu": "ЦП",
    "database": "База данных",
    "version": "Версия",
    "lastCheck": "Последняя проверка",
    "providerHealth": "Здоровье поставщика",
    "systemMetrics": "Системные метрики",
    "tokenHealth": "Здоровье токена",
    "refreshAll": "Обновить все",
    "checkNow": "Проверьте сейчас",
    "loadingHealth": "Загрузка данных о состоянии здоровья...",
    "failedToLoad": "Не удалось загрузить данные о состоянии: {error}.",
    "retry": "Повторить попытку",
    "allOperational": "Все системы в рабочем состоянии",
    "issuesDetected": "Обнаружены системные проблемы",
    "updatedAt": "Обновлен {time}",
    "latency": "Задержка",
    "latencyP50": "стр50",
    "latencyP95": "стр.95",
    "latencyP99": "стр.99",
    "millisecondsShort": "{value}мс",
    "notAvailable": "—",
    "totalRequests": "Всего запросов",
    "noDataYet": "Данных пока нет",
    "promptCache": "Кэш промптов",
    "entries": "Записи",
    "hitRate": "Скорость попадания",
    "hitsMisses": "Попадания/промахи",
    "signatureCache": "Кэш подписей",
    "signatureDefaults": "По умолчанию",
    "signatureTool": "Инструмент",
    "signatureFamily": "Семья",
    "signatureSession": "Сессия",
    "recovering": "Восстановление",
    "noCBData": "Данные по автоматическому выключателю отсутствуют. Сначала сделайте несколько запросов.",
    "providerHealthStatusAria": "Состояние здоровья поставщика",
    "issuesLabel": "Обнаружены проблемы",
    "operational": "Оперативный",
    "providers": "Провайдеры",
    "configuredProvidersLabel": "Настраивается в приборной панели",
    "configuredProvidersHint": "Поставщики, учетные данные которых сохранены в /dashboard/providers, независимо от состояния времени выполнения.",
    "activeProviders": "{count} активных",
    "activeProvidersHint": "Настроенные поставщики в настоящее время включены для маршрутизации запросов.",
    "monitoredProviders": "{count} под наблюдением",
    "monitoredProvidersHint": "Поставщики услуг в настоящее время отслеживаются с помощью мониторов состояния автоматических выключателей.",
    "healthyCount": "{count} здоров",
    "nodeVersion": "Узел {version}",
    "failures": "{count} сбой",
    "failuresPlural": "{count} сбоев",
    "lastFailure": "Последний",
    "rateLimitStatus": "Статус ограничения скорости",
    "activeLimiters": "{count} активный ограничитель",
    "activeLimitersPlural": "{count} активные ограничители",
    "queued": "В очереди",
    "queuedCount": "{count} поставлен в очередь",
    "running": "бег",
    "runningCount": "{count} работает",
    "ok": "ОК",
    "activeLockouts": "Активные блокировки",
    "resetConfirm": "Вернуть все автоматические выключатели в исправное состояние? Это очистит все счетчики сбоев и вернет всех поставщиков в рабочее состояние.",
    "resetAllTitle": "Верните все автоматические выключатели в исправное состояние.",
    "resetting": "Сброс...",
    "resetAll": "Сбросить все",
    "until": "До {time}",
    "limitExhausted": "Exhausted",
    "learnedFromHeaders": "Learned from headers",
    "remainingOfLimit": "{remaining}/{limit} remaining",
    "throttleStatus": "Throttle: {value}",
    "lastHeaderUpdate": "Header update: {age}",
    "databaseHealth": "Состояние базы данных",
    "stickyBoundSessions": "Сеансы с прикрепленной привязкой",
    "sessionsByApiKey": "Сессии по ключу API",
    "noActiveSessionsTracked": "Активные сеансы пока не отслеживаются.",
    "noSessionQuotaMonitorsActive": "Ни один активный монитор квоты сеанса не активен.",
    "gracefulDegradationStatus": "Статус постепенной деградации",
    "additionalModels": "+{count} еще модели",
    "providerHealthMatrixTitle": "Матрица Здоровья Провайдера",
    "providerHealthMatrixDescription": "Поставщик × аккаунт × модель состояния от разрывов, перерывов, блокировок и журналов.",
    "healthMatrixRange": "Диапазон матрицы здоровья",
    "providerFilter": "Фильтр провайдеров",
    "onlyIssues": "Только проблемы",
    "refresh": "Обновить",
    "accounts": "Учетные записи",
    "models": "Модели",
    "issues": "Проблемы",
    "loadingProviderHealthMatrix": "Загрузка матрицы состояния провайдера...",
    "failedProviderHealthMatrix": "Не удалось загрузить матрицу состояния провайдера: {error}",
    "noProvidersMatchedFilters": "Нет провайдеров, соответствующих текущим фильтрам.",
    "modelPillSummary": "{requests} запрос · {successRate} успех · {latency} ср.",
    "modelLockoutSummary": "{reason} · осталось {duration}",
    "locked": "заблокировано",
    "inferred": "выведенный",
    "inactive": "Неактивный",
    "noConnectionId": "нет идентификатора соединения",
    "accountModelSummary": "{connectionId} · {count} моделей",
    "cooldown": "восстановление",
    "durationRemaining": "Осталось {duration}",
    "noSyncedModelsOrTraffic": "Нет синхронизированных моделей или недавнего трафика.",
    "providerRowSummary": "{active}/{total} активных аккаунтов · {requests} запросов · {successRate} успех · {latency} ср.",
    "cooldownCount": "{count} время восстановления",
    "lockoutCount": "{count} блокировок",
    "issueCount": "{count} проблемы",
    "score": "Счет",
    "lastRequest": "Последний запрос",
    "lastError": "Последняя ошибка"
  },
  "telemetry": {
    "title": "Системная телеметрия",
    "description": "Прокручивающиеся сигналы запроса, среды выполнения, сеанса и памяти из этого процесса OmniRoute.",
    "uptime": "Время работы",
    "totalRequests": "Всего запросов",
    "avgLatency": "Средняя задержка",
    "errorRate": "Частота ошибок",
    "activeConnections": "Активные соединения",
    "memoryUsage": "Использование памяти",
    "latencyTrend": "Тенденция задержки",
    "throughputTrend": "Тенденция пропускной способности",
    "memoryTrend": "Тренд памяти",
    "refresh": "Обновить",
    "updatedAt": "Обновлен {time}",
    "loadFailed": "Не удалось загрузить данные телеметрии.",
    "partialData": "Телеметрия доступна частично: {error}"
  },
  "mitm": {
    "title": "МИТМ-прокси",
    "description": "Прозрачный прокси для перехвата и маршрутизации клиентских запросов.",
    "enable": "Включить MITM-прокси",
    "enableDesc": "Запустите или остановите процесс локального перехвата и переопределения DNS.",
    "status": "Статус",
    "running": "Бег",
    "stopped": "Остановлено",
    "start": "Старт",
    "stop": "Стоп",
    "refresh": "Обновить",
    "port": "Прокси-порт",
    "apiKey": "API-ключ маршрутизатора",
    "apiKeyPlaceholder": "Необязательно; возвращается к локальному ключу",
    "sudoPassword": "Судо-пароль",
    "cachedPassword": "Кэшировано для этого процесса",
    "saveSettings": "Сохранить настройки",
    "settingsSaved": "Настройки MITM сохранены.",
    "startedSuccess": "MITM-прокси запущен.",
    "stoppedSuccess": "Прокси-сервер MITM остановлен.",
    "saveFailed": "Не удалось обновить настройки MITM.",
    "loadFailed": "Не удалось загрузить настройки MITM.",
    "invalidPort": "Для прозрачного перехвата MITM в настоящее время требуется порт 443.",
    "certificate": "Сертификат ЦС",
    "certificateReady": "Сертификат доступен для установки доверия клиента.",
    "certificateMissing": "Сертификат еще не создан.",
    "available": "Доступно",
    "missing": "Отсутствует",
    "downloadCert": "Скачать сертификат ЦС",
    "regenerateCert": "Восстановить сертификат",
    "regenerateConfirm": "Это аннулирует существующее доверие клиентов. Продолжать?",
    "regenerateSuccess": "Сертификат MITM восстановлен.",
    "regenerateFailed": "Не удалось восстановить сертификат MITM.",
    "targetRoutes": "Целевые маршруты",
    "interceptedRequests": "Перехваченные запросы",
    "activeConnections": "Активные соединения",
    "dnsConfigured": "DNS настроен",
    "pid": "ПИД",
    "lastIntercept": "Последний перехват",
    "target": "Цель",
    "host": "Хост",
    "localPort": "Местный порт",
    "endpoints": "Конечные точки",
    "enabled": "Включено",
    "configured": "Настроен",
    "yes": "Да",
    "no": "Нет",
    "noTargets": "Целевые маршруты не настроены."
  },
  "limits": {
    "title": "Лимиты и квоты",
    "rateLimit": "Ограничение скорости",
    "remaining": "Осталось",
    "requestsPerMinute": "Запросов/мин",
    "tokensPerMinute": "Токенов/мин",
    "dailyLimit": "Дневной лимит"
  },
  "logs": {
    "title": "Журналы",
    "requestLogs": "Запрос журналов",
    "proxyLogs": "Журналы прокси",
    "auditLog": "Журнал аудита",
    "console": "Консоль",
    "auditLogDesc": "Административные действия и события безопасности",
    "loading": "Загрузка...",
    "refresh": "Обновить",
    "filterByAction": "Фильтровать по действию...",
    "filterByActor": "Фильтровать по актеру...",
    "filterEntriesAria": "Фильтрация записей журнала аудита",
    "filterByActionTypeAria": "Фильтровать по типу действия",
    "filterByActorAria": "Фильтровать по актеру",
    "refreshAuditLogAria": "Обновить журнал аудита",
    "tableAria": "Записи журнала аудита",
    "failedFetchAuditLog": "Не удалось получить журнал аудита.",
    "showing": "Показаны записи {count} (смещение {offset})",
    "search": "Поиск",
    "timestamp": "Временная метка",
    "action": "Действие",
    "actor": "Актер",
    "target": "Цель",
    "details": "Подробности",
    "ipAddress": "IP-адрес",
    "notAvailable": "—",
    "noEntries": "Записи журнала аудита не найдены",
    "previous": "Предыдущий",
    "next": "Далее",
    "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": "Очистить все",
    "confirmClearActiveRequests": "Удалить все активные запросы?",
    "model": "Model",
    "provider": "Provider",
    "account": "Account",
    "elapsed": "Elapsed",
    "activeStage": "Сцена",
    "activeStageUnknown": "Еще не отправлено на upstream",
    "activeStageRegistered": "Зарегистрировано",
    "activeStagePayloadPrepared": "Полезная нагрузка подготовлена",
    "activeStageWaitingAccountSlot": "Ожидание слота аккаунта",
    "activeStageWaitingRateLimit": "Ожидание ограничителя скорости",
    "activeStageRateLimitSlotAcquired": "Слот ограничения скорости получен",
    "activeStageSendingToProvider": "Отправка на upstream",
    "activeStageProviderResponseStarted": "Ответ от upstream начат",
    "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"
    },
    "compressionLogTitle": "Журнал сжатия",
    "compressionLogEmpty": "Пока нет сжатых запросов. Статистика сжатия появится здесь, когда запросы будут обработаны с включенным сжатием.",
    "tokens": "токены"
  },
  "onboarding": {
    "welcome": "Добро пожаловать",
    "security": "Безопасность",
    "test": "Тест",
    "ready": "Готово!",
    "setPassword": "Установить пароль",
    "addProvider": "Добавьте своего первого провайдера",
    "getStarted": "Начать",
    "skip": "Пропустить",
    "skipWizard": "Полностью пропустить мастер",
    "skipPassword": "Пропустить установку пароля",
    "skipAndContinue": "Пропустить и продолжить",
    "passwordLabel": "Пароль",
    "confirmPassword": "Подтвердите пароль",
    "enterPassword": "Введите пароль",
    "confirmPasswordPlaceholder": "Подтвердите пароль",
    "passwordsMismatch": "Пароли не совпадают",
    "setupComplete": "Настройка завершена!",
    "goToDashboard": "Перейти в личный кабинет →",
    "welcomeDesc": "OmniRoute — это ваш локальный прокси-сервер AI API. Он направляет запросы нескольким поставщикам искусственного интеллекта с балансировкой нагрузки, аварийным переключением и отслеживанием использования.",
    "multiProvider": "Мультипровайдер",
    "usageTracking": "Отслеживание использования",
    "securityDesc": "Установите пароль для защиты вашей панели управления или пропустите этот шаг.",
    "providerDesc": "Подключите своего первого поставщика искусственного интеллекта. Вы можете добавить больше позже.",
    "apiKeyRequired": "Ключ API (обязательно)",
    "customUrlOptional": "Пользовательский URL-адрес (необязательно)",
    "testDesc": "Давайте проверим, работает ли подключение к вашему провайдеру.",
    "runTest": "Запустить тест соединения",
    "testingConnection": "Тестирование соединения...",
    "connectionSuccessful": "Подключение успешно! Ваш провайдер готов.",
    "noProviderFound": "Поставщик не найден. Вы можете добавить его из панели управления позже.",
    "testFailed": "Тест не пройден, но вы можете настроить это позже.",
    "couldNotTest": "Не удалось проверить сейчас. Вы можете протестировать с панели управления.",
    "doneDesc": "Все готово! Ваш экземпляр OmniRoute настроен и готов к прокси-запросам AI.",
    "yourEndpoint": "Ваша конечная точка:",
    "continue": "Продолжить",
    "retry": "Повторить попытку",
    "failedSetPassword": "Не удалось установить пароль. Попробуйте еще раз.",
    "failedAddProvider": "Не удалось добавить поставщика. Попробуйте еще раз.",
    "connectionError": "Ошибка подключения. Пожалуйста, попробуйте еще раз.",
    "provider": "Поставщик",
    "apiKeyHelp": "Ключ API — это пароль для сервисов AI. Получите его на веб-сайте вашего провайдера (например, Platform.openai.com, console.anthropic.com).",
    "tier": {
      "subtitle": "OmniRoute распределяет поставщиков по трем уровням, поэтому при маршрутизации в первую очередь отдается предпочтение наиболее надежному и наименее затратному пути.",
      "tier1": {
        "label": "Премиум клиенты",
        "description": "Первоклассные интерфейсы командной строки со встроенными потоками аутентификации и моделями рассуждений."
      },
      "tier2": {
        "label": "Оптимизированный по затратам",
        "description": "Дешевые провайдеры с высокой пропускной способностью, используемые для повседневного трафика."
      },
      "tier3": {
        "label": "Резервный вариант и специализация",
        "description": "Локально размещенные или специальные конечные точки, используемые в качестве резервных."
      },
      "configure": "Настройка поставщиков"
    },
    "tierFlowDiagramAlt": "Трехуровневая резервная схема OmniRoute",
    "apiKeyMgmt": "Управление ключами API"
  },
  "providers": {
    "title": "Провайдеры",
    "allProviders": "Все провайдеры",
    "audioProviders": "Поставщики аудио",
    "showFreeOnly": "Только бесплатно",
    "addProvider": "Добавить поставщика",
    "addFirstProvider": "Добавьте своего первого провайдера",
    "addFirstProviderDesc": "Подключите поставщика искусственного интеллекта, чтобы начать маршрутизацию запросов через OmniRoute. Вы можете использовать бесплатных провайдеров, ключи API или учетные записи OAuth.",
    "learnMore": "Узнать больше",
    "editProvider": "Изменить поставщика",
    "deleteProvider": "Удалить поставщика",
    "noProviders": "Поставщики не настроены",
    "modelAvailability": "Доступность модели",
    "accounts": "Счета",
    "newAccount": "Новая учетная запись",
    "deleteConfirm": "Вы уверены, что хотите удалить этого провайдера?",
    "testing": "Тестирование...",
    "testConnection": "Тестовое соединение",
    "testSuccess": "Соединение успешно",
    "testFailed": "Соединение не удалось",
    "available": "Доступно",
    "cooldown": "Перезарядка",
    "unavailable": "Недоступно",
    "unknown": "Неизвестно",
    "oauthLabel": "OAuth",
    "compatibleLabel": "Совместимый",
    "chat": "Чат",
    "responses": "Ответы",
    "messages": "Сообщения",
    "oauthProviders": "Поставщики OAuth",
    "freeProviders": "Бесплатные провайдеры",
    "apiKeyProviders": "Поставщики ключей API",
    "compatibleProviders": "Поставщики, совместимые с ключами API",
    "testAll": "Проверить все",
    "testAllOAuth": "Проверьте все соединения OAuth",
    "testAllFree": "Проверьте все бесплатные соединения",
    "testAllApiKey": "Проверьте все соединения API-ключей",
    "testAllCompatible": "Проверьте все совместимые соединения",
    "connected": "{count} подключено",
    "errorCount": "{count} Ошибка ({code})",
    "errorCountNoCode": "{count} Ошибка",
    "warningCount": "{count} Предупреждение",
    "noConnections": "Нет соединений",
    "expiredBadge": "Expired",
    "expiringSoonBadge": "Expiring Soon",
    "freeTier": "Уровень бесплатного пользования",
    "freeTierAvailable": "Доступен бесплатный уровень",
    "hasFreeTooltip": "Доступен бесплатный тариф",
    "noAuthLabel": "Нет аутентификации",
    "noAuthProviders": "Нет провайдеров аутентификации",
    "upstreamProxyLabel": "Прокси-сервер вверх по потоку",
    "freeAggregated": "Все провайдеры с бесплатным уровнем (также показано в их родной категории)",
    "deprecated": "Устарело",
    "deprecatedProvider": "Этот провайдер устарел",
    "riskNotice": {
      "title": "Перед продолжением",
      "tooltip": "Провайдер с ограничениями по использованию — нажмите для получения деталей",
      "oauth": "Этот провайдер использует вашу официальную сессию продукта/OAuth, которая не разрешена для использования с прокси/маршрутизатором.\n\nМы не рекомендуем интенсивное использование автономных агентов (в стиле OpenCloud, длинные многошаговые потоки, большие партии) — вышестоящий сервис может отреагировать, ограничив или заблокировав аккаунт.\n\nИспользуйте на свой страх и риск.",
      "webCookie": "Этот провайдер аутентифицируется через ваши веб-сессионные куки. Внешний сервис может аннулировать сессию в любое время, требуя повторного входа в систему. Не рекомендуется для длительных unattended операций.\n\nИспользуйте на свой страх и риск.",
      "deprecated": "Этот провайдер был прекращен его поставщиком и может перестать работать без предупреждения. Существующие подключения могут продолжать работать до тех пор, пока поставщик полностью не удалит доступ. Рассмотрите альтернативы.",
      "dontShowAgain": "Больше не показывать это для этого провайдера",
      "understand": "Я понимаю, продолжай",
      "cancel": "Отмена"
    },
    "disabled": "Отключено",
    "enableProvider": "Включить провайдера",
    "disableProvider": "Отключить провайдера",
    "testResults": "Результаты испытаний",
    "noCompatibleYet": "Совместимых поставщиков пока не добавлено",
    "compatibleHint": "Используйте кнопки выше, чтобы добавить конечные точки, совместимые с OpenAI или Anthropic.",
    "addOpenAICompatible": "Добавить совместимость с OpenAI",
    "addAnthropicCompatible": "Добавить антропную совместимость",
    "addNewProvider": "Добавить нового провайдера",
    "backToProviders": "Вернуться к Провайдерам",
    "configureNewProvider": "Настройте нового поставщика ИИ для использования с вашими приложениями.",
    "providerLabel": "Поставщик",
    "selectProvider": "Выберите провайдера",
    "selectedProvider": "Выбранный провайдер",
    "authMethod": "Метод аутентификации",
    "apiKeyLabel": "API-ключ",
    "apiKeyRequired": "Требуется ключ API",
    "selectProviderRequired": "Пожалуйста, выберите провайдера",
    "enterApiKey": "Введите свой ключ API",
    "apiKeySecure": "Ваш ключ API будет зашифрован и надежно сохранен.",
    "oauth2Connect": "Подключиться с помощью OAuth2",
    "oauth2Label": "ОАут2",
    "oauth2Desc": "Подключите свою учетную запись, используя аутентификацию OAuth2.",
    "displayName": "Отображаемое имя",
    "displayNamePlaceholder": "например, Production API, среда разработки",
    "displayNameHint": "Необязательно. Понятное имя для идентификации этой конфигурации.",
    "active": "Активный",
    "activeDescription": "Включите этого поставщика для использования в ваших приложениях.",
    "cancel": "Отмена",
    "createProvider": "Создать поставщика",
    "failedCreate": "Не удалось создать поставщика",
    "errorOccurred": "Произошла ошибка. Пожалуйста, попробуйте еще раз.",
    "modelStatus": "Статус модели",
    "showConfiguredOnly": "Только настроенные",
    "allModelsOperational": "Все модели в рабочем состоянии",
    "modelsWithIssues": "{count} модели с проблемами",
    "allModelsNormal": "Все модели реагируют нормально.",
    "cooldownCleared": "Время восстановления для {model} очищено.",
    "failedClearCooldown": "Не удалось очистить время восстановления",
    "loadingAvailability": "Загрузка доступности модели...",
    "clearCooldown": "Очистить",
    "clearing": "Очистка...",
    "until": "До {time}",
    "providerTestFailed": "Тест провайдера не пройден",
    "providerTestTimeout": "Время теста провайдера истекло — слишком много соединений для одновременной проверки.",
    "modeTest": "{mode} Тест",
    "passedCount": "{count} пройден",
    "failedCount": "{count} не удалось",
    "testedCount": "{count} проверено",
    "millisecondsAbbr": "{value}мс",
    "okShort": "ОК",
    "errorShort": "ОШИБКА",
    "noActiveConnectionsInGroup": "Для этой группы не найдено активных соединений.",
    "allTestsPassed": "Все тесты {total} пройдены",
    "testSummary": "{passed}/{total} пройден, {failed} не выполнен",
    "nameLabel": "Имя",
    "prefixLabel": "Префикс",
    "baseUrlLabel": "Базовый URL",
    "apiTypeLabel": "Тип API",
    "prefixHint": "Обязательно. Уникальный префикс для названий моделей.",
    "nameHint": "Обязательно. Дружественная метка для этого узла.",
    "baseUrlHint": "Обязательно.  Базовый URL-адрес API поставщика.",
    "anthropicPrefixPlaceholder": "ac-прод",
    "openaiPrefixPlaceholder": "oc-прод",
    "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1",
    "openaiBaseUrlPlaceholder": "https://api.openai.com/v1",
    "validateConnection": "Подтвердить соединение",
    "validating": "Проверка...",
    "connectionValid": "Соединение действительно!",
    "connectionFailed": "Соединение не удалось. Проверьте URL и ключ.",
    "testKeyLabel": "Тестовый ключ API",
    "testKeyPlaceholder": "sk-... (только для проверки)",
    "providerNotFound": "Провайдер не найден",
    "deleteConnectionConfirm": "Удалить это соединение?",
    "batchDeleteSelected": "Delete Selected ({count})",
    "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.",
    "batchDeleteSuccess": "Deleted {count} connection(s)",
    "batchActivateSelected": "__MISSING__:Activate",
    "batchDeactivateSelected": "__MISSING__:Deactivate",
    "batchRetestSelected": "__MISSING__:Retest",
    "batchActivateSuccess": "__MISSING__:Activated {count} connection(s)",
    "batchDeactivateSuccess": "__MISSING__:Deactivated {count} connection(s)",
    "failedSetAlias": "Не удалось установить псевдоним",
    "failedSaveConnection": "Не удалось сохранить соединение.",
    "failedSaveConnectionRetry": "Не удалось сохранить соединение. Пожалуйста, попробуйте еще раз.",
    "failedRetestConnection": "Не удалось повторно проверить соединение",
    "deleteCompatibleNodeConfirm": "Удалить этот {type} Совместимый узел?",
    "anthropicCompatibleDetails": "Антропные совместимые детали",
    "openaiCompatibleDetails": "Подробности совместимости с OpenAI",
    "messagesApi": "API сообщений",
    "responsesApi": "API ответов",
    "embeddings": "Embeddings",
    "audioTranscriptions": "Audio Transcriptions",
    "audioSpeech": "Audio Speech",
    "imagesGenerations": "Images Generations",
    "chatCompletions": "Завершения чата",
    "importingModels": "Импорт...",
    "importFromModels": "Импорт из /модели",
    "modelsImported": "{count} моделей импортировано",
    "allModelsAlreadyImported": "Все модели уже импортированы",
    "noNewModelsToImport": "Нет новых моделей для импорта — все модели уже есть в реестре или списке пользовательских моделей",
    "skippingExistingModels": "Пропуск {count} существующих моделей",
    "autoSync": "Автосинхронизация",
    "autoSyncTooltip": "Автоматически обновляет список моделей каждые 24 часа (настраивается через MODEL_SYNC_INTERVAL_HOURS)",
    "autoSyncEnabled": "Автосинхронизация включена — модели будут периодически обновляться",
    "autoSyncDisabled": "Автосинхронизация отключена",
    "autoSyncToggleFailed": "Не удалось переключить автосинхронизацию",
    "clearAllModels": "Очистить все модели",
    "clearAllModelsConfirm": "Вы уверены, что хотите удалить все модели для этого провайдера?",
    "clearAllModelsSuccess": "Все модели очищены",
    "clearAllModelsFailed": "Не удалось очистить модели",
    "addConnectionToImport": "Добавьте соединение, чтобы включить импорт.",
    "noModelsConfigured": "Ни одна модель не настроена",
    "connectionCount": "{count} соединение(я)",
    "fetchingModels": "Загрузка доступных моделей...",
    "failedFetchModels": "Не удалось получить модели.",
    "noModelsFound": "Модели не найдены",
    "importFailed": "Импорт не удался",
    "noNewModelsAdded": "Новых моделей не добавлялось.",
    "adding": "Добавление...",
    "close": "Закрыть",
    "importingModelsTitle": "Импорт моделей",
    "copyModel": "Копировать модель",
    "filterModels": "Фильтровать модели…",
    "modelsActive": "активные",
    "showModel": "Показать модель",
    "hideModel": "Скрыть модель",
    "removeModel": "Удалить модель",
    "rateLimitProtected": "Защищено",
    "rateLimitUnprotected": "незащищенный",
    "enableRateLimitProtection": "Нажмите, чтобы включить защиту от ограничения скорости",
    "disableRateLimitProtection": "Нажмите, чтобы отключить защиту ограничения скорости",
    "productionKey": "Производственный ключ",
    "enterNewApiKey": "Введите новый ключ API",
    "codexApplyModalTitle": "Подать заявку в местный Кодекс",
    "codexApplyTargetLabel": "Целевой путь",
    "codexApplyBackupLabel": "Резервные копии",
    "codexApplyWarning": "Это заменит существующий auth.json. Продолжать?",
    "codexApplyConfirmCheckbox": "Я подтверждаю, что хочу заменить существующий auth.json",
    "codexApply": "Применить",
    "bulkTabSingle": "Одинокий",
    "bulkTabBulkAdd": "Массовое добавление",
    "bulkAddFormatHint": "Один ключ на строку. Формат: name|apiKey или просто apiKey (автоматическое имя по индексу).",
    "bulkValidateKeys": "Подтвердите каждый ключ перед сохранением (медленнее)",
    "bulkAddAllKeys": "Добавить все ключи",
    "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}",
    "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}",
    "optional": "Необязательно",
    "anthropicCompatibleName": "Антропная совместимость",
    "openaiCompatibleName": "Совместимость с OpenAI",
    "failedImportModels": "Не удалось импортировать модели.",
    "noModelsReturnedFromEndpoint": "Ни одна модель не возвращена из конечной точки /models.",
    "importingModelsProgress": "Импорт {current} из {total} моделей...",
    "foundModelsStartingImport": "Найдено {count} моделей. Начинаем импорт...",
    "importingModelById": "Импорт {modelId}...",
    "importSuccessCount": "{count, plural, one {# model} other {# models}} успешно импортирован!",
    "noNewModelsAddedExisting": "Новых моделей не добавлялось (все уже есть).",
    "importDoneCount": "✓ Готово! {count, plural, one {# model imported.} other {# models imported.}}",
    "unexpectedErrorOccurred": "Произошла непредвиденная ошибка",
    "connectionCountLabel": "{count, plural, one {# соединение} few {# соединения} many {# соединений} other {# соединения}}",
    "messagesPath": "сообщения",
    "responsesPath": "ответы",
    "chatCompletionsPath": "чат/дополнения",
    "add": "Добавить",
    "edit": "Редактировать",
    "delete": "Удалить",
    "anthropic": "антропный",
    "openai": "ОпенАИ",
    "singleConnectionPerCompatible": "Для каждого совместимого узла разрешено только одно соединение. Добавьте еще один узел, если вам нужно больше соединений.",
    "connections": "Соединения",
    "providerProxyTitleConfigured": "Прокси-сервер провайдера: {host}",
    "configured": "настроен",
    "providerProxyConfigureHint": "Настроить прокси для всех подключений этого провайдера",
    "providerProxy": "Прокси-сервер провайдера",
    "repairEnv": "Починить .env",
    "repairEnvWorking": "Исправляем...",
    "repairEnvHint": "Восстановить недостающие стандартные OAuth-переменные в .env, не перезаписывая существующие значения.",
    "repairEnvSuccess": "Стандартные OAuth-переменные восстановлены",
    "repairEnvFailed": "Не удалось починить .env",
    "noConnectionsYet": "Пока нет подключений",
    "addFirstConnectionHint": "Добавьте первое соединение, чтобы начать",
    "addConnection": "Добавить соединение",
    "availableModels": "Доступные модели",
    "builtInModels": "Встроенные модели",
    "builtInModelsHint": "Модели реестра для этого провайдера. Используйте карандаш, чтобы задать параметры совместимости.",
    "pageAutoRefresh": "Страница обновится автоматически...",
    "statusDisabled": "отключен",
    "statusConnected": "подключен",
    "statusRuntimeIssue": "проблема во время выполнения",
    "statusAuthFailed": "аутентификация не удалась",
    "statusRateLimited": "ставка ограничена",
    "statusNetworkIssue": "проблема с сетью",
    "statusTestUnsupported": "тест не поддерживается",
    "statusUnavailable": "недоступен",
    "statusFailed": "не удалось",
    "statusError": "ошибка",
    "oauthAccount": "Учетная запись OAuth",
    "errorTypeRuntime": "Локальная среда выполнения",
    "errorTypeUpstreamAuth": "Авторизация восходящего потока",
    "errorTypeMissingCredential": "Отсутствуют учетные данные",
    "errorTypeRefreshFailed": "Обновить не удалось",
    "errorTypeTokenExpired": "Срок действия токена истек",
    "errorTypeRateLimited": "Скорость ограничена",
    "errorTypeUpstreamUnavailable": "Восходящий поток недоступен",
    "errorTypeNetworkError": "Ошибка сети",
    "errorTypeTestUnsupported": "Тест не поддерживается",
    "errorTypeUpstreamError": "Ошибка восходящего потока",
    "proxySourceGlobal": "Глобальный",
    "proxySourceProvider": "Поставщик",
    "proxySourceKey": "Ключ",
    "proxyConfiguredBySource": "Прокси ({source}): {host}",
    "autoPriority": "Авто: {priority}",
    "proxy": "Прокси",
    "retestAuthentication": "Повторная проверка подлинности",
    "retest": "Повторное тестирование",
    "disableConnection": "Отключить соединение",
    "enableConnection": "Включить соединение",
    "reauthenticateConnection": "Повторно аутентифицировать это соединение",
    "proxyConfig": "Конфигурация прокси",
    "aliasExistsAlert": "Псевдоним «{alias}» уже существует. Используйте другую модель или измените существующий псевдоним.",
    "openRouterAnyModelHint": "OpenRouter поддерживает любую модель. Добавляйте модели и создавайте псевдонимы для быстрого доступа.",
    "modelIdFromOpenRouter": "Идентификатор модели (из OpenRouter)",
    "openRouterModelPlaceholder": "антропный/Клод-3-опус",
    "customModels": "Пользовательские модели",
    "customModelsHint": "Добавьте идентификаторы моделей, которых нет в списке по умолчанию. Они будут доступны для маршрутизации.",
    "normalizeToolCallIdLabel": "Нормализовать идентификаторы вызовов инструментов до 9 символов (например, Mistral)",
    "preserveDeveloperRoleLabel": "Сохранять developer role OpenAI Responses (не сопоставлять с system)",
    "compatAdjustmentsTitle": "Совместимость",
    "compatButtonLabel": "Совместимость",
    "compatToolIdShort": "ID инструмента 9",
    "compatDeveloperShort": "Роль разработчика",
    "compatDoNotPreserveDeveloper": "Не сохранять developer role",
    "compatBadgeNoPreserve": "Без сохранения",
    "compatProtocolLabel": "Протокол запроса клиента",
    "compatProtocolHint": "Эти параметры применяются, когда OmniRoute обнаруживает такую форму запроса (OpenAI Chat, Responses API или Anthropic Messages).",
    "compatProtocolOpenAI": "OpenAI Chat Completions",
    "compatProtocolOpenAIResponses": "OpenAI Responses API",
    "compatProtocolClaude": "Anthropic Messages",
    "compatUpstreamHeadersLabel": "Дополнительные заголовки upstream",
    "compatUpstreamHeadersHint": "Настройка с высоким уровнем доверия - тот же уровень, что и редактирование API-учётных данных провайдера; использовать только доверенным администраторам. Применяется после того, как OmniRoute добавит авторизацию из API-ключа провайдера. Если пользовательский заголовок совпадает по имени с уже существующим (например, Authorization), ваше значение полностью заменяет автоматически созданный заголовок (включая Bearer token) - upstream увидит только введённое вами значение, а не ключ из настроек. Ошибка настройки может привести к 401 или поломке upstream-аутентификации. По одной строке на заголовок (например, дополнительный Authentication для некоторых шлюзов). Наведите курсор или сфокусируйте поле, чтобы увидеть предпросмотр. Сохраняется при потере фокуса, клике вне поля или закрытии панели.",
    "compatUpstreamHeaderName": "Имя заголовка",
    "compatUpstreamHeaderValue": "Значение",
    "compatUpstreamAddRow": "Добавить заголовок",
    "compatUpstreamRemoveRow": "Удалить строку",
    "compatBadgeUpstreamHeaders": "Заголовки",
    "perModelQuotaLabel": "Per Model Quota Label",
    "perModelQuotaDescription": "Per Model Quota Description",
    "perModelQuotaToggle": "Переключение квот для каждой модели",
    "modelId": "Идентификатор модели",
    "customModelPlaceholder": "например gpt-4.5-турбо",
    "loading": "Загрузка...",
    "removeCustomModel": "Удалить пользовательскую модель",
    "noCustomModels": "Пользовательские модели пока не добавлены.",
    "allSuggestedAliasesExist": "Все предложенные псевдонимы уже существуют. Пожалуйста, выберите другую модель или удалите конфликтующие псевдонимы.",
    "failedSaveCustomModel": "Не удалось сохранить пользовательскую модель.",
    "modelAddedSuccess": "Модель {modelId} успешно добавлена",
    "failedAddModelTryAgain": "Не удалось добавить модель. Пожалуйста, попробуйте еще раз.",
    "failedSaveImportedModel": "Не удалось сохранить импортированную модель в пользовательскую базу данных.",
    "failedImportModelsTryAgain": "Не удалось импортировать модели. Пожалуйста, попробуйте еще раз.",
    "failedRemoveModelFromDatabase": "Не удалось удалить модель из базы данных.",
    "modelRemovedSuccess": "Модель успешно удалена",
    "failedDeleteModelTryAgain": "Не удалось удалить модель. Пожалуйста, попробуйте еще раз.",
    "compatibleModelsDescription": "Добавьте модели, совместимые с {type}, вручную или импортируйте их из конечной точки /models.",
    "anthropicCompatibleModelPlaceholder": "Клод-3-опус-20240229",
    "openaiCompatibleModelPlaceholder": "gpt-4o",
    "apiKeyValidationFailed": "Проверка ключа API не удалась. Пожалуйста, проверьте свой ключ и повторите попытку.",
    "addProviderApiKeyTitle": "Добавьте ключ API {provider}",
    "checking": "Проверка...",
    "check": "Проверить",
    "valid": "Действителен",
    "invalid": "Недействительный",
    "creating": "Создание...",
    "validationChecksAnthropicCompatible": "Проверка проверяет {provider} путем проверки ключа API.",
    "validationChecksOpenAiCompatible": "Проверка проверяет {provider} через /models по вашему базовому URL-адресу.",
    "priorityLabel": "Приоритет",
    "saving": "Сохранение...",
    "save": "Сохранить",
    "editConnection": "Изменить соединение",
    "accountName": "Имя учетной записи",
    "email": "электронная почта",
    "healthCheckMinutes": "Проверка здоровья (мин)",
    "healthCheckHint": "Интервал обновления упреждающего токена. 0 = отключено.",
    "selectAllModels": "Select all",
    "deselectAllModels": "Deselect all",
    "modelsActiveCount": "{active}/{total} active",
    "noModelsMatch": "No models match \"{filter}\"",
    "groupLabel": "Среда",
    "groupPlaceholder": "например eKaizen, Personal",
    "failedTestConnection": "Не удалось проверить соединение",
    "failed": "Не удалось",
    "leaveBlankKeepCurrentApiKey": "Оставьте пустым, чтобы сохранить текущий ключ API.",
    "editCompatibleTitle": "Изменить совместимость {type}",
    "compatibleBaseUrlHint": "Базовый URL вашего API, совместимого с {type}. Используйте расширенные настройки для собственных путей конечных точек.",
    "apiKeyForCheck": "API-ключ (для проверки)",
    "compatibleProdPlaceholder": "{type} Совместимость (Прод.)",
    "tokenRefreshed": "Токен успешно обновлён",
    "tokenRefreshFailed": "Не удалось обновить токен",
    "applyCodexAuthLocal": "Применить авторизацию",
    "exportCodexAuthFile": "Экспортировать авторизацию",
    "applyClaudeAuthLocal": "Применить авторизацию",
    "exportClaudeAuthFile": "Экспорт авторизации",
    "importClaudeAuth": "Импорт авторизации",
    "claudeApplyModalTitle": "Подать заявку на местный код Claude",
    "claudeApplyTargetLabel": "Целевой путь",
    "claudeApplyBackupLabel": "Резервные копии",
    "claudeApplyMcpHint": "Существующее состояние MCP OAuth будет сохранено.",
    "claudeApplyWarning": "Это заменит существующий раздел claudeAiOauth. Продолжать?",
    "claudeApplyConfirmCheckbox": "Я подтверждаю, что хочу заменить существующий раздел claudeAiOauth",
    "claudeApply": "Применить",
    "claudeAuthAppliedLocal": "Аутентификация Клода применяется локально",
    "claudeAuthApplyFailed": "Не удалось применить аутентификацию Claude локально.",
    "claudeAuthExported": "Файл аутентификации Клода экспортирован.",
    "claudeAuthExportFailed": "Не удалось экспортировать файл аутентификации Клода.",
    "claudeImportModalTitle": "Импорт Клода Аутентификации",
    "claudeImportTabSingle": "Одинокий",
    "claudeImportTabBulk": "Массовый",
    "claudeImportTabUpload": "Загрузить файл",
    "claudeImportTabPaste": "Вставить JSON",
    "claudeImportFileLabel": "Выберите .credentials.json.",
    "claudeImportPasteLabel": "Вставьте содержимое JSON",
    "claudeImportEmailLabel": "Адрес электронной почты аккаунта",
    "claudeImportNameLabel": "Имя подключения (необязательно)",
    "claudeImportOverwriteLabel": "Заменить существующее соединение, если учетная запись уже существует.",
    "claudeImportSubmit": "Импорт",
    "claudeImportSuccess": "Соединение Клода успешно импортировано",
    "claudeImportInvalidJson": "Не удалось проанализировать файл как JSON.",
    "claudeImportInvalidShape": "Файл не является действительным .credentials.json.",
    "claudeImportDuplicate": "Учетная запись уже существует — включите «Заменить существующую», чтобы перезаписать",
    "claudeImportIdentityUnverified": "Bootstrap не смог подтвердить учетную запись. Включите «Заменить существующие» или укажите адрес электронной почты.",
    "claudeImportFailed": "Не удалось импортировать авторизацию Клода.",
    "claudeImportBulkModeUpload": "Загрузить файлы",
    "claudeImportBulkModePaste": "Вставить массив JSON",
    "claudeImportBulkModeZip": "Загрузить ZIP-файл",
    "claudeImportBulkUploadHint": "Перетащите или возьмите до 50 файлов .credentials.json (256 КБ каждый, общий размер 10 МБ).",
    "claudeImportBulkPasteHint": "Вставьте массив объектов: [{ json, name?, email? }, ...]",
    "claudeImportBulkZipHint": "ZIP-архив, содержащий записи .json. Макс. 50 записей, 10 МБ в распакованном виде.",
    "claudeImportBulkSubmit": "Импортировать все",
    "claudeImportBulkSuccess": "Импортированные соединения {count} Claude",
    "claudeImportBulkFailed": "Некоторые записи не удалось импортировать",
    "claudeImportBulkZipExtracting": "Извлечение ZIP…",
    "claudeImportBulkZipError": "Не удалось извлечь ZIP.",
    "applyGeminiAuthLocal": "Применить авторизацию",
    "exportGeminiAuthFile": "Экспорт авторизации",
    "importGeminiAuth": "Импорт авторизации",
    "geminiApplyModalTitle": "Подать заявку на локальный интерфейс командной строки Gemini",
    "geminiApplyTargetLabel": "Целевой путь",
    "geminiApplyBackupLabel": "Резервные копии",
    "geminiApplyAccountsHint": "Активная учетная запись google_accounts.json будет обновлена в соответствии с этим подключением.",
    "geminiApplyWarning": "Это заменит существующий oauth_creds.json и обновит google_accounts.json. Продолжать?",
    "geminiApplyConfirmCheckbox": "Я подтверждаю, что хочу заменить существующий oauth_creds.json",
    "geminiApply": "Применить",
    "geminiAuthAppliedLocal": "Авторизация Gemini применяется локально",
    "geminiAuthApplyFailed": "Не удалось применить аутентификацию Gemini локально.",
    "geminiAuthExported": "Файл аутентификации Gemini экспортирован.",
    "geminiAuthExportFailed": "Не удалось экспортировать файл аутентификации Gemini.",
    "geminiImportModalTitle": "Импортировать аутентификацию Gemini",
    "geminiImportTabSingle": "Одинокий",
    "geminiImportTabBulk": "Массовый",
    "geminiImportTabUpload": "Загрузить файл",
    "geminiImportTabPaste": "Вставить JSON",
    "geminiImportFileLabel": "Выберите oauth_creds.json.",
    "geminiImportPasteLabel": "Вставьте содержимое JSON",
    "geminiImportEmailLabel": "Адрес электронной почты аккаунта",
    "geminiImportNameLabel": "Имя подключения (необязательно)",
    "geminiImportOverwriteLabel": "Заменить существующее соединение, если учетная запись уже существует.",
    "geminiImportSubmit": "Импорт",
    "geminiImportSuccess": "Соединение Gemini успешно импортировано.",
    "geminiImportInvalidJson": "Не удалось проанализировать файл как JSON.",
    "geminiImportInvalidShape": "Файл не является допустимым oauth_creds.json.",
    "geminiImportDuplicate": "Учетная запись уже существует — включите «Заменить существующую», чтобы перезаписать",
    "geminiImportIdentityUnverified": "Не удалось подтвердить личность с помощью id_token. Включите «Заменить существующие» или укажите адрес электронной почты.",
    "geminiImportFailed": "Не удалось импортировать авторизацию Gemini.",
    "geminiImportBulkModeUpload": "Загрузить файлы",
    "geminiImportBulkModePaste": "Вставить массив JSON",
    "geminiImportBulkModeZip": "Загрузить ZIP-файл",
    "geminiImportBulkUploadHint": "Перетащите или возьмите до 50 файлов oauth_creds.json (256 КБ каждый, общий размер 10 МБ).",
    "geminiImportBulkPasteHint": "Вставьте массив объектов: [{ json, name?, email? }, ...]",
    "geminiImportBulkZipHint": "ZIP-архив, содержащий записи oauth_creds.json. Макс. 50 записей, 10 МБ в распакованном виде.",
    "geminiImportBulkSubmit": "Импортировать все",
    "geminiImportBulkSuccess": "Импортированы соединения {count} Gemini.",
    "geminiImportBulkFailed": "Некоторые записи не удалось импортировать",
    "geminiImportBulkZipExtracting": "Извлечение ZIP…",
    "geminiImportBulkZipError": "Не удалось извлечь ZIP.",
    "codexAuthAppliedLocal": "Codex auth.json применён локально",
    "codexAuthApplyFailed": "Не удалось применить Codex auth.json локально",
    "codexAuthExported": "Codex auth.json экспортирован",
    "codexAuthExportFailed": "Не удалось экспортировать Codex auth.json",
    "importCodexAuth": "Импорт авторизации",
    "codexImportModalTitle": "Импортировать аутентификацию Кодекса",
    "codexImportTabSingle": "Одинокий",
    "codexImportTabBulk": "Массовый",
    "codexImportTabUpload": "Загрузить файл",
    "codexImportTabPaste": "Вставить JSON",
    "codexImportFileLabel": "Выберите auth.json",
    "codexImportFileHint": "Выберите файл auth.json, экспортированный из Codex или OmniRoute.",
    "codexImportPasteLabel": "Вставьте содержимое JSON",
    "codexImportEmailLabel": "Адрес электронной почты аккаунта",
    "codexImportEmailHint": "Автоматически определяется из файла; отредактируйте, если необходимо.",
    "codexImportNameLabel": "Имя подключения (необязательно)",
    "codexImportOverwriteLabel": "Заменить существующее соединение, если учетная запись уже существует.",
    "codexImportSubmit": "Импорт",
    "codexImportSuccess": "Соединение Кодекса успешно импортировано",
    "codexImportInvalidJson": "Не удалось проанализировать файл как JSON.",
    "codexImportInvalidShape": "Файл не является допустимым кодом auth.json.",
    "codexImportDuplicate": "Учетная запись уже существует — включите «Заменить существующую», чтобы перезаписать",
    "codexImportFailed": "Не удалось импортировать аутентификацию Кодекса.",
    "codexImportDetectedEmail": "Обнаружено: {email}",
    "codexImportNoEmailDetected": "Электронная почта в файле не обнаружена",
    "codexImportBulkModeUpload": "Загрузить файлы",
    "codexImportBulkModePaste": "Вставить список",
    "codexImportBulkModeZip": "ZIP-архив",
    "codexImportBulkUploadHint": "Выберите несколько файлов .json или перетащите их.",
    "codexImportBulkPasteHint": "Массив JSON [ {...}, {...} ] или несколько JSON, разделенных --- в отдельной строке",
    "codexImportBulkZipHint": "Загрузите ZIP-файл, содержащий файлы auth.json (максимум 50 файлов, 10 МБ).",
    "codexImportBulkSubmit": "Импортировать аккаунты {count}.",
    "codexImportBulkLimit": "Макс. 50 файлов за один импорт",
    "codexImportBulkSuccess": "{count} импортировано",
    "codexImportBulkFailed": "{count} не удалось",
    "codexImportBulkZipExtracting": "Извлечение ZIP…",
    "codexImportBulkZipError": "Не удалось извлечь ZIP.",
    "advancedSettings": "Расширенные настройки",
    "chatPathLabel": "Путь чат-эндпоинта",
    "chatPathPlaceholder": "/chat/completions",
    "chatPathHint": "Пользовательский путь чата для провайдеров с нестандартными API (например, /v4/chat/completions)",
    "modelsPathLabel": "Путь эндпоинта моделей",
    "modelsPathPlaceholder": "/models",
    "modelsPathHint": "Пользовательский путь моделей для проверки (например, /v4/models)",
    "statusDeactivated": "Отключено (вручную)",
    "statusBanned": "Заблокировано / нарушение песочницы",
    "statusCreditsExhausted": "Недостаточно баланса / квота исчерпана",
    "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": "Предприятие и облако",
    "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": "Поставщики облачных агентов",
    "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": "Откройте t3.chat → DevTools → Приложение → Локальное хранилище → https://t3.chat, скопируйте «convex-session-id». Затем откройте DevTools → Network и скопируйте полный заголовок Cookie из любого запроса в чате. Вставьте оба значения в поля ниже.",
    "t3ChatWebCookiePlaceholder": "выпуклый-session-id=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": "Идентификатор вашего проекта Google Cloud. Требуется для учетных записей с исключениями. Введите идентификатор проекта GCP для использования с Gemini CLI.",
    "geminiCliProjectIdLabel": "Идентификатор проекта Google Cloud",
    "geminiCliProjectIdPlaceholder": "мой-gcp-идентификатор-проекта",
    "antigravityProjectIdHint": "Необязательное переопределение запросов кода антигравитационного облака. Оставьте пустым, чтобы использовать проект, обнаруженный во время Google OAuth.",
    "antigravityClientProfileLabel": "Профиль клиента",
    "antigravityClientProfileHint": "Выберите, какую идентичность клиента Antigravity OmniRoute представляет API.",
    "antigravityClientProfileIde": "IDE",
    "antigravityClientProfileHarness": "Harness / CLI",
    "codexFastTierActiveChip": "Активен уровень Codex Fast",
    "tierFast": "Быстро",
    "antigravityProjectIdLabel": "Идентификатор проекта Google Cloud",
    "antigravityProjectIdPlaceholder": "мой-gcp-идентификатор-проекта",
    "grokWebCookieHint": "Grok Web Cookie Hint",
    "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder",
    "herokuBaseUrlHint": "Heroku Base Url Hint",
    "hideEmail": "Hide Email",
    "imageProviders": "Image Providers",
    "videoProviders": "Создание видео",
    "embeddingRerankProviders": "Вложения и переранжирование",
    "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": "Поиск поставщиков...",
    "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": "Поставщики бесплатного уровня",
    "freeTierLabel": "Доступен бесплатный уровень",
    "freeTierProvidersDesc": "Поставщики с бесплатными уровнями — некоторым требуется регистрация ключа API, другим вообще не нужны учетные данные.",
    "providerSummaryAll": "Итого",
    "ideProviders": "IDE-провайдеры",
    "ideProvidersDesc": "Редакторы со встроенной подпиской AI. Используйте страницу поставщика для импорта учетных данных непосредственно из цепочки ключей IDE.",
    "noIdeProviders": "Ни один поставщик IDE не соответствует текущим фильтрам.",
    "providerDetailFastTierTooltip": "Применить уровень Codex Fast ко всем соединениям Codex по умолчанию.",
    "providerDetailFastDefaultLabel": "Быстрый дефолт",
    "providerDetailBrowserManualConnect": "Браузерное/ручное подключение",
    "providerDetailAuthUrl": "URL-адрес аутентификации",
    "providerDetailCallbackUrl": "URL обратного вызова",
    "providerDetailValidClaudeCredentialsFile": "Действительный файл учетных данных Claude",
    "providerDetailPathAutoDetectedAllOs": "Путь определяется автоматически для каждой ОС (Linux/Mac/Windows).",
    "providerDetailMyClaudeAccountPlaceholder": "Мой аккаунт Клода",
    "providerDetailPathAutoDetected": "Путь определяется автоматически для каждой ОС (Linux/Mac).",
    "webFetch": "Веб-загрузка",
    "webFetchTooltip": "Поставщики, которые извлекают контент из веб-URL (HTML → Markdown, скрейпинг, скриншот)",
    "webFetchProvidersHeading": "Поставщики Веб-Запросов",
    "compatibleProvidersDesc": "Совместимые с OpenAI и Anthropic конечные точки, которые вы хостите или настраиваете. Укажите любой SDK OpenAI на ваш собственный URL и направляйте запросы сюда.",
    "oauthProvidersDesc": "Поставщики, аутентифицированные через OAuth — войдите один раз, и OmniRoute автоматически управляет ротацией токенов.",
    "webCookieProvidersDesc": "Эти провайдеры используют веб-сессии браузера, файлы cookie или веб-токены вместо ключей API. Откройте поставщика, чтобы добавить необходимые учетные данные сеанса.",
    "apiKeyProvidersDesc": "Стандартные поставщики API-ключей. Добавьте свой ключ один раз, и OmniRoute будет маршрутизировать, повторять попытки и ограничивать скорость от вашего имени.",
    "noAuthProvidersDesc": "Открытые конечные точки, которые не требуют учетных данных — готовы к использованию сразу без регистрации.",
    "upstreamProxyProvidersDesc": "Направьте исходящий трафик через прокси-сервер перед тем, как он достигнет провайдера. Полезно для корпоративных сетей или инспекции трафика.",
    "webFetchProvidersDesc": "Провайдеры, которые извлекают и извлекают контент из веб-URL. Используйте их для обоснования подсказок с помощью актуальных веб-данных.",
    "aggregatorsGatewaysDesc": "Мульти-провайдерные агрегаторы и AI-шлюзы, которые предоставляют единый унифицированный API для десятков базовых моделей.",
    "enterpriseCloudDesc": "Модели корпоративного уровня и облачного хостинга с улучшенными SLA, сертификатами соответствия и выделенной мощностью.",
    "cloudAgentProvidersDesc": "Автономные облачные агенты, которые выполняют длительные задачи с утверждением плана и отслеживанием статуса в реальном времени.",
    "localProvidersDesc": "Модели, размещенные на собственном оборудовании. Никакие данные не покидают вашу инфраструктуру.",
    "searchProvidersDesc": "Поставщики веб- и документного поиска. Присоедините их к вызовам LLM для генерации с дополнением извлечения.",
    "audioProvidersDesc": "Поставщики синтеза речи и распознавания речи для голосового ввода/вывода и аудиотранскрипционных потоков.",
    "embeddingRerankProvidersDesc": "Поставщики векторного встраивания и повторной оценки для семантического поиска, RAG-пайплайнов и оценки схожести.",
    "imageProvidersDesc": "Поставщики генерации изображений и визуализации — создавайте изображения из текста или анализируйте существующие.",
    "videoProvidersDesc": "Поставщики генерации видео. Создавайте короткие видеоклипы из текстовых подсказок или изображений.",
    "onboardingWizard": "Мастер регистрации поставщика",
    "onboardingWizardShort": "Мастер регистрации",
    "onboardingWizardDescription": "Подключите поставщиков API-ключей, пользовательских совместимых и OAuth с проверкой, сохранением и немедленной проверкой соединения.",
    "onboardingStepType": "Тип",
    "onboardingStepProvider": "Поставщик",
    "onboardingStepCredentials": "Полномочия",
    "onboardingStepResult": "Результат",
    "onboardingTypeApiKeyTitle": "Поставщик API-ключей",
    "onboardingTypeApiKeyText": "Используйте встроенных поставщиков, таких как OpenAI, Anthropic, Gemini, Groq, Azure и других.",
    "onboardingTypeCustomTitle": "Пользовательский совместимый поставщик",
    "onboardingTypeCustomText": "Создайте конечную точку, совместимую с OpenAI, Anthropic или Claude Code, и добавьте ее ключ.",
    "onboardingTypeOAuthTitle": "Поставщик OAuth",
    "onboardingTypeOAuthText": "Повторно используйте существующие потоки OAuth, кода устройства или локальные импорты для поставщиков кодирования.",
    "onboardingChooseOAuthProvider": "Выберите провайдера OAuth",
    "onboardingChooseApiKeyProvider": "Выберите поставщика API-ключей",
    "onboardingChooseProviderDescription": "Выберите поставщика, после чего мастер проведет вас через учетные данные и тестирование.",
    "onboardingChangeType": "Тип изменения",
    "onboardingChangeProvider": "Сменить поставщика",
    "onboardingSearchProviders": "Поиск поставщиков…",
    "onboardingApiKeyOptional": "Ключ API необязательно",
    "onboardingProviderConnected": "Провайдер подключен",
    "onboardingProviderSavedWithWarnings": "Провайдер сохранен с предупреждениями",
    "onboardingProviderFinished": "Регистрация поставщика завершена",
    "onboardingYourProviderConnection": "Соединение с вашим провайдером",
    "onboardingTestPassed": "Тест пройден",
    "onboardingTestFailed": "Тест не пройден",
    "onboardingOpenProviderDetails": "Открыть информацию о провайдере",
    "onboardingTryInPlayground": "Попробуйте на детской площадке",
    "onboardingDefaultConnectionName": "{provider} Первичный",
    "onboardingTestingConnection": "Проверка подключения к провайдеру…",
    "onboardingValidatingCredentials": "Проверка учетных данных…",
    "onboardingSavingConnection": "Сохранение подключения к провайдеру…",
    "onboardingProviderFailed": "Регистрация поставщика не удалась",
    "onboardingCreatingCompatibleProvider": "Создание совместимого поставщика…",
    "onboardingSavingCompatibleConnection": "Сохранение подключения к совместимому провайдеру…",
    "onboardingCustomProviderFallbackName": "Пользовательский поставщик",
    "onboardingCustomProviderFailed": "Не удалось подключиться к индивидуальному поставщику",
    "onboardingLoadingOAuthConnection": "Загрузка соединения OAuth…",
    "onboardingOAuthNoConnectionFound": "OAuth завершен, но соединение с провайдером не обнаружено.",
    "onboardingOAuthFailed": "Регистрация OAuth не удалась",
    "onboardingAddProvider": "Добавьте {provider}",
    "onboardingConnectionName": "Имя соединения",
    "onboardingApiKeyOptionalLabel": "Ключ API (необязательно)",
    "onboardingBaseUrlOverride": "Переопределение базового URL-адреса",
    "onboardingBaseUrlOverrideHint": "Необязательно. Хранится какProviderSpecificData.baseUrl.",
    "onboardingRegion": "Регион",
    "onboardingSearchCx": "Поиск CX/идентификатор системы",
    "onboardingProviderSpecificIdPlaceholder": "Необязательный идентификатор поставщика",
    "onboardingCustomUserAgent": "Пользовательский агент пользователя",
    "onboardingWorking": "Работаю…",
    "onboardingValidateSaveTest": "Подтвердите, сохраните и протестируйте",
    "onboardingBack": "Назад",
    "onboardingCreateCustomCompatibleProvider": "Создать собственный совместимый поставщик",
    "onboardingCreateCustomCompatibleDescription": "Мастер сначала создает узел провайдера, затем сохраняет и проверяет его соединение с ключом API.",
    "onboardingProtocol": "Протокол",
    "onboardingOpenAiCompatible": "OpenAI-совместимый",
    "onboardingAnthropicCompatible": "Антропно-совместимый",
    "onboardingClaudeCodeCompatible": "Совместимость с кодом Клода",
    "onboardingProviderPrefix": "Префикс провайдера",
    "onboardingProviderPrefixHint": "Используется для создания идентификатора управляемого поставщика.",
    "onboardingChatPath": "Путь к чату",
    "onboardingModelsPath": "Путь моделей",
    "onboardingCreateSaveTest": "Создавайте, сохраняйте и тестируйте",
    "onboardingConnectProvider": "Подключите {provider}",
    "onboardingOAuthFlowDescription": "OmniRoute откроет существующий поток OAuth для этого провайдера. После входа в систему мастер перезагружает сохраненное соединение и запускает тот же тест соединения, что и на странице провайдера.",
    "onboardingStartOAuthFlow": "Запустить поток OAuth",
    "passthroughModelsDescription": "{provider} принимает собственные идентификаторы моделей поставщика. Импортируйте из /models или добавляйте собственные идентификаторы для маршрутизации.",
    "bedrockModelsDescription": "Модели Amazon Bedrock охватываются регионом AWS. Импортируйте из /models или добавьте идентификаторы моделей Bedrock, включенные в выбранном регионе.",
    "bedrockModelPlaceholder": "антропный.клод-сонет-4-6",
    "addProviderSessionCookieTitle": "Добавьте файл cookie сеанса {provider}.",
    "addProviderWebTokenTitle": "Добавьте веб-токен {provider}",
    "addProviderConnectionTitle": "Добавить соединение {provider}",
    "webTokenCredentialLabel": "Токен веб-сессии",
    "webNoAuthCredentialLabel": "Никаких учетных данных не требуется",
    "webCookieCredentialHint": "Требуемый файл cookie: {credential}. Вставьте значение заголовка cookie из вашего собственного веб-сеанса {provider}, вошедшего в систему. Не включайте префикс Cookie:.",
    "webTokenCredentialHint": "Учетные данные: {credential}. Вставьте значение токена из вашего собственного веб-сеанса {provider}, вошедшего в систему, или из экспорта HAR DevTools, если поставщик поддерживает это.",
    "webCookieEditHint": "Оставьте пустым, чтобы сохранить файл cookie текущего сеанса. Требуемый файл cookie: {credential}.",
    "webTokenEditHint": "Оставьте пустым, чтобы сохранить текущий токен веб-сеанса. Учетные данные: {credential}.",
    "webSessionGuideTitle": "Как получить учетные данные сеанса",
    "webSessionGuideIntro": "{provider} использует веб-сессию браузера вместо ключа API.",
    "webCookieRequiredCredential": "Требуемый файл cookie: {credential}",
    "webTokenRequiredCredential": "Требуемый токен: {credential}",
    "webSessionGuideStep1": "Войдите в {provider} в своем браузере.",
    "webSessionGuideStep2": "Откройте инструменты разработчика браузера и проверьте запрос, сделанный веб-приложением.",
    "webSessionGuideStep3": "Скопируйте необходимые учетные данные из собственного домена провайдера. Для файлов cookie скопируйте только значение заголовка Cookie и опустите Cookie:.",
    "webSessionGuideStep4": "Вставьте его сюда и проверьте соединение. Если он перестанет работать, войдите в систему еще раз и замените его новым значением.",
    "webSessionSecurityHint": "Относитесь к нему как к паролю: он может получить доступ к вашей учетной записи, пока он не истечет или не будет отозван.",
    "webNoAuthGuideTitle": "Никаких учетных данных не требуется",
    "webNoAuthGuideBody": "{provider} не требует ключа API или файла cookie. Сохраните соединение, чтобы использовать его бесплатную конечную веб-точку.",
    "webSessionCredentialValidationFailed": "Проверка учетных данных сеанса не удалась. Войдите еще раз, скопируйте новые учетные данные и повторите попытку.",
    "checkCookie": "Проверить куки",
    "checkWebToken": "Проверить токен",
    "huggingchatLabel": "HuggingChat (Бесплатно)",
    "huggingchatDesc": "Бесплатный LLM чат через huggingface.co/chat",
    "phindLabel": "Phind (Бесплатно)",
    "phindDesc": "Бесплатный AI-чат для разработчиков",
    "poeWebLabel": "Poe Web",
    "poeWebDesc": "Многофункциональный чат через poe.com",
    "veniceWebLabel": "Венеция Веб",
    "veniceWebDesc": "Чат ИИ с акцентом на конфиденциальность",
    "v0VercelWebLabel": "v0 Vercel Web",
    "v0VercelWebDesc": "Генерация кода ИИ через v0.dev",
    "kimiWebLabel": "Kimi Web",
    "kimiWebDesc": "Китайский рынок AI чата через kimi.moonshot.cn",
    "doubaoWebLabel": "Doubao Web",
    "doubaoWebDesc": "Чат AI ByteDance через doubao.com"
  },
  "settings": {
    "title": "Настройки",
    "general": "Общий",
    "security": "Безопасность",
    "appearance": "Внешний вид",
    "routing": "Маршрутизация",
    "cache": "Кэш",
    "resilience": "Устойчивость",
    "routingSettingsIntro": "Управляет тем, как ваши запросы маршрутизируются, преобразуются и отправляются поставщикам ИИ.",
    "routingOpDropParagraphContainsLabel": "Удалить абзац (содержит)",
    "routingOpDropParagraphStartsWithLabel": "Удалить абзац (начинается с)",
    "routingOpReplaceTextLabel": "Заменить текст",
    "routingOpReplaceRegexLabel": "Заменить regex",
    "routingOpDropBlockContainsLabel": "Удалить блок (содержит)",
    "routingOpPrependSystemBlockLabel": "Предварить системный блок",
    "routingOpAppendSystemBlockLabel": "Добавить системный блок",
    "routingOpInjectBillingHeaderLabel": "Вставить заголовок счета",
    "routingOpObfuscateWordsLabel": "Обфусцировать слова (ZWJ)",
    "routingOpDropParagraphContainsDesc": "Удаляет любой абзац (текстовый блок, разделенный пустыми строками) внутри системного запроса, текст которого содержит ЛЮБОЙ из перечисленных подстрок. Используйте для удаления отпечатков третьих сторон, таких как 'github.com/anomalyco/opencode' или 'docs.openwebui.com', которые отмечает классификатор Anthropic.",
    "routingOpDropParagraphStartsWithDesc": "Удаляет любой абзац, который НАЧИНАЕТСЯ с одного из перечисленных префиксов. Используйте для строк идентификации, таких как 'Вы — OpenCode' или 'Вы — Open WebUI', которые объявляют вызывающий клиент.",
    "routingOpReplaceTextDesc": "Заменяет буквальную подстроку на другую буквальную подстроку. Используйте для известных триггерных фраз — например, перепишите 'Here is some useful information about the environment you are running in:' на 'Environment context you are running in:' (эмпирически подтвержденная триггерная фраза).",
    "routingOpReplaceRegexDesc": "Заменяет текст, соответствующий регулярному выражению. Используйте, когда вам нужны шаблоны (символьные классы, необязательные пробелы, якоря) вместо буквальных подстрок. Неправильный шаблон будет пойман во время выполнения, когда операция запустится.",
    "routingOpDropBlockContainsDesc": "Удаляет ЦЕЛЫЕ системные блоки (не только абзацы), текст которых содержит любые из перечисленных подстрок. Используйте, когда целый блок содержит отпечатки и вы хотите его удалить — например, описание внедренного MCP-сервера.",
    "routingOpPrependSystemBlockDesc": "Вставляет новый текстовый блок в НАЧАЛО массива системы. Используйте для добавления идентификатора SDK 'Вы агент Claude, созданный на основе SDK агента Claude от Anthropic.', который ожидает классификатор Anthropic.",
    "routingOpAppendSystemBlockDesc": "Вставляет новый текстовый блок В КОНЕЦ массива системы. Используйте для косметических добавлений, которые не должны находиться на позиции [0].",
    "routingOpInjectBillingHeaderDesc": "Добавляет специальный текстовый блок 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;', который проверяет классификатор Anthropic. Требуется для конечных точек моста CC; для нативного провайдера claude OmniRoute уже вставляет свою собственную строку биллинга, поэтому эта операция обычно избыточна там.",
    "routingOpObfuscateWordsDesc": "Вставляет символ нулевой ширины после первой буквы каждого указанного слова, так что 'opencode' становится 'o‍pencode'. Читается идентично для людей, но обходит совпадения слов классификатора. Нацеливается на системные блоки, сообщения пользователей/ассистентов и описания инструментов.",
    "routingNeedlesHint": "Список подстрок. Параграф соответствует, если он содержит ХОТЯ БЫ одну из них. Добавьте по одной строке через 'Добавить запись'.",
    "routingPrefixesHint": "Список строк. Параграф соответствует, если он начинается с любой из них (ведущий пробел удаляется перед сравнением).",
    "routingCaseSensitiveHint": "Когда ВКЛ, 'OpenCode' и 'opencode' - это разные строки. Когда ВЫКЛ (по умолчанию), сравнение игнорирует регистр.",
    "routingMatchLiteralHint": "Точный буквальный подстрока для поиска. Синтаксис regex не используется — специальные символы, такие как . * ?, рассматриваются как сами себя.",
    "routingReplacementTextHint": "Строка замены. Оставьте пустым, чтобы удалить совпадение. Вывод сохраняет окружающий текст.",
    "routingAllOccurrencesHint": "Когда ВКЛ (по умолчанию), каждый экземпляр заменяется. Когда ВЫКЛ, заменяется только первое совпадение.",
    "routingPatternHint": "Исходный regex JavaScript. Не оборачивайте в слэши — просто 'foo(.*)bar'. Сервер отклоняет шаблоны, которые не компилируются.",
    "routingRegexFlagsHint": "Флаги регулярных выражений JavaScript (g = все совпадения, i = нечувствительность к регистру, s = точка совпадает с новой строкой, m = многострочный). По умолчанию 'g'.",
    "routingBlockTextHint": "Полный текст нового системного блока. Используйте буквальную строку; системный блок хранит только текст.",
    "routingIdempotencyKeyHint": "Необязательно. Если установлено, операция пропускается, когда блок, текст которого начинается с этого ключа, уже присутствует. Предотвращает двойное добавление при повторных попытках.",
    "routingBillingEntrypointHint": "Значение вставлено как 'cc_entrypoint='. Anthropic принимает 'sdk-cli' (Agent SDK), 'cli' (Claude Code CLI) или другие задокументированные значения.",
    "routingBillingVersionFormatHint": "Как вычисляется 3-символьный хэш сборки после cc_version=? 'ex-machina' = sha256 от CCH_SALT+символы из первого сообщения пользователя+версия (по сообщению). 'omniroute-daystamp' = sha256 от ГГГГ-ММ-ДД+версия (стабильная за день).",
    "routingBillingCchAlgoHint": "Как вычисляется токен 5-символьного cch= . 'sha256-first-user' = sha256 текста первого сообщения пользователя. 'xxhash64-body' = подпись на уровне тела заполняется позже. 'static-zero' = буквальный заполнитель '00000'.",
    "routingObfuscateWordsHint": "Приведите слова к нижнему регистру для обфускации. Вставка ZWJ применяется без учета регистра, поэтому 'opencode' также соответствует 'OpenCode' и 'OPENCODE'.",
    "routingObfuscateTargetsHint": "Какие области тела сканировать для слов: системные блоки, сообщения пользователя/ассистента и/или описания инструментов.",
    "routingObfuscateTargetsLabel": "Цели",
    "routingSummarizeDropParagraphContains": "удалить абзацы, содержащие: {items}",
    "routingSummarizeDropParagraphStartsWith": "удалить абзацы, начинающиеся с: {items}",
    "routingSummarizeReplaceText": "заменить \"{match}\" → \"{replacement}\"",
    "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"",
    "routingSummarizeDropBlockContains": "удалить блоки, содержащие: {items}",
    "routingSummarizePrependSystemBlock": "добавить блок: \"{text}\"",
    "routingSummarizeAppendSystemBlock": "добавить блок: \"{text}\"",
    "routingSummarizeInjectBillingHeader": "внедрить заголовок выставления счетов (точка входа={entrypoint}, версия={versionFormat}, cch={cchAlgo})",
    "routingSummarizeObfuscateWords": "обфусцировать {count} слово(а) с помощью ZWJ в {targets}",
    "routingDefaultAutoVariantLKGP": "Последний Известный Рабочий Провайдер",
    "routingDefaultAutoVariantLKGPDesc": "Последний Известный Рабочий Провайдер",
    "routingDefaultAutoVariantCoding": "Качество прежде всего для кода",
    "routingDefaultAutoVariantCodingDesc": "Качество прежде всего для кода",
    "routingDefaultAutoVariantFast": "Маршрутизация с низкой задержкой",
    "routingDefaultAutoVariantFastDesc": "Маршрутизация с низкой задержкой",
    "routingDefaultAutoVariantCheap": "Оптимизированный по стоимости",
    "routingDefaultAutoVariantCheapDesc": "Оптимизировано по стоимости",
    "routingDefaultAutoVariantOffline": "Высокая доступность",
    "routingDefaultAutoVariantOfflineDesc": "Высокая доступность",
    "routingDefaultAutoVariantSmart": "Лучшее открытие (10% исследовать)",
    "routingDefaultAutoVariantSmartDesc": "Лучшее открытие (10% исследовать)",
    "routingOpSummaryCount": "{count, plural, =0 {нет операций} one {# операция} other {# операций}}",
    "routingOpEnabled": "включено",
    "routingOpDisabled": "отключено",
    "routingOpStatusSeparator": "·",
    "resilienceSettingsIntro": "Автоматическая повторная попытка, время восстановления и возврат в случае сбоя поставщиков.",
    "aiSettingsIntro": "Специальные настройки ИИ для расчета бюджета, поведения модели и сжатия.",
    "systemPrompt": "Системная подсказка",
    "thinkingBudget": "Думая о бюджете",
    "proxy": "Прокси",
    "httpProxy": "HTTP Proxy",
    "1proxy": "1proxy",
    "proxySubTabsAria": "Proxy sections",
    "requestBodyLimitTitle": "Request Body Limit",
    "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.",
    "requestBodyLimitInputLabel": "Request body limit in MB",
    "requestBodyLimitEmptyError": "Enter a limit in MB",
    "requestBodyLimitWholeNumberError": "Use a whole number",
    "requestBodyLimitMinimumError": "Minimum is {min} MB",
    "requestBodyLimitMaximumError": "Maximum is {max} MB",
    "requestBodyLimitLoadFailed": "Failed to load request limit settings",
    "requestBodyLimitSaveSuccess": "Request body limit saved",
    "requestBodyLimitSaveFailed": "Failed to save request body limit",
    "requestBodyLimitSaving": "Saving...",
    "requestBodyLimitSave": "Save",
    "requestBodyLimitCurrent": "Current: {value}",
    "mitmProxy": "МИТМ-прокси",
    "pricing": "Цены",
    "storage": "Хранение",
    "policies": "Политика",
    "ipFilter": "IP-фильтр",
    "comboDefaults": "Комбинированные значения по умолчанию",
    "fallbackChains": "Резервные цепочки",
    "changePassword": "Изменить пароль",
    "enablePassword": "Включить пароль",
    "darkMode": "Темный режим",
    "lightMode": "Светлый режим",
    "memoryTitle": "Память",
    "memoryDesc": "Постоянная кросс-сессионная память для диалогов",
    "memoryEnabled": "Включить память",
    "memoryEnabledDesc": "Когда включено, OmniRoute будет внедрять релевантный прошлый контекст.",
    "maxTokens": "Макс. токенов",
    "retentionDays": "Срок хранения",
    "recent": "Недавнее",
    "recentDesc": "Хронологическое окно",
    "semantic": "Семантическое",
    "semanticDesc": "Векторный поиск",
    "hybrid": "Гибридное",
    "hybridDesc": "Недавнее + семантическое",
    "skillsTitle": "Навыки",
    "skillsDesc": "Инструменты для моделей",
    "skillsEnabled": "Включить навыки",
    "skillsEnabledDesc": "Позволяет агентам вызывать функции.",
    "skillsComingSoon": "Маркетплейс навыков скоро появится.",
    "memorySkillsTitle": "Память и навыки",
    "memorySkillsDesc": "Постоянный контекст и возможности",
    "modelsDevTitle": "База моделей",
    "modelsDevDesc": "Автосинхронизация цен, возможностей и спецификаций из models.dev",
    "modelsDevEnabled": "Включить синхронизацию models.dev",
    "modelsDevEnabledDesc": "Получать цены, возможности и спецификации моделей из открытой базы models.dev",
    "modelsDevInterval": "Интервал синхронизации",
    "syncNow": "Синхронизировать сейчас",
    "syncing": "Синхронизация...",
    "lastSync": "Последняя синхронизация",
    "never": "Никогда",
    "justNow": "только что",
    "modelsDevStats": "Статистика синхронизации",
    "modelsDevStatsDesc": "Текущее покрытие данных models.dev",
    "providers": "Провайдеры",
    "modelsWithPricing": "Модели с ценами",
    "capabilities": "Возможности",
    "lastSyncCount": "Количество при последней синхронизации",
    "lastSyncFull": "Последняя полная синхронизация",
    "modelsDevInfo": "Как это работает",
    "modelsDevInfoDesc": "models.dev - это открытая база спецификаций AI-моделей, поддерживаемая командой SST/OpenCode. Она предоставляет цены, возможности, ограничения контекста и модальности для более чем 4 000 моделей от более чем 100 провайдеров.",
    "modelsDevInfoResolution": "Порядок выбора цены (сначала самый приоритетный):",
    "modelsDevInfoOrder": "Переопределение пользователя → models.dev → LiteLLM → Жёстко заданное значение по умолчанию",
    "systemTheme": "Системная тема",
    "debugToggle": "Включить режим отладки",
    "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.",
    "sidebarVisibilityToggle": "Показывать элементы боковой панели",
    "enableCache": "Включить кеш",
    "cacheTTL": "Срок жизни кэша",
    "maxCacheSize": "Максимальный размер кэша",
    "clearCache": "Очистить кэш",
    "cacheCleared": "Кэш успешно очищен",
    "clearCacheFailed": "Не удалось очистить кэш",
    "cacheHits": "Попадания в кэш",
    "cacheMisses": "Промахи в кэше",
    "hitRate": "Скорость попадания",
    "cacheEntries": "Записи кэша",
    "cacheSettings": "Настройки кэша",
    "semanticCache": "Семантический кэш",
    "maxEntries": "Макс. записей",
    "ttlMinutes": "TTL (минуты)",
    "promptCache": "Кэш промптов",
    "strategy": "Стратегия",
    "preserveClientCache": "Сохранять клиентский кэш",
    "enabled": "Включено",
    "loading": "Загрузка...",
    "saving": "Сохранение...",
    "save": "Сохранить",
    "circuitBreaker": "Автоматический выключатель",
    "retryPolicy": "Политика повтора",
    "maxRetries": "Макс. повторов",
    "retryDelay": "Задержка повтора",
    "timeoutMs": "Тайм-аут (мс)",
    "enableSystemPrompt": "Включить системную подсказку",
    "systemPromptText": "Текст системной подсказки",
    "autoDisableBannedAccounts": "Автоматически отключать заблокированные аккаунты",
    "autoDisableDescription": "Навсегда помечать соединения провайдера как отключённые, если они возвращают сигнал окончательной блокировки (например, HTTP 403 'verify your account'). Это убирает их из ротации комбо.",
    "autoDisableThreshold": "Порог блокировки",
    "autoDisableThresholdDesc": "Количество подряд идущих сигналов блокировки, необходимых перед постоянным отключением.",
    "resilienceStructureTitle": "Resilience Structure",
    "resilienceStructureDesc": "Эта страница только настраивает поведение. Состояние автоматического выключателя отображается на странице «Состояние». Повторные попытки для конкретной комбинации и управление слотами циклического перебора остаются в настройках комбинации.",
    "enableThinking": "Включить мышление",
    "maxThinkingTokens": "Максимальное количество жетонов мышления",
    "enableProxy": "Включить прокси",
    "proxyUrl": "URL-адрес прокси-сервера",
    "pricingRates": "Формат ценообразования",
    "currentPricing": "Текущий обзор цен",
    "loadingPricing": "Загрузка данных о ценах...",
    "noPricing": "Нет данных о ценах",
    "input": "Ввод",
    "output": "Выход",
    "cached": "Кэшированный",
    "reasoning": "Рассуждение",
    "cacheCreation": "Создание кэша",
    "customPricing": "Индивидуальные цены",
    "databaseSize": "Размер базы данных",
    "backupDb": "Резервное копирование базы данных",
    "restoreDb": "Восстановить базу данных",
    "exportData": "Экспортировать данные",
    "importData": "Импортировать данные",
    "clearData": "Очистить все данные",
    "clearDataConfirm": "Это приведет к безвозвратному удалению всех данных. Вы уверены?",
    "enableRequestLogs": "Включить журналы запросов",
    "logRetention": "Хранение журнала",
    "ipWhitelist": "Белый список IP-адресов",
    "ipBlacklist": "Черный список IP-адресов",
    "addIP": "Добавить IP",
    "savedSuccessfully": "Настройки успешно сохранены",
    "ai": "ИИ",
    "advanced": "Расширенный",
    "localMode": "Локальный режим — все данные хранятся на вашем компьютере.",
    "settingsSectionsAria": "Разделы настроек",
    "switchThemes": "Переключение между светлой и темной темами",
    "themeSelectionAria": "Выбор темы",
    "themeLight": "Свет",
    "themeDark": "Темный",
    "themeSystem": "Система",
    "endpointTunnelVisibility": "Видимость туннеля конечной точки",
    "endpointTunnelVisibilityDesc": "Скройте элементы управления туннелем на странице конечной точки, не меняя состояние туннеля.",
    "showCloudflareTunnel": "Быстрый туннель Cloudflare",
    "showCloudflareTunnelDesc": "Покажите элементы управления Cloudflare Quick Tunnel на странице конечной точки.",
    "showTailscaleFunnel": "Хвостовая воронка",
    "showTailscaleFunnelDesc": "Покажите элементы управления Tailscale Funnel на странице Endpoint.",
    "showNgrokTunnel": "Нгрок Туннель",
    "showNgrokTunnelDesc": "Покажите элементы управления туннелем ngrok на странице конечной точки.",
    "sidebarVisibility": "Скрывать элементы боковой панели",
    "sidebarVisibilityDesc": "Скрывайте любые элементы навигации боковой панели, чтобы уменьшить визуальный шум.",
    "sidebarVisibilityHint": "Любой раздел боковой панели скрывается автоматически, когда...",
    "hideHealthLogs": "Скрыть журналы проверки работоспособности",
    "hideHealthLogsDesc": "Если включено, подавлять сообщения [HealthCheck] в консоли сервера.",
    "themeAccent": "Цвет темы",
    "themeAccentDesc": "Выберите готовый цвет или создайте свою тему из одного цвета",
    "themeCreate": "Создать тему",
    "themeCustom": "Своя тема",
    "themeBlue": "Синий",
    "themeRed": "Красный",
    "themeGreen": "Зелёный",
    "themeViolet": "Фиолетовый",
    "themeOrange": "Оранжевый",
    "themeCyan": "Голубой",
    "whitelabeling": "Брендинг",
    "whitelabelingDesc": "Настройте название приложения и логотип",
    "appName": "Название приложения",
    "appNameDesc": "Отображаемое имя в боковой панели и вкладке браузера",
    "customLogo": "URL пользовательского логотипа",
    "customLogoDesc": "Ссылка на ваше изображение логотипа",
    "uploadLogo": "Загрузить логотип",
    "resetLogo": "Сбросить по умолчанию",
    "logoPreview": "Предпросмотр",
    "customFavicon": "Favicon браузера",
    "customFaviconDesc": "URL вашего favicon (показывается во вкладке браузера)",
    "uploadFavicon": "Загрузить favicon",
    "resetFavicon": "Сбросить favicon",
    "faviconPreview": "Предпросмотр favicon",
    "flushCache": "Очистить кэш",
    "flushing": "Очистка…",
    "size": "Размер",
    "hits": "Хиты",
    "evictions": "Выселения",
    "loadingCacheStats": "Загрузка статистики кеша…",
    "globalProxy": "Глобальный прокси",
    "globalProxyDesc": "Настройте глобальный исходящий прокси-сервер для всех вызовов API. Отдельные поставщики, комбинации и ключи могут переопределить это.",
    "noGlobalProxy": "Глобальный прокси не настроен",
    "globalLabel": "Глобальный",
    "configure": "Настроить",
    "globalSystemPrompt": "Глобальная системная подсказка",
    "saved": "Сохранено",
    "beforePromptLabel": "Перед Подсказкой",
    "beforePromptDesc": "Вставлено перед системными инструкциями агента/поставщика",
    "beforePromptPlaceholder": "Инструкции вставлены перед запросом агента/поставщика...",
    "afterPromptLabel": "После запроса",
    "afterPromptDesc": "Вставлено после инструкций системы агента/поставщика",
    "afterPromptPlaceholder": "Инструкции вставлены после запроса агента/поставщика...",
    "chars": "{count} символов",
    "thinkingBudgetTitle": "Думая о бюджете",
    "thinkingBudgetDesc": "Контролируйте использование токенов рассуждения ИИ во всех запросах",
    "passthrough": "Сквозное прохождение",
    "passthroughDesc": "Никаких изменений — клиент контролирует продуманный бюджет",
    "auto": "Авто",
    "autoDesc": "Удалите всю конфигурацию мышления — пусть решает провайдер",
    "custom": "Пользовательский",
    "customDesc": "Установите фиксированный бюджет токенов для всех запросов.",
    "adaptive": "Адаптивный",
    "adaptiveDesc": "Масштабируйте бюджет в зависимости от сложности запроса",
    "effortNone": "Нет (0 токенов)",
    "effortLow": "Низкий (1 тыс. токенов)",
    "effortMedium": "Средний (10 тыс. токенов)",
    "effortHigh": "Высокий (128 тыс. токенов)",
    "tokenBudget": "Бюджет токена",
    "tokens": "жетоны",
    "baseEffortLevel": "Базовый уровень усилий",
    "adaptiveHint": "Адаптивный режим масштабируется от этого базового уровня в зависимости от количества сообщений, использования инструмента и длины подсказки.",
    "requireLogin": "Требовать вход",
    "requireLoginDesc": "При включении приборная панель требует пароль. Когда ВЫКЛ, доступ без входа в систему.",
    "currentPassword": "Текущий пароль",
    "enterCurrentPassword": "Введите текущий пароль",
    "newPassword": "Новый пароль",
    "enterNewPassword": "Введите новый пароль",
    "confirmPassword": "Подтвердите новый пароль",
    "confirmPasswordPlaceholder": "Подтвердите новый пароль",
    "passwordsNoMatch": "Пароли не совпадают",
    "passwordUpdated": "Пароль успешно обновлен",
    "failedUpdatePassword": "Не удалось обновить пароль",
    "errorOccurred": "Произошла ошибка",
    "updatePassword": "Обновить пароль",
    "setPassword": "Установить пароль",
    "apiEndpointProtection": "Защита конечных точек API",
    "requireAuthModels": "Требовать ключ API для /models",
    "requireAuthModelsDesc": "Если включено, конечная точка /v1/models возвращает 404 для неаутентифицированных запросов. Предотвращает обнаружение модели неавторизованными пользователями.",
    "authModelHeading": "Модель активной авторизации",
    "authModelClient": "Конечным точкам клиентского API (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) требуется ключ API носителя.",
    "authModelManagement": "Конечные точки управления (/dashboard, /api/*) требуют сеанса информационной панели или учетных данных управления.",
    "authModelPublic": "Публичными являются только маршруты входа в систему, работоспособности и начальной загрузки.",
    "bruteForceProtection": "Защита от перебора входа в систему",
    "bruteForceProtectionDesc": "Регулирование и блокировка /api/auth/login после неоднократных сбоев с одного и того же IP-адреса.",
    "corsAllowedOrigins": "CORS разрешенные источники",
    "corsAllowedOriginsDesc": "Список браузеров, разделенных запятыми, которым разрешено вызывать этот сервер. Пустой список = нет доступа к CORS браузера (между серверами все еще работает). Используйте CORS_ALLOW_ALL=true env var только для разработки.",
    "blockedProviders": "Заблокированные провайдеры",
    "blockedProvidersDesc": "Скройте конкретных поставщиков из ответа /v1/models. Заблокированные поставщики не будут отображаться в списках моделей.",
    "providersBlocked": "Поставщик(и) {count} заблокирован в /models",
    "blockProviderTitle": "Блок {provider}",
    "unblockProviderTitle": "Разблокировать {provider}",
    "cliFingerprint": "Сопоставление отпечатка CLI",
    "cliFingerprintDesc": "Сопоставляйте нативные сигнатуры бинарников CLI при проксировании запросов. Переупорядочивает заголовки и поля тела так, чтобы они выглядели идентично официальным CLI-инструментам. IP вашего прокси сохраняется.",
    "cliFingerprintEnabled": "{count} провайдер(ов) с активным CLI-отпечатком",
    "enableFingerprintTitle": "Включить отпечаток для {provider}",
    "disableFingerprintTitle": "Отключить отпечаток для {provider}",
    "systemTransforms": "Конвейер преобразования системного блока",
    "systemTransformsDesc": "Упорядоченный для каждого поставщика конвейер преобразований, применяемый к телу запроса перед пересылкой. Поддерживает любой идентификатор провайдера.",
    "systemTransformsAddProvider": "Добавить провайдера",
    "systemTransformsAddProviderPlaceholder": "Выберите провайдера…",
    "systemTransformsAddProviderAllConfigured": "Все провайдеры уже настроены",
    "systemTransformsRemoveProvider": "Удалить провайдера",
    "systemTransformsNoProviders": "Поставщики не настроены. Добавьте поставщика, чтобы начать.",
    "systemTransformsOpMoveUp": "Вверх",
    "systemTransformsOpMoveDown": "Двигаться вниз",
    "systemTransformsOpDelete": "Удалить операцию",
    "routingStrategy": "Стратегия маршрутизации",
    "routingAdvancedGuideTitle": "Расширенное руководство по маршрутизации",
    "routingAdvancedGuideHint1": "Используйте «Fill First» для предсказуемого приоритета, Round Robin для обеспечения справедливости и P2C для устойчивости к задержкам.",
    "routingAdvancedGuideHint2": "Если поставщики различаются по качеству/стоимости, начните с варианта «Стоимость» для фоновой работы и «Наименее используемый» для сбалансированного износа.",
    "fillFirst": "Сначала заполните",
    "fillFirstDesc": "Используйте учетные записи в порядке приоритета",
    "roundRobin": "Круговая система",
    "roundRobinDesc": "Перебирать все аккаунты",
    "p2c": "P2C",
    "p2cDesc": "Выберите 2 случайных, используйте более здоровый",
    "random": "Случайный",
    "randomDesc": "Случайный аккаунт для каждого запроса",
    "leastUsed": "Наименее используемый",
    "leastUsedDesc": "Выберите наименее использованную учетную запись",
    "costOpt": "Опция стоимости",
    "costOptDesc": "Предпочитаю самый дешевый доступный аккаунт",
    "resetAware": "Запись с учетом сброса",
    "resetAwareDesc": "Предпочитайте учетные записи со здоровой оставшейся квотой и более близким к сбросу.",
    "strictRandom": "Строгий случайный",
    "strictRandomDesc": "Перемешивание колоды — каждый аккаунт используется один раз перед повторным перемешиванием",
    "stickyLimit": "Липкий лимит",
    "stickyLimitDesc": "Звонки на аккаунт до переключения",
    "modelAliases": "Псевдонимы моделей",
    "modelAliasesTitle": "Псевдонимы моделей",
    "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.",
    "addCustomAlias": "Добавить пользовательский псевдоним",
    "deprecatedModelId": "Устаревший ID модели",
    "newModelId": "Новый ID модели",
    "customAliases": "Пользовательские псевдонимы",
    "builtInAliases": "Встроенные псевдонимы",
    "backgroundDegradationTitle": "Деградация фоновых задач",
    "backgroundDegradationDesc": "Автоматически обнаруживает фоновые задачи (заголовки, резюме) и перенаправляет на более дешёвые модели",
    "enableDegradation": "Включить деградацию фоновых задач",
    "enableDegradationHint": "Когда включено, фоновые задачи, такие как генерация заголовков и резюмирование, автоматически перенаправляются на более дешёвые модели",
    "tasksDetected": "Обнаружено задач",
    "degradationMap": "Карта деградации моделей",
    "premiumModel": "Премиум-модель",
    "cheapModel": "Дешёвая модель",
    "detectionPatterns": "Шаблоны обнаружения",
    "newPattern": "напр. \"создать заголовок\"",
    "aliasPatternPlaceholder": "Клод-сонет-*",
    "aliasTargetPlaceholder": "Клод-сонет-4-20250514",
    "pattern": "Узор",
    "targetModel": "Целевая модель",
    "add": "+ Добавить",
    "session": "Сессия",
    "sessionDetailsAria": "Детали сеанса",
    "status": "Статус",
    "authenticated": "Аутентифицированный",
    "guest": "Гость",
    "loginTime": "Время входа в систему",
    "sessionAge": "Возраст сессии",
    "browser": "Браузер",
    "clearLocalData": "Очистить локальные данные",
    "logout": "Выход из системы",
    "clearLocalDataConfirm": "Удалить все локальные данные? Это сбросит ваши настройки.",
    "unknown": "Неизвестно",
    "systemActor": "система",
    "ipAccessControl": "IP-контроль доступа",
    "ipAccessControlDesc": "Блокировать или разрешать определенные IP-адреса",
    "ipModeDisabled": "Отключено",
    "ipModeBlacklist": "Черный список",
    "ipModeWhitelist": "Белый список",
    "ipModeWhitelistPriority": "Приоритет ВЛ",
    "addIpAddress": "Добавить IP-адрес",
    "ipAddressPlaceholder": "192.168.1.0/24 или 10.0.*.*",
    "block": "+ Блокировать",
    "allow": "+ Разрешить",
    "blocked": "Заблокировано ({count})",
    "allowed": "Разрешено ({count})",
    "temporaryBans": "Временные баны ({count})",
    "minLeft": "Осталось {min} м",
    "auditLog": "Журнал аудита",
    "searchAuditLogs": "Поиск в журналах аудита...",
    "failedLoadAuditLog": "Не удалось загрузить журнал аудита.",
    "noAuditEvents": "События аудита не найдены",
    "action": "Действие",
    "actor": "Актер",
    "details": "Подробности",
    "time": "Время",
    "fallbackChainsTitle": "Резервные цепочки",
    "fallbackChainsDesc": "Определить резервный порядок поставщика для каждой модели",
    "addChain": "+ Добавить цепочку",
    "modelName": "Название модели",
    "modelNamePlaceholder": "Клод-сонет-4-20250514",
    "providersCommaSeparated": "Поставщики (через запятую, в порядке приоритета)",
    "providersCommaSeparatedPlaceholder": "антропный, опенай, близнецы",
    "createChain": "Создать цепочку",
    "noFallbackChains": "Никаких резервных цепочек",
    "noFallbackChainsDesc": "Создайте цепочку, чтобы определить резервный порядок поставщика для модели.",
    "loadingFallbackChains": "Загрузка резервных цепочек...",
    "deleteChainConfirm": "Удалить резервную цепочку для \"{model}\"?",
    "chainCreated": "Цепочка создана для {model}",
    "chainDeleted": "Цепочка удалена для {model}.",
    "failedCreateChain": "Не удалось создать цепочку.",
    "failedDeleteChain": "Не удалось удалить цепочку.",
    "deleteChain": "Удалить цепочку",
    "fillModelAndProviders": "Пожалуйста, укажите название модели и поставщиков",
    "addAtLeastOneProvider": "Добавьте хотя бы одного провайдера",
    "comboDefaultsTitle": "Комбинированные значения по умолчанию",
    "comboDefaultsGuideTitle": "Как настроить комбо по умолчанию",
    "comboDefaultsGuideHint1": "Сохраняйте низкий уровень повторных попыток в потоках с малой задержкой; увеличивайте таймаут только для задач длинной генерации.",
    "comboDefaultsGuideHint2": "Используйте переопределения поставщика, если одному поставщику требуется другое поведение по тайм-ауту/повторной попытке, чем глобальные значения по умолчанию.",
    "globalComboConfig": "Глобальная комбинированная конфигурация",
    "defaultStrategy": "Стратегия по умолчанию",
    "defaultStrategyDesc": "Применяется к новым комбинациям без явной стратегии.",
    "comboStrategyAria": "Комбо-стратегия",
    "priority": "Приоритет",
    "weighted": "Взвешенный",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Hands off context between providers with automatic summarization",
    "maxRetriesLabel": "Макс. повторов",
    "retryDelayLabel": "Задержка повтора (мс)",
    "timeoutLabel": "Тайм-аут (мс)",
    "healthCheck": "Проверка здоровья",
    "healthCheckDesc": "Предварительная проверка доступности провайдера",
    "trackMetrics": "Отслеживание показателей",
    "trackMetricsDesc": "Запись показателей для каждого комбо-запроса",
    "providerOverrides": "Переопределения поставщика",
    "providerOverridesDesc": "Переопределить тайм-аут и повторные попытки для каждого поставщика. Настройки поставщика переопределяют глобальные настройки по умолчанию.",
    "providerMaxRetriesAria": "{provider} максимальное количество повторов",
    "providerTimeoutAria": "{provider} таймаут мс",
    "removeProviderOverrideAria": "Удалить переопределение {provider}",
    "newProviderNamePlaceholder": "например гугл, опенай...",
    "newProviderNameAria": "Новое имя провайдера",
    "retries": "повторные попытки",
    "ms": "мс",
    "saveComboDefaults": "Сохранить настройки комбинации по умолчанию",
    "maxNestingDepth": "Максимальная глубина вложения",
    "concurrencyPerModel": "Параллелизм/модель",
    "queueTimeout": "Тайм-аут очереди (мс)",
    "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": "Профили поставщиков",
    "providerProfilesDesc": "Отдельные настройки устойчивости для поставщиков OAuth (на основе сеанса) и API-ключей (измеренного). Поставщики OAuth имеют более строгие пороговые значения из-за более низких ограничений скорости.",
    "oauthProviders": "Поставщики OAuth",
    "apiKeyProviders": "Поставщики ключей API",
    "transientCooldown": "Временное восстановление",
    "rateLimitCooldown": "Время восстановления лимита скорости",
    "maxBackoffLevel": "Максимальный уровень отсрочки",
    "cbThreshold": "Порог CB",
    "cbResetTime": "Время сброса выключателя",
    "rateLimiting": "Ограничение скорости",
    "rateLimitingDesc": "Поставщики ключей API автоматически ограничиваются по скорости безопасными значениями по умолчанию. Ограничения извлекаются из заголовков ответов и со временем адаптируются.",
    "defaultSafetyNet": "Сеть безопасности по умолчанию",
    "rpm": "об/мин",
    "minGap": "Мин. разрыв",
    "maxConcurrent": "Макс. одновременность",
    "activeLimiters": "Активные лимитеры",
    "noActiveLimiters": "Активных ограничителей скорости пока нет.",
    "reservoir": "водохранилище",
    "running": "Бег",
    "queued": "В очереди",
    "circuitBreakers": "Автоматические выключатели",
    "breakerStateClosed": "Закрыто",
    "breakerStateOpen": "Открыть",
    "breakerStateHalfOpen": "Полуоткрытый",
    "tripped": "{count} сработал",
    "healthy": "{count} здоров",
    "resetAll": "Сбросить все",
    "noCircuitBreakers": "Автоматические выключатели пока не активны. Они создаются автоматически, когда запросы проходят через комбинированный конвейер.",
    "failures": "{count} сбой(и)",
    "policiesLocked": "Политики и заблокированные идентификаторы",
    "allOperational": "Все системы в рабочем состоянии — никаких блокировок или срабатываний выключателей.",
    "loadingPolicies": "Загрузка политик...",
    "lockedIdentifiers": "Заблокированные идентификаторы",
    "unlockedIdentifier": "Разблокировано: {identifier}",
    "sinceDate": "с {date}",
    "forceUnlock": "Принудительная разблокировка",
    "unlocking": "Разблокировка...",
    "failedUnlock": "Не удалось разблокировать",
    "failedLoadWithStatus": "Не удалось загрузить: {status}.",
    "failedLoadResilience": "Не удалось загрузить статус устойчивости.",
    "saveFailed": "Сохранить не удалось",
    "resetFailed": "Сбросить не удалось",
    "loadingResilience": "Загрузка состояния устойчивости...",
    "retry": "Повторить попытку",
    "systemStorage": "Система и хранилище",
    "allDataLocal": "Все данные хранятся локально на вашем компьютере.",
    "databasePath": "Путь к базе данных",
    "exportDatabase": "Экспорт базы данных",
    "exportAll": "Экспортировать все (.tar.gz)",
    "importDatabase": "Импортировать базу данных",
    "confirmDbImport": "Подтвердить импорт базы данных",
    "confirmDbImportDesc": "Это заменит все текущие данные содержимым из {file}. Резервная копия будет создана автоматически перед импортом.",
    "yesImport": "Да, импорт",
    "lastBackup": "Последняя резервная копия",
    "noBackupYet": "Резервной копии пока нет",
    "backupNow": "Резервное копирование сейчас",
    "backupRestore": "Резервное копирование и восстановление",
    "viewBackups": "Просмотр резервных копий",
    "hide": "Скрыть",
    "backupRetentionDesc": "Снимки базы данных создаются автоматически перед восстановлением и каждые 15 минут при изменении данных. Хранение: 24 часа в час + 30 ежедневных резервных копий с умной ротацией.",
    "loadingBackups": "Загрузка резервных копий...",
    "noBackupsYet": "Резервных копий пока нет. Резервные копии будут создаваться автоматически при изменении данных.",
    "backupsAvailable": "Доступно {count} резервных копий",
    "refresh": "Обновить",
    "confirm": "Подтвердить?",
    "yes": "Да",
    "no": "Нет",
    "restore": "Восстановить",
    "invalidFileType": "Неверный тип файла. Принимаются только файлы .sqlite.",
    "exportFailed": "Экспорт не удался",
    "exportFailedWithError": "Не удалось экспортировать: {error}.",
    "fullExportFailedWithError": "Не удалось выполнить полный экспорт: {error}.",
    "backupCreated": "Резервная копия создана: {file}",
    "restoreSuccess": "Восстановлено! {connections} соединений, {nodes} узлов, {combos} комбинаций, {apiKeys} ключей API.",
    "importSuccess": "База данных импортирована! {connections} соединений, {nodes} узлов, {combos} комбинаций, {apiKeys} ключей API.",
    "minutesAgo": "{count} мин назад",
    "hoursAgo": "{count}ч назад",
    "daysAgo": "{count}дн назад",
    "backupReasonManual": "руководство",
    "backupReasonPreRestore": "предварительное восстановление",
    "connectionsCount": "{count, plural, one {# соединение} few {# соединения} many {# соединений} other {# соединения}}",
    "noChangesSinceBackup": "Никаких изменений с момента последнего резервного копирования",
    "backupFailed": "Резервное копирование не выполнено",
    "restoreFailed": "Восстановление не удалось",
    "importFailed": "Импорт не удался",
    "errorDuringRestore": "Произошла ошибка во время восстановления",
    "errorDuringImport": "Во время импорта произошла ошибка",
    "modelPricing": "Цены на модели",
    "modelPricingDesc": "Настройка ставок стоимости для каждой модели • Все ставки указаны в токенах $/1 млн.",
    "registry": "Реестр",
    "priced": "Цена",
    "searchProvidersModels": "Поиск поставщиков или моделей...",
    "showAll": "Показать все",
    "noProvidersMatch": "Ни один поставщик не соответствует вашему запросу.",
    "howPricingWorks": "Как работает ценообразование",
    "cacheWrite": "Запись в кэш",
    "unsaved": "несохраненный",
    "resetDefaults": "Сбросить настройки по умолчанию",
    "saveProvider": "Сохранить поставщика",
    "model": "Модель",
    "models": "модели",
    "moreProviders": "{count} больше поставщиков",
    "withPricing": "с настроенной ценой",
    "policiesCircuitBreakers": "Политики и автоматические выключатели",
    "activeIssuesDetected": "Обнаружены активные проблемы",
    "off": "Выкл.",
    "resetPricingConfirm": "Сбросить все цены для {provider} до значений по умолчанию?",
    "pricingDescInput": "Входные данные: токены, отправленные в модель.",
    "pricingDescOutput": "Результат: сгенерированы токены",
    "pricingDescCached": "Кэшировано: повторно используемый ввод (~ 50 % от частоты ввода)",
    "pricingDescReasoning": "Рассуждение: жетоны мышления (возврат к выходу)",
    "pricingDescCacheWrite": "Запись в кэш: создание записей в кэше (возврат к вводу)",
    "pricingDescFormula": "Стоимость = (вход × входная_ставка) + (выход × выходная_ставка) + (кэширование × кэшированная_ставка) за миллион токенов.",
    "pricingSettingsTitle": "Настройки цен",
    "totalModels": "Всего моделей",
    "active": "Активный",
    "costCalculation": "Расчет стоимости",
    "costCalculationDesc": "Затраты рассчитываются на основе использования токенов и ценовых ставок, настроенных для каждой модели.",
    "pricingFormat": "Формат цен",
    "pricingFormatDesc": "Все ставки указаны в токенах $/1M (долларов за миллион токенов).",
    "tokenTypes": "Типы токенов",
    "inputTokenDesc": "Стандартные токены подсказок",
    "outputTokenDesc": "Жетоны завершения/ответа",
    "cachedTokenDesc": "Кэшированные входные токены (обычно 50 % от скорости ввода)",
    "reasoningTokenDesc": "Специальные жетоны рассуждения/мышления (возврат к скорости вывода)",
    "cacheCreationTokenDesc": "Токены, используемые для создания записей в кэше (возврат к скорости ввода)",
    "customPricingNote": "Вы можете переопределить цены по умолчанию для определенных моделей. Пользовательские переопределения имеют приоритет над ценами, определяемыми автоматически.",
    "editPricing": "Изменить цену",
    "viewFullDetails": "Посмотреть полную информацию",
    "themeCoral": "Коралл",
    "adaptiveVolumeRouting": "Адаптивная маршрутизация по объёму",
    "adaptiveVolumeRoutingDesc": "Динамически масштабируйте соединения на основе объёма нагрузки и давления пропускной способности.",
    "lkgpToggleTitle": "Последний известный хороший провайдер (LKGP)",
    "lkgpToggleDesc": "Когда включено, маршрутизатор запоминает, какой провайдер последним отдал успешный ответ, и сначала пытается использовать его в следующих запросах.",
    "clearLkgpCache": "Очистить кэш LKGP",
    "lkgpCacheCleared": "Кэш LKGP успешно очищен",
    "lkgpCacheClearFailed": "Не удалось очистить кэш LKGP",
    "days": "Дни",
    "lkgp": "Режим LKGP",
    "lkgpDesc": "Последний известный хороший провайдер (предсказуемая устойчивость)",
    "maintenance": "Обслуживание",
    "purgeExpiredLogs": "Удалить просроченные журналы",
    "purgeLogsFailed": "Не удалось удалить журналы",
    "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": "Не удалось очистить цену: {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": "Не удалось сбросить цену: {reason}.",
    "tab": "Tab",
    "pricingSavedProvider": "Цены сохранены для {provider}.",
    "pricingSyncFailed": "Pricing Sync Failed",
    "pricingSaveFailedWithReason": "Не удалось сохранить цену: {reason}.",
    "pricingResetProvider": "Сброс цен для {provider}",
    "nextSync": "Next Sync",
    "pricingSyncFailedWithReason": "Не удалось синхронизировать цены: {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": "Maximum compression with all techniques including semantic deduplication",
    "compressionAggressiveConfig": "Агрессивная конфигурация двигателя",
    "compressionAggressiveConfigDesc": "Точная настройка суммирования, сжатия инструментов и порогов устаревания",
    "compressionUltraConfig": "Ультра конфигурация двигателя",
    "compressionUltraConfigDesc": "Точная настройка эвристического сокращения, резервного SLM и пороговых значений для каждого сообщения.",
    "compressionUltraRate": "Держите ставку",
    "compressionUltraMinScore": "Минимальный порог оценки",
    "compressionUltraSlmFallback": "Откат к агрессивному режиму",
    "compressionUltraModelPath": "Путь модели УУЗР",
    "compressionSummarizerEnabled": "Включить сумматор",
    "compressionMaxTokensPerMessage": "Максимальное количество токенов на сообщение",
    "compressionMinSavings": "Минимальный порог сбережений",
    "compressionAgingThresholds": "Пороги старения",
    "compressionAgingThresholdsDesc": "Количество последних сообщений, хранящихся на каждом уровне старения (выше = больше сохраненных)",
    "compressionToolStrategies": "Стратегии результатов инструмента",
    "compressionToolStrategiesDesc": "Переключение стратегий сжатия для разных типов результатов инструмента",
    "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": "минуты",
    "compressionModeRtk": "RTK",
    "compressionModeRtkDesc": "Command-aware tool output filtering",
    "compressionModeStacked": "Stacked",
    "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression",
    "qdrantTitle": "Qdrant (Vector memory)",
    "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.",
    "qdrantStatusActive": "Active",
    "qdrantStatusError": "Error",
    "qdrantStatusDisabled": "Disabled",
    "qdrantEnable": "Enable Qdrant",
    "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.",
    "qdrantTesting": "Testing...",
    "qdrantTestConnection": "Test connection",
    "qdrantSaved": "Configuration saved",
    "qdrantSaveError": "Failed to save configuration",
    "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant",
    "qdrantPort": "Port",
    "qdrantPortHint": "Qdrant default: 6333",
    "qdrantCollectionHint": "Where memory points will be stored.",
    "qdrantEmbeddingModel": "Embedding model",
    "qdrantHelpTitle": "Quick setup help",
    "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)",
    "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.",
    "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.",
    "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.",
    "qdrantHelpStep4": "4. Save, test connection, then test search.",
    "qdrantEmbeddingQuickSelect": "Quick select from discovered models...",
    "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small",
    "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.",
    "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)",
    "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)",
    "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.",
    "qdrantSearchTestTitle": "Search test",
    "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.",
    "qdrantSearchPlaceholder": "Example: user preferences, history, etc",
    "qdrantNoResults": "No results (or Qdrant is not configured).",
    "qdrantCleanupTitle": "Retention and cleanup",
    "qdrantCleanupDesc": "Removes expired and old points based on",
    "searching": "Searching...",
    "cleaning": "Cleaning...",
    "cleanNow": "Clean now",
    "optional": "Необязательно",
    "current": "Текущий",
    "remove": "Удалить",
    "search": "Поиск",
    "oneproxyTitle": "1proxy Торговая площадка бесплатных прокси",
    "oneproxyTotalProxies": "Всего прокси",
    "oneproxyAvgQuality": "Среднее качество",
    "resilienceScope": "Область применения:",
    "resilienceTrigger": "Триггер:",
    "resilienceEffect": "Эффект:",
    "resilienceRequestQueueTitle": "Request Queue & Rate",
    "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers",
    "resilienceRequestsPerMinute": "Requests per minute",
    "resilienceMinTimeBetweenRequests": "Minimum time between requests",
    "resilienceConcurrentRequests": "Concurrent requests",
    "resilienceMaxQueueWaitTime": "Максимальное время ожидания в очереди",
    "resilienceBaseCooldown": "Base cooldown",
    "resilienceUseUpstreamRetryHints": "Use upstream retry hints",
    "resilienceDefaultPerProvider": "Default (per provider)",
    "resilienceAlwaysOn": "Always on",
    "resilienceAlwaysOff": "Always off",
    "routingRemoveEntry": "Удалить запись",
    "routingNeedlesSubstrings": "Иглы (соответствующие подстроки)",
    "routingCaseSensitive": "С учетом регистра",
    "routingPrefixes": "Префиксы",
    "routingMatch": "Матч",
    "routingReplacement": "Замена",
    "routingReplaceAllOccurrences": "Заменить все вхождения",
    "routingPatternRegex": "Шаблон (регулярное выражение)",
    "routingFlags": "Флаги",
    "routingNeedles": "Иглы",
    "routingBlockText": "Блокировать текст",
    "routingIdempotencyKey": "Ключ идемпотентности",
    "routingEntrypoint": "Точка входа",
    "routingVersionFormat": "Формат версии",
    "routingCchAlgorithm": "алгоритм CCH",
    "routingWordsToObfuscate": "Слова, которые нужно запутать (ZWJ вставлен после первого символа)",
    "logsSettingsTitle": "Настройки журналов",
    "detailedLogsLabel": "Подробные журналы включены",
    "detailedLogsDesc": "Включить подробное ведение журнала запросов/ответов",
    "callLogPipelineLabel": "Конвейер журнала вызовов",
    "callLogPipelineDesc": "Включить конвейер обработки журнала вызовов",
    "maxDetailSizeLabel": "Максимальный размер детализации (КБ)",
    "maxDetailSizeDesc": "Максимальный размер подробных записей журнала",
    "ringBufferSizeLabel": "Размер кольцевого буфера",
    "ringBufferSizeDesc": "Размер кольцевого буфера для логов",
    "semanticCacheEnabledLabel": "Семантический кэш включен",
    "semanticCacheMaxSizeLabel": "Максимальный размер семантического кэша",
    "semanticCacheMaxSizeDesc": "Максимальное количество записей семантического кэша",
    "semanticCacheTTLLabel": "TTL семантического кэша",
    "promptCacheEnabledLabel": "Кэш запросов включен",
    "promptCacheEnabledDesc": "Включить кэширование запросов",
    "promptCacheStrategyLabel": "Подскажите стратегию кэширования",
    "promptCacheStrategyDesc": "Стратегия быстрого кэширования",
    "alwaysPreserveClientCacheLabel": "Всегда сохраняйте клиентский кеш",
    "alwaysPreserveClientCacheDesc": "Политика сохранения кэша клиента",
    "logRetentionPolicyTitle": "Политика хранения журналов",
    "resilienceUseUpstream429HintsForBreaker": "Использовать вышестоящие подсказки 429 (прерыватель)",
    "appearanceLogoPreviewAlt": "Предварительный просмотр логотипа",
    "appearanceFaviconPreviewAlt": "Предварительный просмотр значка",
    "oneproxyLastSync": "Последняя синхронизация",
    "oneproxyAllProtocols": "Все протоколы",
    "oneproxyCountryCodePlaceholder": "Код страны (например, США)",
    "oneproxyMinQualityPlaceholder": "Минимальное качество",
    "oneproxyLoadingProxies": "Загрузка прокси...",
    "oneproxyLastSyncLabel": "Последняя синхронизация:",
    "oneproxyProxiesFetched": "Получены прокси:",
    "oneproxyConsecutiveFailures": "Последовательные неудачи:",
    "oneproxyErrorLabel": "Ошибка:",
    "oneproxyNever": "Никогда",
    "oneproxySyncStatusTitle": "Статус синхронизации",
    "oneproxySuccess": "Успех",
    "oneproxyFailed": "Не удалось",
    "routingAntigravitySignatureTitle": "Режим кэша сигнатур Антигравитации",
    "routingAntigravitySignatureDesc": "Управляйте тем, использует ли OmniRoute только сохраненные подписи мыслей Gemini или принимает проверенные подписи, предоставленные клиентом, в совместимых с Antigravity потоках вызовов инструментов.",
    "routingAntigravitySignatureEnabledLabel": "Включено",
    "routingAntigravitySignatureEnabledDesc": "Т текущее поведение. Игнорировать предоставленные клиентом подписи и продолжать использовать сохраненный поток OmniRoute.",
    "routingAntigravitySignatureBypassLabel": "Обойти",
    "routingAntigravitySignatureBypassDesc": "Принимать предоставленные клиентом подписи после легкой проверки и возвращаться к сохраненной подписи при недействительной.",
    "routingAntigravitySignatureBypassStrictLabel": "Обойти строгий режим",
    "routingAntigravitySignatureBypassStrictDesc": "Требуется полная валидация protobuf перед принятием подписи, предоставленной клиентом.",
    "routingHeaderFingerprintTitle": "Отпечаток заголовка (для каждого поставщика)",
    "routingServerRejectedSave": "⚠ Сервер отклонил сохранение:",
    "routingAddTransformOp": "Добавьте операцию преобразования",
    "routingClientCacheControlTitle": "Управление кэшем клиента",
    "routingClientCacheControlDesc": "Настройте, сохраняет ли OmniRoute предоставленные клиентом маркеры cache_control",
    "routingClientCacheControlAutoDesc": "Для детерминированных потоков, совместимых с Claude, сохраняйте предоставленный клиентом cache_control без изменений. Если в запросе нет cache_control, OmniRoute не вставляет никаких маркеров, принадлежащих мосту, для совместимости с прокси третьих сторон, совместимыми с CC.",
    "routingClientCacheControlAlwaysLabel": "Всегда Сохранять",
    "routingClientCacheControlAlwaysDesc": "Всегда передавайте заголовки cache_control, предоставленные клиентом, поставщикам выше по цепочке без изменений.",
    "routingClientCacheControlNeverLabel": "Никогда не сохранять",
    "routingClientCacheControlNeverDesc": "Всегда удаляйте заголовки cache_control клиента и позволяйте OmniRoute управлять кэшированием, где это поддерживается потоками нативного провайдера.",
    "routingZeroConfigTitle": "Автоматическая маршрутизация без настройки",
    "routingZeroConfigDesc": "Включите автоматический выбор провайдера, используя префикс auto/. При включении запросы к auto, auto/coding, auto/fast и т. д. будут динамически маршрутизироваться по всем подключенным провайдерам.",
    "routingDefaultAutoVariant": "Автоматический вариант по умолчанию",
    "visionBridge": "Видение моста",
    "visionBridgeDesc": "Запустите автоматическое преобразование изображения в текст перед перенаправлением запросов изображений на модели только для текста.",
    "visionBridgeEnabledLabel": "Включено",
    "visionBridgeEnabledDesc": "Переключите предварительный мост вызова, который заменяет части изображения извлеченным текстом.",
    "visionBridgeModel": "Модель моста",
    "visionBridgeModelPlaceholder": "опенай/gpt-4o-мини",
    "visionBridgeModelHint": "Любой идентификатор модели OmniRoute, который поддерживает визуализацию, может быть использован здесь.",
    "visionBridgePrompt": "Подсказка о мосте",
    "visionBridgePromptPlaceholder": "Кратко опишите этот образ.",
    "visionBridgePromptHint": "Отправлено в модель зрения до того, как извлеченное описание будет внедрено обратно в оригинальный запрос.",
    "visionBridgeTimeoutMs": "Тайм-аут (мс)",
    "visionBridgeMaxImagesPerRequest": "Максимальное количество изображений на запрос",
    "resilienceMaxBackoffSteps": "Max backoff steps",
    "resilienceProviderBreakerTitle": "Circuit Breaker per Provider",
    "resilienceFailureThreshold": "Failure threshold",
    "resilienceResetTimeout": "Сбросить тайм-аут",
    "resilienceFailureThresholdLabel": "Порог отказа",
    "resilienceResetTimeoutLabel": "Сбросить тайм-аут",
    "resilienceConnectionCooldownTitle": "Connection Cooldown",
    "resilienceUseUpstreamRetryHintsLabel": "Используйте подсказки по повторным попыткам",
    "resilienceUseUpstream429BreakerLabel": "Использовать вышестоящие подсказки 429 (прерыватель)",
    "resilienceMaxBackoffStepsLabel": "Макс. шаги отсрочки",
    "resilienceYes": "Да",
    "resilienceNo": "Нет",
    "resilienceDefault": "Default",
    "storageDatabaseBackupRetention": "Хранение резервной копии базы данных",
    "storagePurgeData": "Очистить данные",
    "retentionQuotaSnapshots": "Снимки квот (дни)",
    "retentionMcpAudit": "Аудит MCP (дни)",
    "retentionA2aEvents": "События A2A (дни)",
    "retentionCallLogs": "Журналы вызовов (дни)",
    "retentionUsageHistory": "История использования (дни)",
    "retentionMemoryEntries": "Записи в памяти (дни)",
    "storageAutoVacuumMode": "Автоматический режим вакуума",
    "storageScheduledVacuum": "Запланированный вакуум",
    "storageVacuumHour": "Час вакуума (0-23)",
    "storagePageSize": "Размер страницы (байты)",
    "storageDatabaseSize": "Размер базы данных",
    "storagePageCount": "Количество страниц",
    "storageFreelistCount": "Количество свободных списков",
    "storageLastVacuum": "Последний вакуум",
    "storageLastOptimization": "Последняя оптимизация",
    "storageIntegrityCheck": "Проверка целостности",
    "storageIntegrityOk": "✓ ОК",
    "storageIntegrityError": "✗ Ошибка",
    "storageUsageTokenBuffer": "Буфер токена использования",
    "compressionSettingsAutoTriggerMode": "Режим автоматического запуска",
    "compressionSettingsMcpDescriptionCompression": "Сжатие описания MCP",
    "compressionSettingsCavemanIntensity": "Интенсивность пещерного человека",
    "compressionSettingsCavemanOutputMode": "Режим вывода «Пещерный человек»",
    "compressionSettingsOutputIntensity": "Выходная интенсивность",
    "compressionSettingsAutoClarityBypass": "Автоматический обход четкости",
    "resilienceWaitForCooldown": "Подождите перезарядки",
    "resilienceEnableServerSideWait": "Включить ожидание на стороне сервера",
    "resilienceMaximumRetries": "Максимальное количество повторов",
    "resilienceMaximumWaitPerRetry": "Максимальное ожидание на повторную попытку",
    "memorySkillsSkillsmpMarketplace": "Торговая площадка SkillsMP",
    "memorySkillsFailedToSave": "Не удалось сохранить",
    "memorySkillsApiKey": "API-ключ",
    "memorySkillsActiveSkillsProvider": "Поставщик активных навыков",
    "cliproxyapiFallback": "Резервный вариант CLIProxyAPI",
    "cliproxyapiEnableFallback": "Включить резервный вариант CLIProxyAPI",
    "cliproxyapiUrl": "URL-адрес CLIProxyAPI",
    "cliproxyapiStatus": "Статус CLIProxyAPI",
    "cliproxyapiNotDetected": "Не обнаружено",
    "payloadRulesTitle": "Правила полезной нагрузки",
    "payloadRulesDesc": "Настройте мутации полезной нагрузки запроса по модели и протоколу. Изменения сохраняются в настройках и немедленно загружаются в среду выполнения после сохранения.",
    "payloadRuleDefaultTitle": "по умолчанию",
    "payloadRuleDefaultDesc": "Применяет параметры только в том случае, если целевой путь отсутствует в исходящем полезном нагрузке.",
    "payloadRuleOverrideTitle": "переопределить",
    "payloadRuleOverrideDesc": "Принуждает значения в полезную нагрузку, заменяя все, что уже присутствует по этому пути.",
    "payloadRuleFilterTitle": "фильтр",
    "payloadRuleFilterDesc": "Удаляет заблокированные параметры из полезной нагрузки перед отправкой запроса на сервер.",
    "payloadRuleDefaultRawTitle": "defaultRaw",
    "payloadRuleDefaultRawDesc": "Как по умолчанию, но строковые значения сначала разбираются как JSON, если это возможно. Устаревший псевдоним ввода default-raw также принимается при сохранении.",
    "payloadEditorTitle": "Редактор",
    "payloadEditorDesc": "Используйте схему времени выполнения: default, override, filter, defaultRaw. API также принимает устаревший ключ ввода default-raw.",
    "payloadEditorReady": "Готово",
    "payloadResetInfo": "Редактор сброшен к нейтральному шаблону. Сохраните, чтобы применить его.",
    "payloadSaveSuccess": "Правила полезной нагрузки сохранены и горячо перезагружены.",
    "payloadJsonParseError": "Ошибка разбора JSON: {error}",
    "payloadMustBeObject": "Правила полезной нагрузки должны быть объектом JSON.",
    "payloadInvalidJson": "Неверная нагрузка JSON.",
    "payloadValidJsonRequired": "Правила полезной нагрузки должны быть действительным JSON перед сохранением.",
    "savePayloadRules": "Сохранить правила полезной нагрузки",
    "requestLimitsTitle": "Ограничения Запросов",
    "requestLimitsDesc": "Настройте глобальные лимиты запросов и защиту от одновременных запросов.",
    "maxRequestSizeLabel": "Максимальный размер запроса (МБ)",
    "maxRequestSizeDesc": "Максимально допустимый размер для входящих API-запросов.",
    "maxResponseSizeLabel": "Максимальный размер ответа (МБ)",
    "maxResponseSizeDesc": "Максимально допустимый размер для исходящих API-ответов.",
    "maxRequestTokensLabel": "Максимальное количество токенов запроса",
    "maxRequestTokensDesc": "Максимальное количество токенов, разрешенное в одном запросе.",
    "maxResponseTokensLabel": "Максимальное количество токенов ответа",
    "maxResponseTokensDesc": "Максимальное количество токенов, разрешенное в одном ответе.",
    "modelCooldownsTitle": "Модели в кулдауне",
    "modelCooldownsEmpty": "Сейчас нет моделей в режиме восстановления.",
    "codexFastTierTitle": "Быстрый уровень Кодекса",
    "codexFastTierDesc": "Глобально внедрите service_tier=priority для запросов OpenAI Codex.",
    "codexFastTierHint": "Если эта функция включена, OmniRoute добавляет атрибут service_tier=priority к исходящим запросам Кодекса для соединений, для которых еще не указан уровень. Для уровня приоритета требуется ключ OpenAI Enterprise API или путь Codex для аутентификации ChatGPT; другие типы ключей получат от OpenAI ошибку, связанную с уровнем. Настройки для каждого соединения на странице поставщика Кодекса имеют приоритет.",
    "codexFastTierSaveError": "Не удалось обновить настройки уровня быстрого доступа Кодекса.",
    "codexFastTierTierLabel": "Уровень обслуживания",
    "codexFastTierTierPriority": "Приоритет",
    "codexFastTierTierFlex": "Гибкость",
    "codexFastTierTierDefault": "По умолчанию",
    "codexFastTierModelsLabel": "Модели быстрого уровня",
    "codexFastTierModelsHint": "Только проверенные модели получают service_tier, когда включен Fast Tier.",
    "codexFastTierModelCheckbox": "Включить Быстрый Уровень для {model}",
    "claudeFastModeTitle": "Клод Быстрый режим",
    "claudeFastModeDesc": "Переключить выбранные запросы Клода в антропный быстрый режим (скорость: «быстрый»).",
    "claudeFastModeHint": "Anthropic официально не поддерживает быстрый режим для клиентов в стиле SDK. Если этот параметр включен, OmniRoute пересылает заголовок X-CPA-Force-Fast-Mode, чтобы парная сборка CLIProxyAPI могла включить подмену точки входа. Только перечисленные модели Opus проходят проверку на стороне клиента Anthropic. Уровень подписки, максимальный план и кредитный баланс в быстром режиме по-прежнему применяются на стороне сервера — Anthropic может возвращать out_of_credits, даже если переключатель включен.",
    "claudeFastModeModelsLabel": "Применяется к моделям ({count})",
    "claudeFastModeModelCheckbox": "Включить быстрый режим для {model}",
    "claudeFastModeSaveError": "Не удалось обновить настройки быстрого режима Клода.",
    "authz": {
      "title": "Инвентаризация Authz",
      "description": "5-уровневая классификация маршрутов с живой политикой обхода. Чтение показывает полную таксономию; мутации повторно запрашивают пароль управления.",
      "loading": "Загрузка инвентаря…",
      "loadError": "Не удалось загрузить инвентарь authz",
      "tier": {
        "LOCAL_ONLY": "Только локально",
        "ALWAYS_PROTECTED": "Всегда защищено",
        "MANAGEMENT": "Управление",
        "CLIENT_API": "Клиентский API",
        "PUBLIC": "Общий"
      },
      "bypass": {
        "section": "Управление обходом области",
        "kill_switch": {
          "label": "Обойти аварийный выключатель",
          "desc": "Главный переключатель. Когда выключен, префикс LOCAL_ONLY недоступен из ненаправленного соединения, независимо от списка префиксов."
        },
        "prefix": {
          "label": "Обходимые префиксы",
          "desc": "Префиксы LOCAL_ONLY, которые управляют ключами API (или сессиями панели управления), могут достигать не петлевых хостов.",
          "add": "Добавить префикс",
          "placeholder": "/api/mcp/v2/",
          "empty": "Префиксы не настроены. Обход фактически отключен."
        },
        "cli_tools_runtime_note": "Префикс, способный к созданию. Запрет на этапе компиляции; не может быть обойден. Отображается как только для чтения."
      },
      "password": {
        "prompt": {
          "label": "Текущий пароль",
          "desc": "Повторно подтвердите применение изменений, влияющих на безопасность."
        },
        "placeholder": "Текущий пароль управления",
        "cancel": "Отменить",
        "submit": "Применить"
      },
      "save": "Сохранить изменения",
      "saved": "Настройки Authz обновлены",
      "pending": "Несохранённые изменения",
      "badge": {
        "bypassable": "Обходимо через управление областью",
        "strict": "Строгий обратный цикл",
        "auth_required": "Требуется аутентификация",
        "public": "Публичный",
        "always_protected": "Всегда защищено",
        "spawn_capable": "Способный к созданию экземпляров"
      },
      "error": {
        "PASSWORD_REQUIRED": "Текущий пароль необходим для применения этих изменений.",
        "PASSWORD_MISMATCH": "Текущий пароль неверен.",
        "INSUFFICIENT_SCOPE": "Ключ API не имеет области управления.",
        "BYPASS_PREFIX_NOT_ALLOWED": "Один или несколько префиксов нацелены на маршруты, способные к спавну, и не могут быть обойдены.",
        "GENERIC": "Не удалось обновить настройки authz."
      }
    },
    "resilienceBaseCooldownLabel": "Базовое время восстановления",
    "scopeLabel": "Область применения",
    "triggerLabel": "Триггер",
    "effectLabel": "Эффект",
    "statusEnabled": "Включено",
    "statusDisabled": "Отключено",
    "resilienceRequestQueueScope": "По очереди запросов",
    "resilienceRequestQueueTrigger": "Перед отправкой в восходящий поток",
    "resilienceRequestQueueEffect": "Ставит запросы в очередь, ограничивает параллелизм и распределяет вызовы по интервалам",
    "resilienceRequestQueueDesc": "Этот уровень управляет только очередью и скоростью. Он не сохраняет время восстановления или разомкнутые выключатели.",
    "resilienceAutoEnableApiKeyProvidersDesc": "По умолчанию включает защиту очереди для активных подключений ключей API.",
    "resilienceMaxQueueWait": "Максимальное время ожидания в очереди",
    "resilienceConnectionCooldownScope": "Индивидуальное подключение",
    "resilienceConnectionCooldownTrigger": "Когда соединение возвращает временный сбой в восходящем направлении",
    "resilienceConnectionCooldownEffect": "Временно пропускает это соединение и увеличивает отсрочку в случае повторяющихся сбоев.",
    "resilienceConnectionCooldownDesc": "Базовое время восстановления покрывает временные сбои соединения. Если включены подсказки повторных попыток восходящего потока, явное окно поставщика переопределяет локальное время восстановления.",
    "resilienceUseUpstreamRetryHintsDesc": "Использует значения повтора после/сброса от вышестоящего поставщика, если они доступны.",
    "resilienceUseUpstream429BreakerHints": "Используйте вышестоящие 429 подсказок для перезарядки выключателя.",
    "resilienceUseUpstream429BreakerHintsShort": "Используйте вышестоящие подсказки 429",
    "resilienceUseUpstream429BreakerHintsDesc": "Примените сигналы «Повторить после» / «Квота исчерпана» из 429 ответов на время восстановления автоматического выключателя. По умолчанию используется политика каждого поставщика: по умолчанию включены прямые облачные поставщики; Поставщики обратного прокси, самостоятельного размещения и поддержки CLI по умолчанию отключены. Независимо от «Использовать подсказки по повторным попыткам».",
    "resilienceProviderBreakerScope": "Весь провайдер",
    "resilienceProviderBreakerTrigger": "Окончательные сбои транспорта/сервера после исчерпания резервного соединения.",
    "resilienceProviderBreakerEffect": "Временно блокирует этого поставщика до истечения времени сброса.",
    "resilienceProviderBreakerDesc": "Состояние автоматического выключателя отображается только на странице «Здоровье». Ограничения скорости 429 в области соединения остаются в период восстановления соединения и не отключают прерыватель провайдера.",
    "resilienceResetTime": "Сбросить время",
    "resilienceWaitForCooldownTitle": "Подождите перезарядки",
    "resilienceWaitForCooldownScope": "Текущий запрос клиента",
    "resilienceWaitForCooldownTrigger": "Когда все соединения-кандидаты уже остывают",
    "resilienceWaitForCooldownEffect": "Ожидает на сервере и повторяет попытку, когда истечет первое время восстановления.",
    "resilienceWaitForCooldownDesc": "Это влияет только на текущий запрос. Он не сохраняет состояние соединения или провайдера.",
    "resilienceEnableServerWait": "Включить ожидание на стороне сервера",
    "resilienceEnableServerWaitDesc": "Если эта функция включена, OmniRoute ожидает истечения первого времени восстановления и автоматически повторяет попытку.",
    "resilienceMaxAttempts": "Максимальное количество попыток",
    "resilienceMaxWaitPerAttempt": "Максимальное ожидание за попытку",
    "forcedFingerprintTitle": "Всегда включено для {provider} — требуется для безопасности OAuth-аккаунта; отключить нельзя.",
    "forcedFingerprintBadge": "Обязательно",
    "codexSessionAffinityTitle": "Привязка сеансов Кодекса",
    "codexSessionAffinityDesc": "Сохраняет один разговор Кодекса с одной и той же учетной записью в течение указанного количества секунд. 0 отключает его.",
    "codexSessionAffinityTtl": "TTL сходства (секунды)",
    "resetAwareQuotaCacheTitle": "Кэш квот с поддержкой сброса",
    "resetAwareQuotaCacheDesc": "Кэширует телеметрию квоты только для заказов с возможностью сброса. Предварительная проверка квот по-прежнему защищает запросы. 0/0 продолжает получать данные в реальном времени.",
    "resetAwareQuotaCacheTtl": "Свежий TTL (секунды)",
    "resetAwareQuotaCacheMaxStale": "Макс. устаревшее (секунды)",
    "qdrantCleanupSuccess": "ОК: удалено {count} баллов (хранение: {days} дней)",
    "qdrantCleanupFailed": "Очистка не удалась",
    "qdrantCleanupError": "Ошибка: {error}",
    "vercelRelaySuccess": "Vercel Relay успешно развернут",
    "vercelRelayButton": "Развернуть Vercel Relay",
    "vercelRelayModalTitle": "Развернуть Vercel Relay",
    "vercelRelayWarning": "Предупреждение: требуется токен развертывания Vercel. Этот токен будет использоваться только для создания безсерверного реле и никогда не будет храниться OmniRoute.",
    "vercelRelayTokenLabel": "Токен доступа Vercel",
    "vercelRelayProjectNameLabel": "Название проекта Vercel",
    "vercelRelayFreeTierNote": "Реле — это легковесные прокси-эндпоинты, развернутые на бесплатном тарифе Vercel, чтобы обойти ограничения локальной сети/региона.",
    "vercelRelayDeploying": "Развёртывание...",
    "vercelRelayDeploy": "Развернуть",
    "proxyGlobalConfigTab": "Глобальная Конфигурация",
    "proxyPoolTab": "Пул Прокси",
    "freePoolTab": "Бесплатный Пул",
    "proxyDocumentationTab": "Документация"
  },
  "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": "Каталог фильтров",
    "filterCatalogDesc": "Доступные выходные фильтры по категориям",
    "guidedConfig": "Конфигурация",
    "guidedConfigDesc": "Настройте, как RTK фильтрует выходной сигнал вашего терминала",
    "maxLines": "Max lines",
    "maxChars": "Max chars",
    "deduplicateThreshold": "Порог дедупликации",
    "customFilters": "Пользовательские фильтры",
    "detectedType": "Обнаруженный тип",
    "confidence": "Уверенность",
    "beforeAfter": "До/После",
    "trustProjectFilters": "Доверительные фильтры проектов",
    "rawOutputRetention": "Сохранение необработанных выходных данных",
    "rawOutputNever": "Никогда",
    "rawOutputFailures": "Неудачи",
    "rawOutputAlways": "Всегда",
    "rawOutputMaxBytes": "Макс. количество необработанных выходных данных в байтах",
    "filterTesting": "Filter Testing",
    "pasteOutput": "Paste tool output to test filtering...",
    "presetHigh": "Агрессивный",
    "presetLow": "Свет",
    "presetMaxChars": "Максимальное количество выводимых символов",
    "presetMaxLines": "Максимальное количество выходных линий",
    "presetMedium": "Стандартный",
    "run": "Run",
    "result": "Result",
    "previewEmpty": "Run a sample to preview RTK output.",
    "detected": "Detected",
    "masterSwitchOffAlert": "Мастер-переключатель Token Saver выключен — эти настройки не повлияют на запросы, пока вы не включите его на странице Endpoint.",
    "tokensFiltered": "Tokens filtered",
    "filtersActive": "Filters active",
    "requests": "Requests",
    "avgSavings": "Avg savings",
    "simpleMode": "Простой",
    "advancedMode": "Расширенный",
    "searchFilters": "Фильтры поиска...",
    "tooltipDedup": "Как агрессивно удалять повторяющиеся строки.",
    "tooltipMaxChars": "Максимальное количество символов на выходной блок.",
    "tooltipMaxLines": "Максимальное количество строк, которые следует исключить из вывода команды. Лишнее отсекается."
  },
  "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": "Расширенная конфигурация",
    "advancedConfigDesc": "Точная настройка поведения сжатия",
    "aggressiveSettings": "Агрессивные настройки",
    "aggressiveSettingsDesc": "Максимальное сжатие с возможным компромиссом в качестве",
    "requests": "Requests",
    "tokensSaved": "Tokens saved",
    "savingsPercent": "Savings %",
    "avgLatency": "Avg latency",
    "languagePacks": "Language Packs",
    "languagePacksDesc": "Enable compression rules for specific languages.",
    "labelAutoTrigger": "Автоматическое сжатие, когда контекст превышает",
    "labelCompressionRate": "Сила сжатия",
    "labelMaxTokens": "Целевые токены на сообщение",
    "labelMinLength": "Минимальная длина сообщения",
    "labelMinSavings": "Минимум жетонов для сохранения",
    "enabled": "Enabled",
    "autoDetect": "Auto-detect language",
    "rulesCount": "{count} rules",
    "inputCompressionTitle": "Сжатие ввода",
    "inputCompressionDesc": "Перепишите историю чата с более короткими формулировками. Сокращает входные токены примерно на 50%.",
    "analyticsTitle": "Compression Analytics",
    "noAnalytics": "No compression analytics yet.",
    "outputMode": "Режим вывода",
    "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.",
    "outputModeTitle": "Output Mode",
    "quickSettings": "Быстрые настройки",
    "quickSettingsDesc": "Основные настройки сжатия для начала работы",
    "autoClarity": "Auto-Clarity Bypass",
    "bypassConditions": "Bypass conditions",
    "bypassConditionsList": "безопасность, необратимый, уточнение, чувствительность к заказу",
    "simpleMode": "Простой",
    "advancedMode": "Расширенный",
    "tooltipAutoTrigger": "Автоматически сжимать, когда контекст превышает этот размер.",
    "tooltipCompressionRate": "0,0 = нет, 1,0 = максимум. 0,5 = сбалансированный.",
    "tooltipMaxTokens": "Целевое количество токенов после сжатия. Ниже = более агрессивно.",
    "tooltipMinLength": "Сообщения короче этого значения не сжимаются. Ниже = больше сжатия.",
    "tooltipMinSavings": "Сжимайте только в том случае, если при этом сохраняется хотя бы столько же токенов.",
    "ultraSettings": "Ультра настройки",
    "ultraSettingsDesc": "Семантическое сжатие на основе 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": "Переводчик",
    "metaTitle": "Детская площадка для переводчиков | ОмниРоут",
    "metaDescription": "Отладка, тестирование и визуализация преобразований форматов API между поставщиками.",
    "playgroundTitle": "Площадка для переводчиков",
    "playground": "Детская площадка",
    "realtime": "Переводческая деятельность в режиме реального времени",
    "chatTester": "Тестер чата",
    "testBench": "Испытательный стенд",
    "liveMonitor": "Живой монитор",
    "modeDescriptionPlayground": "Вставьте любое тело запроса API и посмотрите, как OmniRoute преобразует его между форматами поставщика (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).",
    "modeDescriptionChatTester": "Отправляйте реальные запросы чата через OmniRoute и проверяйте полный цикл обработки: входные данные, переведенный запрос, ответ поставщика и переведенный вывод.",
    "modeDescriptionTestBench": "Запускайте заранее определенные сценарии и сравнивайте совместимость поставщиков и моделей.",
    "modeDescriptionLiveMonitor": "Наблюдайте за событиями перевода в режиме реального времени по мере прохождения запросов через OmniRoute.",
    "modeDescriptionFallback": "Отлаживайте, тестируйте и визуализируйте, как OmniRoute преобразует запросы API между поставщиками.",
    "recentTranslations": "Недавние переводы",
    "noTranslations": "Переводов пока нет",
    "source": "Источник",
    "target": "Цель",
    "time": "Время",
    "model": "Модель",
    "status": "Статус",
    "latency": "Задержка",
    "totalTranslations": "Всего переводов",
    "successful": "Успешный",
    "errors": "Ошибки",
    "avgLatency": "Средняя задержка",
    "millisecondsShort": "{value}мс",
    "notAvailableSymbol": "—",
    "liveAutoRefreshing": "Прямой эфир — автоматическое обновление",
    "paused": "Приостановлено",
    "eventsAppearHint": "События перевода появляются здесь по мере прохождения запросов через OmniRoute. Используйте любой из этих методов для генерации событий:",
    "chatTesterTab": "Вкладка «Тестер чата»",
    "testBenchTab": "Вкладка «Тестовый стенд»",
    "externalApiCalls": "Внешние вызовы API",
    "ideCliIntegrations": "Интеграция IDE/CLI",
    "inMemoryNote": "Примечание. События сохраняются в памяти и сбрасываются при перезапуске сервера.",
    "ok": "ОК",
    "errorShort": "ОШИБКА",
    "formatConverter": "Конвертер форматов",
    "formatConverterDescription": "Вставьте или введите тело запроса JSON. Переводчик автоматически определит исходный формат и преобразует его в целевой формат. Используйте это для отладки того, как OmniRoute преобразует запросы между форматами (OpenAI ↔ Claude ↔ Gemini ↔ API ответов).",
    "translationPathHubSpoke": "{source} → OpenAI (средний уровень) → {target}",
    "translationPathDirect": "{source} → {target} (прямой переводчик)",
    "translationPathPassthrough": "Тот же формат — перевод не требуется",
    "openaiIntermediatePanel": "OpenAI Средний уровень",
    "autoFeaturesTitle": "Что OmniRoute делает автоматически",
    "autoFeaturesCount": "8 функций",
    "featureReasoningCache": "Кэш рассуждений",
    "featureReasoningCacheDesc": "Повторно вводит кэшированное содержимое Reasoning_content для моделей режима мышления (DeepSeek V4, Kimi K2, Qwen), когда клиенты исключают его из истории разговоров.",
    "featureSchemaCoercion": "Приведение схемы",
    "featureSchemaCoercionDesc": "Исправляет неработающие схемы инструментов: добавляет отсутствующие дополнительные свойства, очищает длинные описания, нормализует вложенные объекты.",
    "featureRoleNormalization": "Нормализация ролей",
    "featureRoleNormalizationDesc": "Разработчик карт→система для целей, отличных от OpenAI. Система карт→пользователь для моделей, которые не поддерживают системную роль.",
    "featureToolCallIds": "Нормализация идентификатора вызова инструмента",
    "featureToolCallIdsDesc": "Генерирует уникальные идентификаторы Tool_call при их отсутствии. Нормализуется до 9-значного формата для таких поставщиков, как Mistral.",
    "featureMissingToolResponse": "Введение отклика инструмента",
    "featureMissingToolResponseDesc": "Вводит пустые сообщенияtool_result, когда клиенты отправляютtool_calls без соответствующих ответов.",
    "featureThinkingBudget": "Думая о бюджете",
    "featureThinkingBudgetDesc": "Автоматически управляет конфигурацией мышления. Удаляет параметры мышления, когда последнее сообщение не от пользователя.",
    "featureDirectPaths": "Прямые пути перевода",
    "featureDirectPathsDesc": "Некоторые пары форматов (Claude → Gemini) имеют прямые трансляторы, которые обходят концентратор OpenAI, обеспечивая более точный вывод.",
    "featureImageMapping": "Сопоставление размеров изображения",
    "featureImageMappingDesc": "Переводит соглашения о размерах изображений между форматами API (например, уровни детализации OpenAI → размеры Gemini).",
    "input": "Ввод",
    "output": "Выход",
    "auto": "Авто",
    "swapFormats": "Форматы обмена",
    "translateAction": "Перевести",
    "clear": "Очистить",
    "inputPlaceholder": "Вставьте сюда текст запроса или выберите шаблон ниже...",
    "exampleTemplates": "Примеры шаблонов",
    "exampleTemplatesHint": "— Нажмите, чтобы загрузить",
    "templateLoadHint": "Шаблон загружает запрос в формате {format}. Измените исходный формат, чтобы загрузить его в другом формате.",
    "compatibilityTester": "Тестер совместимости",
    "compatibilityReport": "Отчет о совместимости",
    "testBenchDescription": "Запустите предопределенные сценарии (простой чат, вызов инструментов и т. д.), чтобы проверить совместимость перевода и поставщика. Выберите исходный формат и целевого поставщика, затем запустите все тесты, чтобы увидеть процент совместимости. Используйте это, чтобы узнать, какие функции работают у разных поставщиков.",
    "targetProvider": "Целевой поставщик",
    "runAllTests": "Запустить все тесты",
    "runTest": "Запустить тест",
    "reRun": "Повторный запуск",
    "running": "Бег...",
    "passed": "прошло",
    "failed": "не удалось",
    "passedIconLabel": "✅ Пройдено",
    "chunks": "куски",
    "scenarioSimpleChat": "Простой чат",
    "scenarioToolCalling": "Вызов инструмента",
    "scenarioMultiTurn": "Многооборотный",
    "scenarioThinking": "мышление",
    "scenarioSystemPrompt": "Системная подсказка",
    "scenarioStreaming": "Потоковое вещание",
    "templateNames": {
      "simple-chat": "Простой чат",
      "tool-calling": "Вызов инструмента",
      "multi-turn": "Многооборотный",
      "thinking": "мышление",
      "system-prompt": "Системная подсказка",
      "streaming": "Потоковое вещание",
      "vision": "Видение",
      "schema-coercion": "Приведение схемы"
    },
    "templateDescriptions": {
      "simple-chat": "Основное текстовое сообщение",
      "tool-calling": "Вызов функции/инструмента",
      "multi-turn": "Разговор с историей",
      "thinking": "Расширенное мышление/рассуждение",
      "system-prompt": "Сложные системные инструкции",
      "streaming": "Запрос потоковой передачи SSE",
      "vision": "Мультимодальный запрос с вводом изображения",
      "schema-coercion": "Применение схемы структурированного вывода/JSON"
    },
    "templatePayloads": {
      "simpleChat": {
        "system": "Вы полезный помощник.",
        "userGreeting": "Здравствуйте! Как вы сегодня?"
      },
      "toolCalling": {
        "userWeather": "Какая погода в Сан-Паулу?",
        "toolDescription": "Получить текущую погоду для местоположения",
        "cityNameDescription": "Название города"
      },
      "multiTurn": {
        "system": "Вы помощник кодировщика.",
        "userInitial": "Напишите функцию для сортировки массива на Python.",
        "assistantExample": "Вот простая функция сортировки:\n\n``` питон\nЗащиту sort_array (обр):\n    возврат отсортированный (прибытие)\n```",
        "userFollowUp": "Теперь отсортируйте его по убыванию."
      },
      "thinking": {
        "question": "Какова сумма первых 100 простых чисел?"
      },
      "systemPrompt": {
        "systemInstruction": "Вы старший инженер-программист, специализирующийся на распределенных системах. Кратко отвечайте на вопросы, используя лучшие отраслевые практики. Всегда предоставляйте примеры кода, когда это уместно. Отформатируйте свои ответы, используя уценку.",
        "question": "Как реализовать шаблон автоматического выключателя?"
      },
      "streaming": {
        "prompt": "Расскажите мне короткую историю о роботе, который учится рисовать."
      },
      "vision": {
        "system": "Вы помощник, точно описывающий образы.",
        "userPrompt": "Что изображено на этом изображении?",
        "imageUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/600px-PNG_transparency_demonstration_1.png"
      },
      "schemaCoercion": {
        "userPrompt": "Найдите погоду в Токио, используя метрические единицы, включая почасовую разбивку.",
        "toolDescription": "Получите прогноз погоды для города со структурированными опциями.",
        "cityDescription": "Город для запроса, например. «Токио» или «Нью-Йорк»."
      }
    },
    "openaiCompatibleLabel": "Совместимость с OpenAI",
    "anthropicCompatibleLabel": "Антропная совместимость",
    "noTemplateForFormat": "Нет шаблона для этого формата",
    "translationFailed": "Не удалось выполнить перевод: {error}.",
    "pipelineDebugger": "Отладчик конвейеров",
    "translationPipeline": "Конвейер перевода",
    "pipelineVisualization": "Визуализация трубопровода",
    "pipelineVisualizationHint": "Отправьте сообщение, чтобы узнать, как ваш запрос проходит через обнаружение → перевод → звонок поставщику.",
    "chatTesterDescription": "Отправляйте сообщения в определенном клиентском формате и проверяйте каждый этап конвейера перевода.",
    "chatTesterFlow": "Запрос клиента → Обнаружение формата → OpenAI Intermediate → Формат поставщика → Ответ",
    "clickStepToInspect": "Щелкните любой шаг, чтобы проверить данные на этом этапе.",
    "clientFormat": "Формат клиента",
    "provider": "Поставщик",
    "modelPlaceholder": "Выберите или введите название модели...",
    "sendMessageToSeePipeline": "Отправьте сообщение, чтобы увидеть процесс перевода",
    "chatMessageHintPrefix": "Ваше сообщение будет отформатировано как",
    "chatMessageHintSuffix": "запрос, транслируемый через конвейер и отправляемый выбранному провайдеру.",
    "youWithFormat": "Вы ({format})",
    "assistant": "Ассистент",
    "typeMessage": "Введите сообщение...",
    "send": "Отправить",
    "clientRequest": "Запрос клиента",
    "clientRequestDescription": "Тело запроса в том виде, в каком его отправил бы ваш клиент.",
    "formatDetected": "Обнаружен формат",
    "formatDetectedDescription": "OmniRoute автоматически определяет формат API по структуре запроса.",
    "openaiIntermediate": "Промежуточный формат OpenAI",
    "openaiIntermediateDescription": "Все форматы сначала нормализуются до формата OpenAI (универсальный мост).",
    "providerFormat": "Формат поставщика",
    "providerFormatDescription": "Формат OpenAI транслируется в собственный формат провайдера.",
    "providerResponse": "Ответ поставщика",
    "providerResponseRawDescription": "Необработанный ответ от API провайдера",
    "providerResponseSseDescription": "Необработанный поток SSE из API провайдера",
    "unexpectedError": "Произошла непредвиденная ошибка",
    "error": "Ошибка",
    "errorMessage": "Ошибка: {message}",
    "requestFailed": "Запрос не выполнен",
    "noTextExtracted": "(текст не извлечен)",
    "liveMonitorMemoryNote": "События сохраняются в памяти и теряются при перезапуске.",
    "liveMonitorMemoryCapNote": "Сохранено максимум 200 событий.",
    "eventSourcesLabel": "Источники событий:",
    "eventSourceTranslatorPage": "• Страница переводчика (тестер чата, тестовый стенд).",
    "eventSourceMainPipeline": "• Основной конвейер запросов (трафик CLI/IDE/API).",
    "liveMonitorDescriptionPrefix": "Показывает события перевода, когда вызовы API проходят через OmniRoute. События поступают из буфера в памяти (сбрасывается при перезапуске). Использование",
    "liveMonitorDescriptionSuffix": "или внешние вызовы API для генерации событий.",
    "streamTransformer": "Трансформатор потока",
    "modeDescriptionStreamTransformer": "Запускайте потоки SSE завершения чата через преобразователь ответов.",
    "streamTransformerTitle": "Трансформатор потока ответов",
    "streamTransformerDescription": "Вставьте поток SSE завершения чата, пропустите его через преобразователь ответов OmniRoute и проверьте отправленные события response.* перед подключением клиента.",
    "loadTextSample": "Загрузить образец текста",
    "loadToolSample": "Загрузить образец вызова инструмента",
    "transformToResponses": "Преобразование в ответы",
    "rawChatSseInput": "Необработанные завершения чата SSE",
    "transformedResponsesSse": "API преобразованных ответов SSE",
    "noResultsYet": "Пока нет результатов",
    "transformedEvents": "Преобразованные события",
    "uniqueEventTypes": "Уникальные типы событий",
    "inputLines": "Входные строки",
    "outputLines": "Выходные строки",
    "transformedEventTimeline": "Измененная хронология событий",
    "transformerTimelineHint": "Запустите преобразователь, чтобы проверить исходящие события response.output_* по порядку.",
    "eventType": "Тип события",
    "eventPreview": "Предварительный просмотр",
    "comboRouted": "Комбинированный маршрут",
    "uniqueEndpoints": "Уникальные конечные точки",
    "routeDetails": "Детали маршрута",
    "comboBadge": "Комбо",
    "routeEndpointLabel": "Конечная точка",
    "routeConnectionLabel": "Подключение",
    "scenarioVision": "Видение (понимание изображения)",
    "scenarioSchemaCoercion": "Приведение схемы (структурированный вывод)",
    "techniques": "Техники:",
    "friendlyTitle": "Переводчик",
    "friendlySubtitle": "Используйте ваше существующее приложение с любым провайдером — без переписывания кода.",
    "conceptHeadline": "Ваше приложение говорит на \"языке\" одного API. Переводчик преобразует его для использования другого провайдера.",
    "conceptDiagramAppLabel": "Ваше приложение",
    "conceptDiagramSourceLabel": "Формат источника",
    "conceptDiagramHubLabel": "OpenAI (хаб)",
    "conceptDiagramTargetLabel": "Целевой провайдер",
    "conceptDiagramExampleApp": "например, Anthropic SDK",
    "conceptDiagramExampleSource": "claude",
    "conceptDiagramExampleTarget": "Гемини",
    "conceptHowItWorksToggle": "Как это работает",
    "conceptHowItWorksBody": "Ваше приложение отправляет запрос в своем собственном формате. Переводчик определяет формат, преобразует его через OpenAI как промежуточный узел (или напрямую, когда доступен прямой переводчик), отправляет его выбранному провайдеру и возвращает ответ, преобразованный обратно в формат вашего приложения.",
    "tabTranslate": "Перевести",
    "tabMonitor": "Монитор",
    "tabTranslateAriaLabel": "Перейдите на вкладку Перевод",
    "tabMonitorAriaLabel": "Перейдите на вкладку Монитор",
    "simpleAppUsesLabel": "Мое приложение использует",
    "simpleAppUsesHint": "Формат API, на котором работает ваше приложение (например, Anthropic SDK = claude).",
    "simpleSendToLabel": "Отправить на",
    "simpleSendToHint": "Куда на самом деле отправить запрос (поставщик, подключенный в OmniRoute).",
    "simpleStartWithLabel": "Начать с",
    "simpleStartWithExamplePlaceholder": "Выберите готовый пример",
    "simpleStartWithCustomOption": "Вставьте ваш запрос (расширенный)",
    "simpleModeLabel": "Режим",
    "simpleModePreview": "Предварительный просмотр перевода только",
    "simpleModeSend": "Отправить и увидеть ответ",
    "simpleAdvancedToggle": "Расширенный",
    "simpleInputPanelTitle": "Ввод",
    "simpleInputPanelHint": "Свободное текстовое сообщение или готовый пример",
    "simpleResultPanelTitle": "Перевод + Ответ",
    "narratedDetected": "✓ Обнаружено: {format}",
    "narratedTranslating": "Перевод на {target}...",
    "narratedSending": "Отправка на {target}...",
    "narratedSuccess": "→ переведено на {target} · ответ за {latency}мс",
    "narratedError": "Не удалось: {reason}",
    "narratedSeeTranslatedJson": "посмотрите переведенный JSON",
    "narratedSeePipeline": "посмотреть конвейер",
    "advancedSectionTitle": "Расширенный",
    "advancedSectionSubtitle": "Сырой JSON, конвейер и технические инструменты. Всё здесь такое же, как в старых вкладках — просто reorganized.",
    "advancedRawJsonTitle": "Сырой JSON (автоопределение + Monaco)",
    "advancedRawJsonSubtitle": "Вставьте JSON-запрос; формат определяется автоматически.",
    "advancedPipelineTitle": "Промежуточный конвейер OpenAI",
    "advancedPipelineSubtitle": "Визуализируйте каждый шаг перевода (центр и спицы).",
    "advancedStreamTransformTitle": "Потоковый Трансформер (Чат → Ответы SSE)",
    "advancedStreamTransformSubtitle": "Преобразует Chat Completions SSE в Responses API.",
    "advancedTestBenchTitle": "Тестовый стенд (8 сценариев)",
    "advancedTestBenchSubtitle": "Запускает все сценарии и сообщает о прохождении/непрохождении + процент совместимости %.",
    "advancedCompressionTitle": "Предварительный просмотр сжатия",
    "advancedCompressionSubtitle": "Оцените экономию токенов в различных режимах сжатия.",
    "monitorOriginHint": "События, сгенерированные Translate или основным конвейером, появляются здесь в реальном времени.",
    "monitorEmptyCta": "Перейдите на вкладку Перевод и отправьте запрос — он появится здесь.",
    "monitorOpenTranslateButton": "Перейти к переводу",
    "pipelineStepClientRequest": "Запрос клиента",
    "pipelineStepClientRequestDesc": "Запрос получен в формате клиента",
    "pipelineStepFormatDetected": "Формат обнаружен",
    "pipelineStepFormatDetectedDesc": "Автоопределённый формат источника",
    "pipelineStepOpenAIIntermediate": "OpenAI Промежуточный",
    "pipelineStepOpenAIIntermediateDesc": "Переведено в формат OpenAI hub",
    "pipelineStepProviderFormat": "Формат Провайдера",
    "pipelineStepProviderFormatDesc": "Переведено в целевой формат поставщика",
    "pipelineStepProviderResponse": "Ответ Провайдера",
    "pipelineStepProviderResponseDesc": "Потоковый ответ от поставщика",
    "conceptDiagramArrow1": "говорит",
    "conceptDiagramArrow2": "переводит",
    "conceptDiagramArrow3": "конвертирует",
    "conceptDiagramExampleHub": "OpenAI",
    "conceptDiagramHubTooltip": "Промежуточный хаб, используемый переводчиком для преобразования между форматами, которые не имеют прямого соответствия.",
    "conceptDiagramSourceTooltip": "Формат API, с которым работает ваше приложение (например, Anthropic SDK = claude).",
    "conceptDiagramTargetTooltip": "Провайдер, куда фактически будет отправлен запрос."
  },
  "usage": {
    "title": "Использование",
    "loggerTab": "Регистратор",
    "proxyTab": "Прокси",
    "budgetManagement": "Управление бюджетом",
    "budgetSaved": "Ограничения бюджета сохранены.",
    "budgetSaveFailed": "Не удалось сохранить бюджет.",
    "loadingBudgetData": "Загрузка данных бюджета...",
    "noApiKeysTitle": "Нет ключей API",
    "noApiKeysDescription": "Сначала добавьте ключи API, чтобы настроить ограничения бюджета.",
    "apiKey": "API-ключ",
    "todaysSpend": "Сегодняшние расходы",
    "thisMonth": "В этом месяце",
    "setLimits": "Установить ограничения",
    "dailyLimitUsd": "Дневной лимит (доллар США)",
    "monthlyLimitUsd": "Месячный лимит (долл. США)",
    "warningThresholdPercent": "Порог предупреждения (%)",
    "dailyLimitPlaceholder": "например 5.00",
    "monthlyLimitPlaceholder": "например 50.00",
    "warningThresholdPlaceholder": "80",
    "saveLimits": "Сохранить лимиты",
    "budgetOk": "Бюджет в порядке — осталось {remaining}",
    "budgetExceeded": "Бюджет превышен — запросы могут быть заблокированы",
    "totalRequests": "Всего запросов",
    "noDataYet": "Данных пока нет",
    "latency": "Задержка",
    "latencyP50": "стр50",
    "latencyP95": "стр.95",
    "latencyP99": "стр.99",
    "promptCache": "Кэш промптов",
    "systemHealth": "Здоровье системы",
    "entries": "Записи",
    "activeCount": "{count} активен",
    "openCircuitBreakersDetected": "Обнаружены разомкнутые автоматические выключатели",
    "hitRate": "Скорость попадания",
    "hitsMisses": "Попадания/промахи",
    "circuitBreakers": "Автоматические выключатели",
    "lockedIPs": "Заблокированные IP-адреса",
    "lockoutsAutoRefreshHint": "Блокировка ограничения скорости для каждой модели • Автоматическое обновление 10 с.",
    "lockedCount": "{count, plural, one {# заблокирован} few {# заблокировано} many {# заблокировано} other {# заблокировано}}",
    "timeLeft": "{time} осталось",
    "howItWorks": "Как это работает",
    "howItWorksSubtitle": "Узнайте, как оценки подтверждают ваши ответы LLM",
    "define": "Определить",
    "defineStepDescription": "Создавайте тестовые примеры с подсказками для ввода и ожидаемыми критериями вывода, используя такие стратегии, как «содержит», регулярное выражение или точное соответствие.",
    "run": "Запустить",
    "runStepDescription": "Выполняйте тестовые сценарии для конечных точек LLM через OmniRoute. Каждый случай отправляется как реальный запрос API.",
    "evaluate": "Оценить",
    "evaluateStepDescription": "Ответы сравниваются с ожидаемыми критериями. См. «Годен/не годен» для каждого случая с показателями задержки и подробной обратной связью.",
    "evalsStrategyContainsLabel": "Содержит",
    "evalsStrategyExactLabel": "Точное соответствие",
    "evalsStrategyRegexLabel": "Регулярное выражение",
    "evalsStrategyCustomLabel": "Пользовательская Логика",
    "evalsStrategyContainsDescription": "Проверяет, содержит ли вывод LLM ожидаемую подстроку.",
    "evalsStrategyExactDescription": "Проверяет, соответствует ли вывод LLM точно ожидаемому значению.",
    "evalsStrategyRegexDescription": "Проверяет вывод LLM на соответствие шаблону регулярного выражения.",
    "evalsStrategyCustomDescription": "Пользовательская логика оценки (настраивается через JSON).",
    "historyColumnSuiteName": "Имя набора",
    "historyColumnTarget": "Цель",
    "historyColumnPassRate": "Процент Успеха",
    "historyColumnAvgLatencyMs": "Средняя задержка",
    "historyColumnCreatedAt": "Выполнено",
    "evalSuites": "Оценочные пакеты",
    "evalSuitesHint": "Щелкните пакет, чтобы просмотреть тестовые примеры, а затем запустите его для оценки конечных точек LLM.",
    "evalsLoading": "Загрузка тестовых пакетов...",
    "noEvalSuitesFound": "Наборы оценок не найдены",
    "noEvalSuitesDescription": "Наборы оценок можно определить через API или в коде. Они проверяют результаты модели на соответствие ожидаемым результатам, используя такие стратегии, как содержание, регулярное выражение, точное соответствие и пользовательские функции.",
    "columnCase": "Случай",
    "columnStatus": "Статус",
    "columnLatency": "Задержка",
    "columnDetails": "Подробности",
    "columnModel": "Модель",
    "columnStrategy": "Стратегия",
    "columnExpected": "Ожидается",
    "statsSuites": "Наборы",
    "statsTestCases": "Тестовые случаи",
    "statsModels": "Модели",
    "statsCoverage": "Покрытие",
    "statsStrategiesCount": "{count} стратегии",
    "evaluationStrategies": "Стратегии оценки",
    "modelsUnderTest": "Тестируемые модели",
    "searchSuitesPlaceholder": "Поиск наборов...",
    "passSuffix": "успеха",
    "casesCount": "{count, plural, one {# случай} few {# случая} many {# случаев} other {# случая}}",
    "runEval": "Запустить оценку",
    "runAllSuites": "Запустить все",
    "runAllRunning": "Бегу все...",
    "runAllProgress": "Запуск {current}/{total}: {name}",
    "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}",
    "runAllCompleted": "Запущено {suites} комплектов — {passed} пройдено, {failed} не выполнено",
    "runAllCompletedWithFailures": "Запустил {completed} комплектов; {failedSuites} не удалось завершить",
    "runningProgress": "Запуск {current}/{total}...",
    "passRate": "проходной балл",
    "summaryBreakdown": "{passed} пройден · {failed} не пройден · всего {total}",
    "passedIconLabel": "✅ Пройдено",
    "failedIconLabel": "❌ Не удалось",
    "resultPassed": "Пройдено",
    "resultFailed": "Не удалось",
    "expandResult": "Развернуть детали результата",
    "collapseResult": "Свернуть сведения о результате",
    "detailsContains": "Содержит: «{term}»",
    "detailsRegex": "Регулярное выражение: {pattern}",
    "detailsExpected": "Ожидается: \"{expected}\"",
    "expectedOutputLabel": "Ожидаемый результат",
    "noResultsYet": "Пока нет результатов",
    "testCasesCount": "Тестовые примеры ({count})",
    "noTestCasesDefined": "Тестовые примеры не определены",
    "runEvalHint": "Нажмите «Запустить оценку», чтобы выполнить все случаи для вашей конечной точки LLM. Каждый тест отправляет реальный запрос через OmniRoute.",
    "notifyNoTestCases": "Для этого набора тестовых примеров не определено.",
    "notifyAllCasesPassed": "Все случаи {total} пройдены ✅",
    "notifySomeCasesFailed": "{passed}/{total} пройден, {failed} не выполнен",
    "notifyEvalRunFailed": "Оценочный запуск не удался",
    "notifyEvalTitle": "Оценка: {name}",
    "modelEvals": "Модельные оценки",
    "evalsHeroDescription": "Протестируйте и подтвердите свои конечные точки LLM, запустив предварительно определенные пакеты оценки. Каждый пакет содержит тестовые примеры, которые отправляют реальные запросы через OmniRoute и сравнивают ответы с ожидаемыми критериями, что помогает выявлять регрессии, сравнивать модели и обеспечивать качество ответов между поставщиками.",
    "qualityValidation": "Проверка качества",
    "modelComparison": "Сравнение моделей",
    "regressionDetection": "Обнаружение регрессии",
    "latencyBenchmarks": "Тесты задержки",
    "modelLockouts": "Модельные локауты",
    "noLockouts": "Ни одна модель в настоящее время не заблокирована",
    "activeSessions": "Активные сессии",
    "noSessions": "Нет активных сессий",
    "sessionsHint": "Сеансы появляются по мере прохождения запросов через прокси.",
    "sessionsTrackedHint": "Отслеживается с помощью снятия отпечатков пальцев • Автоматическое обновление в течение 5 секунд.",
    "session": "Сессия",
    "age": "Возраст",
    "requests": "Запросы",
    "connection": "Подключение",
    "durationMillisecondsShort": "{value}мс",
    "durationSecondsShort": "{value}с",
    "durationMinutesShort": "{value}м",
    "durationHoursShort": "{value}ч",
    "reasonSeparator": " - ",
    "notAvailableSymbol": "-",
    "providerLimits": "Ограничения поставщика",
    "noProviders": "Ни один провайдер не подключен",
    "connectProvidersForQuota": "Подключайтесь к поставщикам с помощью OAuth, чтобы отслеживать ограничения и использование квот API.",
    "accountsCount": "{count, plural, one {# аккаунт} few {# аккаунта} many {# аккаунтов} other {# аккаунта}}",
    "filteredFromCount": "(отфильтровано из {count})",
    "autoRefresh": "Автообновление",
    "refreshAll": "Обновить все",
    "loadingQuotas": "Загрузка...",
    "account": "Аккаунт",
    "modelQuotas": "Модельные квоты",
    "lastUsed": "Последнее обновление",
    "actions": "Действия",
    "refreshQuota": "Обновить квоту",
    "today": "Сегодня",
    "tomorrow": "Завтра",
    "dayTimeFormat": "{day} — {time}",
    "inDuration": "в {duration}",
    "notApplicable": "Н/Д",
    "rawPlanWithValue": "Необработанный план: {plan}",
    "noPlanFromProvider": "Нет плана от провайдера",
    "noQuotaData": "Нет данных о квотах",
    "cardExpand": "Развернуть",
    "cardCollapse": "Свернуть",
    "moreQuotas": "+{count} еще",
    "ungrouped": "Без группы",
    "viewFlat": "Плоский",
    "viewByEnvironment": "По средам",
    "noQuotaDataAvailable": "Нет данных о квотах",
    "noAccountsForTierFilter": "Аккаунты для фильтра уровня не найдены",
    "tierAll": "Все",
    "tierEnterprise": "Предприятие",
    "tierTeam": "Команда",
    "tierBusiness": "Бизнес",
    "tierUltra": "Ультра",
    "tierPro": "Про",
    "tierPlus": "Плюс",
    "tierFree": "Бесплатно",
    "tierLite": "Лайт",
    "tierUnknown": "Неизвестно",
    "statTotal": "Итого",
    "statCritical": "Критический",
    "statAlert": "Предупреждение",
    "statHealthy": "Здоровый",
    "filterPurchaseTypeLabel": "Тип",
    "filterTierLabel": "Уровень",
    "purchaseAll": "Все",
    "purchaseOauthSub": "Подписка",
    "purchaseOauthFree": "OAuth Бесплатно",
    "purchaseApiKey": "API ключ",
    "creditsLabel": "Кредиты",
    "creditBalanceHint": "Остаток средств",
    "unlimitedLabel": "Безлимитный",
    "refreshing": "Обновление",
    "resetsIn": "Сбросы через",
    "editCutoffs": "Редактировать обрезки",
    "forceRefresh": "Обновить сейчас",
    "suiteBuilderSaveFailed": "Failed to save suite",
    "clone": "Клонировать",
    "exportSuite": "Экспорт",
    "importSuite": "Импорт",
    "suiteExported": "Набор экспортирован",
    "suiteExportFailed": "Не удалось экспортировать пакет.",
    "suiteImportReady": "Импорт пакета загружен на проверку.",
    "suiteImportFailed": "Не удалось импортировать пакет.",
    "suiteImportInvalid": "Неверный JSON пакета оценки.",
    "suiteBuilderCloneSuffix": "копировать",
    "suiteBuilderImportedSuite": "Импортированный люкс",
    "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": "например защита Фибоначчи",
    "suiteBuilderCaseExpectedPlaceholderExact": "Вставьте точный ожидаемый ответ",
    "suiteBuilderCaseExpectedPlaceholderRegex": "например ^\\\\s*\\\\{.*\\\\}\\\\s*$",
    "suiteBuilderCaseExpectedHintRegex": "Используйте регулярное выражение JavaScript без переноса косых черт.",
    "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": "Дублировать",
    "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": "Мин осталось",
    "quotaCutoffsColumnHelp": "Остановите запросы, когда оставшаяся квота упадет до этого процента или ниже.",
    "quotaCutoffsButtonDefault": "По умолчанию",
    "quotaCutoffsButtonHelp": "Измените минимальные оставшиеся ограничения квоты для этого аккаунта.",
    "quotaCutoffsButtonDisabled": "Для этого аккаунта пока нет доступных окон квот.",
    "quotaCutoffsTitle": "Предельные квоты для {name} ({provider})",
    "quotaCutoffsExplainer": "Переопределить минимальный оставшийся процент квоты, при котором эта учетная запись перестанет выбираться для каждого окна квоты. Оставьте пустым, чтобы наследовать значение поставщика по умолчанию.",
    "quotaCutoffsDefaultHint": "Минимальный остаток по умолчанию: {default}%",
    "quotaCutoffsResetAll": "Сбросить все",
    "quotaCutoffsNoWindows": "Для этого аккаунта пока нет доступных окон квот.",
    "quotaThresholdInvalid": "Введите целое число от 0 до 100.",
    "budgetKpiToday": "Сегодня",
    "budgetKpiThisMonth": "В этом месяце",
    "budgetKpiProjEom": "Проект ЭОМ",
    "budgetKpiBlocked": "Заблокировано",
    "budgetKpiAtRisk": "В зоне риска",
    "budgetKpiActiveKeys": "Активные ключи",
    "budgetSearchKeysPlaceholder": "Ключи поиска...",
    "budgetSortPctUsed": "Сортировать: % использовано ↓",
    "budgetSortTodayDollar": "Сортировать: Сегодня $ ↓",
    "budgetSortMonthDollar": "Сортировать: Месяц $ ↓",
    "budgetSortNameAZ": "Сортировка: Имя (A–Z)",
    "budgetColDailyLim": "Ежедневный лимит",
    "budgetColMonthlyLim": "Ежемесячный лимит",
    "budgetColUsedPct": "Использовано %",
    "budgetLoading": "Загрузка…",
    "budgetNoKeysMatch": "Нет ключей, соответствующих фильтрам",
    "budgetLinearExtrapolation": "линейная экстраполяция",
    "budgetThisMonthSoFar": "В этом месяце пока",
    "budgetProjectedEndOfMonth": "Прогнозируемый конец месяца",
    "budgetByProvider": "по провайдеру",
    "budgetDailyDollar": "Ежедневно $",
    "budgetWeeklyDollar": "Еженедельный $",
    "budgetMonthlyDollar": "Ежемесячно $",
    "budgetWarnAtPct": "Предупреждать в %",
    "quotaAlerts": "Оповещения о квотах",
    "quotaTableRefreshing": "⟳ Освежающий...",
    "noSpendLast30Days": "Никаких расходов за последние 30 дней.",
    "updatedShort": "Обновлено",
    "lastRefreshed": "Последнее обновление",
    "providerQuota": "Квота Провайдера",
    "providerQuotaHomeHint": "Живой статус по подключенным аккаунтам"
  },
  "modals": {
    "waitingAuth": "Ожидание авторизации",
    "verificationUrl": "URL-адрес подтверждения",
    "yourCode": "Ваш код",
    "remoteAccess": "Удаленный доступ:",
    "connectedSuccess": "Подключено успешно!",
    "connectionFailed": "Соединение не удалось",
    "chooseAuthMethod": "Выберите метод аутентификации:",
    "awsBuilderId": "Идентификатор строителя AWS",
    "awsIamIdentity": "Центр идентификации AWS IAM",
    "googleAccount": "Аккаунт Google",
    "githubAccount": "Аккаунт GitHub",
    "importToken": "Импортировать токен",
    "pasteToken": "Вставьте токен обновления из Kiro IDE.",
    "awsRegion": "Регион AWS",
    "autoDetecting": "Автоматическое обнаружение токенов...",
    "readingFromCache": "Чтение из кэша AWS SSO",
    "readingFromCursor": "Чтение из базы данных Cursor IDE",
    "initializing": "Инициализация...",
    "pricingConfig": "Конфигурация цен",
    "loadingPricing": "Загрузка данных о ценах...",
    "pricingRatesFormat": "Формат ценообразования",
    "noPricingData": "Нет данных о ценах",
    "noModelsFound": "Модели не найдены"
  },
  "loggers": {
    "allProviders": "Все провайдеры",
    "allModels": "Все модели",
    "allAccounts": "Все аккаунты",
    "allApiKeys": "Все ключи API",
    "allTypes": "Все типы",
    "allLevels": "Все уровни",
    "modelAZ": "Модель А-Я",
    "modelZA": "Модель Z-A",
    "loadingLogs": "Загрузка журналов...",
    "loadingProxyLogs": "Загрузка журналов прокси...",
    "noLogEntries": "Записи журнала не найдены",
    "noPayloadData": "Для этой записи журнала отсутствуют данные полезной нагрузки.",
    "proxyEvent": "Прокси-событие",
    "proxy": "Прокси",
    "level": "Уровень",
    "directNative": "Прямой (родной)",
    "combo": "Комбо",
    "inputTokens": "Я:",
    "outputTokens": "О:"
  },
  "stats": {
    "usageOverview": "Обзор использования",
    "outputTokens": "Выходные токены",
    "totalCost": "Общая стоимость",
    "usageByModel": "Использование по модели",
    "usageByAccount": "Использование по учетной записи",
    "failedToLoad": "Не удалось загрузить статистику использования.",
    "tokenHealth": "Здоровье токена",
    "totalOAuth": "Всего OAuth",
    "healthy": "Здоровый",
    "warning": "Предупреждение",
    "errored": "Ошибка",
    "lastCheck": "Последняя проверка",
    "noData": "Нет данных",
    "share": "Поделиться",
    "unableToLoad": "Невозможно загрузить системные метрики",
    "product": "Продукт",
    "resources": "Ресурсы",
    "company": "Компания"
  },
  "auth": {
    "welcome": "Добро пожаловать",
    "signIn": "Войти",
    "enterPassword": "Введите свой пароль, чтобы продолжить",
    "password": "Пароль",
    "unifiedProxy": "Единый прокси-сервер AI API",
    "unifiedAiApiProxy": "Единый прокси-сервер AI API",
    "unifiedAiApiProxyDesc": "Направляйте запросы к нескольким поставщикам ИИ через одну конечную точку. Встроенные функции балансировки нагрузки, аварийного переключения и отслеживания использования.",
    "passwordNotEnabled": "Защита паролем не включена",
    "loading": "Загрузка...",
    "invalidPassword": "Неверный пароль",
    "errorOccurredRetry": "Произошла ошибка. Пожалуйста, попробуйте еще раз.",
    "configureInstance": "Давайте настроим ваш экземпляр OmniRoute.",
    "runOnboardingWizard": "Запустите мастер регистрации, чтобы настроить пароль и подключить первого поставщика ИИ.",
    "startOnboarding": "Начать регистрацию",
    "secureYourInstance": "Защитите свой экземпляр",
    "setPasswordDescription": "Установите пароль, чтобы защитить свою панель управления и защитить конечные точки API от несанкционированного доступа.",
    "configurePassword": "Настроить пароль",
    "continue": "Продолжить",
    "windowWillClose": "Это окно закроется автоматически...",
    "closeTabNow": "Вы можете закрыть эту вкладку сейчас.",
    "copyUrlManual": "Скопируйте URL-адрес из адресной строки и вставьте его в приложение.",
    "accessDeniedDescription": "У вас нет разрешения на доступ к этому ресурсу. Проверьте свой API-ключ или свяжитесь с администратором.",
    "goToDashboard": "Перейти на панель управления",
    "featureMultiProviderTitle": "Мультипровайдер",
    "featureMultiProviderDesc": "OpenAI, Anthropic, Google и другие",
    "featureLoadBalancingTitle": "Балансировка нагрузки",
    "featureLoadBalancingDesc": "Распределяйте запросы разумно",
    "featureUsageTrackingTitle": "Отслеживание использования",
    "featureUsageTrackingDesc": "Мониторинг затрат и токенов",
    "resetPassword": "Сбросить пароль",
    "resetDescription": "Выберите способ восстановления доступа к панели управления",
    "stopServer": "Остановите сервер OmniRoute.",
    "processing": "Обработка...",
    "pleaseWait": "Пожалуйста, подождите, пока мы завершим авторизацию.",
    "authSuccess": "Авторизация прошла успешно!",
    "copyUrl": "Скопировать этот URL",
    "accessDenied": "Доступ запрещен",
    "methodCliTitle": "Способ 1: сброс CLI",
    "methodCliDescription": "Выполните следующую команду на сервере, где работает OmniRoute:",
    "methodCliHint": "Это предложит вам установить новый пароль. Сначала сервер должен быть остановлен.",
    "methodManualTitle": "Способ 2: Ручной сброс",
    "methodManualDescription": "Удалим пароль из базы данных и установим новый при запуске:",
    "setPasswordInYour": "Установите новый пароль в своем",
    "fileLabelSuffix": "файл:",
    "newPasswordPlaceholder": "ваш_новый_пароль",
    "deleteSettingsFile": "Удалить",
    "orRemovePasswordHashField": "или удалите поле пароляHash",
    "restartServerWithNewPassword": "Перезагрузите сервер - он будет использовать новый пароль.",
    "backToLogin": "Вернуться к входу",
    "forgotPassword": "Забыли пароль?",
    "defaultPasswordHint": "Пароль по умолчанию: CHANGEME (если не задан INITIAL_PASSWORD)",
    "Authorization": "Авторизация",
    "Content-Disposition": "Содержание-Расположение",
    "waitingForAuthorization": "Ожидание авторизации...",
    "waitingForGoogleAuthorization": "Ожидание авторизации Google...",
    "waitingForOpenAIAuthorization": "Ожидание авторизации OpenAI...",
    "waitingForAntigravityAuthorization": "Ожидание авторизации Antigravity...",
    "waitingForQoderAuthorization": "Ожидание авторизации Qoder...",
    "exchangingCodeForTokens": "Обмен кода на токены...",
    "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": "ОмниРоут",
    "navigateHome": "Перейти домой",
    "toggleMenu": "Переключить меню",
    "featuresLink": "Особенности",
    "docsLink": "Документы",
    "github": "GitHub",
    "versionLive": "v1.0 уже доступен",
    "oneEndpoint": "Одна конечная точка для",
    "allProviders": "Все поставщики ИИ",
    "heroDescription": "Прокси-сервер конечной точки AI с веб-панелью — порт CLIProxyAPI на JavaScript. Беспрепятственно работает с Claude Code, OpenAI Codex, Cline, RooCode и другими инструментами CLI.",
    "getStarted": "Начать",
    "viewOnGithub": "Посмотреть на GitHub",
    "powerfulFeatures": "Мощные функции",
    "featuresSubtitle": "Все, что вам нужно для управления инфраструктурой искусственного интеллекта, собрано в одном месте и рассчитано на масштабирование.",
    "featureUnifiedEndpointTitle": "Единая конечная точка",
    "featureUnifiedEndpointDesc": "Доступ ко всем поставщикам через единый стандартный URL-адрес API.",
    "featureEasySetupTitle": "Простая настройка",
    "featureEasySetupDesc": "Приступайте к работе за считанные минуты с помощью команды npx.",
    "featureModelFallbackTitle": "Резервная модель",
    "featureModelFallbackDesc": "Автоматически переключайте поставщиков в случае сбоя или высокой задержки.",
    "featureUsageTrackingTitle": "Отслеживание использования",
    "featureUsageTrackingDesc": "Подробная аналитика и мониторинг затрат по всем моделям.",
    "featureOAuthApiKeysTitle": "OAuth и ключи API",
    "featureOAuthApiKeysDesc": "Безопасно управляйте учетными данными в одном хранилище.",
    "featureCloudSyncTitle": "Облачная синхронизация",
    "featureCloudSyncDesc": "Мгновенно синхронизируйте свои конфигурации между устройствами.",
    "featureCliSupportTitle": "Поддержка интерфейса командной строки",
    "featureCliSupportDesc": "Работает с Claude Code, Codex, Cline, Cursor и другими.",
    "featureDashboardTitle": "Панель управления",
    "featureDashboardDesc": "Визуальная панель для анализа трафика в реальном времени.",
    "howItWorks": "Как работает OmniRoute",
    "howItWorksDescription": "Данные беспрепятственно передаются из вашего приложения через наш уровень интеллектуальной маршрутизации к лучшему поставщику для выполнения этой работы.",
    "howItWorksStep1Title": "1. Интерфейс командной строки и SDK",
    "howItWorksStep1Description": "Ваши запросы начинаются с ваших любимых инструментов или нашего единого SDK. Просто измените базовый URL.",
    "howItWorksStep2Title": "2. Хаб OmniRoute",
    "howItWorksStep2Description": "Наш механизм анализирует приглашение, проверяет работоспособность провайдера и маршрутизирует с наименьшей задержкой или стоимостью.",
    "howItWorksStep3Title": "3. Поставщики ИИ",
    "howItWorksStep3Description": "Запрос мгновенно выполняется OpenAI, Anthropic, Gemini или другими.",
    "getStartedIn30Seconds": "Начните за 30 секунд",
    "getStartedDescription": "Установите OmniRoute, настройте своих провайдеров через веб-панель и начните маршрутизировать запросы AI.",
    "installOmniRoute": "Установите OmniRoute",
    "installStepDescription": "Запустите команду npx, чтобы мгновенно запустить сервер.",
    "openDashboard": "Открыть панель управления",
    "openDashboardStepDescription": "Настройка поставщиков и ключей API через веб-интерфейс",
    "routeRequests": "Запросы маршрутов",
    "routeRequestsStepDescription": "Направьте свои инструменты CLI на {endpoint}.",
    "terminal": "терминал",
    "copy": "Копировать",
    "copied": "✓ Скопировано",
    "startingOmniRoute": "Запускаем OmniRoute...",
    "serverRunningOnLabel": "Сервер работает на",
    "dashboardLabel": "Панель управления",
    "readyToRoute": "Готов к маршруту! ✓",
    "configureProvidersNote": "📝 Настройте поставщиков на панели управления или используйте переменные среды.",
    "dataLocation": "Местоположение данных:",
    "dataLocationMacLinux": " macOS/Линукс:",
    "dataLocationWindows": " Окна:",
    "product": "Продукт",
    "dashboardLink": "Панель управления",
    "changelog": "Журнал изменений",
    "resources": "Ресурсы",
    "documentation": "Документация",
    "npm": "НПМ",
    "legal": "Юридический",
    "mitLicense": "Лицензия MIT",
    "footerTagline": "Единая конечная точка для создания ИИ. С легкостью подключайтесь, маршрутизируйте и управляйте своими поставщиками ИИ.",
    "copyright": "© {year} OmniRoute. Все права защищены.",
    "flowToolClaudeCode": "Клод Код",
    "flowToolOpenAICodex": "Кодекс OpenAI",
    "flowToolCline": "Клайн",
    "flowToolCursor": "Курсор",
    "flowProviderOpenAI": "ОпенАИ",
    "flowProviderAnthropic": "антропный",
    "flowProviderGemini": "Близнецы",
    "flowProviderGithubCopilot": "GitHub второй пилот",
    "interactiveDiagram": "Интерактивная диаграмма видна на рабочем столе",
    "ctaTitle": "Готовы упростить свою инфраструктуру искусственного интеллекта?",
    "ctaDescription": "Присоединяйтесь к разработчикам, которые оптимизируют интеграцию искусственного интеллекта с помощью OmniRoute. Открытый исходный код и бесплатный запуск.",
    "startFree": "Начать бесплатно",
    "readDocumentation": "Читать документацию"
  },
  "docs": {
    "title": "Документация",
    "quickStart": "Быстрый старт",
    "deploymentGuides": "Руководства по развертыванию",
    "features": "Особенности",
    "supportedProviders": "Поддерживаемые провайдеры",
    "supportedProvidersToc": "Провайдеры",
    "commonUseCases": "Общие случаи использования",
    "clientCompatibility": "Совместимость клиентов",
    "protocolsToc": "Протоколы",
    "apiReference": "Справочник по API",
    "managementApiReference": "Справочник Management API",
    "managementApiDescription": "Эндпоинты автоматизации для реестра прокси, назначения скоупов и миграции устаревших прокси.",
    "method": "Метод",
    "path": "Путь",
    "notes": "Примечания",
    "modelPrefixes": "Префиксы моделей",
    "prefix": "Префикс",
    "troubleshooting": "Устранение неполадок",
    "supportsChat": "Поддерживает конечные точки чата и ответов.",
    "oauthAutoRefresh": "Соединение OAuth с автоматическим обновлением токена.",
    "fullStreaming": "Полная поддержка потоковой передачи для всех моделей.",
    "docsLabel": "Документы",
    "docsHeroDescription": "AI-шлюз для LLM с несколькими поставщиками. Одна конечная точка для OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor и еще более 20 провайдеров.",
    "openDashboard": "Открыть панель управления",
    "endpointPage": "Страница конечной точки",
    "github": "GitHub",
    "reportIssue": "Сообщить о проблеме",
    "onThisPage": "На этой странице",
    "documentationVersion": "Документация — v{version}",
    "quickStartStep1Title": "1. Установите и запустите",
    "quickStartStep1Prefix": "Запустите",
    "quickStartStep1Middle": "или клонируйте с GitHub и запустите",
    "quickStartStep2Title": "2. Создайте ключ API.",
    "quickStartStep2Text": "Перейдите в раздел «Конечная точка API» → «Зарегистрированные ключи». Создайте один ключ для каждой среды.",
    "quickStartStep3Title": "3. Подключите провайдеров",
    "quickStartStep3Text": "Добавляйте учетные записи поставщиков с помощью входа в систему OAuth, ключа API или автоматического подключения на бесплатном уровне.",
    "quickStartStep4Title": "4. Установите URL-адрес клиентской базы.",
    "quickStartStep4Prefix": "Направьте свой клиент IDE или API на",
    "quickStartStep4Suffix": "Используйте префикс провайдера, например",
    "deploySetupTitle": "Руководство по установке",
    "deploySetupText": "Пошаговая установка, настройка среды и пошаговое руководство по первому запуску OmniRoute.",
    "deployElectronTitle": "Электронный рабочий стол",
    "deployElectronText": "Запускайте OmniRoute как собственное настольное приложение в Windows, macOS и Linux.",
    "deployDockerTitle": "Докер",
    "deployDockerText": "Контейнерное развертывание с помощью Docker Compose; готов к использованию производственных стеков и Kubernetes.",
    "deployVmTitle": "Виртуальная машина",
    "deployVmText": "Самостоятельное размещение на любой виртуальной машине Linux. Включает модуль systemd, ротацию журналов и инструменты резервного копирования.",
    "deployFlyTitle": "Fly.io",
    "deployFlyText": "Развертывание в среде выполнения Fly.io Edge с помощью одного файла Fly.toml и одной команды развертывания.",
    "deployPwaTitle": "ПВА",
    "deployPwaText": "Установите OmniRoute как прогрессивное веб-приложение в браузерах Android, iOS и настольных ПК.",
    "deployTermuxTitle": "Termux (Android)",
    "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.",
    "featureRoutingTitle": "Маршрутизация между несколькими провайдерами",
    "featureRoutingText": "Направляйте запросы более чем 30 поставщикам ИИ через единую конечную точку, совместимую с OpenAI. Поддерживает API чата, ответов, аудио и изображений.",
    "featureCombosTitle": "Комбинации и балансировка",
    "featureCombosText": "Создавайте комбинации моделей с резервными цепочками и стратегиями балансировки: циклическим, приоритетным, случайным, наименее используемым и оптимизированным по затратам.",
    "featureUsageTitle": "Отслеживание использования и затрат",
    "featureUsageText": "Подсчет токенов в реальном времени, расчет стоимости для каждого поставщика/модели и подробная разбивка использования по ключам API и учетным записям.",
    "featureAnalyticsTitle": "Аналитическая панель",
    "featureAnalyticsText": "Визуальная аналитика с диаграммами запросов, токенов, ошибок, задержек, затрат и популярности модели с течением времени.",
    "featureHealthTitle": "Мониторинг здоровья",
    "featureHealthText": "Проверки работоспособности в реальном времени, статус поставщика услуг, состояния автоматических выключателей и автоматическое определение ограничения скорости с экспоненциальным замедлением.",
    "featureCliTitle": "Инструменты интерфейса командной строки",
    "featureCliText": "Управляйте конфигурациями IDE, экспортируйте/импортируйте резервные копии, находите профили кодекса и настраивайте параметры с панели управления.",
    "featureSecurityTitle": "Безопасность и политики",
    "featureSecurityText": "Аутентификация по ключу API, фильтрация IP-адресов, защита от внедрения подсказок, политики домена, управление сеансами и ведение журнала аудита.",
    "featureCloudSyncTitle": "Облачная синхронизация",
    "featureCloudSyncText": "Синхронизируйте свою конфигурацию с Cloudflare Workers для удаленного доступа с зашифрованными учетными данными и автоматического переключения при сбое.",
    "providersAcrossConnectionTypes": "Поставщики {count} для трех типов подключения.",
    "manageProviders": "Управление поставщиками",
    "providersCount": "{count} поставщиков",
    "providerTypeFree": "Уровень бесплатного пользования",
    "providerTypeOAuth": "OAuth",
    "providerTypeApiKey": "API-ключ",
    "useCaseSingleEndpointTitle": "Единая конечная точка для многих провайдеров",
    "useCaseSingleEndpointText": "Направьте клиентов на один базовый URL-адрес и выполните маршрутизацию по префиксу модели (например: gh/, cc/, kr/, openai/).",
    "useCaseFallbackTitle": "Откат и переключение модели с помощью комбинаций",
    "useCaseFallbackText": "Создавайте комбинированные модели в Dashboard и сохраняйте стабильную конфигурацию клиента, пока поставщики меняются внутри компании.",
    "useCaseUsageVisibilityTitle": "Видимость использования, стоимости и отладки",
    "useCaseUsageVisibilityText": "Отслеживайте токены и стоимость по поставщикам, учетным записям и ключам API на вкладках «Использование» и «Аналитика».",
    "clientCherryStudioTitle": "Черри Студия",
    "baseUrlLabel": "Базовый URL",
    "chatEndpointLabel": "Конечная точка чата",
    "modelRecommendationLabel": "Рекомендация модели: явный префикс",
    "clientCodexTitle": "Модели второго пилотного проекта Codex/GitHub",
    "clientCodexBullet1": "Используйте идентификаторы моделей с",
    "clientCodexBullet2": "Модели семейства Codex автоматически перенаправляются к",
    "clientCodexBullet3": "Модели, не относящиеся к Кодексу, продолжают действовать",
    "clientCursorTitle": "Курсор IDE",
    "clientCursorBullet1": "Использование",
    "clientCursorBullet1Suffix": "префикс для моделей Cursor.",
    "clientCursorBullet2": "Соединение OAuth — вход со страницы «Провайдеры».",
    "clientClaudeTitle": "Клод Код / Антигравитация",
    "clientClaudeBullet1Prefix": "Использование",
    "clientClaudeBullet1Middle": "(Клод) или",
    "clientClaudeBullet1Suffix": "(Антигравитация) приставка.",
    "clientWindsurfTitle": "Виндсерфинг",
    "clientWindsurfBullet1": "Используйте OmniRoute в качестве базового URL-адреса, совместимого с OpenAI, и сохраняйте явные префиксы поставщика для детерминированной маршрутизации.",
    "clientWindsurfBullet2": "Направьте модели на `/v1/chat/completions` для общего трафика и сохраните `/v1/responses` для потоков в стиле Кодекса.",
    "clientWindsurfBullet3": "Используйте Dashboard -> CLI Tools для получения готового руководства по настройке Windsurf.",
    "clientClineTitle": "Клайн",
    "clientClineBullet1": "Cline лучше всего работает с явными префиксами поставщика/модели, поэтому маршрутизатору никогда не придется угадывать серверную часть.",
    "clientClineBullet2": "Используйте `/v1/chat/completions` для общих моделей и повторно используйте один и тот же базовый URL-адрес OmniRoute для разных учетных записей.",
    "clientClineBullet3": "Используйте панель поставщиков для проверки ключа OAuth/API перед устранением проблем во время выполнения Cline.",
    "clientKimiTitle": "Кими Кодинг",
    "clientKimiBullet1": "Используйте OmniRoute в качестве стабильного базового URL-адреса при ротации учетных записей или комбинаций поставщиков под ним.",
    "clientKimiBullet2": "Отдавайте предпочтение моделям с префиксами в потоках кодирования, чтобы резервный вариант и контрольный журнал оставались явными.",
    "clientKimiBullet3": "Используйте `/v1/responses`, если вам нужна собственная маршрутизация в стиле ответов для клиентов, использующих инструменты.",
    "protocolsTitle": "Протоколы: MCP и A2A",
    "protocolsDescription": "OmniRoute предоставляет два операционных протокола помимо OpenAI-совместимых API: MCP для выполнения инструментов и A2A для рабочих процессов агент-к-агенту.",
    "protocolMcpTitle": "MCP (Model Context Protocol)",
    "protocolMcpDesc": "Используйте MCP через stdio, чтобы клиенты могли находить и вызывать инструменты OmniRoute с аудитом.",
    "protocolMcpStep1": "Запустите MCP-транспорт через `omniroute --mcp`.",
    "protocolMcpStep2": "Укажите MCP-клиенту stdio-транспорт.",
    "protocolMcpStep3": "Вызывайте `omniroute_get_health` и `omniroute_list_combos`, чтобы проверить подключение.",
    "protocolA2aTitle": "A2A (Agent2Agent)",
    "protocolA2aDesc": "Используйте A2A JSON-RPC для отправки задач синхронно или через SSE-поток.",
    "protocolA2aStep1": "Прочитайте `/.well-known/agent.json` для обнаружения агента.",
    "protocolA2aStep2": "Отправляйте `message/send` или `message/stream` запросы на `POST /a2a`.",
    "protocolA2aStep3": "Управляйте жизненным циклом задачи с помощью `tasks/get` и `tasks/cancel`.",
    "protocolTroubleshootingTitle": "Диагностика протоколов",
    "protocolTroubleshooting1": "Если статус MCP offline, проверьте, что stdio-процесс запущен и файл heartbeat обновляется.",
    "protocolTroubleshooting2": "Если задачи A2A зависают в `working`, проверьте `/api/a2a/tasks/:id` и поток событий на финальное состояние.",
    "protocolTroubleshooting3": "Используйте `/dashboard/mcp` и `/dashboard/a2a` для операционного управления и аудита.",
    "endpointChatNote": "Конечная точка чата, совместимая с OpenAI (по умолчанию).",
    "endpointResponsesNote": "Конечная точка API ответов (Кодекс, серия o).",
    "endpointModelsNote": "Каталог моделей для всех подключенных провайдеров.",
    "endpointAudioNote": "Транскрипция аудио (Deepgram, AssemblyAI).",
    "endpointSpeechNote": "Генерация речи из текста (ElevenLabs, OpenAI TTS).",
    "endpointEmbeddingsNote": "Генерация текстовых эмбеддингов (OpenAI, Cohere, Voyage).",
    "endpointImagesNote": "Генерация изображений (NanoBanana).",
    "endpointRewriteChatNote": "Переписать помощник для клиентов без /v1.",
    "endpointRewriteResponsesNote": "Переписать помощник для ответов без /v1.",
    "endpointRewriteModelsNote": "Переписать помощник для обнаружения моделей без /v1.",
    "mgmtProxiesListNote": "Список сохранённых элементов реестра прокси (поддерживает пагинацию).",
    "mgmtProxiesCreateNote": "Создайте переиспользуемый элемент прокси в реестре.",
    "mgmtProxiesHealthNote": "Получайте 24-часовые/скользящие метрики здоровья по каждому сохранённому прокси из журналов прокси.",
    "mgmtProxiesBulkAssignNote": "Назначайте или очищайте один прокси сразу для многих scope ID за один запрос.",
    "mgmtAssignmentsListNote": "Список назначений прокси по scope, scope_id или proxy_id.",
    "mgmtAssignmentsUpdateNote": "Назначайте или очищайте прокси для глобального/поставщика/аккаунта/комбо scope.",
    "mgmtLegacyMigrationNote": "Импортируйте старые карты proxyConfig в назначения реестра.",
    "modelPrefixesDescriptionStart": "Используйте префикс поставщика перед названием модели для маршрутизации к определенному поставщику. Пример:",
    "modelPrefixesDescriptionEnd": "маршруты к GitHub Copilot.",
    "provider": "Поставщик",
    "type": "Тип",
    "troubleshootingModelRouting": "Если клиенту не удается выполнить маршрутизацию модели, используйте явный поставщик/модель (например: gh/gpt-5.1-codex).",
    "troubleshootingAmbiguousModels": "Если вы получаете неоднозначные ошибки модели, выберите префикс поставщика вместо простого идентификатора модели.",
    "troubleshootingCodexFamily": "Для моделей семейства GitHub Codex сохраните модель как gh/codex-model; Маршрутизатор выбирает / отвечает автоматически.",
    "troubleshootingTestConnection": "Используйте «Панель мониторинга» > «Поставщики» > «Проверить соединение» перед тестированием из IDE или внешних клиентов.",
    "troubleshootingCircuitBreaker": "Если поставщик услуг показывает, что автоматический выключатель разомкнут, дождитесь охлаждения или посетите страницу «Здоровье» для получения подробной информации.",
    "troubleshootingOAuth": "Для поставщиков OAuth выполните повторную аутентификацию, если срок действия токенов истечет. Проверьте индикатор состояния карты провайдера.",
    "endpointCompletionsNote": "Устаревшая конечная точка завершения для генерации текста.",
    "endpointModerationsNote": "Модерация контента и классификация безопасности.",
    "endpointRerankNote": "Изменение ранжирования документов для генерации с расширенным поиском (Cohere, Jina).",
    "endpointSearchNote": "Поиск в Интернете с 5 провайдерами (Serper, Brave, Exa, Tavily, Perplexity).",
    "endpointSearchAnalyticsNote": "Аналитика и метрики по поисковым запросам.",
    "endpointVideoNote": "Генерация видео (рабочие процессы ComfyUI, SD WebUI).",
    "endpointMusicNote": "Генерация музыки с помощью рабочих процессов ComfyUI.",
    "endpointMessagesNote": "Конечная точка антропных сообщений.",
    "endpointCountTokensNote": "Подсчитайте токены для заданной полезной нагрузки сообщения.",
    "endpointFilesNote": "Загрузка файлов для мультимодальных входов.",
    "endpointBatchesNote": "Пакетная обработка массовых запросов API.",
    "endpointWsNote": "Конечная точка WebSocket для потоковой передачи в реальном времени.",
    "mgmtProvidersListNote": "Список всех зарегистрированных подключений провайдера.",
    "mgmtProvidersCreateNote": "Создайте новое соединение с провайдером.",
    "mgmtProvidersUpdateNote": "Обновите существующее соединение с провайдером.",
    "mgmtProvidersDeleteNote": "Удалить подключение к провайдеру.",
    "mgmtProvidersTestNote": "Проверьте подключение и аутентификацию провайдера.",
    "mgmtProvidersModelsNote": "Список доступных моделей для конкретного поставщика.",
    "mgmtSettingsGetNote": "Получить текущие настройки приложения.",
    "mgmtSettingsUpdateNote": "Обновите настройки приложения.",
    "mgmtPayloadRulesGetNote": "Получите правила преобразования полезной нагрузки.",
    "mgmtPayloadRulesUpdateNote": "Обновите правила преобразования полезных данных.",
    "mcpToolsTitle": "Инструменты MCP",
    "mcpToolsDescription": "OmniRoute предоставляет инструменты {count} через протокол контекста модели для оркестровки агентов.",
    "mcpToolsCount": "{count} инструменты",
    "mcpToolsToc": "Инструменты MCP",
    "mcpToolsRoutingTitle": "Маршрутизация и обнаружение",
    "mcpToolsRoutingDesc": "Проверки работоспособности, управление комбинациями, мониторинг квот, отчеты о затратах и доступ к каталогу моделей.",
    "mcpToolsOperationsTitle": "Операции и стратегия",
    "mcpToolsOperationsDesc": "Моделирование маршрутов, защита бюджета, переключение стратегий, профили устойчивости и показатели поставщиков.",
    "mcpToolsCacheTitle": "Управление кэшем",
    "mcpToolsCacheDesc": "Просматривайте статистику кэша и очищайте семантический кэш или кэш сигнатур.",
    "mcpToolsCompressionTitle": "Двигатели сжатия",
    "mcpToolsCompressionDesc": "Настройте сжатие RTK/Brotli, замените механизмы и проверьте аналитику сжатия с помощью комбинации.",
    "mcpToolsOneProxyTitle": "1Прокси/Туннели",
    "mcpToolsOneProxyDesc": "Управляйте исходящими прокси-серверами, меняйте резидентные IP-адреса и проверяйте работоспособность прокси-серверов.",
    "mcpToolsMemoryTitle": "Память",
    "mcpToolsMemoryDesc": "Ищите, добавляйте и очищайте постоянные записи разговорной памяти.",
    "mcpToolsSkillsTitle": "Навыки",
    "mcpToolsSkillsDesc": "Составляйте список, включайте, выполняйте и отслеживайте выполнение пользовательских навыков.",
    "featureAutoComboTitle": "Авто-Комбо",
    "featureAutoComboText": "Автоматически создавайте оптимизированные комбинации на основе подключенных провайдеров, моделей использования и возможностей модели.",
    "featureSearchTitle": "Веб-поиск",
    "featureSearchText": "Интегрированный веб-поиск с 5 поставщиками (Serper, Brave, Exa, Tavily, Perplexity), включая аналитику и отслеживание затрат.",
    "featureMemoryTitle": "Система памяти",
    "featureMemoryText": "Постоянная разговорная память с извлечением, внедрением, извлечением и обобщением между сеансами.",
    "featureSkillsTitle": "Рамка навыков",
    "featureSkillsText": "Расширяемая система навыков со встроенными и настраиваемыми навыками, выполнением в песочнице, перехватом запросов и внедрением контекста.",
    "featureAcpTitle": "Агентская связь",
    "featureAcpText": "Реестр протокола связи агентов (ACP) для управления рабочими процессами между агентами и оркестрации инструментов.",
    "protocolAcpTitle": "ACP (агентская связь)",
    "protocolAcpDesc": "Регистрируйте агентов и управляйте ими через реестр ACP для межагентского взаимодействия и совместного использования инструментов.",
    "protocolAcpStep1": "Перейдите в «Панель управления» → «Агенты», чтобы просмотреть зарегистрированных агентов ACP.",
    "protocolAcpStep2": "Зарегистрируйте новых агентов с возможностями и конфигурацией конечной точки.",
    "protocolAcpStep3": "Используйте инструменты CLI для настройки каналов связи агента."
  },
  "legal": {
    "privacyPolicy": "Политика конфиденциальности",
    "termsOfService": "Условия использования",
    "providerConfigurations": "Конфигурации провайдера",
    "apiKeys": "Ключи API",
    "usageLogs": "Журналы использования",
    "applicationSettings": "Настройки приложения",
    "viewExportAnalytics": "Просмотр и экспорт аналитики использования",
    "clearHistory": "Очистить историю использования в любое время",
    "configureRetention": "Настройка политик хранения журналов",
    "backupRestore": "Резервное копирование и восстановление базы данных",
    "privacyMetadataTitle": "Политика конфиденциальности | ОмниРоут",
    "privacyMetadataDescription": "Политика конфиденциальности для прокси-маршрутизатора OmniRoute AI API.",
    "termsMetadataTitle": "Условия обслуживания | ОмниРоут",
    "termsMetadataDescription": "Условия использования прокси-маршрутизатора OmniRoute AI API.",
    "backToHome": "Вернуться домой",
    "lastUpdated": "Последнее обновление: {date}.",
    "policyLastUpdatedDate": "13 февраля 2026 г.",
    "listSeparator": "•",
    "questionsVisit": "Вопросы? Посетите наш",
    "githubRepository": "Репозиторий GitHub",
    "privacySection1Title": "1. Архитектура, ориентированная на локальность",
    "privacySection1Text": "OmniRoute спроектирован как локальное приложение. Вся обработка и хранение данных происходит полностью на вашем компьютере. Не существует централизованного сервера, собирающего вашу информацию.",
    "privacySection2Title": "2. Данные, которые мы храним",
    "privacyDataStoredIn": "Следующие данные хранятся локально в",
    "privacyDataProviderConfigurationsDesc": "URL-адреса подключения, типы провайдеров и настройки приоритета",
    "privacyDataApiKeysDesc": "шифруется и хранится локально для аутентификации у поставщиков ИИ.",
    "privacyDataUsageLogsDesc": "количество запросов, использование токенов, названия моделей, временные метки и время ответа.",
    "privacyDataApplicationSettingsDesc": "настройки темы, стратегия маршрутизации и комбинированные конфигурации",
    "privacySection3Title": "3. Нет телеметрии",
    "privacySection3Text": "OmniRoute не собирает телеметрию, аналитику или отчеты о сбоях. Никакие данные не передаются нам или третьим лицам. Ваши шаблоны использования, вызовы API и конфигурации остаются полностью конфиденциальными.",
    "privacySection4Title": "4. Сторонние поставщики ИИ",
    "privacySection4Text": "Когда вы выполняете вызовы API через OmniRoute, ваши запросы перенаправляются настроенным вами поставщикам искусственного интеллекта (например: OpenAI, Anthropic, Google). У этих провайдеров есть свои собственные политики конфиденциальности, которые определяют, как они обрабатывают ваши данные. Пожалуйста, просмотрите:",
    "privacyOpenAiPolicy": "Политика конфиденциальности OpenAI",
    "privacyAnthropicPolicy": "Антропная политика конфиденциальности",
    "privacyGooglePolicy": "Политика конфиденциальности Google",
    "privacySection5Title": "5. Облачная синхронизация (необязательно)",
    "privacySection5Text": "Если вы включите дополнительную функцию облачной синхронизации, конфигурации поставщика и ключи API могут быть переданы в настроенную конечную точку облака. Эта функция отключена по умолчанию и требует явного согласия.",
    "privacySection6Title": "6. Ведение журнала",
    "privacyLoggingIntro": "Журналы запросов можно настроить через настройки панели управления. Вы можете:",
    "privacySection7Title": "7. Ваши права",
    "privacySection7TextStart": "Поскольку все данные хранятся локально, у вас есть полный контроль. Вы можете удалить свои данные в любое время, удалив",
    "privacySection7TextEnd": "каталог или с помощью функций резервного копирования и восстановления базы данных на панели управления.",
    "termsSection1Title": "1. Обзор",
    "termsSection1Text": "OmniRoute — это локальный прокси-маршрутизатор AI API, который полностью работает на вашем компьютере. Он направляет запросы нескольким поставщикам искусственного интеллекта с балансировкой нагрузки, аварийным переключением и отслеживанием использования.",
    "termsSection2Title": "2. Обязанности пользователя",
    "termsResponsibilityApiKeys": "Вы несете единоличную ответственность за управление своими собственными ключами API и учетными данными для сторонних поставщиков ИИ (OpenAI, Anthropic, Google и т. д.).",
    "termsResponsibilityCompliance": "Вы должны соблюдать условия обслуживания каждого поставщика ИИ, к API которого вы получаете доступ через OmniRoute.",
    "termsResponsibilitySecurity": "Вы несете ответственность за безопасность вашей локальной установки OmniRoute, включая установку пароля и ограничение доступа к сети.",
    "termsSection3Title": "3. Как это работает",
    "termsSection3Text": "OmniRoute действует как промежуточный прокси. Вызовы API, отправленные в OmniRoute, преобразуются и пересылаются настроенным вами поставщикам искусственного интеллекта. OmniRoute не изменяет содержимое ваших запросов или ответов за пределами необходимой трансляции протокола.",
    "termsSection4Title": "4. Обработка данных",
    "termsDataStoredLocally": "Все данные хранятся локально на вашем компьютере в базе данных SQLite.",
    "termsNoTransmission": "OmniRoute не передает данные на внешние серверы, если вы явно не включили функции облачной синхронизации.",
    "termsDataLocationText": "Журналы использования, ключи API и конфигурация хранятся в",
    "termsSection5Title": "5. Отказ от ответственности",
    "termsSection5Text": "OmniRoute предоставляется «как есть» без каких-либо гарантий. Мы не несем ответственности за любые расходы, понесенные в результате использования API, перебоев в обслуживании или потери данных. Всегда сохраняйте резервные копии вашей конфигурации.",
    "termsSection6Title": "6. Открытый исходный код",
    "termsSection6Text": "OmniRoute — это программное обеспечение с открытым исходным кодом. Вы можете свободно просматривать, изменять и распространять его в соответствии с условиями лицензии."
  },
  "agents": {
    "title": "CLI-агенты",
    "description": "Находите установленные CLI-агенты в системе. Добавляйте пользовательские агенты для автоматического обнаружения.",
    "refresh": "Обновить",
    "installed": "Установлено",
    "notFound": "Не найдено",
    "builtIn": "Встроенный",
    "custom": "Пользовательский",
    "remove": "Удалить",
    "addCustomAgent": "Добавить пользовательский агент",
    "addCustomAgentDesc": "Зарегистрируйте любой CLI-инструмент для обнаружения. Он будет автоматически сканироваться при обновлении.",
    "agentName": "Имя агента",
    "binaryName": "Имя бинарника",
    "versionCommand": "Команда версии",
    "spawnArgs": "Аргументы запуска",
    "addAgent": "Добавить агента",
    "scanning": "Сканирование системы на наличие CLI-агентов...",
    "opencodeIntegration": "Интеграция OpenCode",
    "opencodeDetected": "обнаружен opencode {version}",
    "opencodeDesc": "Сгенерируйте готовый к использованию {configFile} с базовым URL OmniRoute и всеми доступными моделями - просто положите его в корень проекта и запустите {command}.",
    "downloadConfig": "Скачать {file}",
    "downloaded": "Скачано!",
    "setupGuideTitle": "Руководство по настройке",
    "openCliTools": "Открыть CLI-инструменты",
    "setupGuideDetectCliTitle": "Обнаружение установленных CLI",
    "setupGuideDetectCliDesc": "Нажмите «Обновить» после установки или обновления CLI, чтобы OmniRoute заново просканировал бинарники и версии.",
    "setupGuideCustomAgentTitle": "Регистрация пользовательского бинарника",
    "setupGuideCustomAgentDesc": "Используйте «Добавить пользовательский агент», если ваш CLI отсутствует в встроенном списке. Укажите имя бинарника и команду версии.",
    "setupGuideCommandMissingTitle": "Исправить 'command not found'",
    "setupGuideCommandMissingDesc": "Убедитесь, что команда CLI есть в PATH, откройте новый терминал и снова нажмите «Обновить».",
    "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": "Инструменты CLI и целевые агенты — в чем разница?",
    "comparisonCliToolsLabel": "Страница инструментов CLI",
    "comparisonCliToolsTitle": "Ваша IDE отправляет запросы через OmniRoute.",
    "comparisonCliToolsDesc": "Настройте Claude Code, Codex, Cursor и другие IDE для использования OmniRoute в качестве базового URL-адреса API. OmniRoute действует как прокси-сервер, направляя запросы настроенным вами поставщикам.",
    "comparisonAgentsLabel": "Эта страница (Цели агента)",
    "comparisonAgentsTitle": "OmniRoute отправляет запросы в локальные инструменты CLI",
    "comparisonAgentsDesc": "OmniRoute может создавать локальные двоичные файлы CLI (claude, codex, goose) в качестве серверов выполнения. Инструмент CLI обрабатывает запрос, используя собственную аутентификацию, и возвращает результат.",
    "comparisonSummary": "Вкратце: Инструменты CLI = вы настраиваете инструменты для указания на OmniRoute. Цели агента = OmniRoute использует инструменты в качестве конечных точек.",
    "agentUseCaseHint": "Может использоваться в качестве цели выполнения через протокол ACP.",
    "flowDiagramClient": "Клиентское приложение",
    "flowDiagramClientDesc": "SDK, API или вышестоящий сервис",
    "flowDiagramOmniRoute": "ОмниРоут",
    "flowDiagramOmniRouteDesc": "Получает запрос и выбирает цель",
    "flowDiagramSpawn": "Процесс появления",
    "flowDiagramSpawnDesc": "Запускает двоичный файл CLI через stdio",
    "flowDiagramCli": "Агент командной строки",
    "flowDiagramCliDesc": "Процессы с собственной авторизацией/моделью",
    "fingerprintSettingsHint": "Сопоставление отпечатков CLI (маскировка запросов под конкретные инструменты CLI) можно настроить в",
    "settingsRoutingLink": "Настройки/Маршрутизация",
    "openSettings": "Настройки",
    "copyRawUrlTitle": "Скопировать необработанный URL-адрес в буфер обмена",
    "copied": "Скопировано!",
    "copyUrl": "Копировать URL",
    "startHere": "Начните здесь",
    "badgeNew": "Новый",
    "viewOnGithub": "Посмотреть на GitHub",
    "howToUse": "Как использовать",
    "browseAllSkillsOnGithub": "Просмотреть все навыки на GitHub",
    "apiSkills": "Навыки API",
    "cliSkills": "Навыки работы с интерфейсом командной строки",
    "apiSkillsSubtitle": "{count} навыков — управление OmniRoute через REST / HTTP",
    "cliSkillsSubtitle": "{count} навыков — управление OmniRoute через двоичный файл терминала omniroute",
    "howToUseStep1": "Нажмите <bold>{copyUrl}</bold> на умении, о котором вы хотите, чтобы ваш агент знал.",
    "howToUseStep2": "В вашем AI-агенте (Claude, Cursor, Cline…) скажите:",
    "howToUseStep2Code": "Используйте навык по адресу [pasted-url]",
    "howToUseStep3": "Агент получает SKILL.md и изучает API или CLI OmniRoute — документация не требуется."
  },
  "cloudAgents": {
    "title": "Облачные агенты",
    "description": "Управление автономными агентами кодирования (Jules, Devin, Codex Cloud)",
    "loading": "Загрузка задач...",
    "aboutTitle": "Об облачных агентах",
    "aboutDescription": "Облачные агенты — это удаленные помощники по программированию с использованием искусственного интеллекта, которые могут выполнять задачи автономно. Они работают иначе, чем локальные агенты CLI: вы взаимодействуете с ними через API OmniRoute.",
    "howItWorksTitle": "Как это работает:",
    "howItWorksDesc": "Создать задачу → Агент анализирует и предлагает план → Вы утверждаете → Агент выполняет → Возвращаются результаты.",
    "newTaskTitle": "Создать новую задачу",
    "newTaskDescription": "Запустите новую задачу с помощью облачного агента",
    "selectAgent": "Выберите агента",
    "taskDescription": "Описание задачи",
    "taskDescriptionPlaceholder": "Опишите, что вы хотите от агента...",
    "startTask": "Начать задачу",
    "tasks": "Задачи",
    "taskDetail": "Подробности задачи",
    "noTasks": "Заданий пока нет. Создайте его, чтобы начать.",
    "noTasksTitle": "Нет задач пока",
    "noTasksDesc": "Создайте свою первую задачу, чтобы начать.",
    "tasksTab": "Задачи",
    "agentsTab": "Агенты",
    "settingsTab": "Настройки",
    "agentsEnabled": "Включено",
    "agentsDisabled": "Отключено",
    "filterAllProviders": "Все провайдеры",
    "filterAll": "Все",
    "autoRefreshing": "Автообновление",
    "viewPR": "Просмотреть Запрос На Вливание",
    "connected": "Подключено",
    "notConnected": "Не подключено",
    "configure": "Настроить",
    "settingsTitle": "Настройки облачного агента",
    "settingsDesc": "Настройте локальные предпочтения для облачных агентов.",
    "settingEnableAgents": "Включить облачные агенты",
    "settingEnableAgentsDesc": "Разрешите OmniRoute управлять автономными кодирующими агентами.",
    "settingAutoPR": "Автоматическое создание PR",
    "settingAutoPRDesc": "Когда задача завершена, автоматически создайте Pull Request с изменениями.",
    "settingRequireApproval": "Требуется одобрение плана",
    "settingRequireApprovalDesc": "Всегда ожидайте ручного одобрения перед выполнением агентом предложенного плана.",
    "untitledTask": "Задача без названия",
    "created": "Создано",
    "conversation": "Разговор",
    "result": "Результат",
    "error": "Ошибка",
    "planReady": "План готов к утверждению",
    "approvePlan": "Утвердить план",
    "rejectPlan": "Отклонить и отменить",
    "sendMessagePlaceholder": "Отправьте сообщение агенту...",
    "cancel": "Отмена",
    "delete": "Удалить",
    "selectTaskPrompt": "Выберите задачу, чтобы просмотреть подробности",
    "statusPending": "Ожидается",
    "statusRunning": "Бег",
    "statusWaitingApproval": "Ожидание одобрения",
    "statusCompleted": "Завершено",
    "statusFailed": "Не удалось",
    "statusCancelled": "Отменено",
    "repositoryName": "Имя репозитория",
    "repositoryUrl": "URL-адрес репозитория",
    "branch": "Филиал"
  },
  "templateNames": {
    "simple-chat": "Простой чат",
    "streaming": "Потоковое",
    "system-prompt": "Системная подсказка",
    "thinking": "Мышление",
    "tool-calling": "Вызов инструмента",
    "multi-turn": "Многооборотный",
    "vision": "Видение",
    "schema-coercion": "Приведение схемы"
  },
  "templateDescriptions": {
    "simple-chat": "Шаблон простого чата",
    "streaming": "Шаблон потоковой передачи",
    "system-prompt": "Шаблон системной подсказки",
    "thinking": "Шаблон рассуждения",
    "tool-calling": "Шаблон вызова инструментов",
    "multi-turn": "Шаблон многоходового диалога",
    "vision": "Мультимодальный шаблон с вводом изображений",
    "schema-coercion": "Применение схемы структурированного вывода/JSON"
  },
  "templatePayloads": {
    "simpleChat": {
      "system": "Вы полезный помощник искусственного интеллекта.",
      "userGreeting": "Здравствуйте! Чем я могу помочь вам сегодня?"
    },
    "streaming": {
      "prompt": "Напишите рассказ о"
    },
    "systemPrompt": {
      "question": "В чем смысл жизни?",
      "systemInstruction": "Дайте вдумчивый, философский ответ."
    },
    "thinking": {
      "question": "Объясните квантовые вычисления"
    },
    "toolCalling": {
      "cityNameDescription": "Название города, для которого нужно узнать погоду",
      "toolDescription": "Получить текущую погоду для местоположения",
      "userWeather": "Какая погода в Токио?"
    },
    "multiTurn": {
      "system": "Вы полезный помощник.",
      "assistantExample": "Я был бы рад помочь вам в этом.",
      "userInitial": "мне нужна помощь с",
      "userFollowUp": "Можете ли вы рассказать об этом подробнее?"
    }
  },
  "cache": {
    "title": "Управление кэшем",
    "description": "Отслеживайте и управляйте семантическим кэшем ответов, скоростью попаданий и экономией токенов.",
    "refresh": "Обновить",
    "clearAll": "Очистить всё",
    "memoryEntries": "Записи в памяти",
    "memoryEntriesSub": "LRU в памяти",
    "dbEntries": "Записи БД",
    "dbEntriesSub": "Сохранённые (SQLite)",
    "cacheHits": "Попадания в кэш",
    "cacheHitsSub": "из {total} всего",
    "tokensSaved": "Сэкономленные токены",
    "tokensSavedSub": "Оценка по попаданиям",
    "hitRate": "Коэффициент попадания",
    "performance": "Производительность кэша",
    "autoRefresh": "Автообновление каждые {seconds}с",
    "hits": "Попадания",
    "misses": "Промахи",
    "total": "Всего",
    "behavior": "Поведение кэша",
    "behaviorDeterministic": "Кэшируются только нестриминговые запросы с temperature=0.",
    "behaviorBypass": "Обход с заголовком {header}.",
    "behaviorTwoTier": "Двухуровневое хранилище: LRU в памяти (быстро) + SQLite (сохраняется между перезапусками).",
    "behaviorTtl": "TTL по умолчанию: 30 минут. Настраивается через {envVar}.",
    "idempotency": "Слой идемпотентности",
    "activeDedupKeys": "Активные ключи дедупликации",
    "dedupWindow": "Окно дедупликации",
    "clearSuccess": "Кэш очищен. Удалено {count} просроченных записей.",
    "clearError": "Не удалось очистить кэш.",
    "unavailable": "Кэш недоступен",
    "unavailableDesc": "Не удалось получить статистику кэша. Убедитесь, что сервер запущен.",
    "loadingCacheAria": "Загрузка кэша",
    "promptCache": "Кэш промптов (на стороне провайдера)",
    "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": "Запросы из кэша",
    "cachedRequests24h": "Cached Requests (24h)",
    "cacheHitRate": "Коэффициент попадания в кэш",
    "cacheRate": "Cache Rate",
    "cacheRateDesc": "of total requests",
    "cachedTokens": "Кэшированные токены",
    "cacheCreationTokens": "Токены создания кэша",
    "cacheMetrics": "Метрики кэша промптов",
    "withCacheControl": "С управлением кэшем",
    "cachedTokensRead": "Кэшированные токены (чтение)",
    "cacheCreationWrite": "Создание кэша (запись)",
    "cacheReuseRatio": "Коэффициент повторного использования кэша",
    "cacheReuseRatioDesc": "Кэшированные токены / Все входные токены",
    "estCostSaved": "Примерная экономия",
    "lastUpdated": "Last updated",
    "hoursTracked": "hours tracked",
    "busiestHour": "Busiest Hour",
    "peakCacheRate": "Peak Cache Rate",
    "trendHour": "Hour",
    "activityVolume": "Activity",
    "requestsShort": "запр.",
    "inputShort": "Вх.",
    "cachedShort": "В кэше",
    "writeShort": "Запись",
    "resetting": "Сброс...",
    "resetMetrics": "Сбросить метрики",
    "byProvider": "Разбивка по провайдерам",
    "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": "Провайдер",
    "requests": "Запросы",
    "inputTokens": "Входные токены",
    "cachedTokensCol": "Кэш.",
    "cacheCreation": "Создание",
    "trend24h": "Тренд кэша (24ч)",
    "peakCached": "Пик кэша",
    "cached": "В кэше",
    "overview": "Обзор",
    "tableProvider": "Поставщик",
    "tableModel": "Модель",
    "performanceTitle": "Производительность",
    "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": "Поиск",
    "loading": "Загрузка...",
    "entriesLoadError": "Failed to load semantic cache entries.",
    "noEntries": "Записи кэша не найдены",
    "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": "Сигнатура",
    "model": "Модель",
    "created": "Создано",
    "expires": "Истекает",
    "actions": "Действия",
    "deduplicatedRequests": "Дедуплицированные запросы",
    "savedCalls": "Сэкономленные API-запросы",
    "totalProcessed": "Всего запросов обработано",
    "disabled": "Disabled",
    "totalRequests": "Total Requests",
    "reasoningCache": "Рассуждение повтора",
    "reasoningCacheDesc": "Сохраняет модельное мышление для многооборотных потоков вызова инструмента",
    "reasoningEntries": "Активные записи",
    "reasoningReplayRate": "Скорость повтора",
    "reasoningReplays": "Всего повторов",
    "reasoningCharsCached": "Персонажи кэшированы",
    "reasoningMisses": "Промахи в кэше",
    "reasoningByProvider": "По поставщику",
    "reasoningByModel": "По модели",
    "reasoningRecentEntries": "Последние записи",
    "reasoningToolCallId": "Идентификатор вызова инструмента",
    "reasoningChars": "Персонажи",
    "reasoningAge": "Возраст",
    "reasoningView": "Посмотреть",
    "reasoningDetail": "Содержание рассуждений",
    "reasoningBehavior": "Поведение",
    "reasoningBehaviorCapture": "Захватывает Reasoning_content из потоковых ответов.",
    "reasoningBehaviorReplay": "Повторная инъекция на следующем ходу, если клиент ее пропускает.",
    "reasoningBehaviorFallback": "Приоритет в памяти с резервным копированием SQLite для восстановления после сбоя",
    "reasoningBehaviorTtl": "TTL: 2 часа | Максимальное количество записей: 2000 (память)",
    "reasoningBehaviorModels": "Поддерживается: DeepSeek, Kimi, Qwen-Thinking, GLM.",
    "reasoningClearAll": "Очистить кэш рассуждений",
    "reasoningClearSuccess": "Очищены записи кэша рассуждений {count}.",
    "reasoningClearError": "Не удалось очистить кэш рассуждений.",
    "reasoningNoData": "Никаких записей рассуждений пока не кэшировано. Записи появляются, когда модели мышления используют вызов инструментов.",
    "cachePerformanceRetry": "Повторить попытку",
    "cachePerformanceHitRate": "Скорость попадания",
    "cachePerformanceAvgLatency": "Средняя задержка (мс)",
    "cachePerformanceP95Latency": "p95 Задержка (мс)",
    "retry": "Повторить попытку",
    "reasoningAvgChars": "Среднее число символов",
    "tableShare": "Поделиться",
    "justNow": "только что",
    "minutesAgo": "{minutes}м назад",
    "hoursAgo": "{hours}ч назад",
    "daysAgo": "{days}д назад",
    "entries": "Записи"
  },
  "proxyConfigModal": {
    "levelGlobal": "Глобальный",
    "levelProvider": "Поставщик",
    "levelCombo": "Комбо",
    "levelKey": "Ключ",
    "levelDirect": "Прямой (без прокси)",
    "titleGlobal": "Глобальная конфигурация прокси",
    "titleLevel": "{level} Прокси — {label}",
    "loading": "Загрузка конфигурации прокси...",
    "inheritingFrom": "Наследование от",
    "source": "Источник",
    "savedProxy": "Сохраненный прокси",
    "custom": "Пользовательский",
    "selectSavedProxyPlaceholder": "Выберите сохраненный прокси...",
    "proxyType": "Тип прокси",
    "host": "Хост",
    "hostPlaceholder": "1.2.3.4 или proxy.example.com",
    "port": "Порт",
    "authOptional": "Аутентификация (необязательно)",
    "username": "Имя пользователя",
    "usernamePlaceholder": "Имя пользователя",
    "password": "Пароль",
    "passwordPlaceholder": "Пароль",
    "connected": "Подключено",
    "ip": "ИП:",
    "connectionFailed": "Соединение не удалось",
    "testConnection": "Тестовое соединение",
    "clear": "Очистить",
    "cancel": "Отмена",
    "save": "Сохранить",
    "errorSelectSavedProxy": "Сначала выберите сохраненный прокси.",
    "errorSelectProxyFirst": "Пожалуйста, сначала выберите прокси.",
    "errorProxyNotFound": "Выбранный прокси не найден.",
    "errorClearSavedProxy": "Не удалось очистить сохраненный прокси.",
    "errorSaveProxy": "Не удалось сохранить конфигурацию прокси.",
    "errorClearProxy": "Не удалось очистить конфигурацию прокси-сервера.",
    "errorSocks5Hidden": "SOCKS5 настроен, но скрыт, поскольку NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false."
  },
  "oauthModal": {
    "title": "Подключите {providerName}",
    "waiting": "Ожидание авторизации",
    "completeAuthInPopup": "Полная авторизация во всплывающем окне.",
    "popupClosedHint": "Если всплывающее окно закрылось без перенаправления обратно (например, Qoder), это диалоговое окно автоматически переключится в режим ручного ввода URL-адреса.",
    "popupBlocked": "Всплывающее окно заблокировано? Введите URL вручную",
    "deviceCodeVisitUrl": "Посетите URL-адрес ниже и введите код:",
    "deviceCodeVerificationUrl": "URL-адрес подтверждения",
    "deviceCodeYourCode": "Ваш код",
    "deviceCodeWaiting": "Ожидание авторизации...",
    "googleOAuthWarning": "Удаленный доступ + Google OAuth: учетные данные по умолчанию допускают только перенаправление на <code>localhost</code>. После авторизации ваш браузер попытается открыть <code>localhost</code> — скопируйте этот полный URL-адрес и вставьте его ниже. Для полностью удаленного использования без этого ручного действия <a>настройте свои собственные учетные данные OAuth</a>.",
    "remoteAccessInfo": "Удаленный доступ. Поскольку вы получаете доступ к OmniRoute удаленно, после авторизации вы увидите страницу с ошибкой (localhost не найден). Это нормально — просто скопируйте полный URL-адрес из адресной строки браузера и вставьте его ниже.",
    "step1OpenUrl": "Шаг 1. Откройте этот URL-адрес в своем браузере.",
    "copy": "Копировать",
    "step2PasteCallback": "Шаг 2. Вставьте сюда URL обратного вызова или код авторизации.",
    "step2Hint": "После авторизации вставьте полный URL обратного вызова. Для Claude Code и Cline вы также можете вставить код аутентификации напрямую, например. <code>code#state</code>.",
    "connect": "Подключиться",
    "cancel": "Отмена",
    "success": "Подключение успешно!",
    "successMessage": "Ваша учетная запись {providerName} подключена.",
    "done": "Готово",
    "error": "Соединение не удалось",
    "tryAgain": "Попробуйте еще раз"
  },
  "cursorAuthModal": {
    "title": "Подключить курсор IDE",
    "autoDetecting": "Автоматическое обнаружение токенов...",
    "readingFromCursor": "Чтение из Cursor IDE или курсорного агента",
    "tokensAutoDetected": "Токены успешно автоматически обнаружены в Cursor IDE!",
    "cursorNotDetected": "Курсор IDE не обнаружен. Пожалуйста, вставьте свой токен вручную.",
    "accessToken": "Токен доступа",
    "required": "*",
    "accessTokenPlaceholder": "Токен доступа будет автоматически заполнен...",
    "machineId": "Идентификатор машины",
    "optional": "(необязательно)",
    "machineIdPlaceholder": "Идентификатор машины будет автоматически заполнен...",
    "importing": "Импорт...",
    "importToken": "Импортировать токен",
    "cancel": "Отмена",
    "errorAutoDetect": "Невозможно автоматически обнаружить токены",
    "errorAutoDetectFailed": "Не удалось автоматически обнаружить токены",
    "errorEnterToken": "Пожалуйста, введите токен доступа",
    "errorImportFailed": "Импорт не удался"
  },
  "pricingModal": {
    "title": "Конфигурация цен",
    "loading": "Загрузка данных о ценах...",
    "pricingRatesFormat": "Формат ценообразования",
    "ratesDescription": "Все ставки указаны в <strong>долларах за миллион токенов</strong> ($/1 миллион токенов). Пример: коэффициент ввода 2,50 означает 2,50 доллара США за 1 000 000 входных токенов.",
    "model": "Модель",
    "input": "Ввод",
    "output": "Выход",
    "cached": "Кэшированный",
    "reasoning": "Рассуждение",
    "cacheCreation": "Создание кэша",
    "noPricingData": "Нет данных о ценах",
    "resetToDefaults": "Сбросить настройки по умолчанию",
    "cancel": "Отмена",
    "saving": "Сохранение...",
    "saveChanges": "Сохранить изменения",
    "resetConfirm": "Сбросить все цены к значениям по умолчанию? Это невозможно отменить.",
    "errorSaveFailed": "Не удалось сохранить цену.",
    "errorResetFailed": "Не удалось сбросить цены."
  },
  "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": "Тип",
    "labelHost": "Хост",
    "labelPort": "Порт",
    "labelUsername": "Имя пользователя",
    "labelPassword": "Пароль",
    "labelRegion": "Регион",
    "labelStatus": "Статус",
    "labelNotes": "Примечания",
    "usernamePlaceholderEdit": "Оставьте поле пустым, чтобы сохранить текущее имя пользователя.",
    "passwordPlaceholderEdit": "Оставьте поле пустым, чтобы сохранить текущий пароль.",
    "statusActive": "Активный",
    "statusInactive": "Неактивный",
    "cancel": "Отмена",
    "save": "Сохранить",
    "bulkModalTitle": "Массовое назначение прокси",
    "bulkLabelScope": "Область применения",
    "bulkLabelProxy": "Прокси",
    "bulkClearAssignment": "(Четкое задание)",
    "bulkLabelScopeIds": "Идентификаторы областей (разделенные запятой или новой строкой)",
    "bulkScopeIdsPlaceholder": "поставщик-openai, поставщик-антропный",
    "bulkApply": "Применить",
    "labelScope": "Область действия",
    "labelProxy": "Прокси",
    "scopeGlobal": "глобальный",
    "scopeProvider": "поставщик",
    "scopeAccount": "учетная запись",
    "scopeCombo": "комбо",
    "bulkImportErrorMissingName": "Отсутствует ИМЯ",
    "bulkImportErrorMissingHost": "Отсутствует ХОСТ",
    "bulkImportErrorInvalidPort": "Неверный ПОРТ (должен быть 1-65535).",
    "bulkImportErrorInvalidType": "Неверный ТИП (используйте http, https или Socks5).",
    "bulkImportErrorInvalidStatus": "Неверный СТАТУС (используйте активный или неактивный)",
    "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} % успеха",
    "avgLatency": "{latency} мс в среднем",
    "assignmentsCount": "{count} заданий",
    "noData": "No Data",
    "testSuccess": "✓ {ip}",
    "testLatency": "{latency}мс",
    "testFailure": "✗ {error}",
    "bulkImport": "Массовый импорт",
    "bulkImportTitle": "Массовый импорт прокси",
    "bulkImportDescription": "Вставьте профили прокси, используя формат с разделителями-вертикальными чертами. Один прокси на линию. Существующие прокси (тот же хост + порт) будут обновлены.",
    "bulkImportParse": "Разобрать",
    "bulkImportImport": "Импортировать {count} прокси",
    "bulkImportImporting": "Импорт...",
    "bulkImportParsed": "Проанализировано {count} прокси",
    "bulkImportSkipped": "{count} строк пропущено",
    "bulkImportParseErrors": "{count} ошибок",
    "bulkImportNoValidEntries": "Действительные записи не найдены. Проверьте формат и повторите попытку.",
    "bulkImportSuccess": "Импорт завершен: {created} создан, {updated} обновлен, {failed} не выполнен.",
    "bulkImportErrorLine": "Строка {line}: {reason}",
    "bulkImportMaxExceeded": "Максимум 100 прокси на один импорт",
    "bulkImportPreview": "Предварительный просмотр",
    "clearAssignment": "(четкое задание)",
    "bulkProxyAssignment": "Массовое назначение прокси"
  },
  "playground": {
    "title": "Title",
    "description": "Description",
    "endpoint": "Endpoint",
    "provider": "Provider",
    "model": "Model",
    "accountKey": "Account Key",
    "autoAccounts": "Авто (аккаунтов: {count})",
    "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}",
    "generatedImage": "Сгенерированное изображение {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": "Разговорный чат",
    "clearChat": "Очистить чат",
    "typeMessagePlaceholder": "Введите сообщение... (Shift+Enter для новой строки)",
    "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",
    "exportShort": "Экспорт",
    "noStateToExport": "No playground state available to export.",
    "closeExportModal": "Закрыть модальное окно экспорта",
    "close": "Закрыть",
    "exportRealKeyWarning": "Предупреждение о безопасности: экспорт заблокирован — в выводе был обнаружен реальный ключ API. Пожалуйста, сбросьте свой ключ API и попробуйте снова.",
    "placeholderHintPrefix": "Заменить",
    "placeholderHintSuffix": "с вашим фактическим ключом API или установите его как переменную окружения.",
    "copyLangCode": "Скопировать код {language}",
    "loadingPresets": "Загрузка…",
    "loadPresetPlaceholder": "Загрузить пресет…",
    "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…",
    "build": {
      "step1Label": "Что тестировать?",
      "step2Label": "Настроить",
      "step3Label": "Запустить",
      "step1Title": "Что вы хотите протестировать?",
      "step1Subtitle": "Выберите возможность, которую вы хотите исследовать в этой сессии.",
      "step2Title": "Настроить",
      "step2Subtitle": "Настройте инструменты или JSON-схему, которые будут использоваться в запросе.",
      "step3Title": "Запустить",
      "modeToolsTitle": "Инструменты",
      "modeToolsDesc": "Тестирование вызова функции — определите инструменты и посмотрите, как модель их вызывает.",
      "modeJsonTitle": "JSON",
      "modeJsonDesc": "Тест структурированного вывода — ограничьте ответ схемой JSON.",
      "modeBothTitle": "Инструменты + JSON",
      "modeBothDesc": "Объедините вызов функции и структурированный вывод в одном запросе.",
      "backButton": "Назад",
      "nextButton": "Далее",
      "runButton": "Запустить",
      "promptPlaceholder": "Введите ваше сообщение… (Enter для отправки, Shift+Enter для новой строки)"
    }
  },
  "miniPlayground": {
    "endpoint": "Конечная точка",
    "apiKey": "API ключ",
    "model": "Модель",
    "voice": "Голос",
    "speed": "Скорость",
    "input": "Ввод",
    "url": "URL",
    "format": "Формат",
    "depth": "Глубина",
    "copyCurl": "Скопировать cURL",
    "copied": "Скопировано!",
    "run": "Запустить",
    "running": "Запуск...",
    "response": "Ответ",
    "tunnel": "Туннель",
    "send": "Отправить",
    "selectKey": "Выберите ключ",
    "testLabel": "Тест",
    "expandTest": "Расширить тест",
    "collapseTest": "Свернуть тест",
    "revealKey": "Показать ключ",
    "hideKey": "Скрыть ключ",
    "download": "Скачать",
    "play": "Играть",
    "query": "Запрос",
    "numResults": "Максимум результатов",
    "prompt": "Подсказка",
    "size": "Размер",
    "duration": "Продолжительность",
    "question": "Вопрос",
    "audioFile": "Аудиофайл",
    "noKeysFound": "Не найдены ключи API. Добавьте один в разделе Ключи.",
    "exampleLabel": "Пример",
    "latency": "{ms}мс",
    "statsLine": "{ms}мс · {tokensIn} входящих / {tokensOut} исходящих токенов"
  },
  "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": "Сжатие",
      "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",
    "colPublicIp": "Публичный IP"
  },
  "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": "Бета — предварительный просмотр пользовательского интерфейса.",
    "betaConfigSavedPrefix": "Конфигурация сохраняется в",
    "betaConfigSavedSuffix": "(пока не сохраняется на сервере). Ограничение количества запросов еще не встроено в конвейер прокси. Этот экран позволяет вам спроектировать и визуализировать разделение квоты; реальное обеспечение соблюдения требований появится в будущей итерации с сохранением БД и перехватом восходящих вызовов.",
    "policyLabel": "Политика:",
    "resetIn": "сброс в",
    "quotaTotal": "всего",
    "kpiAvgUtilization": "Средняя загрузка",
    "kpiBorrowingNow": "Заем сейчас",
    "conceptTitle": "Как работает долевое распределение квоты",
    "conceptIntro": "Quota Share делит квоту провайдера между несколькими API-ключами, используя экономию ресурсов: каждый ключ получает пропорциональную долю, но может занимать из свободного баланса, не превышая глобальный лимит.",
    "conceptFairShare": "Справедливая доля: каждый ключ получает квоту, пропорциональную его заданному весу",
    "conceptBorrowing": "Заем: ключи могут использовать свободный баланс других, не нарушая лимит",
    "conceptGlobalCap": "Жесткий глобальный лимит: абсолютный предел провайдера никогда не превышается",
    "conceptWindows": "Windows: 5ч, почасово, ежедневно, еженедельно, ежемесячно — каждый отслеживается независимо",
    "conceptKeyHowTitle": "Включение ключа для квоты",
    "conceptKeyHowDesc": "Создайте ключ в API Manager обычным образом — он автоматически появится на шаге ключа в мастере. Установите флажок Exclusive, чтобы сделать его только для квоты. Отдельного шага включения не требуется.",
    "conceptExclusiveTitle": "Что делает \"Exclusive\"",
    "conceptExclusiveDesc": "Эксклюзивный ключ видит/использует только модели квоты пула quotaShared-* — все остальные модели скрыты от его /v1/models и заблокированы.",
    "burnRateTitle": "Темп сжигания",
    "burnRateExhaustsIn": "Выхлопы в",
    "dimensionResetIn": "Сбросы через",
    "realConsumedColumn": "Потреблено",
    "deficitColumn": "Дефицит",
    "borrowingIndicator": "заимствование",
    "migratedFromLocalStorageNotice": "Пулы успешно мигрированы из localStorage.",
    "policyCapAbsoluteLabel": "Абсолютный предел",
    "policyCapAbsolutePlaceholder": "Числовой предел (необязательно)",
    "multiDimensionLabel": "Многомерный",
    "stackedBarTitle": "Срезы по ключу API",
    "usedSuffix": "использовано {percent}%",
    "wizardTitle": "Новый пул квот",
    "editPoolTitle": "Редактировать пул",
    "saveChanges": "Сохранить изменения",
    "wizardStep1Label": "Учетная запись",
    "wizardStep2Label": "Ограничение",
    "wizardStep3Label": "Ключи",
    "wizardStep1Title": "Выберите соединение провайдера",
    "wizardStep1Subtitle": "Выберите учетную запись провайдера, для которой этот пул будет делиться квотой, задайте имя и политику по умолчанию.",
    "wizardStep2Title": "Настроить размеры квоты",
    "wizardStep2Subtitle": "Определите размеры плана квоты (единица, окно, лимит) для выбранного соединения. Оставьте без изменений, чтобы сохранить текущие настройки.",
    "wizardStep3Title": "Выделить API-ключи",
    "wizardStep3Subtitle": "Назначьте ключи API этому пулу с распределением веса в процентах и необязательными лимитами.",
    "wizardPoolNameLabel": "Имя пула",
    "wizardPoolNamePlaceholder": "Мой пул квот",
    "wizardNext": "Далее",
    "wizardBack": "Назад",
    "wizardCreatePool": "Создать пул",
    "wizardDimensionsEditedNotice": "Размеры отредактированы — будут сохранены как ручное переопределение при создании бассейна.",
    "wizardExclusiveLabel": "Эксклюзивная квота",
    "wizardExclusiveHint": "Когда включено, эти ключи API будут разрешены только для использования виртуальных моделей этого пула (применяется согласование allowedQuotas при сохранении).",
    "wizardPreviewLabel": "Предварительный просмотр имен виртуальных моделей",
    "wizardConnectionsLabel": "Подключения провайдеров",
    "wizardPrimaryBadge": "основной",
    "wizardAdditionalConnectionsNote": "Дополнительные подключения используют свои стандартные лимиты каталога (можно редактировать позже).",
    "wizardSingleProviderNote": "Пул использует единого поставщика",
    "wizardPreviewMoreModels": "+{count} еще",
    "accountQuotaTitle": "Квота аккаунта",
    "accountQuotaNone": "—",
    "logTitle": "Журнал использования",
    "logEmpty": "Пока нет использования",
    "groupLabel": "Группа",
    "newGroup": "Новая группа",
    "renameGroup": "Переименовать группу",
    "groupSelectHint": "Фильтровать пулы по группе",
    "groupAllocationNote": "Распределения применяются ко всем пулам в этой группе через общий слой квоты.",
    "groupNamePrompt": "Введите имя группы",
    "wizardGroupLabel": "Группа",
    "allGroups": "Все группы",
    "endpointsTitle": "Доступные конечные точки",
    "endpointsHint": "Вызывайте эти виртуальные модели с любым выделенным ключом — маршрутизация + квота обрабатываются по группе.",
    "previewForKey": "Предварительный просмотр ключа",
    "previewKeyNone": "(все конечные точки)",
    "endpointsBaseUrl": "Базовый URL",
    "endpointsCollapse": "Свернуть",
    "endpointsExpand": "Расширить",
    "endpointsAnthropicNote": "Anthropic-native",
    "endpointsResponsesNote": "Ответы OpenAI — codex/github",
    "endpointsWsNote": "WebSocket — только кодекс",
    "betaText": "Доля квоты функционирует, но ожидаются ошибки. Нашли одну? Пожалуйста, сообщите об этом.",
    "betaReportLink": "Сообщить о проблеме",
    "deleteGroup": "Удалить группу",
    "deleteGroupConfirm": "Удалить эту группу? Сначала необходимо переназначить или удалить её пулы.",
    "deleteGroupHasPools": "В этой группе все еще есть пулы — сначала переназначьте или удалите их.",
    "ungroupedTitle": "Не сгруппировано",
    "ungroupedHint": "Эти пулы не назначены известной группе. Отредактируйте пул, чтобы переместить его в реальную группу."
  },
  "plugins": {
    "title": "Plugins",
    "description": "Install and manage plugins for extending OmniRoute functionality",
    "loading": "Loading plugins...",
    "scanning": "Scanning...",
    "scanForPlugins": "Scan for Plugins",
    "noPlugins": "No plugins installed",
    "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.",
    "activate": "Activate",
    "deactivate": "Deactivate",
    "uninstall": "Uninstall",
    "uninstallConfirm": "Uninstall plugin \"{name}\"?",
    "pluginScanComplete": "Plugin scan complete",
    "pluginScanFailed": "Plugin scan failed",
    "activated": "{name} activated",
    "deactivated": "{name} deactivated",
    "activateFailed": "Failed to activate {name}",
    "deactivateFailed": "Failed to deactivate {name}",
    "uninstalled": "{name} uninstalled",
    "uninstallFailed": "Failed to uninstall {name}",
    "configure": "Configure: {name}",
    "configurePlugin": "Configure",
    "noConfigSettings": "This plugin has no configurable settings.",
    "saving": "Saving...",
    "saveConfiguration": "Save Configuration",
    "configurationSaved": "Configuration saved",
    "saveConfigurationFailed": "Failed to save configuration",
    "pluginNotFound": "Plugin not found",
    "version": "Version",
    "author": "Author",
    "description_label": "Description",
    "status": "Status",
    "enabled": "Enabled",
    "disabled": "Disabled",
    "hooks": "Hooks"
  },
  "quotaPlans": {
    "title": "Планы и Квоты",
    "description": "Настройте планы квот для каждого провайдера — размеры (%, запросы, токены, $) и временные окна",
    "providerLabel": "Поставщик / Подключение",
    "detectedPlanLabel": "Обнаруженный план",
    "manualPlanLabel": "Ручное управление",
    "unconfiguredLabel": "Не настроено — требуется ручная настройка",
    "dimensionLabel": "Размеры",
    "addDimension": "Добавить размер",
    "removeDimension": "Удалить",
    "limitLabel": "Ограничение",
    "unitOptions": {
      "percent": "%",
      "requests": "запросы",
      "tokens": "токены",
      "usd": "USD ($)"
    },
    "windowOptions": {
      "5h": "5 часов",
      "hourly": "Каждый час",
      "daily": "Ежедневно",
      "weekly": "Еженедельно",
      "monthly": "Ежемесячно"
    },
    "useCatalogButton": "Использовать каталог",
    "saveOverrideButton": "Сохранить переопределение",
    "revertToCatalogButton": "Вернуться к каталогу",
    "unknownProviderNotice": "Выберите провайдера слева, чтобы настроить его план квот.",
    "catalogTitle": "Известный каталог",
    "catalogDescription": "Автоматически обнаруженные планы для следующих провайдеров:"
  },
  "activity": {
    "title": "Активность",
    "description": "Лента недавних событий",
    "emptyTitle": "Пока нет активности",
    "emptyDescription": "Когда вы добавляете провайдеров, создаете комбинации или вращаете ключи, события будут отображаться здесь.",
    "todayHeader": "Сегодня",
    "yesterdayHeader": "Вчера",
    "filterAll": "Все",
    "filterProviders": "Поставщики",
    "filterCombos": "Комбо",
    "filterApiKeys": "API ключи",
    "filterSettings": "Настройки",
    "filterQuota": "Квота",
    "filterAuth": "Аутентификация",
    "filterSystem": "Система",
    "relative": {
      "justNow": "только что",
      "minutesAgo": "{n} мин. назад",
      "hoursAgo": "{n} ч назад",
      "yesterday": "вчера",
      "daysAgo": "{n} дней назад"
    },
    "eventVerb": {
      "providerAdded": "{actor} добавил провайдер {target}",
      "providerRemoved": "{actor} удалил провайдер {target}",
      "providerTested": "{actor} протестировал провайдер {target}",
      "comboCreated": "{actor} создал комбо {target}",
      "comboUpdated": "{actor} обновил комбо {target}",
      "comboDeleted": "{actor} удалил комбо {target}",
      "apiKeyCreated": "{actor} создал API-ключ {target}",
      "apiKeyRevoked": "{actor} отозвал API-ключ {target}",
      "apiKeyRotated": "{actor} повернул API-ключ {target}",
      "budgetThreshold": "Достигнут предел бюджета для {target}",
      "settingUpdated": "{actor} обновил настройку {target}",
      "authLogin": "{actor} вошел в систему",
      "authLogout": "{actor} вышел из системы",
      "cloudAgentSession": "Сессия облачного агента начата для {target}",
      "mcpToolRegistered": "Инструмент MCP {target} зарегистрирован",
      "webhookCreated": "{actor} создал вебхук {target}",
      "webhookDeleted": "{actor} удалил вебхук {target}",
      "quotaPoolCreated": "{actor} создал пул квот {target}",
      "quotaPoolUpdated": "{actor} обновил пул квот {target}",
      "quotaPoolDeleted": "{actor} удалил квоту пула {target}",
      "quotaPlanUpdated": "{actor} обновил план квоты {target}",
      "quotaStoreDriverChanged": "Драйвер QuotaStore изменён",
      "updateApplied": "Обновление {target} применено",
      "deployCompleted": "Развертывание завершено",
      "skillInstalled": "{actor} установил навык {target}",
      "skillRemoved": "{actor} удалил навык {target}",
      "providerCredentialsCreated": "{actor} создал учетные данные для {target}",
      "providerCredentialsApplied": "Учетные данные для {target} применены",
      "providerCredentialsUpdated": "{actor} обновил учетные данные для {target}",
      "providerCredentialsRevoked": "{actor} отозвал учетные данные для {target}",
      "providerCredentialsBatchRevoked": "{actor} пакетно отозвал учетные данные",
      "providerCredentialsBulkCreated": "{actor} массово создал учетные данные",
      "providerCredentialsBulkImported": "{actor} массово импортировал учетные данные",
      "providerCredentialsImported": "{actor} импортированные учетные данные",
      "providerSsrfBlocked": "Попытка SSRF заблокирована для {target}",
      "authLoginSuccess": "{actor} вошел",
      "authLoginError": "Ошибка входа для {actor}",
      "authLoginFailed": "Не удалось войти для {actor}",
      "authLoginLocked": "{actor} заблокирован после слишком большого количества попыток",
      "authLoginMisconfigured": "Недействительная конфигурация аутентификации",
      "authLoginSetupRequired": "Требуется настройка аутентификации",
      "authLogoutSuccess": "{actor} вышел из системы",
      "syncTokenCreated": "{actor} создал токен синхронизации",
      "syncTokenRevoked": "{actor} отозвал токен синхронизации",
      "settingsUpdate": "{actor} обновил настройки",
      "settingsUpdateFailed": "Не удалось обновить настройки",
      "serviceRevealApiKey": "{actor} раскрыл API-ключ для {target}",
      "genericEvent": "{actor} {target}"
    }
  },
  "agentBridge": {
    "title": "AgentBridge",
    "subtitle": "Используйте агенты IDE с моделями OmniRoute — конфигурация не требуется",
    "riskBannerTitle": "Используйте на свой страх и риск",
    "riskBannerBody": "AgentBridge перехватывает HTTPS-трафик от агентов IDE. Активируя его, вы берете на себя ответственность за соблюдение условий обслуживания каждого агента. Никогда не используйте на устройствах или сетях, где запрещена проверка TLS.",
    "riskBannerDismiss": "Отклонить",
    "serverCardTitle": "Сервер AgentBridge",
    "statusRunning": "Запуск",
    "statusStopped": "Остановлено",
    "statusActive": "Активный",
    "statusDnsOff": "DNS выключен",
    "statusSetupRequired": "Требуется настройка",
    "statusInvestigating": "Расследование",
    "serverPort": "Порт",
    "serverConns": "Соединения",
    "serverIntercepted": "Перехвачено",
    "serverLastStarted": "Последний запуск",
    "startServer": "Начать",
    "stopServer": "Стоп",
    "restartServer": "Перезапустить",
    "trustCert": "Доверенный сертификат",
    "downloadCert": "Скачать сертификат",
    "regenerateCert": "Сгенерировать сертификат",
    "starting": "Запуск…",
    "stopping": "Остановка…",
    "restarting": "Перезапуск…",
    "trusting": "Доверяю…",
    "regenerating": "Регенерация…",
    "upstreamCaLabel": "Сертификат CA Upstream (корпоративный)",
    "upstreamCaPlaceholder": "/etc/ssl/certs/corp-ca.pem",
    "upstreamCaTest": "Проверка TLS",
    "upstreamCaTestOk": "Тест TLS пройден",
    "upstreamCaTestError": "Не удалось пройти тест TLS — проверьте путь и файл CA",
    "bypassSectionTitle": "Список обхода",
    "bypassSectionDesc": "Хосты, соответствующие этим шаблонам, туннелируются напрямую (без TLS-дешифрования). По умолчанию это включает банки, .gov и корпоративные SSO.",
    "bypassDefaultsLabel": "Шаблоны обхода по умолчанию (только для чтения)",
    "bypassUserLabel": "Пользовательские шаблоны обхода (по одному на строку, glob или regex)",
    "saveBypassList": "Сохранить список обхода",
    "agentListTitle": "Агенты IDE",
    "filterAll": "Все",
    "filterActive": "Активный",
    "filterSetupRequired": "Требуется настройка",
    "filterInvestigating": "Расследование",
    "searchAgents": "Поиск агентов…",
    "noAgentsMatch": "Нет агентов, соответствующих текущему фильтру",
    "agentHosts": "Перехваченные хосты",
    "certTrusted": "Сертификат доверен",
    "certNotTrusted": "Сертификат не доверен",
    "investigatingNotice": "Этот агент находится под расследованием. Хосты и API все еще подтверждаются. Настройка будет доступна, как только будет задокументирован upstream API.",
    "modelMappingsLabel": "Сопоставления моделей",
    "sourceModel": "Исходная модель (агент нативный)",
    "targetModel": "Целевая модель (OmniRoute)",
    "noMappings": "Нет настроенных сопоставлений моделей. Запустите мастер настройки для автоматического обнаружения моделей.",
    "selectModel": "Выбрать…",
    "saveMappings": "Сохранить сопоставления",
    "setupWizard": "Мастер настройки",
    "startDns": "Запустить DNS",
    "stopDns": "Остановить DNS",
    "toggling": "Переключение…",
    "viewTraffic": "Просмотр трафика",
    "emptyNoProvidersTitle": "Поставщики еще не настроены",
    "emptyNoProvidersBody": "Чтобы использовать AgentBridge, сначала подключите хотя бы одного провайдера. Это будет место назначения, куда направляются запросы IDE.",
    "emptyGoToProviders": "Перейти к Провайдерам",
    "wizardTitle": "Мастер настройки",
    "wizardSubtitle": "3-шаговая настройка",
    "wizardStep1Label": "Проверить",
    "wizardStep2Label": "DNS",
    "wizardStep3Label": "Сопоставления",
    "wizardStep1Desc": "Подтвердите, что сервер работает и сертификат установлен.",
    "wizardStep2Desc": "Следующие записи будут добавлены в /etc/hosts для перенаправления трафика через AgentBridge:",
    "wizardStep3Desc": "Теперь вы можете настроить сопоставления моделей в карточке агента. Перезапустите IDE, чтобы применить изменения.",
    "wizardStep3Success": "Агент настроен!",
    "wizardServerCheck": "Сервер AgentBridge",
    "wizardRunning": "выполнение",
    "wizardNotRunning": "не запущено",
    "wizardCertCheck": "Сертификат",
    "wizardTrusted": "доверенный",
    "wizardNotTrusted": "еще не доверено — используйте кнопку Доверить сертификат",
    "wizardTutorialTitle": "Инструкции по настройке:",
    "wizardEnableDns": "Добавить записи в /etc/hosts",
    "wizardDnsAlreadyEnabled": "DNS уже включен для этого агента",
    "enablingDns": "Включение…",
    "modelSelectorTitle": "Выберите целевую модель",
    "modelSelectorSearch": "Поиск моделей…",
    "noModelsFound": "Модели не найдены",
    "quickLinks": "Быстрые ссылки",
    "quickLinkProviders": "Настроить провайдеров",
    "quickLinkInspector": "Просмотр трафика в Traffic Inspector",
    "save": "Сохранить",
    "saving": "Сохранение…",
    "cancel": "Отмена",
    "back": "Назад",
    "next": "Далее",
    "done": "Готово",
    "loading": "Загрузка…",
    "riskNoticeTitle": "Признание риска",
    "riskNoticeBody": "AgentBridge будет перехватывать HTTPS-трафик от этого агента, перенаправляя его API-хосты через DNS. Включайте только в том случае, если вы принимаете на себя ответственность за соблюдение условий обслуживания агента и любых применимых сетевых политик.",
    "pageMoved": {
      "goNow": "Иди сейчас",
      "message": "MITM Proxy теперь находится под AgentBridge.",
      "title": "Эта страница была перемещена"
    }
  },
  "trafficInspector": {
    "title": "Инспектор Трафика",
    "subtitle": "Мониторинг вызовов LLM и отладка HTTPS-трафика любого приложения",
    "captureModesTitle": "Режимы захвата",
    "agentBridgeMode": "AgentBridge",
    "agentBridgeModeDesc": "Перехват трафика от всех подключенных агентов IDE",
    "customHostsMode": "Пользовательские хосты",
    "customHostsModeDesc": "Добавить конкретные хосты для перехвата",
    "httpProxyMode": "HTTP Прокси",
    "httpProxyModeDesc": "Используйте переменную окружения HTTP_PROXY",
    "systemWideMode": "Системный уровень",
    "systemWideModeDesc": "Перехватить весь системный трафик (расширенный)",
    "filterBarTitle": "Фильтры",
    "profileLlmOnly": "Только LLM",
    "profileCustom": "Пользовательский",
    "profileAll": "Все",
    "filterHost": "Фильтр хоста…",
    "filterAgent": "Агент",
    "filterStatus": "Статус",
    "pauseBtn": "Пауза",
    "resumeBtn": "Резюме",
    "clearBtn": "Очистить",
    "exportHar": "Экспорт .har",
    "recordSession": "REC",
    "stopSession": "Стоп",
    "liveBadge": "в прямом эфире",
    "offlineBadge": "офлайн",
    "noRequests": "Запросы еще не зафиксированы.",
    "noRequestsDesc": "Убедитесь, что AgentBridge запущен, или включите другой режим захвата.",
    "selectRequest": "Выберите запрос, чтобы просмотреть его.",
    "tabConversation": "Разговор",
    "tabHeaders": "Заголовки",
    "tabRequest": "Запрос",
    "tabResponse": "Ответ",
    "tabTiming": "Время",
    "tabLlm": "LLM",
    "tabStats": "Статистика",
    "requestHeaders": "Заголовки запроса",
    "responseHeaders": "Заголовки ответа",
    "rawEvents": "Сырые события",
    "mergedView": "Слитный вид",
    "noBody": "Нет тела.",
    "streaming": "стриминг…",
    "manageHosts": "Управление хостами",
    "copySnippet": "Скопировать фрагмент прокси",
    "addHost": "Добавить",
    "hostPlaceholder": "api.openai.com",
    "noHostsYet": "Пока не добавлено ни одного пользовательского хоста.",
    "noSessionsYet": "Нет сессий еще",
    "allTraffic": "Весь трафик (без сессии)",
    "sessionsDropdown": "Сессии",
    "annotationPlaceholder": "Добавить заметку…",
    "contextFingerprint": "Контекстный отпечаток",
    "llmProvider": "Обнаруженный провайдер",
    "llmApiKind": "Тип API",
    "llmModel": "Модель",
    "llmMessages": "Сообщения",
    "llmStream": "Поток",
    "llmMappedTo": "Сопоставлено с",
    "llmCostEstimate": "Смета затрат",
    "systemProxyExitWarning": "Прокси-сервер для всей системы все еще активен — покинуть страницу все равно?",
    "customHostsTitle": "Пользовательские хосты",
    "loading": "Загрузка…",
    "copied": "Скопировано!",
    "copy": "Копировать",
    "httpProxyTitle": "HTTP Proxy Snippet — порт {port}",
    "notRecording": "Не записывается",
    "anyStatus": "Любой статус",
    "viewingRecordedSession": "Просмотр записанной сессии",
    "backToLive": "Назад к прямому эфиру",
    "untitledSession": "Безымянная сессия",
    "contextHistory": "История контекста",
    "modelResponse": "Ответ Модели",
    "conversationNoMessages": "Сообщений не найдено в этом запросе.",
    "conversationNotAvailable": "Данные разговора недоступны. Это может быть не запрос LLM или тело не удалось разобрать.",
    "loadingCharts": "Загрузка графиков…",
    "statsErrors": "Ошибки",
    "statsLatency": "Задержка (последние 50 запросов)",
    "statsNoData": "Пока нет запросов. Начните запись сессии, чтобы собрать данные для статистики.",
    "statsStatusDistribution": "Распределение статусов",
    "statsSuccessful": "Успешно",
    "statsTotalRequests": "Всего запросов",
    "timingProxyOverhead": "Накладные расходы прокси",
    "timingUpstreamResponse": "Ответ от upstream",
    "timingNoData": "Нет данных о времени.",
    "timingTotalLatency": "Общая задержка",
    "timingTimestamp": "Метка времени",
    "timingMethod": "Метод",
    "timingStatus": "Статус",
    "timingRequestSize": "Размер запроса",
    "timingResponseSize": "Размер ответа",
    "pausedNewBadge": "{count} новых",
    "clearContextFilter": "очистить"
  },
  "cliCommon": {
    "concept": {
      "code": {
        "title": "Код CLI",
        "phrase": "Инструменты кода, которые вы указываете на OmniRoute",
        "flow": "Вы → CLI Код → OmniRoute → Провайдер",
        "seeOther": "Смотреть →"
      },
      "agent": {
        "title": "CLI Агенты",
        "phrase": "Универсальные автономные CLI-агенты, которые вы нацеливаете на OmniRoute",
        "flow": "Вы → CLI Агент → OmniRoute → Провайдер",
        "seeOther": "Смотреть →"
      },
      "acp": {
        "title": "Агенты ACP",
        "phrase": "CLIs, которые OmniRoute запускает в качестве бэкенда выполнения (обратный поток)",
        "flow": "Клиент → OmniRoute → запустить CLI (stdio/ACP) → ответ",
        "seeOther": "Смотреть →"
      }
    },
    "comparison": {
      "title": "Поймите 3 типа CLI в OmniRoute",
      "thisPage": "[Эта страница ✓]",
      "code": {
        "title": "Инструмент кода",
        "desc": "Точки к Omni",
        "flow": "вы → CLI → Omni → провайдер",
        "examples": "например: claude, codex"
      },
      "agent": {
        "title": "Широкий автономный агент",
        "desc": "Точки к Omni",
        "flow": "вы → агент → Omni",
        "examples": "например: гермес, гусь"
      },
      "acp": {
        "title": "CLI, используемый в качестве бэкенда Omni",
        "desc": "Обратное выполнение",
        "flow": "Omni → spawn CLI → resp",
        "examples": "например: claude, codex (ACP)"
      }
    },
    "card": {
      "detected": "Обнаружено",
      "notDetected": "Не обнаружено",
      "configured": "Настроено",
      "notConfigured": "Не настроено",
      "configure": "Настроить →",
      "howToInstall": "Как установить →",
      "manualConfig": "Ручная настройка",
      "installGuide": "Руководство по установке",
      "endpointLabel": "Конечная точка",
      "baseUrlPartial": "Частичный базовый URL",
      "refreshDetection": "Обнаружение обновления",
      "alsoAcp": "также ACP"
    },
    "detail": {
      "back": "Назад",
      "apply": "Сохранить",
      "reset": "Очистить",
      "manualConfig": "Ручная настройка",
      "vendor": "Поставщик",
      "category": "Тип",
      "detectionStatus": "Обнаружение",
      "configStatus": "Конфигурация",
      "baseUrlLabel": "Базовый URL",
      "apiKeyLabel": "API ключ",
      "modelMappingLabel": "Сопоставление моделей",
      "noActiveProviders": "Нет активных провайдеров.",
      "noActiveProvidersDesc": "Перейдите в Провайдеры, чтобы подключить как минимум 1 провайдера перед настройкой CLI.",
      "openProviders": "Открыть Провайдеры →"
    }
  },
  "cliCode": {
    "pageTitle": "CLI Кодов",
    "pageSubtitle": "Инструменты кода, указывающие на OmniRoute",
    "searchPlaceholder": "Поиск CLI…",
    "filterDetectionLabel": "Обнаружение",
    "filterBaseUrlLabel": "Базовый URL",
    "detectionAll": "Все",
    "detectionInstalled": "Установлено",
    "detectionNotFound": "Не найдено",
    "baseUrlAll": "Все",
    "baseUrlFull": "Полный",
    "baseUrlPartial": "Частичный"
  },
  "cliAgents": {
    "pageTitle": "CLI Агенты",
    "pageSubtitle": "Универсальные автономные CLI-агенты",
    "refreshDetection": "Обновление обнаружения",
    "searchPlaceholder": "Поиск агента…",
    "detectionFilterLabel": "Обнаружение",
    "detectionAll": "Все",
    "detectionInstalled": "Установлено",
    "detectionNotInstalled": "Не установлено",
    "visibleCount": "{count} видимо",
    "emptyState": "Не найдено CLI-агентов с текущими фильтрами."
  },
  "acpAgents": {
    "pageTitle": "Агенты ACP",
    "pageSubtitle": "CLIs, которые OmniRoute запускает в качестве бэкенда выполнения",
    "scanning": "Обнаружение агентов…",
    "refresh": "Обновить",
    "setupGuideTitle": "Руководство по настройке",
    "setupGuideDetectCliTitle": "Обнаружить CLI",
    "setupGuideDetectCliDesc": "Агенты идентифицируются с помощью выполнения команды --version в PATH.",
    "setupGuideCustomAgentTitle": "Добавить пользовательского агента",
    "setupGuideCustomAgentDesc": "Заполните форму ниже, чтобы зарегистрировать пользовательского CLI-агента.",
    "setupGuideCommandMissingTitle": "Команда не найдена",
    "setupGuideCommandMissingDesc": "Проверьте, что бинарный файл находится в PATH.",
    "fingerprintSettingsHint": "Настройте маршрутизацию и отпечатки в",
    "settingsRoutingLink": "Настройки → Маршрутизация",
    "installed": "Установлено",
    "notFound": "Не найдено",
    "builtIn": "Встроенный",
    "custom": "Пользовательский",
    "agentUseCaseHint": "Доступно для спавна через ACP.",
    "remove": "Удалить",
    "addCustomAgent": "Добавить пользовательского агента",
    "addCustomAgentDesc": "Зарегистрируйте пользовательского CLI-агента для запуска через ACP.",
    "addAgent": "Добавить агента",
    "agentName": "Имя",
    "agentNamePlaceholder": "Мой Агент",
    "binaryName": "Двоичный",
    "binaryNamePlaceholder": "например: myagent",
    "versionCommand": "Команда версии",
    "versionCommandPlaceholder": "myagent --version",
    "spawnArgs": "Аргументы запуска",
    "spawnArgsPlaceholder": "например: --quiet, --json",
    "cliCodeRedirectCta": "Открыть CLI Code's"
  },
  "agentSkills": {
    "pageTitle": "Навыки агента",
    "pageSubtitle": "Научите вашего агента работать с OmniRoute — 22 области API + 20 семейств CLI",
    "conceptCard": {
      "agent": {
        "title": "Навыки агента — Исходящие",
        "description": "Навыки агента — это читаемые машиной документы SKILL.md, которые внешние AI-агенты (Claude Code, Cursor, Copilot…) загружают с GitHub, чтобы узнать, как управлять OmniRoute через REST или CLI. Они читаются агентом, а не выполняются OmniRoute.",
        "crossLinkLabel": "Понять разницу →"
      },
      "omni": {
        "title": "Omni Skills — Входящие",
        "description": "Omni Skills — это инструменты песочницы, которые OmniRoute внедряет в контекст модели при каждом запросе. Они выполняются OmniRoute, а не считываются агентом.",
        "crossLinkLabel": "Понять разницу →"
      },
      "comparison": {
        "colAgent": "Навыки агента",
        "colOmni": "Омни Навыки",
        "whatIs": {
          "label": "Что это такое",
          "agent": "Машиночитаемый SKILL.md, который обучает внешнего агента управлять OmniRoute",
          "omni": "Исполняемые инструменты, которые OmniRoute внедряет в запросы LLM в качестве инструментов"
        },
        "direction": {
          "label": "Направление",
          "agent": "Исходящий — внешний агент учится управлять OmniRoute",
          "omni": "Inbound — OmniRoute предоставляет инструменты для моделей, проходящих через него"
        },
        "executor": {
          "label": "Исполнитель",
          "agent": "Внешний агент (читает markdown → действует через API/CLI)",
          "omni": "OmniRoute сам по себе (перехватывает tool_calls, Docker песочница)"
        },
        "storage": {
          "label": "Хранилище",
          "agent": "Динамический каталог (/api/agent-skills) → SKILL.md на GitHub",
          "omni": "SQLite (SkillsMP / skills.sh / local)"
        },
        "tagline": {
          "label": "Слоган",
          "agent": "Научите вашего агента использовать OmniRoute",
          "omni": "Предоставьте исполняемые инструменты для моделей OmniRoute"
        }
      }
    },
    "filters": {
      "category": "Категория",
      "area": "Область",
      "searchPlaceholder": "Поиск навыков…"
    },
    "categoryApi": "API",
    "categoryCli": "CLI",
    "filterAll": "Все",
    "coverageLabel": "Покрытие",
    "mcpUrl": "MCP URL",
    "a2aLink": "A2A",
    "copyUrl": "Скопировать URL",
    "viewOnGithub": "Посмотреть на GitHub",
    "previewLoading": "Загрузка документации по навыкам…",
    "previewError": "Не удалось загрузить документацию по навыкам.",
    "previewEmpty": "Выберите навык, чтобы просмотреть его документацию.",
    "generateButton": "Сгенерировать недостающие навыки",
    "coverageBar": {
      "complete": "Завершено",
      "partial": "Частичный"
    },
    "noSkillsFound": "Не найдено навыков, соответствующих вашим фильтрам.",
    "regenerateConfirm": "Это приведет к регенерации всех отсутствующих SKILL.md файлов. Продолжить?",
    "regenerateRunning": "Регенерация навыков…",
    "regenerateSuccess": "Навыки успешно восстановлены.",
    "regenerateError": "Не удалось восстановить навыки."
  }
}
