mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-11-12 21:44:22 +08:00
1102 lines
73 KiB
JSON
1102 lines
73 KiB
JSON
{
|
||
"waf": {
|
||
"title": "WAF",
|
||
"createRule": "Новое правило",
|
||
"ruleGroups": "Группы правил",
|
||
"ruleGroupsDesc": "Создавайте правила защиты WAF с помощью визуального представления. Глобальные правила всегда применяются к каждому сайту.",
|
||
"refresh": "Обновить",
|
||
"loading": "Загрузка групп правил WAF...",
|
||
"empty": "Групп правил пока нет. Система обычно автоматически создает глобальную группу.",
|
||
"created": "Правило создано",
|
||
"groupDeleted": "Группа правил удалена.",
|
||
"deleteTitle": "Удалить группу правил",
|
||
"deleteDesc": "Удалить группу правил «{name}»? Это невозможно отменить.",
|
||
"deleting": "Удаление...",
|
||
"confirmDelete": "Удалить",
|
||
"operationFailed": "Операция не удалась",
|
||
"autoConfigMustBeObject": "Автоматическая конфигурация должна быть объектом JSON.",
|
||
"autoConfigInvalid": "Неверный формат автоматической конфигурации.",
|
||
"saveFailed": "Сохранить не удалось",
|
||
"enabled": "Включено",
|
||
"disabled": "Отключено",
|
||
"enable": "Включено",
|
||
"disable": "Отключено",
|
||
"global": "Глобальный",
|
||
"custom": "Пользовательский",
|
||
"allSites": "Все сайты",
|
||
"siteCount": "Сайтов: {count}",
|
||
"columns": {
|
||
"name": "Название",
|
||
"type": "Тип",
|
||
"status": "Статус",
|
||
"nodeCount": "Узлы",
|
||
"scope": "Область применения",
|
||
"updatedAt": "Обновлено",
|
||
"actions": "Действия"
|
||
},
|
||
"actions": {
|
||
"compose": "Изменить",
|
||
"delete": "Удалить"
|
||
},
|
||
"createDialog": {
|
||
"title": "Новое правило WAF",
|
||
"description": "После создания вы откроете редактор и настроите процесс обработки.",
|
||
"name": "Название правила",
|
||
"namePlaceholder": "например Защита кромок",
|
||
"submit": "Создавать и редактировать"
|
||
},
|
||
"editor": {
|
||
"missingId": "Требуется действительное правило ID.",
|
||
"loadFailed": "Не удалось загрузить правило. Пожалуйста, попробуйте еще раз.",
|
||
"reload": "Перезагрузить",
|
||
"back": "Назад",
|
||
"graphValid": "График действителен",
|
||
"issueCount": "Ошибок: {count}",
|
||
"unsaved": "несохраненный",
|
||
"enableRule": "Включить правило",
|
||
"format": "Формат",
|
||
"formatTitle": "Автоматическое расположение узлов и ребер",
|
||
"saving": "Сохранение...",
|
||
"save": "Сохранить",
|
||
"saved": "График правил сохранен.",
|
||
"conflict": "Это правило было обновлено в другом месте. Пожалуйста, перезагрузите.",
|
||
"saveCheckNodes": "Сохранить не удалось. Проверьте выделенные узлы и ребра.",
|
||
"ruleEnabled": "Правило включено",
|
||
"ruleDisabled": "Правило отключено",
|
||
"leaveTitle": "Несохраненные изменения",
|
||
"leaveDesc": "У вас есть несохраненные изменения. Все равно уйти?",
|
||
"leaveConfirm": "Уйти",
|
||
"deleteNode": "Удалить узел",
|
||
"systemNodeLocked": "Системные узлы не могут быть удалены",
|
||
"deleteEdge": "Удалить край",
|
||
"propsTitle": "Свойства узла",
|
||
"propsDesc": "Настроить этот процессор",
|
||
"systemNodeNoConfig": "Системные узлы не нуждаются в настройке.",
|
||
"displayName": "Отображаемое имя",
|
||
"ips": "IP адреса",
|
||
"cidrs": "CIDR диапазоны",
|
||
"ipGroups": "IP группы",
|
||
"countries": "Коды стран",
|
||
"countriesDesc": "Стран и территорий: {count}. Показаны названия и коды ISO.",
|
||
"regions": "Коды регионов",
|
||
"regionsDesc": "Регионов первого уровня: {count}. Поиск по названию или коду.",
|
||
"uaCheck": "Проверка User-Agent",
|
||
"enableUaCheck": "Включить флажок UA",
|
||
"enableUaCheckTip": "Если эта функция включена, запросы без User-Agent возвращают False.",
|
||
"block": "Заблокировать",
|
||
"blockTip": "Соответствие возвращает false и имеет приоритет над правилами сопоставления.",
|
||
"blockBots": "Блокировать UA обычных сканеров",
|
||
"blockBotsTip": "Браузер или OS классифицируется как бот (бот/паук/сканер/хлюпает, например Googlebot)",
|
||
"blockAbnormal": "Блокировать аномальные UA",
|
||
"blockAbnormalTip": "Браузер классифицирован как «Другой» или «Неизвестный» (исключая ботов поисковых систем; для сканеров используйте переключатель выше)",
|
||
"blockCustom": "Блокировать пользовательские UA",
|
||
"blockCustomTip": "Возвращает false, если необработанный User-Agent соответствует любому регулярному выражению (синтаксис шаблона Lua)",
|
||
"customUaPatterns": "Пользовательское регулярное выражение UA",
|
||
"customUaPatternsTip": "Одно регулярное выражение Lua-шаблона в каждой строке. Любое совпадение возвращает false. Макс 32.",
|
||
"uaMatch": "UA совпадение",
|
||
"matchMode": "Режим матча",
|
||
"matchModeTip": "Используется, когда установлены параметры браузера и OS.",
|
||
"matchOr": "OR",
|
||
"matchAnd": "AND",
|
||
"browsers": "Браузеры",
|
||
"os": "Операционные системы",
|
||
"security": "Проверки безопасности",
|
||
"securityTip": "Любое включенное совпадение правил возвращает False",
|
||
"basicProtection": "Базовая защита",
|
||
"help": "Помощь",
|
||
"oneValuePerLine": "Одно значение в строке",
|
||
"selectedCount": "Выбрано: {count}",
|
||
"pleaseSelect": "Выбрать",
|
||
"createLabel": "Новый {label}",
|
||
"searchNameOrCode": "Поиск имени или кода",
|
||
"addCode": "Добавить код",
|
||
"searchOptions": "Поиск по названию или коду ({count})",
|
||
"noMatchingOptions": "Нет подходящих вариантов",
|
||
"algorithm": "Алгоритм",
|
||
"algorithmFast": "Быстро",
|
||
"algorithmSlow": "Прочный",
|
||
"difficulty": "Сложность",
|
||
"sessionTtl": "Сеанс TTL (секунды)",
|
||
"challengeTtl": "Вызов TTL (секунды)",
|
||
"statusCode": "HTTP код состояния",
|
||
"responseBody": "HTML тело ответа",
|
||
"bytes": "байты",
|
||
"securityRules": {
|
||
"path_traversal": {
|
||
"label": "Обход пути",
|
||
"tip": "Обнаружение ../ и закодированных вариантов в пути/запросе/теле"
|
||
},
|
||
"file_inclusion": {
|
||
"label": "Включение файла (LFI/RFI)",
|
||
"tip": "Обнаружение php://, file://, /etc/passwd и подобных в Path/Query/Body"
|
||
},
|
||
"sql_injection": {
|
||
"label": "SQL инъекция",
|
||
"tip": "Обнаружение шаблонов внедрения SQL в запросе/теле/заголовке/файле cookie"
|
||
},
|
||
"command_injection": {
|
||
"label": "Внедрение команд",
|
||
"tip": "Обнаружение шаблонов внедрения команд OS в запросе/теле/заголовке"
|
||
},
|
||
"xss": {
|
||
"label": "XSS",
|
||
"tip": "Обнаружение отраженных шаблонов XSS в запросе/теле/заголовке"
|
||
},
|
||
"ssrf": {
|
||
"label": "SSRF",
|
||
"tip": "Обнаружение частных адресов и опасных протоколов в запросе/теле"
|
||
},
|
||
"malicious_upload": {
|
||
"label": "Вредоносная загрузка",
|
||
"tip": "Обнаружение опасных составных имен и расширений файлов"
|
||
},
|
||
"xxe": {
|
||
"label": "XXE",
|
||
"tip": "Обнаружение шаблонов внешних объектов в телах XML"
|
||
},
|
||
"crlf_injection": {
|
||
"label": "CRLF инъекция",
|
||
"tip": "Обнаружение инъекции новой строки в заголовке/запросе/теле"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"ipGroups": {
|
||
"title": "IP группы",
|
||
"create": "Новая группа IP",
|
||
"listTitle": "IP группы",
|
||
"listDesc": "Поддерживать ручные, автоматические и подписные наборы IP, на которые WAF могут ссылаться списки разрешений/запретов.",
|
||
"refresh": "Обновить",
|
||
"loading": "Загрузка групп IP...",
|
||
"empty": "IP групп пока нет. Сначала создайте его.",
|
||
"updated": "Группа IP обновлена",
|
||
"created": "IP группа создана",
|
||
"deleted": "IP группа удалена",
|
||
"synced": "Синхронизация завершена",
|
||
"ipRemoved": "IP удалено",
|
||
"testHit": "Проверка завершена. Совпавших IP-адресов: {count}.",
|
||
"testMiss": "Проверка правил завершена. Ни один IP-адрес не соответствует.",
|
||
"deleteTitle": "Удалить группу IP",
|
||
"deleteDesc": "Удалить группу IP «{name}»? Это невозможно отменить.",
|
||
"deleting": "Удаление...",
|
||
"confirmDelete": "Удалить",
|
||
"operationFailed": "Операция не удалась",
|
||
"types": {
|
||
"manual": "Вручную",
|
||
"automatic": "Автоматический",
|
||
"subscription": "Подписка"
|
||
},
|
||
"enabled": "Включено",
|
||
"disabled": "Отключено",
|
||
"noSyncRecord": "Нет истории синхронизации",
|
||
"columns": {
|
||
"name": "Название",
|
||
"type": "Тип",
|
||
"status": "Статус",
|
||
"ipCount": "IP-адреса",
|
||
"refCount": "Ссылки",
|
||
"syncStatus": "Статус синхронизации",
|
||
"updatedAt": "Обновлено",
|
||
"actions": "Действия"
|
||
},
|
||
"actions": {
|
||
"view": "Посмотреть",
|
||
"edit": "Изменить",
|
||
"test": "Правило теста",
|
||
"runNow": "Беги сейчас",
|
||
"syncNow": "Синхронизировать сейчас",
|
||
"delete": "Удалить"
|
||
},
|
||
"ban": {
|
||
"permanent": "Постоянный",
|
||
"expired": "Срок действия истек",
|
||
"minutesLater": "через {count} мин.",
|
||
"hoursLater": "через {count} ч"
|
||
},
|
||
"presets": {
|
||
"scan404": "Высокочастотное сканирование 404 с одного IP",
|
||
"directAccess": "Аномальный прямой доступ с одного IP"
|
||
},
|
||
"dialog": {
|
||
"editTitle": "Изменить {name}",
|
||
"createTitle": "Новая группа IP",
|
||
"description": "Поддерживать ручные, автоматические и подписные наборы IP, на которые WAF могут ссылаться списки разрешений/запретов.",
|
||
"name": "IP имя группы",
|
||
"nameRequired": "Введите имя группы IP.",
|
||
"type": "Тип",
|
||
"enable": "Включить группу IP",
|
||
"enableDesc": "Если этот параметр отключен, конфигурация сохраняется, но не расширяется в список времени выполнения WAF при публикации.",
|
||
"subscriptionUrl": "Подписка URL",
|
||
"subscriptionUrlRequired": "Тип подписки требует URL",
|
||
"subscriptionFormat": "Формат подписки",
|
||
"formatText": "Текстовый список",
|
||
"syncInterval": "Интервал синхронизации (минуты)",
|
||
"syncIntervalDesc": "Минимум 1 минута. По умолчанию 1440 минут.",
|
||
"mappingRule": "JSON правило сопоставления",
|
||
"mappingPlaceholder": "Оставьте пустым для корневого массива",
|
||
"autoIntervalDesc": "Как часто извлекать вредоносные IP-адреса из журналов запросов. Минимум 1 минута, по умолчанию 1440 минут.",
|
||
"presetRules": "Предустановленные правила",
|
||
"autoConfigJson": "Автоматическая конфигурация JSON",
|
||
"ipList": "IP-адреса/CIDR-адреса",
|
||
"ipListSubscriptionHint": "При следующей синхронизации подписки этот список будет перезаписан. Вы все равно можете сначала сохранить текущее содержимое.",
|
||
"ipListManualHint": "Один IP или CIDR в каждой строке.",
|
||
"saving": "Сохранение...",
|
||
"save": "Сохранить группу IP"
|
||
},
|
||
"testDialog": {
|
||
"title": "Результат автоматической проверки правил",
|
||
"description": "Воспроизведение журналов запросов в соответствии с текущей автоматической конфигурацией JSON.",
|
||
"testing": "Тестирование...",
|
||
"summary": "{lookback} · правил: {rules} · совпавших IP-адресов: {matched}",
|
||
"testedAt": "Протестировано: {time}",
|
||
"noMatch": "Ни один IP-адрес не соответствует.",
|
||
"empty": "Результата теста пока нет.",
|
||
"close": "Закрыть"
|
||
},
|
||
"viewDialog": {
|
||
"titleNamed": "Посмотреть {name}",
|
||
"title": "Посмотреть группу IP",
|
||
"summary": "{type} · IP-адресов: {count}",
|
||
"summaryFiltered": "{type} · IP-адресов: {count}, совпадений: {matched}",
|
||
"searchPlaceholder": "Поиск IP адресов...",
|
||
"clearSearch": "Очистить поиск",
|
||
"noSearchResult": "Соответствующие адреса IP не найдены.",
|
||
"fallbackDesc": "Просмотрите IP-адреса в этой группе и удалите записи, которые вам больше не нужны.",
|
||
"loading": "Загрузка списка IP...",
|
||
"noGroup": "Группа IP не выбрана.",
|
||
"emptyAuto": "Это автоматическое правило еще не зафиксировало ни одного IP-адреса. Нажмите «Запустить сейчас», чтобы запустить захват.",
|
||
"empty": "В этой группе IP нет IP-адресов.",
|
||
"subscriptionHint": "Группы подписки могут восстановить удаленные IP-адреса при следующей синхронизации.",
|
||
"ipAddress": "IP адрес",
|
||
"capturedAt": "Снято в",
|
||
"banRemaining": "Запретить осталось",
|
||
"actions": "Действия",
|
||
"deleteIp": "Удалить {ip}",
|
||
"close": "Закрыть",
|
||
"deleteTitle": "Удалить IP",
|
||
"deleteDesc": "Удалить {ip} из группы IP «{name}»?",
|
||
"deleting": "Удаление...",
|
||
"confirmDelete": "Удалить"
|
||
},
|
||
"autoConfigMustBeObject": "Автоматическая конфигурация должна быть объектом JSON."
|
||
},
|
||
"rateLimits": {
|
||
"title": "Лимиты запросов",
|
||
"subtitle": "Проверьте нагрузку на пограничные запросы и настройте ограничения параллелизма и пропускной способности по умолчанию.",
|
||
"loadingAuth": "Загрузка разрешений...",
|
||
"forbiddenTitle": "Недостаточно разрешений",
|
||
"forbiddenDesc": "Доступ к настройкам ограничения скорости имеют только администраторы.",
|
||
"tabAnalysis": "Анализ",
|
||
"tabConfig": "Конфигурация",
|
||
"loadingPage": "Загрузка ограничений скорости...",
|
||
"loadingPressure": "Загрузка данных о нагрузке…",
|
||
"loadFailed": "Загрузка не удалась",
|
||
"emptyTitle": "Нет данных",
|
||
"emptyDesc": "В текущем временном диапазоне нет журналов доступа.",
|
||
"topHost": "Самый высокий средний хост RPS",
|
||
"topIp": "Самый высокий средний показатель RPS IP",
|
||
"avgRate": "Средняя частота запросов для {range}",
|
||
"range": {
|
||
"h24": "24 часа",
|
||
"h72": "3 дня"
|
||
},
|
||
"chart": {
|
||
"title": "Нагрузка от запросов",
|
||
"empty": "Нет данных о нагрузке",
|
||
"requestRate": "Запросить ставку",
|
||
"uniqueVisitors": "Уникальные посетители",
|
||
"visitorsPerBucket": "Посетители / сегмент"
|
||
},
|
||
"config": {
|
||
"saved": "Настройки ограничения скорости сохранены.",
|
||
"saveFailed": "Сохранить не удалось",
|
||
"loading": "Загрузка настроек ограничения скорости...",
|
||
"preview": "Посмотреть предварительный просмотр конфигурации",
|
||
"title": "Глобальные лимиты запросов",
|
||
"description": "0 или пусто означает, что по умолчанию отключено. Сайты без собственных настроек наследуют эти значения. Опубликуйте релиз, чтобы применить изменения.",
|
||
"save": "Сохранить",
|
||
"connPerServer": "Параллелизм по умолчанию (на сайт)",
|
||
"connPerServerHint": "Максимальное количество одновременных подключений по умолчанию на сайт",
|
||
"connPerIp": "Параллелизм по умолчанию на IP",
|
||
"connPerIpHint": "Максимальное количество одновременных подключений по умолчанию на IP",
|
||
"limitRate": "Ограничение пропускной способности по умолчанию",
|
||
"limitRateHint": "Скорость передачи данных на один запрос по умолчанию, например 512k или 1m",
|
||
"reqPerIp": "Ограничение скорости запросов по умолчанию на IP",
|
||
"reqPerIpHint": "Частота запросов на один IP по умолчанию, например 10r/s или 100r/m. Оставьте пустым, чтобы отключить.",
|
||
"invalidConn": "Введите неотрицательное целое число для параллелизма или оставьте пустым, чтобы отключить",
|
||
"invalidRate": "Неверный формат скорости. Используйте 512k, 1m, число или оставьте пустым для отключения.",
|
||
"invalidReq": "Неверный формат частоты запросов. Используйте 10r/s или 100r/m либо оставьте пустым, чтобы отключить."
|
||
}
|
||
},
|
||
"pages": {
|
||
"title": "Страницы",
|
||
"subtitle": "Размещайте статические сайты на периферии. Загрузите статический пакет и выберите Pages в качестве основного в правилах прокси.",
|
||
"refresh": "Обновить",
|
||
"create": "Новый проект",
|
||
"loadFailed": "Загрузка не удалась",
|
||
"emptyTitle": "Проектов Pages пока нет",
|
||
"emptyDesc": "Создайте проект, а затем загрузите статический пакет развертывания.",
|
||
"enabled": "Включено",
|
||
"disabled": "Отключено",
|
||
"spaFallback": "SPA запасной вариант",
|
||
"strict404": "Строгий 404",
|
||
"currentActive": "В настоящее время активен",
|
||
"none": "Нет",
|
||
"activatedAt": "Активировано: ",
|
||
"notActivated": "Не активировано",
|
||
"viewDetail": "Посмотреть детали",
|
||
"saveFailed": "Сохранить не удалось",
|
||
"updated": "Проект обновлен",
|
||
"created": "Проект создан",
|
||
"deleted": "Проект удален",
|
||
"deleteFailed": "Удаление не удалось",
|
||
"editTitle": "Изменить проект страниц",
|
||
"createTitle": "Проект «Новые страницы»",
|
||
"editorDesc": "Настройте статические параметры хостинга. После загрузки пакета выберите Pages в качестве основного в правилах прокси.",
|
||
"settingsDesc": "Настройте статические параметры хостинга. При сохранении синхронизируются сведения о проекте и ссылки на прокси.",
|
||
"reset": "Сброс",
|
||
"saving": "Сохранение...",
|
||
"saveChanges": "Сохранить изменения",
|
||
"createProject": "Создать проект",
|
||
"form": {
|
||
"name": "Название проекта",
|
||
"nameRequired": "Введите название проекта",
|
||
"slug": "Ссылка проекта",
|
||
"slugPlaceholder": "Оставьте пустым для автоматической генерации",
|
||
"entryFile": "Входной файл",
|
||
"entryRequired": "Введите файл записи",
|
||
"rootDir": "Корневой каталог",
|
||
"optional": "Необязательно",
|
||
"spaFallback": "SPA запасной вариант",
|
||
"spaFallbackDesc": "Вернитесь к указанному пути, если ни один статический файл не соответствует",
|
||
"fallbackPath": "Резервный путь",
|
||
"fallbackPathPrefix": "Резервный путь должен начинаться с /",
|
||
"apiProxy": "API обратный прокси",
|
||
"apiProxyDesc": "Прикрепите правила прокси API к статическому сайту.",
|
||
"matchPath": "Путь совпадения",
|
||
"matchPathPrefix": "Путь совпадения должен начинаться с /",
|
||
"backend": "Бэкэнд URL",
|
||
"backendPrefix": "Серверная часть URL должна начинаться с http:// или https://.",
|
||
"rewrite": "Переписать правило"
|
||
},
|
||
"detail": {
|
||
"invalidId": "Требуется действительный проект Pages ID.",
|
||
"loading": "Загрузка сведений о проекте...",
|
||
"loadFailed": "Не удалось загрузить сведения о проекте.",
|
||
"back": "Вернуться к списку",
|
||
"notFound": "Этот проект Pages не существует или был удален.",
|
||
"deploymentCount": "Развёртываний: {count}",
|
||
"tabDeployments": "Развертывания",
|
||
"tabSettings": "Настройки"
|
||
},
|
||
"danger": {
|
||
"title": "Опасная зона",
|
||
"deleteProject": "Удалить проект",
|
||
"deleteHint": "Удалите навсегда {name} ({slug}) и все его развертывания.",
|
||
"confirmTitle": "Удалить проект страниц",
|
||
"confirmDesc": "Удалить проект {name}? Это невозможно отменить.",
|
||
"confirm": "Удалить"
|
||
},
|
||
"upload": {
|
||
"selectFile": "Выберите пакет развертывания",
|
||
"success": "Пакет развертывания загружен.",
|
||
"failed": "Загрузка не удалась",
|
||
"unsupported": "Поддерживаются только пакеты zip, tar.gz, tar.xz, tar.bz2, tar и 7z.",
|
||
"title": "Загрузить пакет развертывания",
|
||
"description": "Загрузите неизменяемый статический архив. Позже вы сможете активировать его из истории развертываний.",
|
||
"localPackage": "Локальный пакет",
|
||
"dropHint": "Перетащите пакет сюда или нажмите, чтобы выбрать файл",
|
||
"selected": "Выбрано {name} ({size})",
|
||
"chooseArchive": "Выберите поддерживаемый архив.",
|
||
"entry": "Запись о развертывании",
|
||
"entryHint": "Запись происходит из настроек проекта. Загрузка пакета не перезаписывает его.",
|
||
"processing": "Обработка на сервере",
|
||
"progress": "Ход загрузки",
|
||
"pleaseWait": "Пожалуйста, подождите",
|
||
"uploading": "Загрузка...",
|
||
"submit": "Загрузите и создайте развертывание"
|
||
},
|
||
"files": {
|
||
"loadFailed": "Не удалось загрузить список файлов",
|
||
"empty": "Нет записей в файлах",
|
||
"path": "Путь",
|
||
"size": "Размер"
|
||
},
|
||
"history": {
|
||
"source": {
|
||
"manual_upload": "Локальная загрузка",
|
||
"manual_url": "URL импорт",
|
||
"remote_url": "URL архива"
|
||
},
|
||
"trigger": {
|
||
"manual_upload": "Загрузка вручную",
|
||
"manual_url": "Ручной импорт",
|
||
"manual_sync": "Ручная синхронизация",
|
||
"scheduled_auto_update": "Запланированное обновление"
|
||
},
|
||
"fileMeta": "{checksum} · файлов: {count} · ",
|
||
"createdAt": "Создано {time}",
|
||
"activatedAt": " · Активировано {time}",
|
||
"collapseFiles": "Свернуть список файлов",
|
||
"expandFiles": "Развернуть список файлов",
|
||
"deploymentNumber": "Развертывание №{number}",
|
||
"activate": "Активировать",
|
||
"delete": "Удалить",
|
||
"activated": "Историческое развертывание активировано. Автообновление (если оно включено) отключено.",
|
||
"activateFailed": "Активация не удалась",
|
||
"deleted": "Развертывание удалено.",
|
||
"deleteFailed": "Удаление не удалось",
|
||
"activateTitle": "Активировать историческое развертывание",
|
||
"deleteTitle": "Удалить развертывание",
|
||
"activateDesc": "Активация другого исторического развертывания останавливает текущую исходную задачу. Если автоматическое обновление включено, оно будет отключено.",
|
||
"deleteDesc": "Удалить развертывание №{number}? Это невозможно отменить.",
|
||
"confirm": "Подтвердить",
|
||
"loading": "Загрузка истории развертываний...",
|
||
"loadFailed": "Не удалось загрузить историю развертываний.",
|
||
"productionHint": "Это живое производственное развертывание. Изменение активного развертывания вступает в силу немедленно.",
|
||
"manualUpload": "Загрузка вручную",
|
||
"emptyProductionTitle": "Нет производственного развертывания",
|
||
"emptyProductionDesc": "Загрузите локальный пакет или настройте удаленный источник выпуска URL/GitHub и синхронизируйте его.",
|
||
"historyHint": "Развертывания являются неизменяемыми. Исходная информация — это снимок времени создания. Вы можете активировать или удалить исторические развертывания.",
|
||
"emptyTitle": "Нет развертываний",
|
||
"emptyDesc": "Загрузите локальный пакет или настройте удаленный источник выпуска URL/GitHub и синхронизируйте его."
|
||
},
|
||
"source": {
|
||
"status": {
|
||
"idle": "Простой",
|
||
"checking": "Проверка",
|
||
"update_available": "Доступно обновление",
|
||
"syncing": "Синхронизация",
|
||
"failed": "Последняя синхронизация не удалась",
|
||
"attention": "Требуется подтверждение"
|
||
},
|
||
"check": "Проверить",
|
||
"syncPublish": "Синхронизировать и опубликовать",
|
||
"missingExecutionId": "Не выполнено задание ID",
|
||
"actionDone": "Источник {action} завершен.",
|
||
"actionFailed": "Источник {action} не удался",
|
||
"checkQueued": "Проверить задачу в очереди",
|
||
"checkQueueFailed": "Не удалось поставить задачу проверки в очередь",
|
||
"syncQueued": "Задача синхронизации поставлена в очередь",
|
||
"syncQueueFailed": "Не удалось поставить задачу синхронизации в очередь.",
|
||
"title": "Источник развертывания",
|
||
"loadingDesc": "Загрузка исходной конфигурации...",
|
||
"independentDesc": "Исходная конфигурация не зависит от истории развертывания.",
|
||
"loadFailed": "Не удалось загрузить источник развертывания.",
|
||
"configDesc": "Настройте удаленный источник и синхронизируйте его для публикации. Результаты отображаются в истории развертываний.",
|
||
"manualBadge": "Развертывание вручную",
|
||
"localPackage": "Локальный пакет",
|
||
"noRemote": "Нет постоянного удаленного источника. Загрузите пакет, а затем активируйте его из истории развертываний.",
|
||
"submitFailed": "Не удалось поставить исходную задачу в очередь.",
|
||
"statusFailed": "Не удалось прочитать статус задачи.",
|
||
"waitStopped": "Автоматическое ожидание остановлено. Задача может все еще выполняться в фоновом режиме.",
|
||
"refreshStatus": "Обновить статус задачи",
|
||
"configure": "Настроить",
|
||
"checkUpdate": "Проверьте наличие обновлений",
|
||
"refresh": "Обновить",
|
||
"confirmTitle": "Опубликовать текущую версию GitHub",
|
||
"confirmLead": "При этом публикуется точная ревизия, показанная в данный момент на карте:",
|
||
"revisionUnavailable": "Текущая редакция больше не доступна. Обновите и повторите попытку.",
|
||
"confirmPublish": "Подтвердить и опубликовать",
|
||
"updated": "Источник развертывания обновлен.",
|
||
"updateFailed": "Не удалось обновить источник развертывания.",
|
||
"switchedManual": "Переключен обратно на ручное развертывание",
|
||
"switchFailed": "Переключиться не удалось",
|
||
"urlRequired": "Введите удаленный URL",
|
||
"urlInvalid": "Введите действительный HTTP(S) URL",
|
||
"githubUrlInvalid": "Введите общедоступный репозиторий URL в формате https://github.com/'{owner}'/'{repo}'.",
|
||
"tagInvalid": "Тег выпуска должен быть допустимой ссылкой Git (допускаются 1–255 байт; / # & =).",
|
||
"assetInvalid": "Имя ресурса должно иметь длину от 1 до 255 байт и не может быть путем или содержать символы управления, новой строки или двунаправленного текста.",
|
||
"intervalInvalid": "Интервал проверки должен быть целым числом от 5 до 1440 минут.",
|
||
"useManual": "Использовать развертывание вручную",
|
||
"saveRemote": "Сохранить удаленный источник",
|
||
"saveGithub": "Сохранить источник GitHub",
|
||
"settingsTitle": "Источник развертывания",
|
||
"settingsDesc": "Выберите источник развертывания.",
|
||
"mode": "Тип источника",
|
||
"manual": "Развертывание вручную",
|
||
"manualHint": "Сохраните существующие развертывания и текущую производственную версию. Создайте новые развертывания с помощью «Загрузить пакет».",
|
||
"urlHint": "Введите HTTP(S) URL, чтобы загрузить пакет развертывания напрямую.",
|
||
"allowInsecure": "Разрешить небезопасные соединения",
|
||
"allowInsecureDesc": "По умолчанию разрешены публичные и частные адреса. Включение этого параметра позволяет пропустить проверку сертификата TLS для самозаверяющих или частных центров сертификации.",
|
||
"switchManualTitle": "Вернитесь к развертыванию вручную",
|
||
"switchManualDesc": "Текущая исходная конфигурация будет удалена. Существующие развертывания и текущая производственная версия сохраняются.",
|
||
"githubUrl": "GitHub хранилище URL",
|
||
"githubUrlHint": "Поддерживаются только общедоступные репозитории github.com.",
|
||
"releaseSelect": "Выбор релиза",
|
||
"latestRelease": "Последний выпуск",
|
||
"pinnedTag": "Закрепленный тег",
|
||
"pinnedTagHint": "Проверьте и синхронизируйте именно этот тег.",
|
||
"autoUpdate": "Автообновление",
|
||
"autoUpdateHint": "Автоматически синхронизировать и публиковать при обнаружении нового выпуска.",
|
||
"checkInterval": "Интервал проверки (минуты)",
|
||
"checkIntervalHint": "Можно установить от 5 до 1440 минут.",
|
||
"assetName": "Имя файла в релизе",
|
||
"noRecord": "Пока нет записей",
|
||
"address": "URL",
|
||
"verifyCert": "Проверить сертификат",
|
||
"lastSync": "Последняя синхронизация",
|
||
"neverSynced": "Еще не синхронизировано",
|
||
"applied": "Прикладной",
|
||
"latestReleaseLabel": "Последний выпуск",
|
||
"pinnedTagLabel": "Закрепленный тег · {tag}",
|
||
"tagMissing": "Не предусмотрено",
|
||
"assetChangedTitle": "Релизный актив изменен и требует подтверждения",
|
||
"assetChangedDesc": "Удаленная редакция не соответствует опубликованному содержимому. Проверьте версию и ресурсы, а затем подтвердите публикацию именно этой версии.",
|
||
"autoUpdateOn": "Вкл.",
|
||
"autoUpdateOff": "Выкл.",
|
||
"intervalMinutes": "{count, plural, one {# минута} few {# минуты} many {# минут} other {# минуты}}",
|
||
"nextCheck": "Следующая проверка",
|
||
"waitingSchedule": "Жду расписания",
|
||
"lastCheck": "Последняя проверка",
|
||
"neverChecked": "Еще не проверено",
|
||
"remote": "Удаленный"
|
||
}
|
||
},
|
||
"accessLogs": {
|
||
"title": "Журнал запросов",
|
||
"subtitle": "Просмотрите обзор трафика, детали IP и запросите журналы.",
|
||
"refresh": "Обновить",
|
||
"cleanup": "Очистка журналов",
|
||
"tabOverview": "Обзор",
|
||
"tabIps": "IP-адреса",
|
||
"tabList": "Журналы",
|
||
"cleaned": "Удалено записей журнала: {count}",
|
||
"cleanupFailed": "Очистка не удалась",
|
||
"loadingTitle": "Загрузка журналов доступа",
|
||
"loadingDesc": "Готовим страницу...",
|
||
"loadFailed": "Загрузка не удалась",
|
||
"range": {
|
||
"h24": "24 часа",
|
||
"h168": "7 дней",
|
||
"h360": "15 дней",
|
||
"h720": "30 дней"
|
||
},
|
||
"rangeHint": {
|
||
"hours24": "Последние 24 часа",
|
||
"days": "Период: {count} дн.",
|
||
"hours": "Период: {count} ч"
|
||
},
|
||
"sort": {
|
||
"logged_at:desc": "Сначала самые новые",
|
||
"logged_at:asc": "Сначала самый старый",
|
||
"status_code:desc": "Статус от высокого к низкому",
|
||
"status_code:asc": "Статус от низкого к высокому",
|
||
"remote_addr:asc": "IP А – Я",
|
||
"remote_addr:desc": "IP Я – А",
|
||
"total_requests:desc": "Запросы от высокого к низкому",
|
||
"total_requests:asc": "Запросы от низкого к высокому",
|
||
"request_length:desc": "Входящий от высокого к низкому",
|
||
"request_length:asc": "Входящий от низкого к высокому",
|
||
"bytes_sent:desc": "Исходящий от высокого к низкому",
|
||
"bytes_sent:asc": "Исходящий от низкого к высокому",
|
||
"success_ratio:desc": "Соотношение 2xx от высокого к низкому",
|
||
"success_ratio:asc": "Соотношение 2xx от низкого к высокому",
|
||
"last_seen_at:desc": "Последний раз видели сначала новые",
|
||
"last_seen_at:asc": "Последний раз видели самого старшего первым"
|
||
},
|
||
"cache": {
|
||
"hit": "Хит",
|
||
"origin": "Сервер-источник",
|
||
"uncached": "Некэшированный"
|
||
},
|
||
"filters": {
|
||
"pickTime": "Выберите время",
|
||
"remoteAddr": "Источник IP",
|
||
"remoteAddrPlaceholder": "Поиск по IP",
|
||
"host": "Хост",
|
||
"hostPlaceholder": "Поиск по хосту",
|
||
"statusCode": "Код состояния",
|
||
"statusCodePlaceholder": "Введите код состояния, например. 404",
|
||
"more": "Больше фильтров",
|
||
"nodeId": "Узел ID",
|
||
"nodeIdPlaceholder": "Поиск по node_id",
|
||
"path": "Путь",
|
||
"pathPlaceholder": "Поиск по пути",
|
||
"timeRange": "Временной диапазон",
|
||
"pageSize": "За страницу",
|
||
"pageSizeItem": "По {count} на странице",
|
||
"apply": "Фильтр",
|
||
"clear": "Очистить"
|
||
},
|
||
"cleanupDialog": {
|
||
"invalidDays": "Дней хранения должно быть больше 0.",
|
||
"title": "Очистка журналов доступа",
|
||
"description": "Удалите журналы доступа старше срока хранения. Это невозможно отменить.",
|
||
"policy": "Политика хранения",
|
||
"keepDays": "Срок хранения: {days} дн.",
|
||
"custom": "Пользовательские дни",
|
||
"customDays": "Пользовательские дни хранения",
|
||
"cleaning": "Очистка...",
|
||
"confirm": "Очистить"
|
||
},
|
||
"detail": {
|
||
"title": "Доступ к данным журнала",
|
||
"description": "Все поля для этого запроса. Используйте вкладку IP-адреса для анализа IP.",
|
||
"logId": "Запись ID",
|
||
"requestTime": "Запросить время",
|
||
"storedAt": "Хранится в",
|
||
"node": "Узел",
|
||
"nodeId": "Узел ID",
|
||
"clientIp": "Клиент IP",
|
||
"region": "Регион",
|
||
"host": "Хост",
|
||
"status": "Статус",
|
||
"cache": "Кэш",
|
||
"bytesSent": "Исходящий",
|
||
"requestLength": "Входящий",
|
||
"duration": "Продолжительность",
|
||
"path": "Путь",
|
||
"page": "Страница {page}",
|
||
"prev": "Назад",
|
||
"next": "Далее",
|
||
"listTitle": "Журналы",
|
||
"empty": "Нет журналов доступа",
|
||
"time": "Время",
|
||
"view": "Посмотреть детали"
|
||
},
|
||
"ip": {
|
||
"needRange": "Введите время начала и окончания",
|
||
"invalidTime": "Неверный формат времени",
|
||
"endAfterStart": "Время окончания должно быть позже времени начала.",
|
||
"maxRange": "Диапазон времени не может превышать 30 дней.",
|
||
"page": "Страница {page}",
|
||
"total": " · IP-адресов: {count}",
|
||
"prev": "Назад",
|
||
"next": "Далее",
|
||
"customRange": "Пользовательский диапазон",
|
||
"customPending": "Пользовательский (не применяется)",
|
||
"timeRange": "Временной диапазон",
|
||
"current": "Текущий: {range}",
|
||
"custom": "Пользовательский",
|
||
"start": "Запустить",
|
||
"end": "Конец",
|
||
"apply": "Применить",
|
||
"applyHint": "Нажмите «Применить» после изменения времени. Окно подробностей соответствует диапазону списка.",
|
||
"sort": "Сортировать",
|
||
"pageSize": "За страницу",
|
||
"title": "IP-адреса",
|
||
"empty": "Нет данных IP",
|
||
"region": "Регион",
|
||
"requests": "Запросы",
|
||
"successRatio": "соотношение 2хх",
|
||
"inbound": "Входящий",
|
||
"outbound": "Исходящий",
|
||
"lastSeen": "Последний раз видели",
|
||
"view": "Посмотреть детали IP",
|
||
"dialogTitle": "IP подробности",
|
||
"dialogDesc": ". Просмотрите тенденцию трафика этого IP, его распределение и групповые действия WAF IP-."
|
||
},
|
||
"analysis": {
|
||
"emptySeries": "Нет данных {title}",
|
||
"selectGroup": "Выберите группу IP, чтобы присоединиться.",
|
||
"added": "Добавлен {ip} в группу IP «{name}».",
|
||
"addFailed": "Не удалось добавить в группу IP.",
|
||
"removed": "Удален {ip} из группы IP «{name}».",
|
||
"removeFailed": "Удалить не удалось",
|
||
"joinTitle": "Добавьте IP в группу IP.",
|
||
"targetIp": "Цель IP:",
|
||
"loadingGroups": "Загрузка групп IP",
|
||
"loadGroupsFailed": "Не удалось загрузить группы IP.",
|
||
"alreadyIn": "Этот IP уже есть в этих IP группах.",
|
||
"alreadyInHint": "Вы можете удалить его или добавить в другую группу IP.",
|
||
"entryCount": "{type} · записей: {count}",
|
||
"delete": "Удалить",
|
||
"cannotDelete": "Невозможно удалить вручную",
|
||
"notInAny": "Этого IP пока нет ни в одной группе IP.",
|
||
"addToOther": "Добавить в другую группу IP",
|
||
"noWritable": "Нет записываемых вручную групп IP (или они уже содержат это IP).",
|
||
"selectManual": "Выберите группу вручную IP.",
|
||
"close": "Закрыть",
|
||
"processing": "Работаю...",
|
||
"joinSelected": "Добавить в выбранную группу IP",
|
||
"recentHours": "Период: {hours} ч",
|
||
"invalidIp": "Нет допустимого IP.",
|
||
"addToGroup": "Добавьте IP в группу IP.",
|
||
"loading": "Загрузка анализа IP",
|
||
"loadFailed": "Не удалось загрузить анализ IP.",
|
||
"totalRequests": "Всего запросов",
|
||
"errors": "Ошибки",
|
||
"bandwidth": "Обслуживаемая пропускная способность",
|
||
"received": "Полученные данные",
|
||
"uniqueHosts": "Уникальные хосты",
|
||
"uniquePaths": "Уникальные пути",
|
||
"trend": "IP тренд запроса",
|
||
"trendMeta": "{ip} · {range} · интервал: {minutes} мин",
|
||
"refresh": "Обновить",
|
||
"trendFailed": "Не удалось загрузить тренд.",
|
||
"trendEmpty": "У этого IP нет запросов в {range}."
|
||
},
|
||
"overview": {
|
||
"loadingTitle": "Загрузка обзора трафика",
|
||
"loadingDesc": "Агрегирование запросов, посещений и тенденций пропускной способности...",
|
||
"loadFailed": "Не удалось загрузить обзор трафика.",
|
||
"emptyTitle": "Нет обзорных данных",
|
||
"emptyDesc": "В текущем временном диапазоне нет статистики трафика.",
|
||
"uniqueVisitors": "{hint} · уникальные посетители",
|
||
"served": "{hint} · данные отправлены",
|
||
"requestsHint": "Следите за необычными скачками или падениями объема запросов.",
|
||
"requests": "Запросы",
|
||
"deviceDesc": "Запросите общий доступ по типу устройства.",
|
||
"deviceEmpty": "Нет данных о типе устройства",
|
||
"statusDesc": "Запросите долю по коду статуса HTTP.",
|
||
"statusEmpty": "Нет данных кода состояния",
|
||
"topPathsDesc": "Наиболее востребованные пути.",
|
||
"topHostsDesc": "Хосты с наибольшим трафиком.",
|
||
"topIpsDesc": "Исходные IP-адреса с наибольшим количеством запросов.",
|
||
"browsersDesc": "Запросы, агрегированные по браузеру.",
|
||
"osDesc": "Запросы, агрегированные по операционной системе.",
|
||
"uaDesc": "Запросы ранжированы по необработанному значению User-Agent."
|
||
},
|
||
"toolbar": {
|
||
"hostsFiltered": "Хостов в фильтре: {count}",
|
||
"filterByHost": "Фильтровать по хосту",
|
||
"filterHosts": "Фильтровать хосты",
|
||
"clear": "Очистить",
|
||
"searchPlaceholder": "Зона поиска или хост",
|
||
"loadingHosts": "Загрузка хостов…",
|
||
"loadHostsFailed": "Не удалось загрузить хосты",
|
||
"retry": "Повторить",
|
||
"noRegistered": "Нет зарегистрированных хостов",
|
||
"noMatch": "Нет подходящих хостов",
|
||
"selectZone": "Выберите зону {name}",
|
||
"selectHost": "Выберите хост {name}",
|
||
"selectedCount": "Выбрано хостов: {count}"
|
||
}
|
||
},
|
||
"cloudflare": {
|
||
"title": "Cloudflare",
|
||
"connectionSettings": "Настройки подключения",
|
||
"addGroup": "Новая группа",
|
||
"loadingOverview": "Загружается обзор Cloudflare...",
|
||
"notReadyTitle": "Cloudflare соединение не готово",
|
||
"notReadyDesc": "Импортируйте существующую учетную запись Cloudflare DNS или введите отдельный токен API и проверьте соединение.",
|
||
"configure": "Настроить соединение",
|
||
"groupsTitle": "Группы указателей",
|
||
"groupsDesc": "Управляйте целями Cloudflare DNS и членами домена.",
|
||
"loadingGroups": "Загрузка групп указателей...",
|
||
"emptyTitle": "Нет указывающих групп",
|
||
"emptyDesc": "Создайте группу, чтобы привязать членов домена к граничному узлу или пользовательской цели DNS.",
|
||
"enabled": "Включено",
|
||
"disabled": "Отключено",
|
||
"memberSummary": "Доменов: {count} · проксирование новых доменов: {proxy}",
|
||
"proxyOn": "на",
|
||
"proxyOff": "выкл.",
|
||
"manage": "Управление",
|
||
"sync": "Синхронизировать",
|
||
"delete": "Удалить",
|
||
"created": "Группа указателей создана.",
|
||
"syncQueued": "Групповая синхронизация поставлена в очередь",
|
||
"deleted": "Группа указателей и удаленные записи удалены.",
|
||
"deleteTitle": "Удалить группу указателей",
|
||
"deleteDesc": "При этом будут удалены все члены записи {name} и удаленные записи DNS, управляемые этим модулем. Это невозможно отменить.",
|
||
"confirmDelete": "Удалить",
|
||
"loadingDetail": "Загрузка сведений о группе...",
|
||
"groupUpdated": "Настройки группы обновлены",
|
||
"memberAddedOne": "Домен добавлен и поставлен в очередь на синхронизацию",
|
||
"memberAddedMany": "Домены добавлены в очередь синхронизации: {count}",
|
||
"memberAddFailed": "Не удалось добавить домены: {count}",
|
||
"memberPartial": "Частичный успех: {succeeded} добавлено, {failed} не удалось.",
|
||
"proxyUpdated": "Настройки проксирования обновлены. Синхронизация поставлена в очередь.",
|
||
"memberSyncQueued": "Синхронизация участников поставлена в очередь",
|
||
"memberDeleted": "Запись участника и удаленная запись DNS удалены.",
|
||
"batchEnableProxy": "Включить проксирование",
|
||
"batchProxyEnabled": "Проксирование включено, синхронизация поставлена в очередь. Доменов: {count}.",
|
||
"back": "Вернуться к списку",
|
||
"refresh": "Обновить",
|
||
"edit": "Изменить",
|
||
"addDomain": "Добавить домен",
|
||
"currentPoint": "Текущая цель",
|
||
"activeNode": "Активный узел {name} · {ip}",
|
||
"customTargetSummary": "Пользовательская цель {type} · {content}",
|
||
"nodeTargetMode": "Привязка узла",
|
||
"customTargetMode": "Пользовательская запись",
|
||
"syncEnabled": "Синхронизация включена",
|
||
"syncDisabled": "Синхронизация отключена",
|
||
"primaryNode": "Первичный {name}",
|
||
"backupNode": "Резервная копия {name}",
|
||
"backupUnset": "Не установлено",
|
||
"members": "Участники домена",
|
||
"membersDesc": "Оранжевое облако для каждого участника является единственным источником достоверной информации во время синхронизации.",
|
||
"noMembers": "Пока нет участников домена.",
|
||
"columns": {
|
||
"domain": "Домен",
|
||
"desiredIp": "Желаемое значение",
|
||
"status": "Статус",
|
||
"proxied": "Оранжевое облако",
|
||
"actions": "Действия"
|
||
},
|
||
"pendingSync": "Ожидает синхронизации",
|
||
"remove": "Удалить",
|
||
"groupDialog": {
|
||
"editTitle": "Редактировать группу указателей",
|
||
"createTitle": "Новая группа указателей",
|
||
"description": "Привяжите элементы к граничному узлу или назначьте настраиваемую цель записи DNS.",
|
||
"name": "Название группы",
|
||
"targetMode": "Целевой режим",
|
||
"bindNode": "Привязать узел",
|
||
"customTarget": "Пользовательский",
|
||
"recordType": "Тип записи",
|
||
"recordContent": "Значение DNS-записи",
|
||
"recordContentHint": "Введите IPv4 для A, IPv6 для AAAA или целевое имя хоста для CNAME.",
|
||
"recordContentPlaceholder": {
|
||
"CNAME": "например origin.example.com",
|
||
"A": "e.g. 203.0.113.10",
|
||
"AAAA": "например 2001:db8::10"
|
||
},
|
||
"primary": "Первичный узел",
|
||
"primaryPlaceholder": "Выберите пограничный узел с IPv4.",
|
||
"noIp": "Нет IP настроено",
|
||
"backup": "Резервный узел",
|
||
"none": "Нет",
|
||
"defaultProxied": "Проксировать новые домены по умолчанию",
|
||
"enableSync": "Включить синхронизацию",
|
||
"save": "Сохранить"
|
||
},
|
||
"memberDialog": {
|
||
"title": "Добавить участников домена",
|
||
"description": "Ищите и выбирайте оптом. Присоединение создает или перенимает уникальную одноименную запись DNS, используемую этой группой.",
|
||
"zoneDomain": "Домен зоны",
|
||
"searchPlaceholder": "Поиск доменов или зон…",
|
||
"selected": "Выбрано: {count}",
|
||
"visible": "Показано: {count}",
|
||
"unselectAll": "Снять выбор с видимых доменов",
|
||
"selectVisible": "Выбрать видимый",
|
||
"clear": "Очистить",
|
||
"noAvailable": "Нет доступных доменов (уже в группе или не добавлены в управление сайтом).",
|
||
"noMatch": "Нет подходящих доменов",
|
||
"groupByZone": "Группировать по зонам",
|
||
"selectZone": "Выберите зону {name}",
|
||
"zone": "Зона DNS",
|
||
"proxied": "Проксировать через Cloudflare",
|
||
"submitCount": "Добавить и синхронизировать ({count})",
|
||
"submit": "Добавить и синхронизировать"
|
||
},
|
||
"tasks": {
|
||
"pending": "Ожидает",
|
||
"running": "Выполняется",
|
||
"succeeded": "Успешно",
|
||
"failed": "Ошибка",
|
||
"system": "Система",
|
||
"manual": "Вручную",
|
||
"retry": "Повторить",
|
||
"schedule": "Запланировано",
|
||
"retried": "Задача синхронизации повторно поставлена в очередь",
|
||
"newTaskId": "Новое задание ID: {id}",
|
||
"retryFailed": "Не удалось повторить задачу",
|
||
"unknownError": "Неизвестная ошибка",
|
||
"title": "Синхронизировать задачи",
|
||
"description": "Показывает только выполнение синхронизации домена Cloudflare (sync_member) и групповой синхронизации (sync_group).",
|
||
"statusPlaceholder": "Статус",
|
||
"allStatus": "Все статусы",
|
||
"refresh": "Обновить",
|
||
"loadFailed": "Не удалось загрузить задачи синхронизации.",
|
||
"loading": "Загрузка задач синхронизации...",
|
||
"emptyTitle": "Нет задач синхронизации",
|
||
"emptyDesc": "После добавления доменов или синхронизации группы здесь отображаются операции синхронизации домена/группы Cloudflare.",
|
||
"columns": {
|
||
"task": "Задача",
|
||
"status": "Статус",
|
||
"trigger": "Триггер",
|
||
"duration": "Продолжительность",
|
||
"result": "Результат/ошибка",
|
||
"createdAt": "Создано"
|
||
},
|
||
"pageSummary": "Всего: {total}, страница {page}/{pages}",
|
||
"prev": "Назад",
|
||
"next": "Далее",
|
||
"detailTitle": "Синхронизировать сведения о задаче",
|
||
"defaultName": "Cloudflare синхронизация",
|
||
"loadingDetail": "Загрузка сведений о задаче...",
|
||
"status": "Статус",
|
||
"trigger": "Триггер",
|
||
"retries": "Повторные попытки",
|
||
"duration": "Продолжительность",
|
||
"taskId": "Задача ID",
|
||
"createdAt": "Создано",
|
||
"finishedAt": "Завершено",
|
||
"result": "Результат",
|
||
"error": "Ошибка",
|
||
"logs": "Журналы",
|
||
"close": "Закрыть"
|
||
},
|
||
"settings": {
|
||
"saved": "Cloudflare соединение сохранено",
|
||
"verified": "Cloudflare соединение проверено",
|
||
"cleared": "Cloudflare соединение очищено",
|
||
"back": "Вернуться к списку",
|
||
"title": "Cloudflare соединение",
|
||
"sourceTitle": "Источник учетных данных",
|
||
"sourceDesc": "Токен должен иметь права Zone:Read и DNS:Edit. Значения токенов не отображаются в ответах API и интерфейсе.",
|
||
"source": "Источник подключения",
|
||
"importDns": "Импортировать существующую учетную запись DNS.",
|
||
"standalone": "Автономный токен API",
|
||
"dnsAccount": "Cloudflare DNS аккаунт",
|
||
"selectAccount": "Выберите учетную запись DNS.",
|
||
"dnsHint": "Показаны только учетные записи типа Cloudflare DNS. Добавьте один в",
|
||
"dnsLink": "DNS аккаунтов",
|
||
"dnsHintAfter": ".",
|
||
"tokenKeep": "Оставьте пустым, чтобы сохранить существующий токен; сохранение заменяет его",
|
||
"tokenEnter": "Введите токен Cloudflare API",
|
||
"save": "Сохранить настройки",
|
||
"test": "Тестовое соединение",
|
||
"clear": "Сбросить настройки подключения",
|
||
"statusTitle": "Текущий статус",
|
||
"ready": "Токен проверен. Cloudflare синхронизация указателей может быть запущена.",
|
||
"notReady": "После сохранения вам еще нужно протестировать соединение. Синхронизация отклоняется до тех пор, пока она не будет проверена."
|
||
}
|
||
},
|
||
"openflareOps": {
|
||
"saved": "OpenFlare настройки операций сохранены",
|
||
"saveFailed": "Сохранить не удалось",
|
||
"tokenRotated": "Токен обнаружения заменён",
|
||
"tokenRotateFailed": "Не удалось заменить токен",
|
||
"kumaSynced": "Uptime Kuma синхронизация выполнена",
|
||
"syncFailed": "Синхронизация не удалась",
|
||
"invalidParams": "Проверка не удалась",
|
||
"loading": "Загрузка настроек операций OpenFlare...",
|
||
"loadFailed": "Загрузка не удалась",
|
||
"save": "Сохранить",
|
||
"agent": {
|
||
"title": "Работа агента",
|
||
"description": "Интервал контрольных сигналов и тайм-аут отсутствия связи передаются узлам при следующем контрольном сигнале.",
|
||
"heartbeat": "Интервал контрольных сигналов ({duration})",
|
||
"offline": "Тайм-аут отсутствия связи ({duration})",
|
||
"wsUpgrade": "Включить переход на WebSocket",
|
||
"wsUpgradeDesc": "После успешного контрольного сигнала по HTTP переходить на WebSocket, чтобы узлы сразу получали уведомления о публикации конфигурации.",
|
||
"updateRepo": "Репозиторий обновлений агента"
|
||
},
|
||
"geo": {
|
||
"title": "IP геолокация",
|
||
"description": "Управляет источником GeoIP для карт узлов и подобных представлений. Геолокация журнала доступа посетителей всегда использует MaxMind mmdb.",
|
||
"mode": "Метод поиска",
|
||
"disabled": "Выкл.",
|
||
"testIp": "Тест IP",
|
||
"querying": "Поиск…",
|
||
"query": "Найти",
|
||
"country": "Страна/регион"
|
||
},
|
||
"pages": {
|
||
"title": "Статический хостинг страниц",
|
||
"description": "Настройте ограничение размера загрузки и количество исторических развертываний, которые сохраняет каждый проект.",
|
||
"maxSize": "Ограничение размера пакета (МиБ)",
|
||
"history": "Хранить исторические развертывания (0 = неограниченно)",
|
||
"historyHint": "В каждом проекте хранится не более N развертываний: всегда сохраняется активное, затем остальные заполняются сначала самыми новыми. Дополнительные неактивные развертывания удаляются после успешной загрузки. Поддерживаются zip, tar.gz, tar.xz, tar.bz2, tar и 7z."
|
||
},
|
||
"discovery": {
|
||
"title": "Токен обнаружения и развертывание",
|
||
"description": "Новые узлы используют токен обнаружения при первом подключении. Заменить токен можно в разделе управления узлами или кнопкой ниже.",
|
||
"manageNodes": "Управление узлами",
|
||
"rotate": "Заменить токен",
|
||
"tokenReadonly": "Токен обнаружения (только для чтения)",
|
||
"loading": "Загрузка…",
|
||
"notGenerated": "Не создано",
|
||
"command": "Однострочная команда развертывания",
|
||
"commandHint": "Укажите доступный URL сервера и получите токен.",
|
||
"copied": "Команда скопирована",
|
||
"copy": "Копировать команду"
|
||
},
|
||
"kuma": {
|
||
"title": "Uptime Kuma интеграция",
|
||
"description": "Синхронизируйте сайты обратного прокси-сервера с экземпляром Uptime Kuma.",
|
||
"syncNow": "Синхронизировать сейчас",
|
||
"enable": "Включить Uptime Kuma",
|
||
"url": "Uptime Kuma URL",
|
||
"username": "Имя пользователя",
|
||
"password": "Пароль",
|
||
"passwordKeep": "Оставьте пустым, чтобы сохранить текущий пароль.",
|
||
"syncInterval": "Интервал синхронизации (минуты)",
|
||
"scope": "Область мониторинга",
|
||
"allSites": "Все сайты",
|
||
"selectedSites": "Выбранные сайты",
|
||
"selectedLabel": "Выбранные сайты",
|
||
"pickSites": "Выбирайте отслеживаемые сайты",
|
||
"noneSelected": "Сайты не выбраны",
|
||
"interval": "Интервал проверки (секунды)",
|
||
"retry": "Повторные попытки",
|
||
"retryInterval": "Интервал повтора (секунды)",
|
||
"timeout": "Тайм-аут запроса (секунды)"
|
||
},
|
||
"duration": {
|
||
"minutes": "{count} мин",
|
||
"seconds": "{count} сек."
|
||
},
|
||
"errors": {
|
||
"heartbeatMin": "Интервал контрольных сигналов не может быть меньше 1000 миллисекунд.",
|
||
"offlineMin": "Тайм-аут отсутствия связи не может быть меньше 10 000 миллисекунд.",
|
||
"offlineRatio": "Тайм-аут отсутствия связи должен быть как минимум в 3 раза больше интервала контрольных сигналов.",
|
||
"kumaUrl": "Введите Uptime Kuma URL.",
|
||
"kumaUser": "Введите имя пользователя Uptime Kuma.",
|
||
"syncInterval": "Интервал синхронизации должен быть положительным целым числом.",
|
||
"interval": "Интервал контрольных сигналов должен быть положительным целым числом.",
|
||
"retry": "Число повторов должно быть неотрицательным целым числом.",
|
||
"retryInterval": "Интервал повторных проверок должен быть положительным целым числом.",
|
||
"timeout": "Тайм-аут запроса должен быть положительным целым числом.",
|
||
"pagesSize": "Максимальный размер пакета страниц должен находиться в диапазоне от 1 до 2048 МБ.",
|
||
"pagesHistory": "Число страниц истории должно быть целым числом ≥ 0 (0 означает неограниченное количество)."
|
||
},
|
||
"status": {
|
||
"title": "Статус системы",
|
||
"loadFailed": "Не удалось загрузить статус системы.",
|
||
"unknownError": "Произошла неизвестная ошибка",
|
||
"autoRefresh": "Автообновление",
|
||
"refresh": "Обновить",
|
||
"overview": "Состояние сервиса",
|
||
"overviewDesc": "Основные показатели работоспособности сервиса",
|
||
"uptime": "Время работы",
|
||
"goroutines": "Горутины",
|
||
"heapObjects": "Объекты в куче",
|
||
"memory": "Память",
|
||
"memoryDesc": "Использование основной памяти",
|
||
"alloc": "Текущий объём выделенной памяти",
|
||
"totalAlloc": "Всего выделено",
|
||
"sys": "Системная память",
|
||
"nextGc": "Порог следующего GC",
|
||
"usageRatio": "Текущее использование (Alloc/Sys)",
|
||
"heapStack": "Куча/стек",
|
||
"heapStackDesc": "Подробности кучи и стека во время выполнения",
|
||
"heapAlloc": "Выделено в куче",
|
||
"heapSys": "Память кучи, полученная от ОС",
|
||
"heapIdle": "Незанятая память кучи",
|
||
"heapInuse": "Занятая память кучи",
|
||
"heapReleased": "Память кучи, возвращённая ОС",
|
||
"stackInuse": "Занятая память стека",
|
||
"stackSys": "Память стека, полученная от ОС",
|
||
"structs": "Внутренние структуры",
|
||
"structsDesc": "Память внутренних структур среды выполнения",
|
||
"mspanInuse": "MSpan используется",
|
||
"mspanSys": "Память MSpan, полученная от ОС",
|
||
"mcacheInuse": "MCache используется",
|
||
"mcacheSys": "Память MCache, полученная от ОС",
|
||
"buckHashSys": "Профилирование хеш-таблицы",
|
||
"gcSys": "GC метаданные",
|
||
"otherSys": "Другая системная память",
|
||
"gc": "GC и выделение памяти",
|
||
"gcDesc": "История GC и счётчики операций с памятью",
|
||
"numGc": "Количество запусков GC",
|
||
"lastGc": "Время с момента последнего GC",
|
||
"pauseTotal": "Общая длительность пауз GC",
|
||
"lastPause": "Последняя пауза GC",
|
||
"mallocs": "Количество выделений памяти",
|
||
"frees": "Количество освобождений памяти",
|
||
"lookups": "Поиск по указателю"
|
||
},
|
||
"siteModal": {
|
||
"title": "Выбирайте отслеживаемые сайты",
|
||
"description": "Выберите сайты обратного прокси-сервера для синхронизации с Uptime Kuma. Поиск по названию сайта или домену.",
|
||
"search": "Поиск сайтов",
|
||
"searchPlaceholder": "Поиск по имени или домену...",
|
||
"selectFiltered": "Выбрать отфильтрованное",
|
||
"clearFiltered": "Снять выбор с отфильтрованных сайтов",
|
||
"loading": "Загрузка сайтов...",
|
||
"loadFailed": "Не удалось загрузить сайты",
|
||
"noMatch": "Нет подходящих сайтов",
|
||
"select": "Выбрать",
|
||
"siteName": "Название сайта",
|
||
"primaryDomain": "Основной домен",
|
||
"selectedCount": "Выбрано сайтов для мониторинга: {count}",
|
||
"save": "Сохранить выбор"
|
||
}
|
||
}
|
||
}
|