{
  "LOADING": "Загрузка...",
  "MENU": {
    "OVERVIEW": "Обзор",
    "QUEUES": "ОЧЕРЕДИ",
    "SEARCH_INPUT_PLACEHOLDER": "Фильтр очередей",
    "PAUSED": "На паузе",
    "EXPAND_ALL": "Развернуть все группы",
    "COLLAPSE_ALL": "Свернуть все группы",
    "EXPAND_SIDEBAR": "Развернуть боковую панель",
    "COLLAPSE_SIDEBAR": "Свернуть боковую панель",
    "METRICS_HISTORY": "История метрик",
    "SCHEDULERS": "Планировщики"
  },
  "DASHBOARD": {
    "JOBS_COUNT_one": "{{count}} задача",
    "JOBS_COUNT_few": "{{count}} задачи",
    "JOBS_COUNT_many": "{{count}} задач",
    "JOBS_COUNT_other": "{{count}} задач",
    "JOBS_COUNT": "{{count}} задач",
    "EMPTY_STATE": "Нет очередей для отображения.",
    "EMPTY_STATE_FILTERED": "Нет очередей с задачами в статусе {{status}}.",
    "SORTING": {
      "TITLE": "Сортировать по",
      "FAILED": "Неудачные задачи",
      "DELAYED": "Отложенные задачи",
      "WAITING": "Ожидающие задачи",
      "ACTIVE": "Активные задачи",
      "COMPLETED": "Завершённые задачи",
      "ALPHABETICAL": "По алфавиту (A–Z)"
    },
    "VIEW": {
      "TITLE": "Вид",
      "FLAT": "Плоский",
      "GROUPED": "Группированный"
    }
  },
  "JOB": {
    "DELAY_CHANGED": "*Задержка изменена; новое время запуска пока неизвестно",
    "NOT_FOUND": "Задача не найдена",
    "STATUS": "Статус: {{status}}",
    "ADDED_AT": "Добавлена",
    "WILL_RUN_AT": "Запустится",
    "DELAYED_FOR": "отложена на",
    "PROCESS_STARTED_AT": "Обработка начата",
    "PROCESSED_BY": "воркером {{processedBy}}",
    "FAILED_AT": "Ошибка",
    "FINISHED_AT": "Завершена",
    "ATTEMPTS": "попытка №{{attempts}}",
    "REPEAT": "повтор {{count}}",
    "REPEAT_WITH_LIMIT": "$t(JOB.REPEAT) / {{limit}}",
    "DURATION": {
      "SECS": "{{duration}} с",
      "MILLI_SECS": "{{duration}} мс"
    },
    "SHOW_DATA_BTN": "Показать данные",
    "SHOW_PROGRESS_BTN": "Показать прогресс",
    "SHOW_OPTIONS_BTN": "Показать опции",
    "SHOW_ERRORS_BTN": "Показать ошибки",
    "NA": "Н/Д",
    "NO_PROGRESS": "Нет данных о прогрессе",
    "NO_ERRORS": "Ошибки не записаны",
    "NO_LOGS": "Логи недоступны",
    "LOGS": {
      "FILTER_PLACEHOLDER": "Фильтры"
    },
    "ACTIONS": {
      "PROMOTE": "Продвинуть",
      "CLEAN": "Удалить",
      "RETRY": "Повторить",
      "UPDATE_DATA": "Обновить данные",
      "DUPLICATE": "Дублировать",
      "CONFIRM": {
        "PROMOTE": "Вы уверены, что хотите продвинуть эту задачу?",
        "RETRY": "Вы уверены, что хотите повторить эту задачу?",
        "CLEAN": "Вы уверены, что хотите удалить эту задачу?",
        "REMOVE_JOB_SCHEDULER_TITLE": "Удалить всё расписание?",
        "REMOVE_JOB_SCHEDULER": "Эта задача — следующий запуск планировщика «{{schedulerId}}» и не может быть удалена отдельно. Удаление планировщика остановит расписание и удалит эту задачу."
      }
    },
    "TABS": {
      "DEFAULT": "По умолчанию",
      "DATA": "Данные",
      "PROGRESS": "Прогресс",
      "OPTIONS": "Опции",
      "LOGS": "Логи",
      "ERROR": "Ошибка",
      "TIMELINE": "Таймлайн"
    }
  },
  "QUEUE": {
    "NOT_FOUND": "Очередь не найдена",
    "EMPTY_STATE": "В этой очереди нет задач со статусом {{status}}.",
    "ACTIONS": {
      "MODAL_TITLE": "",
      "RETRY_ALL": "Повторить все",
      "RETRY_ALL_FAILED": "Повторить все неудачные задачи ({{count}})",
      "RETRY_FAILED_IN_ALL_QUEUES": "Повторить {{count}} неудачных задач во всех очередях",
      "RETRY_FAILED_IN_GROUP": "Повторить {{count}} неудачных задач в группе",
      "PROMOTE_ALL": "Продвинуть все",
      "CLEAN_ALL": "Очистить все",
      "RESUME": "Возобновить",
      "PAUSE": "Пауза",
      "RESUME_ALL": "Возобновить все",
      "PAUSE_ALL": "Приостановить все",
      "EMPTY": "Очистить",
      "OBLITERATE": "Уничтожить",
      "ADD_JOB": "Добавить задачу",
      "SET_CONCURRENCY": "Задать параллелизм",
      "CONFIRM": {
        "RETRY_ALL": "Вы уверены, что хотите повторить все задачи со статусом {{status}}?",
        "RETRY_FAILED_QUEUES": "Вы уверены, что хотите повторить {{jobs}} неудачных задач в {{count}} очередях?",
        "CLEAN_ALL": "Вы уверены, что хотите очистить все задачи со статусом {{status}}?",
        "PROMOTE_ALL": "Вы уверены, что хотите продвинуть все отложенные задачи?",
        "PAUSE_QUEUE": "Вы уверены, что хотите приостановить обработку очереди?",
        "EMPTY_QUEUE": "Вы уверены, что хотите очистить очередь?",
        "OBLITERATE_QUEUE": "Вы уверены, что хотите уничтожить эту очередь?\n\nЭто полностью удалит очередь и все её ключи в Redis.\nСначала очередь должна быть на паузе.",
        "RESUME_QUEUE": "Вы уверены, что хотите возобновить обработку очереди?",
        "PAUSE_ALL": "Вы уверены, что хотите приостановить все очереди?",
        "RESUME_ALL": "Вы уверены, что хотите возобновить все очереди?",
        "PAUSE_GROUP": "Вы уверены, что хотите приостановить все {{count}} очередей в этой группе?",
        "RESUME_GROUP": "Вы уверены, что хотите возобновить все {{count}} очередей в этой группе?"
      },
      "TOAST": {
        "RETRY_PENDING": "Повтор всех задач со статусом {{status}}...",
        "RETRY_DONE": "Все задачи со статусом {{status}} отправлены обратно в очередь",
        "RETRY_SKIPPED": "Пропущено {{count}} id без данных задачи. Обычно данные теряются из‑за политики вытеснения Redis, отличной от noeviction.",
        "RETRY_QUEUES_PENDING": "Повтор {{jobs}} неудачных задач в {{count}} очередях...",
        "RETRY_QUEUES_DONE": "{{jobs}} неудачных задач из {{count}} очередей отправлены обратно в свои очереди"
      },
      "PAUSE_GROUP": "Приостановить все очереди группы",
      "RESUME_GROUP": "Возобновить все очереди группы",
      "GROUP_ACTIONS": "Действия группы"
    },
    "STATUS": {
      "LATEST": "Последние",
      "ACTIVE": "Активные",
      "WAITING": "Ожидающие",
      "WAITING-CHILDREN": "Ожидают дочерние",
      "PRIORITIZED": "Приоритетные",
      "COMPLETED": "Завершённые",
      "FAILED": "Неудачные",
      "DELAYED": "Отложенные",
      "PAUSED": "На паузе"
    },
    "INFO": {
      "TITLE": "Сведения об очереди",
      "OVERVIEW": "Обзор",
      "NAME": "Имя",
      "DISPLAY_NAME": "Отображаемое имя",
      "TYPE": "Тип",
      "STATE": "Состояние",
      "RUNNING": "Работает",
      "PAUSED": "На паузе",
      "READ_ONLY": "Только чтение",
      "RETRIES": "Допустимо повторов",
      "GLOBAL_CONCURRENCY": "Глобальный параллелизм",
      "WORKERS": "Воркеры",
      "DELIMITER": "Разделитель групп",
      "TOTAL_JOBS": "Всего задач",
      "DEFAULTS": "Опции задачи по умолчанию",
      "DESCRIPTION": "Описание",
      "NOT_SET": "Не задано",
      "YES": "Да",
      "NO": "Нет"
    },
    "SCHEDULERS_LINK": "Планировщики ({{count}})",
    "WORKERS": {
      "TITLE": "Подключённые воркеры",
      "NONE": "Нет воркеров",
      "NONE_TOOLTIP": "Эту очередь никто не обрабатывает",
      "CONNECTED": "подключён {{since}}",
      "EMPTY": "Эту очередь никто не обрабатывает.",
      "EMPTY_HINT": "Убедитесь, что процесс воркера запущен и указывает на тот же Redis.",
      "EMPTY_PAUSED": "Очередь на паузе, поэтому воркеры не ожидаются."
    }
  },
  "METRICS": {
    "TITLE": "Пропускная способность (задач / мин)",
    "COMPLETED": "Завершённые",
    "FAILED": "Неудачные",
    "COMPLETED_PER_MIN": "Завершённые / мин",
    "FAILED_PER_MIN": "Неудачные / мин",
    "PEAK_PER_MIN": "Пик / мин",
    "WINDOW_COMPLETED": "Завершённые (за {{minutes}} мин)",
    "NOW": "Сейчас",
    "MINUTES_AGO": "{{minutes}} мин назад",
    "PER_MIN_UNIT": "/мин",
    "SHOW": "Показать метрики",
    "HIDE": "Скрыть метрики",
    "EMPTY": "Метрики ещё не собраны. Включите метрики на воркере (например, metrics: { maxDataPoints: MetricsTime.ONE_WEEK }), чтобы видеть пропускную способность.",
    "RANGE_60M": "60м",
    "RANGE_7D": "7д",
    "RANGE_30D": "30д",
    "RANGE_90D": "90д",
    "HISTORY_EMPTY": "Для этого диапазона история ещё не записана.",
    "DAILY_COMPLETED": "Всего завершённых",
    "DAILY_FAILED": "Всего неудачных",
    "PARTIAL_PERIOD": "Этот период ещё идёт.",
    "TAB_THROUGHPUT": "Пропускная способность",
    "TAB_LATENCY": "Задержка",
    "P95_RUN_TIME": "Выполнение p95",
    "P95_WAIT_TIME": "Ожидание p95",
    "NOT_AVAILABLE": "н/д"
  },
  "LATENCY": {
    "TITLE": "Задержка задач",
    "GROUP_RUN": "Выполнение",
    "GROUP_WAIT": "Ожидание",
    "RUN_P50": "Выполнение p50",
    "RUN_P95": "Выполнение p95",
    "RUN_P99": "Выполнение p99",
    "WAIT_P50": "Ожидание p50",
    "WAIT_P95": "Ожидание p95",
    "WAIT_P99": "Ожидание p99",
    "QUEUE_AGE": "Самая старая задача в ожидании",
    "P50": "p50",
    "P95": "p95",
    "P99": "p99",
    "LOG_SCALE_NOTE": "лог. шкала",
    "LOW_CONFIDENCE": "Низкая достоверность: {{count}} образцов",
    "LOW_CONFIDENCE_one": "Низкая достоверность: {{count}} образец",
    "LOW_CONFIDENCE_few": "Низкая достоверность: {{count}} образца",
    "LOW_CONFIDENCE_many": "Низкая достоверность: {{count}} образцов",
    "LOW_CONFIDENCE_other": "Низкая достоверность: {{count}} образцов",
    "EMPTY_NO_DATA": "Для этого диапазона задержка ещё не записана.",
    "EMPTY_NO_COMPLETIONS": "В этом диапазоне очередь не завершила ни одной задачи.",
    "HOURLY_GRANULARITY_ONLY": "История задержки записывается с почасовой детализацией, поэтому за последние 60 минут показывать нечего. Переключитесь на 7д, 30д или 90д."
  },
  "CONFIRM": {
    "DEFAULT_TITLE": "Вы уверены?",
    "CONFIRM_BTN": "Подтвердить",
    "CANCEL_BTN": "Отмена"
  },
  "MODAL": {
    "CLOSE_BTN": "Закрыть"
  },
  "REDIS": {
    "TITLE": "Сведения о Redis",
    "TITLE_POSTGRES": "Сведения о PostgreSQL",
    "PORT": "Порт",
    "MEMORY_USAGE": "Использование памяти",
    "PEEK_MEMORY": "Пиковое использование памяти",
    "FRAGMENTATION_RATIO": "Коэффициент фрагментации",
    "CONNECTED_CLIENTS": "Подключённые клиенты",
    "BLOCKED_CLIENTS": "Заблокированные клиенты",
    "VERSION": "Версия",
    "MODE": "Режим",
    "OS": "ОС",
    "UP_TIME": "Время работы",
    "ERROR": {
      "MEMORY_USAGE": "Не удалось получить статистику памяти"
    }
  },
  "SETTINGS": {
    "TITLE": "Настройки",
    "LANGUAGE": "Язык",
    "POLLING_INTERVAL": "Интервал опроса",
    "POLLING_OPTIONS": {
      "OFF": "Выкл.",
      "SECS": "{{count}} с",
      "MINS": "{{count}} мин",
      "MINS_one": "{{count}} минута",
      "MINS_few": "{{count}} минуты",
      "MINS_many": "{{count}} минут",
      "MINS_other": "{{count}} минут"
    },
    "DEFAULT_JOB_TAB": "Вкладка задачи по умолчанию",
    "JOBS_PER_PAGE": "Задач на странице (1–50)",
    "CONFIRM_QUEUE_ACTIONS": "Подтверждать действия с очередью",
    "CONFIRM_JOB_ACTIONS": "Подтверждать действия с задачей",
    "USE_COLLAPSIBLE_JSON": "Сворачиваемый JSON",
    "COLLAPSE_JOB": "Сворачивать задачу",
    "COLLAPSE_JOB_DATA": "Сворачивать данные задачи",
    "COLLAPSE_JOB_PROGRESS": "Сворачивать прогресс задачи",
    "COLLAPSE_JOB_OPTIONS": "Сворачивать опции задачи",
    "COLLAPSE_JOB_ERROR": "Сворачивать ошибку задачи",
    "DEFAULT_COLLAPSE_DEPTH": "Глубина сворачивания JSON по умолчанию (0–10)",
    "SORT_QUEUES": "Сортировать очереди (A–Z, группы сначала)",
    "DARK_MODE": "Тёмная тема",
    "SECTIONS": {
      "GENERAL": "Общие",
      "QUEUES": "Очереди",
      "JOBS": "Задачи"
    },
    "GROUP_QUEUES": "Группировать очереди по категориям",
    "GROUP_QUEUES_HELP": "Разбивает обзор на сворачиваемые секции по разделителю в именах очередей — та же группировка, что и в боковой панели."
  },
  "CONCURRENCY": {
    "TITLE": "Глобальный параллелизм",
    "DESCRIPTION": "Максимальное число задач, обрабатываемых параллельно всеми воркерами. Установите 0, чтобы снять ограничение.",
    "CONCURRENCY": "Параллелизм",
    "SAVE": "Сохранить"
  },
  "ADD_JOB": {
    "TITLE": "Добавить задачу",
    "TITLE_duplicate": "Дублировать задачу",
    "QUEUE_NAME": "Имя очереди",
    "JOB_NAME": "Имя задачи",
    "JOB_DATA": "Данные задачи",
    "JOB_OPTIONS": "Опции задачи",
    "ADD": "Добавить",
    "DUPLICATE": "Дублировать"
  },
  "UPDATE_JOB_DATA": {
    "TITLE": "Обновить данные задачи",
    "UPDATE": "Обновить",
    "JOB_DATA": "Данные задачи"
  },
  "CLIPBOARD": {
    "COPY_FAILED": "Не удалось скопировать в буфер обмена. Возможно, браузер не поддерживает эту функцию или страница открыта не по HTTPS."
  },
  "ERRORS": {
    "INTERNAL_SERVER_ERROR": "Внутренняя ошибка сервера",
    "INVALID_BEFORE_DATE": "Некорректный before: ожидается YYYY-MM-DD",
    "INVALID_CONCURRENCY": "Некорректное значение параллелизма",
    "INVALID_DATE_RANGE": "Некорректный диапазон from/to",
    "INVALID_GRANULARITY": "Некорректная детализация: {{granularity}}",
    "INVALID_QUEUE": "Некорректная очередь",
    "INVALID_SCHEDULER_END_DATE": "Дата окончания должна быть в будущем",
    "INVALID_SCHEDULER_INTERVAL": "Интервал должен быть положительным числом миллисекунд",
    "INVALID_SCHEDULER_LIMIT": "Максимум запусков должен быть положительным целым числом",
    "INVALID_SCHEDULER_PATTERN": "Расписание отклонено, проверьте cron-выражение",
    "INVALID_SCHEDULER_SCHEDULE": "Укажите либо cron-выражение, либо интервал, но не оба",
    "JOB_BELONGS_TO_JOB_SCHEDULER": "Задача принадлежит планировщику",
    "JOB_BELONGS_TO_JOB_SCHEDULER_DETAILS": "Задача {{jobId}} — следующий запуск планировщика «{{jobSchedulerId}}» и не может быть удалена отдельно. Удалите планировщик, чтобы остановить расписание.",
    "JOB_IS_ACTIVE": "Задача сейчас выполняется",
    "JOB_IS_ACTIVE_DETAILS": "Задача {{jobId}} обрабатывается воркером и не может быть удалена до завершения.",
    "JOB_NOT_FOUND": "Задача не найдена",
    "JOB_NOT_RETRIABLE": "Задача в состоянии «{{state}}» и не может быть повторена",
    "JOB_SCHEDULER_EDIT_NOT_SUPPORTED": "Этот тип очереди не поддерживает редактирование расписания",
    "JOB_SCHEDULER_NOT_FOUND": "Планировщик не найден",
    "QUEUE_NOT_FOUND": "Очередь не найдена",
    "QUEUE_NOT_PAUSED": "Перед уничтожением очередь должна быть на паузе",
    "QUEUE_READ_ONLY": "Метод недоступен для очереди только для чтения",
    "REDIS_STATS_UNAVAILABLE": "Сведения о Redis недоступны для бэкенда этой очереди",
    "STATUS_NOT_RETRIABLE": "«{{status}}» — не повторяемый статус",
    "WORKERS_DISABLED": "Отчётность по воркерам отключена",
    "INVALID_METRIC": "Некорректная метрика"
  },
  "METRICS_HISTORY": {
    "TITLE": "История метрик",
    "EMPTY": "История ещё не записана.",
    "TOTAL_COMPLETED": "Всего завершённых",
    "TOTAL_FAILED": "Всего неудачных",
    "RANGE_7D": "7д",
    "RANGE_30D": "30д",
    "RANGE_90D": "90д",
    "BY_QUEUE": "По очередям",
    "ACTIONS": "Действия истории метрик",
    "QUEUE": "Очередь",
    "COMPLETED": "Завершённые",
    "FAILED": "Неудачные",
    "RUNS": "Запуски",
    "P95_RUNTIME": "Выполнение p95",
    "P95_RUN_TIME": "Выполнение p95",
    "P95_WAIT_TIME": "Ожидание p95",
    "NOT_AVAILABLE": "н/д",
    "BAR_LABEL": "{{completed}} завершённых, {{failed}} неудачных",
    "FAILURE_RATE": "{{rate}} запусков завершились ошибкой",
    "STORAGE": {
      "TITLE": "Хранилище",
      "EMPTY": "Пока ничего не сохранено.",
      "TOTAL": "Всего",
      "MINUTE_TIER": "Поминутная детализация",
      "HOUR_TIER": "Почасовая",
      "DAY_TIER": "Дневные итоги",
      "RANGE": "Записано",
      "SIZE": "Размер",
      "MINUTES": "Минуты",
      "TIER_NOTE": "Поминутная детализация — самый объёмный уровень. Графики читают дневные итоги, поэтому более короткая поминутная ретенция уменьшает хранилище, не меняя отображение здесь.",
      "TRIM_BTN": "Оставить только последние {{range}}",
      "CLEAR_BTN": "Очистить всю историю",
      "CONFIRM_TITLE": "Удалить записанную историю метрик?",
      "CONFIRM_TRIM": "Всё, что записано до {{date}}, будет удалено; останутся последние {{range}}. Это нельзя отменить, и удалённые дни больше не появятся ни на одном графике.",
      "CONFIRM_CLEAR": "Все {{size}} записанной истории будут удалены для каждой очереди. Это нельзя отменить. Запись продолжается, новые данные начнут накапливаться со следующего снимка."
    }
  },
  "SCHEDULERS": {
    "TITLE": "Планировщики",
    "EMPTY": "Планировщики не зарегистрированы.",
    "FILTER_BY_QUEUE": "Фильтр по очереди",
    "ALL_QUEUES": "Все очереди",
    "TEMPLATE": "Шаблон задачи",
    "EVERY": "каждые {{interval}}",
    "OF_LIMIT": "из {{limit}}",
    "COLUMNS": {
      "SCHEDULER": "Планировщик",
      "QUEUE": "Очередь",
      "SCHEDULE": "Расписание",
      "NEXT_RUN": "Следующий запуск",
      "LAST_RUN": "Последний запуск",
      "RUNS": "Запуски"
    },
    "INTERVAL": {
      "MILLISECONDS": "{{count}}мс",
      "SECONDS": "{{count}}с",
      "MINUTES": "{{count}}м",
      "HOURS": "{{count}}ч",
      "DAYS": "{{count}}д"
    },
    "ACTIONS": {
      "EDIT": "Изменить расписание",
      "REMOVE": "Удалить планировщик"
    },
    "CONFIRM": {
      "REMOVE": "Вы уверены, что хотите удалить планировщик «{{id}}»? Его будущие запуски остановятся, пока приложение снова его не зарегистрирует."
    },
    "TOAST": {
      "REMOVE_PENDING": "Удаление планировщика {{id}}",
      "REMOVE_DONE": "Планировщик {{id}} удалён",
      "UPDATE_PENDING": "Обновление планировщика {{id}}",
      "UPDATE_DONE": "Планировщик {{id}} обновлён"
    },
    "EDIT": {
      "TITLE": "Изменить планировщик {{id}}",
      "DESCRIPTION": "Меняется только расписание. Создаваемая задача сохраняет имя, данные и опции.",
      "OVERWRITE_NOTE": "Приложение может снова зарегистрировать этот планировщик при перезапуске и перезаписать заданное здесь расписание.",
      "SAVE": "Сохранить",
      "KIND": "Тип расписания",
      "KIND_PATTERN": "Cron-выражение",
      "KIND_EVERY": "Интервал",
      "PATTERN": "Cron-выражение",
      "TZ": "Часовой пояс",
      "EVERY": "Интервал (мс)",
      "LIMIT": "Макс. запусков",
      "END_DATE": "Дата окончания"
    }
  }
}
