| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945 |
- {
- "actions": {
- "copy": "Копировать",
- "download": "Скачать",
- "copied": "Скопировано"
- },
- "title": {
- "costRanking": "Таблица расходов",
- "costRankingDescription": "Просмотр рейтинга расходов пользователей, данные обновляются каждые 5 минут",
- "usageLogs": "Журналы использования",
- "clients": "Клиенты",
- "userAndKeyManagement": "Управление пользователями и ключами",
- "requestMessages": "Сообщения запроса",
- "activeSessions": "Активные сеансы (последние 5 минут)",
- "sessionMonitoring": "Мониторинг сеансов",
- "sessionMonitoringDescription": "Отображение активных и неактивных сеансов в реальном времени (автоматическое обновление каждые 3 секунды)",
- "inactiveSessions": "Неактивные сеансы (более 5 минут, только просмотр)",
- "quotasManagement": "Управление квотами",
- "quotasManagementDescription": "Просмотр и управление квотами на всех уровнях",
- "usersQuotas": "Статистика квот пользователей",
- "keysQuotas": "Статистика квот ключей",
- "providersQuotas": "Статистика квот поставщиков",
- "usageLogsDescription": "Просмотр журналов вызовов API и статистики использования",
- "filterCriteria": "Критерии фильтрации",
- "filterCriteriaDescription": "Фильтруйте журналы по времени, пользователю, поставщику и другим параметрам"
- },
- "description": {
- "viewApiCallLogs": "Просмотр журналов вызовов API и статистики использования",
- "dashboard": "Просмотр системной статистики и информации мониторинга",
- "quotas": "Просмотр и управление квотами на всех уровнях",
- "clientInfo": "Заголовок запроса User-Agent",
- "requestMessagesDescription": "Содержимое сообщения, отправленного клиентом",
- "responseBodyDescription": "Полный ответ сервера (TTL 5 минут)"
- },
- "overview": {
- "title": "Обзор",
- "totalRequests": "Всего запросов",
- "totalCost": "Общие затраты",
- "totalUsers": "Всего пользователей",
- "totalProviders": "Всего поставщиков",
- "activeUsers": "Активные пользователи",
- "activeSessions": "Активные сеансы",
- "errorRate": "Коэффициент ошибок",
- "avgResponseTime": "Среднее время ответа"
- },
- "stats": {
- "title": "Статистика",
- "requests": "Запросы",
- "cost": "Стоимость",
- "tokens": "Токены",
- "period": {
- "hour": "Последний час",
- "day": "Сегодня",
- "week": "На этой неделе",
- "month": "В этом месяце"
- }
- },
- "logs": {
- "title": "Журналы использования",
- "description": "Просмотр и анализ записей вызовов API",
- "filters": {
- "user": "Пользователь",
- "provider": "Поставщик",
- "sessionId": "ID сессии",
- "searchUser": "Поиск пользователей...",
- "searchProvider": "Поиск провайдеров...",
- "searchSessionId": "Поиск ID сессии...",
- "noUserFound": "Пользователи не найдены",
- "noProviderFound": "Провайдеры не найдены",
- "noSessionFound": "ID сессии не найдены",
- "model": "Модель",
- "endpoint": "Эндпоинт",
- "status": "Статус",
- "timeRange": "Диапазон времени",
- "dateRange": "Диапазон дат",
- "startTime": "Время начала",
- "endTime": "Время окончания",
- "allUsers": "Все пользователи",
- "allKeys": "Все ключи",
- "selectUserFirst": "Сначала выберите пользователя",
- "allProviders": "Все поставщики",
- "allModels": "Все модели",
- "allEndpoints": "Все эндпоинты",
- "allStatusCodes": "Все коды состояния",
- "apiKey": "API ключ",
- "statusCode": "Код состояния",
- "minRetryCount": "Количество ретраев ≥",
- "minRetryCountPlaceholder": "Введите минимум (0 — без ограничения)",
- "apply": "Применить фильтр",
- "reset": "Сброс",
- "last7days": "7д",
- "last30days": "30д",
- "customRange": "Произвольный диапазон",
- "export": "Экспорт",
- "exporting": "Экспорт...",
- "exportSuccess": "Экспорт завершен",
- "exportError": "Ошибка экспорта",
- "quickFilters": {
- "today": "Сегодня",
- "thisWeek": "Эта неделя",
- "errorsOnly": "Только ошибки",
- "showRetries": "С ретраями"
- },
- "activeFilters": {
- "title": "Активные фильтры",
- "remove": "Удалить фильтр",
- "clearAll": "Очистить все"
- },
- "groups": {
- "time": "Период времени",
- "timeDesc": "Фильтр по дате и времени",
- "identity": "Идентификация",
- "identityDesc": "Фильтр по пользователю и ключу",
- "request": "Запрос",
- "requestDesc": "Фильтр по поставщику, модели, эндпоинту",
- "status": "Статус",
- "statusDesc": "Фильтр по коду состояния и ретраям"
- }
- },
- "columns": {
- "time": "Время",
- "user": "Пользователь",
- "key": "Ключ",
- "sessionId": "ID сессии",
- "provider": "Поставщик",
- "model": "Модель тарификации",
- "endpoint": "Эндпоинт",
- "inputTokens": "Вход",
- "outputTokens": "Выход",
- "tokens": "Tokens",
- "cacheWrite": "Запись в кэш",
- "cacheRead": "Чтение из кэша",
- "cache": "Cache",
- "cost": "Стоимость",
- "duration": "Продолжительность",
- "performance": "Perf",
- "status": "Статус"
- },
- "stats": {
- "title": "Сводка статистики",
- "description": "Агрегированная статистика по текущим фильтрам",
- "totalAmount": "Общая сумма расходов",
- "totalTokens": "Общее количество токенов",
- "cacheTokens": "Токены кэша",
- "input": "Вход",
- "output": "Выход",
- "write": "Запись",
- "read": "Чтение",
- "totalRequests": "Всего запросов",
- "loading": "Загрузка..."
- },
- "table": {
- "noData": "Нет данных",
- "pagination": "Всего {total} записей, страница {page} / {totalPages}",
- "prevPage": "Предыдущая",
- "nextPage": "Следующая",
- "blocked": "Заблокировано",
- "nonBilling": "Не тарифицируется",
- "skipped": "Пропущено",
- "specialSettings": "Особые",
- "times": "раз",
- "loadedCount": "Загружено {count} записей",
- "loadingMore": "Загрузка...",
- "noMoreData": "Все записи загружены",
- "scrollToTop": "Наверх",
- "hideProviderColumn": "Скрыть столбец провайдера",
- "showProviderColumn": "Показать столбец провайдера",
- "columnVisibility": "Видимость столбцов"
- },
- "actions": {
- "refresh": "Обновить",
- "refreshing": "Обновление...",
- "stopAutoRefresh": "Остановить автообновление",
- "startAutoRefresh": "Начать автообновление",
- "view": "Просмотр",
- "fullscreen": "Полный экран",
- "exitFullscreen": "Выйти из полного экрана"
- },
- "error": {
- "loadFailed": "Ошибка загрузки",
- "loadKeysFailed": "Не удалось загрузить список ключей"
- },
- "details": {
- "title": "Детали запроса",
- "statusTitle": "Статус: {status}",
- "inProgress": "В процессе",
- "unknown": "Неизвестно",
- "success": "Запрос успешно выполнен",
- "error": "Запрос не выполнен, ниже подробная информация об ошибке и цепочке решений поставщика",
- "processing": "Запрос находится в процессе выполнения и еще не завершен",
- "tabs": {
- "summary": "Обзор",
- "logicTrace": "Цепочка решений",
- "performance": "Производительность",
- "metadata": "Метаданные"
- },
- "summary": {
- "keyMetrics": "Ключевые показатели",
- "totalCost": "Общая стоимость",
- "totalTokens": "Всего токенов",
- "duration": "Длительность",
- "outputRate": "Скорость вывода",
- "viewFullError": "Показать полную ошибку",
- "viewSession": "Просмотр сеанса"
- },
- "specialSettings": {
- "title": "Особые настройки"
- },
- "skipped": {
- "title": "Пропущено",
- "reason": "Причина",
- "warmup": "Warmup быстрый ответ (CCH)",
- "desc": "Этот запрос был распознан как Warmup-проба и был обработан самим CCH без обращения к провайдерам; он не тарифицируется, не учитывается в лимитах и исключается из статистики."
- },
- "blocked": {
- "title": "Информация о блокировке",
- "type": "Тип блокировки",
- "sensitiveWord": "Блокировка по ключевым словам",
- "word": "Ключевое слово",
- "matchType": "Тип совпадения",
- "matchTypeContains": "Содержит",
- "matchTypeExact": "Точное совпадение",
- "matchTypeRegex": "Регулярное выражение",
- "matchedText": "Совпадающий контент"
- },
- "sessionId": "ID сеанса",
- "messagesCount": "Количество сообщений",
- "messagesLabel": "Сообщения",
- "messagesUnit": "шт.",
- "clientInfo": "Информация о клиенте",
- "modelRedirect": {
- "title": "Перенаправление модели",
- "requestModel": "Запрошенная модель",
- "actualModel": "Фактический вызов",
- "billing": "Описание тарификации",
- "billingDescription": "Система в первую очередь тарифицирует по цене запрошенной модели ({original}). Если эта модель отсутствует в прайс-листе, используется цена фактически вызванной модели ({current}).",
- "billingModel": "Модель тарификации",
- "actualModelTooltip": "Фактическая модель: {model}",
- "originalModelTooltip": "Исходная модель: {model}",
- "billingDescription_original": "Текущий режим тарификации: По исходной модели до перенаправления ({original})",
- "billingDescription_redirected": "Текущий режим тарификации: По фактической модели после перенаправления ({current})",
- "billingOriginal": "оплата: исх.",
- "billingRedirected": "оплата: факт."
- },
- "errorMessage": "Сообщение об ошибке",
- "fake200ForwardedNotice": "Примечание: для потоковых запросов эта ошибка может быть обнаружена только после завершения потока; содержимое ответа могло уже быть передано клиенту.",
- "fake200DetectedReason": "Причина обнаружения: {reason}",
- "fake200Reasons": {
- "emptyBody": "Пустое тело ответа",
- "htmlBody": "Получен HTML-документ (возможно, страница ошибки)",
- "jsonErrorNonEmpty": "В JSON непустое поле `error`",
- "jsonErrorMessageNonEmpty": "В JSON непустое `error.message`",
- "jsonMessageKeywordMatch": "В JSON `message` содержит слово \"error\" (эвристика)",
- "unknown": "Тело ответа указывает на ошибку"
- },
- "statusCodeInferredBadge": "Предположено",
- "statusCodeInferredTooltip": "Этот код состояния выведен по содержимому тела ответа (например, fake 200) и может отличаться от HTTP-кода апстрима.",
- "statusCodeInferredSuffix": "(предп.)",
- "filteredProviders": "Отфильтрованные поставщики",
- "providerChain": {
- "title": "Хронология цепочки решений поставщика",
- "totalDuration": "Общая продолжительность: {duration}мс"
- },
- "noError": {
- "processing": "Запрос обрабатывается, ожидание ответа...",
- "success": "Запрос успешно выполнен, ошибок нет",
- "default": "Подробная информация об ошибке отсутствует"
- },
- "clickStatusCode": "Нажмите на код состояния, чтобы просмотреть полную хронологию",
- "viewDetails": "Просмотр деталей",
- "reasons": {
- "rateLimited": "Лимит стоимости поставщика",
- "circuitOpen": "Размыкатель цепи открыт"
- },
- "billingDetails": {
- "title": "Детали биллинга",
- "input": "Входные",
- "output": "Выходные",
- "cacheWrite5m": "Запись кэша (5m)",
- "cacheWrite1h": "Запись кэша (1h)",
- "cacheRead": "Чтение кэша",
- "cacheTtl": "TTL кэша",
- "cacheTtlSwapped": "TTL биллинга (инверсия)",
- "multiplier": "Множитель поставщика",
- "totalCost": "Общая стоимость",
- "context1m": "1M контекст",
- "context1mPricing": "Вход 2x >200k, Выход 1.5x >200k"
- },
- "performance": {
- "title": "Производительность",
- "ttfb": "TTFB",
- "duration": "Общее время",
- "outputRate": "Скорость вывода"
- },
- "performanceTab": {
- "noPerformanceData": "Нет данных о производительности",
- "ttfbGauge": "Время до первого байта",
- "outputRateGauge": "Скорость вывода",
- "latencyBreakdown": "Разбивка задержки",
- "generationTime": "Время генерации",
- "assessment": {
- "excellent": "Отлично",
- "good": "Хорошо",
- "warning": "Предупреждение",
- "poor": "Плохо"
- },
- "thresholds": {
- "ttfbGood": "TTFB < 1с",
- "ttfbWarning": "TTFB 1-2с",
- "ttfbPoor": "TTFB > 3с"
- }
- },
- "metadata": {
- "noMetadata": "Нет метаданных",
- "sessionInfo": "Информация о сеансе",
- "clientInfo": "Информация о клиенте",
- "billingInfo": "Информация о биллинге",
- "technicalTimeline": "Техническая хронология",
- "copyTimeline": "Копировать хронологию"
- },
- "logicTrace": {
- "title": "Цепочка решений",
- "noDecisionData": "Нет данных о решениях",
- "providersCount": "{count} поставщиков",
- "healthyCount": "{count} исправных",
- "initialSelection": "Начальный выбор",
- "healthCheck": "Проверка работоспособности",
- "prioritySelection": "Выбор по приоритету",
- "attemptProvider": "Попытка: {provider}",
- "retryAttempt": "Повтор #{number}",
- "httpStatus": "HTTP {code}{inferredSuffix}",
- "sessionReuse": "Повторное использование сессии",
- "sessionReuseDesc": "Провайдер из кэша сессии",
- "sessionReuseTitle": "Привязка сессии",
- "sessionReuseSelection": "Выбор с повторным использованием сессии",
- "sessionReuseSelectionDesc": "Провайдер выбран из кэша сессии",
- "sessionInfo": "Информация о сессии",
- "sessionIdLabel": "ID сессии",
- "requestSequence": "Номер запроса",
- "sessionAge": "Возраст сессии",
- "reusedProvider": "Повторно используемый провайдер",
- "executeRequest": "Выполнить запрос",
- "cacheOptimizationHint": "Повторное использование сессии оптимизирует производительность, поддерживая привязку к провайдеру в рамках одного разговора, снижая накладные расходы на выбор и повышая частоту попаданий в кэш."
- }
- },
- "providerChain": {
- "decisionChain": "Цепочка решений поставщика",
- "clickItemForDetails": "Нажмите на шаг, чтобы посмотреть детали"
- },
- "modelRedirect": {
- "redirected": "Перенаправлено",
- "targetModel": "Целевая модель"
- },
- "statusCodes": {
- "not200": "Не 200 (ошибки/блокировки)",
- "200": "200 (Успех)",
- "400": "400 (Неверный запрос)",
- "401": "401 (Не авторизован)",
- "429": "429 (Ограничение)",
- "500": "500 (Ошибка сервера)"
- },
- "billingDetails": {
- "input": "Входные",
- "output": "Выходные",
- "cacheWrite5m": "Запись кэша (5m)",
- "cacheWrite1h": "Запись кэша (1h)",
- "cacheRead": "Чтение кэша",
- "cacheTtl": "TTL кэша",
- "cacheTtlSwapped": "TTL биллинга (инверсия)",
- "multiplier": "Множитель поставщика",
- "totalCost": "Общая стоимость",
- "context1m": "1M Контекст",
- "context1mPricing": "Вход >200k 2x, Выход >200k 1.5x"
- }
- },
- "leaderboard": {
- "title": "Таблица расходов",
- "description": "Просмотр рейтинга расходов пользователей и ключей",
- "todayTitle": "Сегодняшний рейтинг",
- "viewAll": "Смотреть все",
- "userRankings": "Рейтинг пользователей",
- "providerRankings": "Рейтинг поставщиков",
- "modelRankings": "Рейтинг моделей",
- "noData": "Нет данных за сегодня",
- "requests": "запросов",
- "tokens": "токенов",
- "tabs": {
- "users": "Рейтинг пользователей",
- "keys": "Рейтинг ключей",
- "userRanking": "Рейтинг пользователей",
- "providerRanking": "Рейтинг поставщиков",
- "providerCacheHitRateRanking": "Рейтинг по попаданиям в кэш",
- "modelRanking": "Рейтинг моделей",
- "dailyRanking": "Сегодня",
- "weeklyRanking": "Эта неделя",
- "monthlyRanking": "Этот месяц",
- "allTimeRanking": "Всё время"
- },
- "dateRange": {
- "to": "по",
- "prevPeriod": "Предыдущий период",
- "nextPeriod": "Следующий период",
- "customRange": "Произвольный диапазон"
- },
- "columns": {
- "rank": "Ранг",
- "name": "Имя",
- "totalCost": "Общие затраты",
- "totalRequests": "Всего запросов",
- "avgCost": "Средние затраты",
- "lastActive": "Последняя активность",
- "user": "Пользователь",
- "requests": "Количество запросов",
- "tokens": "Количество токенов",
- "consumedAmount": "Потраченная сумма",
- "provider": "Поставщик",
- "model": "Модель",
- "cost": "Стоимость",
- "cacheHitRequests": "Запросы (учтены в hit rate)",
- "cacheHitRate": "Попадания в кэш",
- "cacheReadTokens": "Токены чтения из кэша",
- "totalTokens": "Всего токенов",
- "cacheCreationConsumedAmount": "Расход на создание кэша",
- "totalConsumedAmount": "Общие расходы",
- "successRate": "Процент успеха",
- "avgResponseTime": "Среднее время ответа",
- "avgTtfbMs": "Средний TTFB",
- "avgTokensPerSecond": "Средн. ток/с",
- "avgCostPerRequest": "Ср. стоимость/запрос",
- "avgCostPerMillionTokens": "Ср. стоимость/1М токенов"
- },
- "expandModelStats": "Развернуть модели",
- "collapseModelStats": "Свернуть модели",
- "states": {
- "loading": "Загрузка...",
- "noData": "Нет данных",
- "todayNoData": "Нет данных за сегодня",
- "weekNoData": "Нет данных за эту неделю",
- "monthNoData": "Нет данных за этот месяц",
- "fetchFailed": "Не удалось получить данные таблицы лидеров"
- },
- "permission": {
- "title": "Требуются разрешения",
- "restricted": "Доступ ограничен",
- "description": "Для функции таблицы лидеров администратору необходимо включить разрешение «Разрешить просмотр использования всего сайта».",
- "adminAction": "Включить это разрешение.",
- "userAction": "Пожалуйста, свяжитесь с администратором, чтобы включить это разрешение.",
- "systemSettings": "Настройки системы"
- },
- "filters": {
- "userTagsPlaceholder": "Фильтр по тегам пользователей...",
- "userGroupsPlaceholder": "Фильтр по группам пользователей..."
- }
- },
- "sessions": {
- "title": "Активные сеансы",
- "description": "Мониторинг активных сеансов API в режиме реального времени",
- "monitoring": "Мониторинг сеансов",
- "monitoringDescription": "Отображение активных и неактивных сеансов в реальном времени (автоматическое обновление каждые 3 секунды)",
- "activeSessions": "Активные сеансы (последние 5 минут)",
- "inactiveSessions": "Неактивные сеансы (более 5 минут, только просмотр)",
- "columns": {
- "sessionId": "ID сеанса",
- "user": "Пользователь",
- "key": "Ключ",
- "provider": "Поставщик",
- "model": "Модель",
- "startTime": "Время начала",
- "lastActivity": "Последняя активность",
- "requestCount": "Количество запросов",
- "totalInput": "Общий ввод",
- "totalOutput": "Общий вывод",
- "totalCost": "Общая стоимость",
- "totalDuration": "Общая продолжительность",
- "status": "Статус",
- "actions": "Действия"
- },
- "table": {
- "count": "Всего {count} {type} сеансов",
- "active": "Активные",
- "inactive": "Неактивные",
- "notCountedInConcurrency": "(не учитывается в параллельных запросах)",
- "refreshing": "Обновление...",
- "noActiveSessions": "Нет активных сеансов"
- },
- "pagination": {
- "total": "всего"
- },
- "details": {
- "title": "Сообщения сеанса",
- "messages": "Список сообщений",
- "info": "Информация сеанса",
- "timeline": "Хронология",
- "overview": "Обзор сеанса",
- "overviewDescription": "Сводная статистика",
- "providersAndModels": "Поставщики и модели",
- "providersAndModelsDescription": "Используемые поставщики и модели",
- "tokenUsage": "Использование токенов (всего)",
- "tokenUsageDescription": "Кумулятивная статистика по всем запросам",
- "costInfo": "Информация о стоимости (всего)",
- "costInfoDescription": "Кумулятивная стоимость по всем запросам",
- "totalRequests": "Всего запросов",
- "firstRequest": "Первый запрос",
- "lastRequest": "Последний запрос",
- "totalDuration": "Общая продолжительность",
- "totalInput": "Общий ввод",
- "totalOutput": "Общий вывод",
- "cacheCreation": "Создание кэша",
- "cacheTtlMixed": "Смешанный",
- "cacheRead": "Чтение из кэша",
- "total": "Всего",
- "totalFee": "Общая плата",
- "providers": "Поставщики",
- "models": "Модели",
- "noDetailedData": "Подробные данные отсутствуют",
- "storageTip": "Подробные данные не найдены. Возможные причины: Redis отключен/недоступен (REDIS_URL + ENABLE_RATE_LIMIT=true), данные истекли (SESSION_TTL, по умолчанию 300с), или сохранение тела ответа отключено (STORE_SESSION_RESPONSE_BODY=false, влияет только на тело ответа). Чтобы сохранять сообщения без маскировки, установите STORE_SESSION_MESSAGES=true.",
- "clientInfo": "Информация о клиенте",
- "requestHeaders": "Заголовки запроса",
- "requestBody": "Тело запроса",
- "requestMessages": "Сообщения запроса",
- "specialSettings": "Особые",
- "requestMessagesDescription": "Содержимое сообщения, отправленного клиентом",
- "responseHeaders": "Заголовки ответа",
- "responseBody": "Тело ответа",
- "responseBodyDescription": "Полный ответ сервера (TTL 5 минут)",
- "noHeaders": "Нет данных",
- "noData": "Нет данных",
- "prevRequest": "Предыдущий",
- "nextRequest": "Следующий"
- },
- "actions": {
- "back": "Назад",
- "view": "Просмотр",
- "copy": "Копировать",
- "download": "Скачать",
- "copyMessages": "Копировать запрос (заголовки и тело)",
- "downloadMessages": "Скачать запрос (заголовки и тело)",
- "copied": "Скопировано",
- "copyResponse": "Копировать тело ответа",
- "terminate": "Прервать",
- "terminateTitle": "Прервать сессию",
- "terminateDescription": "Вы уверены, что хотите прервать эту сессию? После прерывания привязка поставщика будет очищена, и следующий запрос выберет нового поставщика.",
- "sessionIdLabel": "ID сессии: {sessionId}",
- "cancel": "Отмена",
- "confirmTerminate": "Прервать",
- "terminating": "Прерывание...",
- "terminateSuccess": "Сессия успешно прервана",
- "terminateFailed": "Не удалось прервать сессию",
- "terminateSelected": "Прервать выбранные",
- "selectedCount": "Выбрано: {count}",
- "selectAll": "Выбрать все",
- "selectSessionLabel": "Выбрать сессию",
- "multiSelect": "Множественный выбор",
- "cancelMultiSelect": "Отмена",
- "terminateSessionTitle": "Прервать сессию",
- "terminateSessionDescription": "Вы уверены, что хотите прервать эту сессию? Это действие нельзя отменить.",
- "batchTerminateSuccess": "Прервано {count} сессий",
- "batchTerminatePartial": "Без прав: {unauthorized} · Отсутствуют: {missing}",
- "batchTerminateAllowedFailed": "Не удалось прервать {count} разрешённых сессий",
- "batchTerminateNone": "Не удалось прервать ни одной сессии",
- "noSelection": "Выберите хотя бы одну сессию"
- },
- "codeDisplay": {
- "raw": "Сырой",
- "pretty": "Форматированный",
- "searchPlaceholder": "Поиск",
- "expand": "Развернуть",
- "collapse": "Свернуть",
- "themeAuto": "Авто",
- "themeLight": "Светлая",
- "themeDark": "Тёмная",
- "noMatches": "Нет совпадений",
- "onlyMatches": "Только совпадения",
- "showAll": "Показать всё",
- "prevPage": "Назад",
- "nextPage": "Вперёд",
- "pageInfo": "Страница {page} / {total}",
- "sseEvent": "Событие",
- "sseData": "Данные",
- "hardLimit": {
- "title": "Содержимое слишком большое",
- "size": "Размер: {sizeMB} MB ({sizeBytes} bytes)",
- "maximum": "Максимум: {maxSizeMB} MB или {maxLines} строк",
- "hint": "Пожалуйста, скачайте файл, чтобы посмотреть весь контент.",
- "download": "Скачать"
- }
- },
- "status": {
- "loading": "Загрузка...",
- "loadError": "Ошибка загрузки",
- "fetchFailed": "Не удалось получить",
- "unknownError": "Неизвестная ошибка",
- "storageNotEnabled": "Не сохранено",
- "storageNotEnabledHint": "Подсказка: проверьте REDIS_URL и ENABLE_RATE_LIMIT=true (кэш деталей сессии). Чтобы сохранять сообщения без маскировки, установите STORE_SESSION_MESSAGES=true."
- },
- "errors": {
- "copyFailed": "Не удалось скопировать"
- },
- "requestList": {
- "title": "Список запросов",
- "noRequests": "Запросы не найдены",
- "fetchFailed": "Не удалось получить список запросов",
- "unknownError": "Неизвестная ошибка",
- "prev": "Назад",
- "next": "Вперед",
- "orderAsc": "Переключить на прямой порядок (старые первыми)",
- "orderDesc": "Переключить на обратный порядок (новые первыми)"
- },
- "back": "Назад",
- "loadingError": "Не удалось загрузить"
- },
- "quotas": {
- "title": "Управление квотами",
- "description": "Управление квотами пользователей, ключей и поставщиков",
- "tabs": {
- "overview": "Обзор",
- "users": "Квоты пользователей",
- "keys": "Квоты ключей",
- "providers": "Квоты поставщиков"
- },
- "columns": {
- "name": "Имя",
- "limit": "Лимит",
- "used": "Использовано",
- "remaining": "Осталось",
- "resetTime": "Время сброса",
- "status": "Статус"
- },
- "labels": {
- "byName": "По имени",
- "byUsageRate": "По уровню использования",
- "all": "Все",
- "warning": "Приближается к лимиту (>60%)",
- "exceeded": "Превышено (≥100%)"
- },
- "users": {
- "title": "Статистика квот пользователей",
- "totalUsers": "Всего {count} пользователей"
- },
- "keys": {
- "title": "Статистика квот ключей",
- "totalKeysInfo": "Всего {userCount} пользователей, {keyCount} ключей",
- "setKeyQuota": "Установить квоту ключа",
- "setUserQuota": "Установить квоту пользователя",
- "onlyKeyQuota": "Только квота ключа",
- "onlyUserQuota": "Только квота пользователя",
- "success": "Квота пользователя установлена успешно"
- },
- "providers": {
- "title": "Статистика квот поставщиков",
- "totalProviders": "Всего {count} поставщиков"
- }
- },
- "labels": {
- "byName": "По имени",
- "byUsageRate": "По уровню использования"
- },
- "all": "Все",
- "nav": {
- "mobileMenuTitle": "Меню навигации",
- "dashboard": "Панель",
- "usageLogs": "Журналы",
- "leaderboard": "Лидеры",
- "availability": "Мониторинг",
- "myQuota": "Моя квота",
- "quotasManagement": "Квоты",
- "userManagement": "Пользователи",
- "providers": "Поставщики",
- "documentation": "Доки",
- "systemSettings": "Настройки",
- "feedback": "Обратная связь",
- "login": "Вход",
- "logout": "Выход"
- },
- "statistics": {
- "title": "Статистика",
- "cost": "Сумма расходов",
- "calls": "Количество вызовов API",
- "totalCost": "Общая сумма расходов",
- "totalCalls": "Общее количество вызовов API",
- "timeRange": {
- "today": "Сегодня",
- "todayDescription": "Использование за сегодня",
- "7days": "7д",
- "7daysDescription": "Использование за последние 7 дней",
- "30days": "30д",
- "30daysDescription": "Использование за последние 30 дней",
- "thisMonth": "Этот месяц",
- "thisMonthDescription": "Использование за этот месяц",
- "default": "Использование"
- },
- "mode": {
- "keys": "Только ваши ключи",
- "mixed": "Показать детали ваших ключей и сводку других пользователей",
- "users": "Показать для всех"
- },
- "legend": {
- "selectAll": "Выбрать все",
- "deselectAll": "Очистить",
- "selected": "Выбрано"
- },
- "chartMode": {
- "label": "Режим отображения",
- "overlay": "Сравнение",
- "stacked": "Накопление"
- },
- "states": {
- "noData": "Нет статистических данных",
- "fetchFailed": "Не удалось получить статистические данные"
- },
- "othersAggregate": "Другие пользователи"
- },
- "errors": {
- "fetchSystemSettingsFailed": "Не удалось получить параметры системы",
- "fetchFailed": "Ошибка загрузки",
- "fetchSessionListFailed": "Не удалось получить список сеансов"
- },
- "keyList": {
- "columns": {
- "name": "Название",
- "key": "Ключ",
- "todayCalls": "Вызовы сегодня",
- "todayCost": "Расходы сегодня",
- "lastUsed": "Последнее использование",
- "actions": "Действия"
- },
- "detailsButton": "Подробная информация",
- "modelStats": "Статистика моделей",
- "modelStatsColumns": {
- "model": "Модель",
- "calls": "Вызовы",
- "cost": "Расходы"
- },
- "limitUsage": "Использование лимита",
- "copyKeyTooltip": "Скопировать полный ключ",
- "showKeyTooltip": "Показать полный ключ",
- "hideKeyTooltip": "Скрыть ключ",
- "copyFailed": "Не удалось скопировать:",
- "timesUnit": "раз",
- "provider": "Провайдер",
- "neverUsed": "Не использовался",
- "viewLogsTooltip": "Просмотр подробных журналов",
- "logsButton": "Журналы",
- "emptyState": {
- "title": "Нет ключей",
- "description": "Нажмите кнопку \"Добавить ключ\" в правом верхнем углу, чтобы добавить ключ"
- }
- },
- "userList": {
- "title": "Список пользователей",
- "badge": "{count} ключей",
- "activeKeys": "Активные ключи",
- "totalKeys": "Всего ключей",
- "expiresAt": "Срок действия",
- "status": {
- "active": "Активен",
- "expiringSoon": "Скоро истечет",
- "expired": "Истек",
- "disabled": "Отключен"
- },
- "actions": {
- "renew": "Продлить",
- "renew30d": "Продлить на 30 дней",
- "renew90d": "Продлить на 90 дней",
- "renew1y": "Продлить на 1 год",
- "renewCustom": "Настроить...",
- "customPrompt": "Введите новую дату истечения (ГГГГ-ММ-ДД). Оставьте пустым для отмены.",
- "invalidDate": "Пожалуйста, введите действительную дату",
- "enable": "Включить",
- "disable": "Отключить",
- "success": "Операция выполнена успешно",
- "failed": "Операция не удалась, попробуйте еще раз"
- },
- "emptyState": {
- "title": "Нет пользователей",
- "description": "Вы еще не создали ни одного пользователя. Пользователи являются основой для управления API-ключами и квотами использования. Создайте первого пользователя, чтобы начать!",
- "action": "Создать первого пользователя"
- },
- "addUser": "Добавить пользователя"
- },
- "keyListHeader": {
- "todayUsage": "Использование сегодня",
- "allowedModels": {
- "label": "Разрешённые модели",
- "noRestrictions": "Разрешённые модели: без ограничений"
- },
- "expiresAt": "Истекает",
- "proxyStatus": {
- "loading": "Загрузка статуса прокси",
- "fetchFailed": "Не удалось получить статус прокси",
- "noStatus": "Нет статуса прокси",
- "activeRequests": "Активные запросы",
- "lastRequest": "Последний запрос",
- "noRecord": "Нет записи",
- "timeAgo": {
- "justNow": "Только что",
- "secondsAgo": "{count}с назад",
- "minutesAgo": "{count} мин назад",
- "hoursAgo": "{count}ч назад",
- "daysAgo": "{count}д назад"
- }
- },
- "addKey": "Добавить ключ",
- "keyCreatedDialog": {
- "title": "Ключ успешно создан",
- "description": "Ваш API-ключ был успешно создан. Пожалуйста, скопируйте и сохраните его в безопасном месте, так как он будет показан только один раз.",
- "apiKeyLabel": "API ключ",
- "warningText": "Пожалуйста, скопируйте и сохраните перед закрытием. После закрытия вы не сможете снова просмотреть этот ключ",
- "httpWarningText": "Обнаружен HTTP-доступ. Ограничения браузера не позволяют использовать функцию копирования. Нажмите на значок глаза, чтобы показать ключ и скопировать его вручную.",
- "copyTooltip": "Скопировать в буфер обмена",
- "showTooltip": "Показать полный ключ",
- "hideTooltip": "Скрыть ключ",
- "closeButton": "Закрыть"
- },
- "allowedClients": {
- "label": "Разрешённые клиенты",
- "noRestrictions": "Разрешённые клиенты: без ограничений"
- }
- },
- "keyLimitUsage": {
- "loading": "Загрузка...",
- "error": "Ошибка загрузки",
- "networkError": "Сетевая ошибка",
- "cost5h": "Расход за 5 часов",
- "costDaily": "Дневной расход",
- "costWeekly": "Недельный расход",
- "costMonthly": "Месячный расход",
- "concurrentSessions": "Параллельные сеансы",
- "noLimit": "Без ограничений"
- },
- "addKeyForm": {
- "title": "Добавить ключ",
- "description": "Создать новый API-ключ для текущего пользователя. Значение ключа будет сгенерировано автоматически.",
- "submitText": "Создать ключ",
- "loadingText": "Создание...",
- "keyName": {
- "label": "Имя ключа",
- "placeholder": "Введите имя ключа"
- },
- "expiresAt": {
- "label": "Срок действия",
- "placeholder": "Выберите срок действия",
- "description": "Оставьте пустым для бессрочного ключа"
- },
- "canLoginWebUi": {
- "label": "Разрешить вход в веб-интерфейс",
- "description": "При отключении этот ключ можно использовать только для вызовов API и нельзя использовать для входа в панель администрирования"
- },
- "limit5hUsd": {
- "label": "Лимит расходов за 5 часов (USD)",
- "placeholder": "Оставьте пустым для неограниченного",
- "description": "Максимальный расход в течение 5 часов",
- "descriptionWithUserLimit": "Максимальный расход за 5 часов (Лимит пользователя: {limit})"
- },
- "limitDailyUsd": {
- "label": "Дневной лимит расходов (USD)",
- "placeholder": "Оставьте пустым для неограниченного",
- "description": "Максимальный расход в день"
- },
- "dailyResetMode": {
- "label": "Режим ежедневного сброса",
- "options": {
- "fixed": "Сброс в фиксированное время",
- "rolling": "Скользящее окно (24 часа)"
- },
- "desc": {
- "fixed": "Сброс квоты в определенное время каждый день",
- "rolling": "24-часовое скользящее окно от первого запроса"
- }
- },
- "dailyResetTime": {
- "label": "Время ежедневного сброса",
- "placeholder": "HH:mm",
- "description": "Когда сбрасывается дневной лимит (использует системный часовой пояс)"
- },
- "limitWeeklyUsd": {
- "label": "Недельный лимит расходов (USD)",
- "placeholder": "Оставьте пустым для неограниченного",
- "description": "Максимальный расход в неделю",
- "descriptionWithUserLimit": "Максимальный расход в неделю (Лимит пользователя: {limit})"
- },
- "limitMonthlyUsd": {
- "label": "Месячный лимит расходов (USD)",
- "placeholder": "Оставьте пустым для неограниченного",
- "description": "Максимальный расход в месяц",
- "descriptionWithUserLimit": "Максимальный расход в месяц (Лимит пользователя: {limit})"
- },
- "limitTotalUsd": {
- "label": "Общий лимит расходов (USD)",
- "placeholder": "Оставьте пустым для неограниченного",
- "description": "Максимальная сумма расходов (без сброса)",
- "descriptionWithUserLimit": "Не может превышать общий лимит пользователя ({limit})"
- },
- "limitConcurrentSessions": {
- "label": "Лимит параллельных сеансов",
- "placeholder": "0 означает неограниченно",
- "description": "Количество одновременных разговоров",
- "descriptionWithUserLimit": "Максимум сеансов (Лимит пользователя: {limit})"
- },
- "providerGroup": {
- "label": "Группа провайдеров",
- "placeholder": "Введите теги групп провайдеров и нажмите Enter",
- "description": "Группы провайдеров для этого ключа (по умолчанию: default).",
- "defaultDescription": "default включает провайдеров без groupTag.",
- "descriptionWithUserGroup": "Группы провайдеров для этого ключа (группы пользователя: {group}; по умолчанию: default)."
- },
- "cacheTtl": {
- "label": "Переопределение Cache TTL",
- "description": "Принудительно установить Anthropic prompt cache TTL для запросов с cache_control.",
- "options": {
- "inherit": "Не переопределять (следовать провайдеру/клиенту)",
- "5m": "5m",
- "1h": "1h"
- }
- },
- "successTitle": "Ключ успешно создан",
- "successDescription": "Ваш API-ключ был успешно создан.",
- "generatedKey": {
- "label": "Сгенерированный ключ",
- "hint": "Вы можете управлять этим ключом в списке ключей (включить/выключить, лимиты и т. д.), но полный ключ показывается только один раз. Скопируйте и сохраните его сейчас."
- },
- "errors": {
- "userIdMissing": "ID пользователя не существует",
- "createFailed": "Не удалось создать, попробуйте позже",
- "noKeyReturned": "Создан успешно, но ключ не был возвращен"
- }
- },
- "userForm": {
- "title": {
- "add": "Добавить пользователя",
- "edit": "Редактировать пользователя"
- },
- "description": {
- "add": "Создать нового пользователя. Система автоматически сгенерирует ключ по умолчанию.",
- "edit": "Изменить основную информацию пользователя."
- },
- "submitText": {
- "add": "Создать пользователя",
- "edit": "Сохранить изменения"
- },
- "loadingText": {
- "add": "Создание...",
- "edit": "Сохранение..."
- },
- "username": {
- "label": "Имя пользователя",
- "placeholder": "Введите имя пользователя"
- },
- "note": {
- "label": "Примечание",
- "placeholder": "Введите примечание (необязательно)",
- "description": "Используется для описания назначения пользователя или примечаний"
- },
- "providerGroup": {
- "label": "Группа поставщиков",
- "placeholder": "например, default или premium,economy",
- "description": "Группы провайдеров пользователя (по умолчанию: default). Провайдеры без groupTag относятся к default."
- },
- "tags": {
- "label": "Теги пользователя",
- "placeholder": "Введите тег (Enter для добавления)",
- "description": "Добавьте теги для классификации и фильтрации (максимум 20 тегов, до 32 символов каждый)"
- },
- "rpm": {
- "label": "Лимит RPM",
- "placeholder": "Лимит запросов в минуту",
- "description": "По умолчанию: {default}, диапазон: 1-10000"
- },
- "dailyQuota": {
- "label": "Дневная квота",
- "placeholder": "Лимит дневного расхода",
- "helperText": "Установите 0 для неограниченного доступа",
- "description": "По умолчанию: ${default}, диапазон: $0.01-$1000"
- },
- "limit5hUsd": {
- "label": "Лимит на 5 часов (USD)",
- "placeholder": "Оставьте пустым для неограниченного",
- "description": "Максимальный расход за 5 часов"
- },
- "limitWeeklyUsd": {
- "label": "Недельный лимит (USD)",
- "placeholder": "Оставьте пустым для неограниченного",
- "description": "Максимальный недельный расход"
- },
- "limitMonthlyUsd": {
- "label": "Месячный лимит (USD)",
- "placeholder": "Оставьте пустым для неограниченного",
- "description": "Максимальный месячный расход"
- },
- "limitConcurrentSessions": {
- "label": "Лимит одновременных сессий",
- "placeholder": "0 означает неограниченно",
- "description": "Количество одновременных разговоров"
- },
- "isEnabled": {
- "label": "Активировать пользователя",
- "description": "Отключенные пользователи не смогут использовать API"
- },
- "expiresAt": {
- "label": "Срок действия",
- "placeholder": "Оставьте пустым для бессрочного",
- "description": "Пользователь будет автоматически отключен после истечения срока",
- "pastWarning": "Выбранная дата в прошлом. После сохранения пользователь сразу станет просроченным и будет отключен."
- },
- "allowedClients": {
- "label": "Разрешённые клиенты",
- "description": "Ограничьте, какие CLI/IDE клиенты могут использовать эту учётную запись. Пусто = без ограничений.",
- "customLabel": "Пользовательские шаблоны клиентов",
- "customPlaceholder": "Введите шаблон (например, 'xcode', 'my-ide')"
- },
- "allowedModels": {
- "label": "Разрешённые модели",
- "placeholder": "Введите название модели (Enter для добавления)",
- "description": "Ограничить пользователя определёнными моделями ИИ. Оставьте пустым без ограничений (макс. 50 моделей, 64 символа)"
- }
- },
- "deleteKeyConfirm": {
- "title": "Подтвердить удаление ключа",
- "description": "Вы уверены, что хотите удалить ключ \"{name}\"?\n{maskedKey}\nЭто действие нельзя отменить. Все приложения, использующие этот ключ, потеряют доступ.",
- "cancel": "Отмена",
- "confirm": "Подтвердить удаление",
- "confirmLoading": "Удаление...",
- "errors": {
- "deleteFailed": "Не удалось удалить",
- "retryError": "Не удалось удалить, попробуйте позже"
- }
- },
- "keyActions": {
- "edit": "Редактировать",
- "delete": "Удалить",
- "editAriaLabel": "Редактировать ключ",
- "deleteAriaLabel": "Удалить ключ"
- },
- "userActions": {
- "edit": "Редактировать пользователя",
- "delete": "Удалить пользователя",
- "editAriaLabel": "Редактировать пользователя",
- "deleteAriaLabel": "Удалить пользователя"
- },
- "availability": {
- "title": "Мониторинг доступности провайдеров",
- "description": "Мониторинг доступности и показателей производительности провайдеров в реальном времени",
- "nav": "Мониторинг доступности",
- "tabs": {
- "provider": "Доступность провайдеров",
- "endpoint": "Здоровье эндпоинтов"
- },
- "overview": {
- "systemAvailability": "Доступность системы",
- "avgLatency": "Средняя задержка",
- "errorRate": "Коэффициент ошибок",
- "activeProbes": "Активные проверки",
- "load": "Нагрузка"
- },
- "timeRange": {
- "label": "Временной диапазон",
- "15min": "15 мин",
- "1h": "1 час",
- "6h": "6 часов",
- "24h": "24 часа",
- "7d": "7 дней",
- "last15min": "Последние 15 минут",
- "last1h": "Последний час",
- "last6h": "Последние 6 часов",
- "last24h": "Последние 24 часа",
- "last7d": "7д",
- "custom": "Настраиваемый"
- },
- "laneChart": {
- "title": "Хронология доступности провайдеров",
- "noData": "Нет данных",
- "requests": "{count} запросов",
- "availability": "{value}% доступно",
- "noRequests": "Нет запросов",
- "denseData": "Плотные",
- "sparseData": "Разреженные",
- "latency": "Задержка"
- },
- "latencyChart": {
- "title": "Распределение задержки",
- "p50": "P50",
- "p95": "P95",
- "p99": "P99",
- "noData": "Нет данных о задержке"
- },
- "latencyCurve": {
- "title": "Тренд задержки",
- "noData": "Нет данных о задержке",
- "avg": "Средн.",
- "min": "Мин.",
- "max": "Макс.",
- "latency": "Задержка"
- },
- "terminal": {
- "title": "Журнал проверок",
- "live": "LIVE",
- "download": "Скачать журнал",
- "noLogs": "Нет журналов проверок",
- "manual": "Ручная",
- "auto": "Авто",
- "filterPlaceholder": "Фильтр журналов..."
- },
- "probeGrid": {
- "title": "Статус эндпоинтов",
- "noEndpoints": "Эндпоинты не настроены",
- "lastProbe": "Последняя проверка",
- "status": {
- "unknown": "Неизвестно",
- "healthy": "Здоров",
- "unhealthy": "Нездоров"
- }
- },
- "endpoint": {
- "selectVendor": "Выберите вендора",
- "selectType": "Выберите тип"
- },
- "confidence": {
- "low": "Низкая",
- "medium": "Средняя",
- "high": "Высокая",
- "lowTooltip": "Менее {count} запросов. Данные могут быть нерепрезентативными.",
- "mediumTooltip": "Умеренный объём запросов. Данные достаточно надёжны.",
- "highTooltip": "Высокий объём запросов. Данные надёжны."
- },
- "actions": {
- "retry": "Повторить",
- "probeNow": "Проверить сейчас",
- "probing": "Проверка...",
- "probeAll": "Проверить все",
- "probeSuccess": "Проверка успешна",
- "probeFailed": "Проверка не удалась"
- },
- "status": {
- "green": "Здоров",
- "red": "Недоступен",
- "unknown": "Неизвестно"
- },
- "statusDescription": {
- "green": "Сервис работает нормально, запросы успешны",
- "red": "Сервис недоступен или ошибка",
- "unknown": "Данные отсутствуют"
- },
- "metrics": {
- "systemAvailability": "Доступность системы",
- "totalRequests": "Всего запросов",
- "successRate": "Успешность",
- "avgLatency": "Средняя задержка",
- "p50Latency": "P50 задержка",
- "p95Latency": "P95 задержка",
- "p99Latency": "P99 задержка",
- "lastRequest": "Последний запрос",
- "requestCount": "Кол-во запросов"
- },
- "filters": {
- "provider": "Провайдер",
- "allProviders": "Все провайдеры",
- "includeDisabled": "Включить отключённые"
- },
- "sort": {
- "label": "Сортировка",
- "availability": "Доступность",
- "name": "Название",
- "requests": "Запросы"
- },
- "columns": {
- "provider": "Провайдер",
- "type": "Тип",
- "status": "Статус",
- "availability": "Доступность",
- "requests": "Запросы",
- "successRate": "Успешность",
- "avgLatency": "Средняя задержка",
- "lastRequest": "Последний запрос",
- "actions": "Действия"
- },
- "chart": {
- "title": "Тренд доступности",
- "description": "Изменение доступности во времени",
- "availabilityScore": "Оценка доступности",
- "requestVolume": "Объём запросов",
- "latencyTrend": "Тренд задержки",
- "noData": "Нет данных"
- },
- "details": {
- "title": "Детали провайдера",
- "overview": "Обзор",
- "timeBuckets": "Временные интервалы",
- "greenCount": "Успешные запросы",
- "redCount": "Неудачные запросы"
- },
- "actions": {
- "refresh": "Обновить",
- "refreshing": "Обновление...",
- "autoRefresh": "Автообновление",
- "stopAutoRefresh": "Остановить автообновление",
- "viewDetails": "Подробнее",
- "testProvider": "Тестировать провайдера"
- },
- "states": {
- "loading": "Загрузка...",
- "error": "Ошибка загрузки",
- "noProviders": "Нет провайдеров",
- "noData": "Нет данных о доступности",
- "fetchFailed": "Не удалось получить данные о доступности"
- },
- "legend": {
- "green": "Отлично (доступность 95%+)",
- "lime": "Хорошо (доступность 80-95%)",
- "orange": "Внимание (доступность 50-80%)",
- "red": "Недоступен (доступность <50%)",
- "noData": "Нет данных"
- },
- "summary": {
- "title": "Сводка доступности",
- "healthyProviders": "Здоровые провайдеры",
- "unhealthyProviders": "Недоступные провайдеры",
- "unknownProviders": "Нет данных",
- "totalProviders": "Всего провайдеров"
- },
- "heatmap": {
- "bucketSize": "Размер интервала",
- "minutes": "мин",
- "requests": "запросов",
- "noData": "Нет данных",
- "noRequests": "Нет запросов"
- },
- "probeHistory": {
- "title": "История проверок эндпоинтов",
- "description": "Просмотр журналов проверок и запуск ручной проверки для конкретного эндпоинта",
- "selectVendor": "Выберите вендора",
- "selectType": "Выберите тип провайдера",
- "selectEndpoint": "Выберите эндпоинт",
- "noEndpoints": "Эндпоинты не найдены",
- "probeNow": "Проверить",
- "probing": "Проверяем...",
- "columns": {
- "time": "Время",
- "method": "Метод",
- "status": "Статус",
- "latency": "Задержка",
- "error": "Ошибка"
- },
- "success": "Успех",
- "manual": "Ручная проверка",
- "auto": "Автоматическая проверка",
- "probeSuccess": "Проверка успешна",
- "probeFailed": "Проверка не удалась"
- },
- "toast": {
- "refreshSuccess": "Данные о доступности обновлены",
- "refreshFailed": "Обновление не удалось, попробуйте снова"
- }
- },
- "rateLimits": {
- "title": "Статистика событий лимитов",
- "description": "Просмотр и анализ статистики событий лимитов",
- "loading": "Загрузка...",
- "error": "Ошибка загрузки",
- "totalEvents": "Всего событий",
- "avgUsage": "Среднее использование",
- "affectedUsers": "Затронутые пользователи",
- "noData": "Нет данных",
- "noDataHint": "Нет событий лимитов в выбранном диапазоне времени",
- "filters": {
- "startTime": "Начало",
- "endTime": "Конец",
- "user": "Пользователь",
- "provider": "Поставщик",
- "limitType": "Тип лимита",
- "allUsers": "Все пользователи",
- "allProviders": "Все провайдеры",
- "allLimitTypes": "Все типы",
- "apply": "Применить фильтры",
- "reset": "Сбросить",
- "loading": "Загрузка...",
- "limitTypes": {
- "rpm": "Лимит RPM",
- "usd_5h": "Лимит расходов за 5ч",
- "usd_weekly": "Недельный лимит расходов",
- "usd_monthly": "Месячный лимит расходов",
- "concurrent_sessions": "Лимит одновременных сессий",
- "daily_quota": "Дневной лимит квоты"
- }
- },
- "chart": {
- "title": "Хронология событий лимитов",
- "description": "Почасовой тренд событий лимитов",
- "total": "Всего",
- "events": "Событий"
- },
- "breakdown": {
- "title": "Распределение по типам лимитов",
- "description": "Доля событий по типам лимитов",
- "total": "Всего",
- "count": "Событий",
- "percentage": "Доля",
- "noData": "Нет данных",
- "types": {
- "rpm": "RPM",
- "usd_5h": "Расходы 5ч",
- "usd_weekly": "Недельные расходы",
- "usd_monthly": "Месячные расходы",
- "concurrent_sessions": "Одновременные сессии",
- "daily_quota": "Дневная квота"
- }
- },
- "topUsers": {
- "title": "Топ затронутых пользователей",
- "description": "Пользователи, чаще всего попадавшие под лимиты",
- "total": "Всего",
- "rank": "Место",
- "username": "Имя пользователя",
- "eventCount": "Событий",
- "percentage": "Доля",
- "loading": "Загрузка...",
- "noData": "Нет данных"
- }
- },
- "users": {
- "title": "Управление пользователями",
- "description": "Показано {count} пользователей",
- "toolbar": {
- "searchPlaceholder": "Поиск по имени, заметкам, тегам, ключам...",
- "groupFilter": "Фильтр по группе",
- "allGroups": "Все группы",
- "tagFilter": "Фильтр по тегу",
- "allTags": "Все теги",
- "keyGroupFilter": "Группа ключей",
- "allKeyGroups": "Все группы ключей",
- "sortBy": "Сортировка",
- "sortOrder": "Порядок",
- "sortByName": "Имя",
- "sortByTags": "Теги",
- "sortByExpiresAt": "Срок действия",
- "sortByRpm": "Лимит RPM",
- "sortByLimit5h": "Лимит 5 ч",
- "sortByLimitDaily": "Дневной лимит",
- "sortByLimitWeekly": "Недельный лимит",
- "sortByLimitMonthly": "Месячный лимит",
- "sortByCreatedAt": "Дата создания",
- "ascending": "По возрастанию",
- "descending": "По убыванию",
- "statusFilter": "Статус",
- "allStatus": "Все статусы",
- "statusActive": "Активен",
- "statusExpired": "Истек",
- "statusExpiringSoon": "Скоро истечет",
- "statusEnabled": "Включен",
- "statusDisabled": "Отключен",
- "createUser": "Создать пользователя",
- "createKey": "Создать ключ"
- },
- "dialog": {
- "userProviderGroup": "Ваши группы провайдеров",
- "userProviderGroupHint": "Новые ключи могут использовать только ваши существующие группы провайдеров"
- }
- },
- "userManagement": {
- "table": {
- "columns": {
- "username": "Имя пользователя",
- "note": "Примечание",
- "expiresAt": "Дата истечения",
- "expiresAtHint": "Нажмите для быстрого продления",
- "limitRpm": "RPM",
- "limit5h": "Лимит 5 ч",
- "limitDaily": "Дневной лимит",
- "limitWeekly": "Недельный лимит",
- "limitMonthly": "Месячный лимит",
- "limitTotal": "Общий лимит",
- "limitSessions": "Одновременные сессии"
- },
- "keyRow": {
- "name": "Название ключа",
- "key": "Ключ",
- "group": "Группа",
- "todayUsage": "Запросы сегодня",
- "todayCost": "Расход сегодня",
- "todayTokens": "Токены сегодня",
- "lastUsed": "Последнее использование",
- "actions": "Действия",
- "quotaButton": "Просмотр использования квоты",
- "fields": {
- "callsLabel": "Запросы",
- "tokensLabel": "Токены",
- "costLabel": "Расход"
- }
- },
- "expand": "Развернуть",
- "collapse": "Свернуть",
- "refresh": "Обновить",
- "noKeys": "Нет ключей",
- "defaultGroup": "default",
- "userStatus": {
- "disabled": "Отключен"
- },
- "actions": {
- "addKey": "Добавить ключ"
- }
- },
- "keyFullDisplay": {
- "title": "Полный ключ",
- "copySuccess": "Ключ скопирован в буфер обмена",
- "copyFailed": "Не удалось скопировать",
- "show": "Показать ключ",
- "hide": "Скрыть ключ",
- "copied": "Скопировано",
- "copy": "Скопировать ключ"
- },
- "keyStatsDialog": {
- "title": "Статистика моделей за сегодня",
- "columns": {
- "model": "Модель",
- "calls": "Вызовы",
- "tokens": "Токены",
- "cost": "Стоимость"
- },
- "modal": {
- "requests": "Запросов",
- "totalTokens": "Всего токенов",
- "cost": "Стоимость",
- "inputTokens": "Входные токены",
- "outputTokens": "Выходные токены",
- "cacheWrite": "Запись кэша",
- "cacheRead": "Чтение кэша",
- "cacheHitRate": "Попадание кэша",
- "cacheTokens": "Токены кэша",
- "performanceHigh": "Высокий",
- "performanceMedium": "Средний",
- "performanceLow": "Низкий"
- },
- "noData": "Нет записей использования за сегодня",
- "totalCalls": "Всего вызовов",
- "totalCost": "Общий расход"
- },
- "keyQuotaUsageDialog": {
- "title": "Использование квоты ключа",
- "fetchFailed": "Не удалось получить данные квоты",
- "noLimit": "Без лимита",
- "modeFixed": "Фиксированное время",
- "modeRolling": "Скользящие 24ч",
- "retry": "Повторить",
- "labels": {
- "limit5h": "5 часов",
- "limitDaily": "Ежедневно",
- "limitWeekly": "Еженедельно",
- "limitMonthly": "Месячный лимит",
- "limitTotal": "Всего",
- "limitSessions": "Одновременно"
- }
- },
- "quickRenew": {
- "title": "Быстрое продление",
- "description": "Установить новую дату истечения для пользователя {userName}",
- "currentExpiry": "Текущий срок",
- "neverExpires": "Бессрочно",
- "expired": "Истёк",
- "quickExtensionLabel": "Быстрое продление",
- "quickExtensionHint": "Продлить от текущего срока (или от сейчас, если истёк)",
- "customDateLabel": "Указать дату",
- "customDateHint": "Напрямую указать дату истечения",
- "quickOptions": {
- "7days": "7 дней",
- "30days": "30 дней",
- "90days": "90 дней",
- "1year": "1 год"
- },
- "customDate": "Произвольная дата",
- "enableOnRenew": "Также включить пользователя",
- "enableKeyOnRenew": "Также включить ключ",
- "cancel": "Отмена",
- "confirm": "Подтвердить продление",
- "confirming": "Продление...",
- "success": "Продление успешно",
- "failed": "Ошибка продления"
- },
- "dialog": {
- "createKeyTitle": "Создать ключ",
- "editKeyTitle": "Редактировать ключ"
- },
- "editDialog": {
- "title": "Редактировать пользователя",
- "description": "Редактирование данных пользователя",
- "userSection": "Настройки пользователя",
- "keysSection": "Настройки ключей",
- "scrollToKey": "Прокрутить к ключу",
- "saveFailed": "Не удалось сохранить пользователя",
- "keySaveFailed": "Не удалось сохранить ключ",
- "keyDeleteFailed": "Не удалось удалить ключ",
- "saveSuccess": "Изменения сохранены",
- "atLeastOneKeyEnabled": "Необходимо оставить хотя бы один активный ключ",
- "operationFailed": "Операция не удалась",
- "userDisabled": "Пользователь отключен",
- "userEnabled": "Пользователь активирован",
- "deleteFailed": "Не удалось удалить пользователя",
- "userDeleted": "Пользователь удален",
- "saving": "Сохранение...",
- "resetData": {
- "title": "Сброс статистики",
- "description": "Удалить все логи запросов и данные использования для этого пользователя. Это действие необратимо.",
- "error": "Не удалось сбросить данные",
- "button": "Сбросить статистику",
- "confirmTitle": "Сбросить всю статистику?",
- "confirmDescription": "Это навсегда удалит все логи запросов и статистику использования для этого пользователя. Это действие нельзя отменить.",
- "confirm": "Да, сбросить все",
- "loading": "Сброс...",
- "success": "Вся статистика сброшена"
- }
- },
- "batchEdit": {
- "enterMode": "Массовое редактирование",
- "exitMode": "Выйти",
- "selectAll": "Выбрать все",
- "selectedCount": "Выбрано {users} пользователей, {keys} ключей",
- "editSelected": "Редактировать выбранное",
- "dialog": {
- "title": "Массовое редактирование",
- "description": "Повлияет на {users} пользователей и {keys} ключей",
- "cancel": "Отмена",
- "next": "Далее",
- "noFieldEnabled": "Включите хотя бы одно поле для замены",
- "noUpdate": "Нет обновлений для выполнения",
- "noSelection": "Сначала выберите пользователей или ключи для массового редактирования."
- },
- "confirm": {
- "title": "Подтвердить массовое обновление",
- "description": "Будут обновлены {users} пользователей и {keys} ключей. Это действие нельзя отменить.",
- "userFields": "Поля пользователя",
- "keyFields": "Поля ключа",
- "goBack": "Вернуться и изменить",
- "update": "Подтвердить обновление",
- "updating": "Обновление..."
- },
- "toast": {
- "usersUpdated": "Обновлено {count} пользователей",
- "keysUpdated": "Обновлено {count} ключей",
- "usersFailed": "Не удалось обновить пользователей: {error}",
- "keysFailed": "Не удалось обновить ключи: {error}",
- "batchFailed": "Массовое обновление не удалось"
- },
- "validation": {
- "invalidNumber": "Введите корректное число",
- "negativeNumber": "Значение не может быть отрицательным"
- },
- "aria": {
- "selectUser": "Выбрать пользователя",
- "selectKey": "Выбрать ключ"
- },
- "user": {
- "title": "Настройки пользователя",
- "affected": "Повлияет на {count} пользователей",
- "enableFieldAria": "Включить поле: {title}",
- "fields": {
- "note": "Заметка",
- "tags": "Теги",
- "rpm": "Лимит RPM",
- "limit5h": "Лимит за 5 часов (USD)",
- "limitDaily": "Дневной лимит (USD)",
- "limitWeekly": "Недельный лимит (USD)",
- "limitMonthly": "Месячный лимит (USD)"
- },
- "placeholders": {
- "emptyToClear": "Оставьте пустым, чтобы очистить",
- "tagsPlaceholder": "Нажмите Enter, чтобы добавить, можно разделять запятыми",
- "emptyNoLimit": "Оставьте пустым для безлимита"
- }
- },
- "key": {
- "title": "Настройки ключа",
- "affected": "Повлияет на {count} ключей",
- "fields": {
- "providerGroup": "Группа (providerGroup)",
- "limit5h": "Лимит за 5 часов (USD)",
- "limitDaily": "Дневной лимит (USD)",
- "limitWeekly": "Недельный лимит (USD)",
- "limitMonthly": "Месячный лимит (USD)",
- "canLoginWebUi": "Независимая страница использования",
- "keyEnabled": "Статус ключа"
- },
- "placeholders": {
- "groupPlaceholder": "Оставьте пустым, чтобы очистить; несколько значений через запятую",
- "emptyNoLimit": "Оставьте пустым для безлимита"
- },
- "targetValue": "Целевое значение"
- }
- },
- "createDialog": {
- "title": "Создать пользователя",
- "description": "Создание нового пользователя и настройка API-ключей",
- "saveFailed": "Не удалось создать пользователя",
- "keyCreateFailed": "Не удалось создать ключ",
- "rollbackFailed": "Не удалось выполнить откат. Возможно, пользователь был создан без ключа. Удалите пользователя вручную (userId: {userId}) и повторите попытку.",
- "createSuccess": "Пользователь создан",
- "successTitle": "Успешно создано",
- "successDescription": "Пользователь и ключ успешно созданы",
- "generatedKey": "Сгенерированный ключ",
- "keyHint": "Вы можете управлять этим ключом на странице управления пользователями (включить/выключить, лимиты и т. д.), но полный ключ показывается только один раз. Скопируйте и сохраните его сейчас.",
- "keysSection": "Ключи",
- "addKey": "Добавить ключ",
- "removeKey": "Удалить ключ",
- "cannotDeleteLastKey": "Нельзя удалить последний ключ",
- "confirmRemoveKeyTitle": "Удалить ключ",
- "confirmRemoveKeyDescription": "Вы уверены, что хотите удалить ключ \"{name}\"?",
- "creating": "Создание...",
- "create": "Создать"
- },
- "limitRules": {
- "addRule": "Добавить правило лимита",
- "title": "Добавить правило лимита",
- "description": "Выберите тип лимита и установите значение",
- "cancel": "Отмена",
- "confirm": "Сохранить",
- "fields": {
- "type": {
- "label": "Тип лимита",
- "placeholder": "Выберите"
- },
- "value": {
- "label": "Значение",
- "placeholder": "Введите"
- }
- },
- "daily": {
- "mode": {
- "label": "Режим дневного сброса",
- "fixed": "Сброс в фиксированное время",
- "rolling": "Скользящее окно (24ч)",
- "helperRolling": "Скользящее окно 24 часа от первого запроса"
- },
- "time": {
- "label": "Время сброса",
- "placeholder": "ЧЧ:мм"
- }
- },
- "limitTypes": {
- "limitRpm": "Лимит RPM",
- "limit5h": "Лимит за 5 часов",
- "limitDaily": "Дневной лимит",
- "limitWeekly": "Недельный лимит",
- "limitMonthly": "Месячный лимит",
- "limitTotal": "Общий лимит",
- "limitSessions": "Одновременные сессии"
- },
- "ruleTypes": {
- "limitRpm": "Лимит RPM",
- "limit5h": "Лимит за 5 часов",
- "limitDaily": "Дневной лимит",
- "limitWeekly": "Недельный лимит",
- "limitMonthly": "Месячный лимит",
- "limitTotal": "Общий лимит",
- "limitSessions": "Одновременные сессии"
- },
- "errors": {
- "missingType": "Пожалуйста, выберите тип лимита",
- "invalidValue": "Пожалуйста, введите корректное значение",
- "invalidTime": "Пожалуйста, введите корректное время (ЧЧ:мм)"
- },
- "overwriteHint": "Этот тип уже существует, сохранение перезапишет существующее значение",
- "dailyMode": {
- "fixed": "Сброс по фиксированному времени",
- "rolling": "Скользящее окно (24ч)"
- },
- "quickValues": {
- "unlimited": "Без ограничений",
- "10": "$10",
- "50": "$50",
- "100": "$100",
- "500": "$500"
- },
- "alreadySet": "Уже настроено",
- "confirmAdd": "Добавить"
- },
- "quickExpire": {
- "oneWeek": "Через неделю",
- "oneMonth": "Через месяц",
- "threeMonths": "Через 3 месяца",
- "oneYear": "Через год"
- },
- "providerGroupSelect": {
- "providersSuffix": "провайдеров",
- "loadFailed": "Не удалось загрузить группы провайдеров"
- },
- "providerGroup": {
- "label": "Группа провайдеров",
- "placeholder": "Выберите группу провайдеров",
- "noRestriction": "Без ограничений (все провайдеры)",
- "providerCount": "{count} провайдеров"
- },
- "dangerZone": {
- "title": "Опасная зона",
- "description": "Следующие действия необратимы, действуйте с осторожностью",
- "enable": {
- "title": "Включить пользователя",
- "description": "После включения этот пользователь и его ключи возобновят нормальную работу",
- "trigger": "Включить",
- "confirm": "Подтвердить включение",
- "confirmDescription": "Вы уверены, что хотите включить пользователя \"{userName}\"?",
- "loading": "Обработка..."
- },
- "disable": {
- "title": "Отключить пользователя",
- "description": "После отключения этот пользователь и его ключи больше не будут работать",
- "trigger": "Отключить",
- "confirm": "Подтвердить отключение",
- "confirmDescription": "Вы уверены, что хотите отключить пользователя \"{userName}\"?",
- "loading": "Обработка..."
- },
- "delete": {
- "title": "Удалить пользователя",
- "description": "Это удалит все связанные данные для этого пользователя, это действие необратимо",
- "trigger": "Удалить",
- "confirm": "Подтвердить удаление",
- "confirmDescription": "Это действие удалит все связанные данные пользователя \"{userName}\" и не может быть отменено.",
- "confirmLabel": "Вторичное подтверждение",
- "confirmHint": "Пожалуйста, введите \"{userName}\" для подтверждения удаления",
- "loading": "Удаление..."
- },
- "actions": {
- "cancel": "Отмена"
- },
- "errors": {
- "enableFailed": "Не удалось включить пользователя, попробуйте позже",
- "disableFailed": "Не удалось отключить пользователя, попробуйте позже",
- "deleteFailed": "Не удалось удалить пользователя, попробуйте позже"
- }
- },
- "limitIndicator": {
- "notSet": "Не задано",
- "unlimited": "Без ограничений"
- },
- "keySettings": {
- "balanceQueryPage": {
- "label": "Включить отдельную страницу проверки баланса",
- "description": "Разрешить пользователю просматривать баланс на отдельной странице",
- "descriptionEnabled": "При включении этот ключ будет использовать независимую страницу личного использования при входе. Однако он не может изменять группу провайдеров собственного ключа.",
- "descriptionDisabled": "При отключении пользователь не сможет получить доступ к странице личного использования. Вместо этого будет использоваться ограниченный Web UI."
- },
- "cacheTtlOverride": {
- "label": "Переопределение Cache TTL",
- "inherit": "Не переопределять (следовать провайдеру/клиенту)",
- "5m": "5 минут",
- "1h": "1 час"
- }
- },
- "pagination": {
- "previous": "Предыдущая",
- "next": "Следующая",
- "page": "Страница {current}",
- "of": "из {total}"
- },
- "toolbar": {
- "expandAll": "Развернуть все",
- "collapseAll": "Свернуть все"
- },
- "keyStatus": {
- "enabled": "Включён",
- "disabled": "Отключён",
- "active": "Активен",
- "expired": "Истёк",
- "expiringSoon": "Скоро истечёт",
- "keyEnabled": "Ключ включён",
- "keyDisabled": "Ключ отключён",
- "toggleKeyStatus": "Переключить статус ключа",
- "clickToDisableKey": "Нажмите, чтобы отключить ключ",
- "clickToEnableKey": "Нажмите, чтобы включить ключ",
- "operationFailed": "Операция не удалась",
- "clickToQuickRenew": "Нажмите для быстрого продления"
- },
- "userStatus": {
- "enabled": "Включён",
- "disabled": "Отключён",
- "active": "Активен",
- "expired": "Истёк",
- "expiringSoon": "Скоро истечёт",
- "userEnabled": "Пользователь включён",
- "userDisabled": "Пользователь отключён",
- "toggleUserStatus": "Переключить статус пользователя",
- "clickToDisableUser": "Нажмите, чтобы отключить пользователя",
- "clickToEnableUser": "Нажмите, чтобы включить пользователя",
- "operationFailed": "Операция не удалась",
- "deleteFailed": "Не удалось удалить",
- "deleteSuccess": "Удаление успешно",
- "daysLeft": "{days, plural, =0 {Истекает сегодня} =1 {Остался 1 день} few {Осталось # дня} many {Осталось # дней} other {Осталось # дней}}"
- },
- "userEditSection": {
- "sections": {
- "basicInfo": "Основная информация",
- "expireTime": "Срок действия",
- "limitRules": "Правила лимитов",
- "accessRestrictions": "Ограничения доступа"
- },
- "fields": {
- "username": {
- "label": "Имя пользователя",
- "placeholder": "Введите имя пользователя"
- },
- "description": {
- "label": "Заметка",
- "placeholder": "Введите заметку (необязательно)",
- "description": "Используется для описания назначения пользователя или примечаний"
- },
- "tags": {
- "label": "Теги пользователя",
- "placeholder": "Введите тег (Enter для добавления)"
- },
- "providerGroup": {
- "label": "Группа провайдеров",
- "placeholder": "default"
- },
- "allowedClients": {
- "label": "Ограничения клиентов",
- "description": "Ограничьте, какие CLI/IDE клиенты могут использовать эту учетную запись. Пусто = без ограничений.",
- "customLabel": "Пользовательские шаблоны клиентов",
- "customPlaceholder": "Введите шаблон (например, 'xcode', 'my-ide')"
- },
- "allowedModels": {
- "label": "Ограничения моделей",
- "placeholder": "Введите название модели или выберите из списка",
- "description": "Ограничить AI модели для пользователя. Пусто = без ограничений."
- },
- "enableStatus": {
- "label": "Статус включения",
- "enabledDescription": "Сейчас включён. При отключении пользователь и его ключи станут недоступны.",
- "disabledDescription": "Сейчас отключён. При включении пользователь и его ключи станут доступны.",
- "confirmDisable": "Подтвердить отключение",
- "confirmEnable": "Подтвердить включение",
- "confirmEnableTitle": "Подтвердить включение пользователя",
- "confirmDisableTitle": "Подтвердить отключение пользователя",
- "confirmEnableDescription": "Включение позволит пользователю и его ключам работать в обычном режиме.",
- "confirmDisableDescription": "Отключение сделает пользователя и его ключи недоступными.",
- "cancel": "Отмена",
- "processing": "Обработка..."
- }
- },
- "presetClients": {
- "claude-cli": "Claude Code CLI",
- "gemini-cli": "Gemini CLI",
- "factory-cli": "Droid CLI",
- "codex-cli": "Codex CLI"
- }
- },
- "keyEditSection": {
- "sections": {
- "basicInfo": "Основная информация",
- "expireTime": "Срок действия",
- "limitRules": "Правила лимитов",
- "specialFeatures": "Специальные функции"
- },
- "fields": {
- "keyName": {
- "label": "Название ключа",
- "placeholder": "Введите название ключа"
- },
- "enableStatus": {
- "label": "Статус включения",
- "description": "Отключённые ключи не могут использоваться",
- "cannotDisableTooltip": "Невозможно отключить последний активный ключ"
- },
- "balanceQueryPage": {
- "label": "Независимая страница использования",
- "description": "При включении этот ключ может использовать независимую страницу личного использования",
- "descriptionEnabled": "При включении этот ключ будет использовать независимую страницу личного использования при входе. Однако он не может изменять группу провайдеров собственного ключа.",
- "descriptionDisabled": "При отключении пользователь не сможет получить доступ к странице личного использования. Вместо этого будет использоваться ограниченный Web UI."
- },
- "providerGroup": {
- "label": "Группа провайдеров",
- "placeholder": "По умолчанию: default",
- "selectHint": "Выберите группы провайдеров, доступные для этого ключа",
- "editHint": "Группа провайдеров существующего ключа не может быть изменена",
- "allGroups": "Использовать все группы",
- "noGroupHint": "default включает провайдеров без groupTag."
- },
- "cacheTtl": {
- "label": "Переопределение Cache TTL",
- "description": "Принудительно установить Anthropic prompt cache TTL для запросов с cache_control.",
- "options": {
- "inherit": "Не переопределять (следовать провайдеру/клиенту)",
- "5m": "5m",
- "1h": "1h"
- }
- }
- },
- "limitRules": {
- "title": "Добавить правило лимита",
- "actions": {
- "add": "Добавить правило",
- "remove": "Удалить"
- },
- "daily": {
- "mode": {
- "fixed": "Сброс в фиксированное время",
- "rolling": "Скользящее окно (24ч)"
- }
- },
- "overwriteHint": "Этот тип уже существует, сохранение перезапишет существующее значение"
- },
- "accessRestrictions": {
- "title": "Ограничения доступа",
- "models": "Разрешённые модели",
- "clients": "Разрешённые клиенты",
- "noRestrictions": "Без ограничений",
- "inheritedFromUser": "Унаследовано от настроек пользователя"
- }
- }
- },
- "webhookMigration": {
- "title": "Обновление системы Webhook",
- "description": "Мы запустили новую систему уведомлений Webhook с поддержкой многоцелевой доставки, независимой настройки и улучшенной надежности.",
- "step1": {
- "title": "Обнаружена устаревшая конфигурация Webhook",
- "description": "Система обнаружила, что вы используете устаревшую конфигурацию Webhook. Новая система предлагает более мощные функции, рекомендуем выполнить миграцию."
- },
- "step2": {
- "title": "Выберите тип платформы",
- "description": "Следующие URL-адреса Webhook не удалось автоматически идентифицировать. Пожалуйста, выберите платформу вручную:"
- },
- "platformOptions": {
- "wechat": "WeChat Work",
- "feishu": "Feishu",
- "dingtalk": "DingTalk",
- "telegram": "Telegram",
- "custom": "Пользовательский"
- },
- "migrateButton": "Начать миграцию",
- "skipButton": "Позже",
- "nextButton": "Далее",
- "goToSettingsButton": "Перейти к настройкам",
- "migrating": "Миграция...",
- "success": "Миграция завершена",
- "successDescription": "Ваша конфигурация Webhook успешно перенесена в новую систему.",
- "error": "Ошибка миграции",
- "errorGeneric": "Не удалось выполнить миграцию. Пожалуйста, попробуйте позже.",
- "detectedWebhooks": "Обнаруженные Webhook",
- "notificationTypes": {
- "circuit_breaker": "Оповещение о размыкателе цепи",
- "daily_leaderboard": "Ежедневный рейтинг",
- "cost_alert": "Оповещение о стоимости"
- },
- "urlLabel": "URL Webhook",
- "platformLabel": "Тип платформы",
- "autoDetected": "Автоматически определено",
- "selectPlatform": "Выберите платформу",
- "successStats": "Создано {targets} целей, {bindings} привязок"
- }
- }
|