{
  "activity": {
    "actions": {
      "createTaskFromMessage": "Создать задачу из сообщения",
      "editMessage": "Редактировать сообщение",
      "expandMessage": "Развернуть сообщение",
      "replyToMessage": "Ответить на сообщение",
      "restartTeam": "Перезапустить команду"
    },
    "authError": {
      "description": "Не удалось пройти authentication. Перезапуск команды обновит session и может исправить проблему. Если ошибка повторится, проверьте API credentials или попробуйте позже."
    },
    "automation": {
      "reviewPickup": "Teammate получил просьбу забрать review",
      "stallNudge": "Teammate получил просьбу продолжить stalled task",
      "workSyncBody": "Teammate получил просьбу синхронизировать текущую работу"
    },
    "badges": {
      "automation": "automation",
      "bootstrap": "bootstrap",
      "command": "command",
      "comment": "Комментарий",
      "live": "live",
      "note": "note",
      "rateLimited": "Rate limit",
      "restart": "restart",
      "result": "result",
      "session": "session",
      "stallNudge": "stall nudge",
      "start": "start",
      "workSync": "work sync",
      "agentError": "Ошибка агента",
      "apiError": "Ошибка API"
    },
    "bootstrap": {
      "acknowledged": "Bootstrap подтверждён",
      "restarting": "Перезапуск teammate",
      "starting": "Запуск teammate"
    },
    "rawJson": "Raw JSON",
    "unread": "Непрочитано",
    "thoughts": {
      "count": "{{count}} мыслей",
      "count_one": "{{count}} мысль",
      "count_few": "{{count}} мысли",
      "count_many": "{{count}} мыслей",
      "count_other": "{{count}} мысли",
      "expand": "Развернуть мысли",
      "showMore": "Показать больше",
      "showLess": "Показать меньше",
      "toolSummary": "🔧 {{summary}}",
      "titleForMember": "{{name}} - мысли"
    },
    "timeline": {
      "loadingMessages": "Загрузка сообщений...",
      "noMessages": "Нет сообщений",
      "emptyHint": "Отправьте сообщение участнику, чтобы увидеть активность.",
      "newSession": "Новая сессия",
      "olderCount": "+{{count}} старых",
      "olderCount_one": "+{{count}} старое",
      "olderCount_few": "+{{count}} старых",
      "olderCount_many": "+{{count}} старых",
      "olderCount_other": "+{{count}} старых",
      "showMore": "Показать ещё {{count}}",
      "showAll": "Показать все"
    },
    "pendingReplies": {
      "title": "Ожидают ответа",
      "openMember": "Открыть участника",
      "messageSentAwaitingReply": "Сообщение отправлено, ожидается ответ",
      "awaitingReply": "ожидает ответа",
      "externalTeam": "внешняя команда",
      "crossTeamAwaitingReply": "Межкомандное сообщение отправлено, ожидается ответ",
      "user": "пользователь",
      "awaitingApproval": "ожидает подтверждения"
    },
    "reply": {
      "replyingTo": "Ответ на",
      "action": "Ответить"
    },
    "activeTasks": {
      "inProgress": "В работе",
      "expandInProgress": "Развернуть задачи в работе",
      "collapseInProgress": "Свернуть задачи в работе",
      "reviewing": "ревьюит",
      "workingOn": "работает над"
    },
    "expandDialog": {
      "description": "Развёрнутый просмотр сообщения"
    }
  },
  "create": {
    "actions": {
      "create": "Создать",
      "creating": "Создание...",
      "openExisting": "Открыть существующую команду",
      "skipPreflightAndCreate": "Пропустить preflight и создать"
    },
    "conflict": {
      "description": "Запуск двух команд в одной директории рискован - они могут конфликтовать при изменении одних и тех же файлов. Лучше выбрать другую директорию или git worktree для изоляции.",
      "title": "Другая команда \"{{team}}\" уже работает в этой working directory",
      "workingDirectory": "Working directory:"
    },
    "description": {
      "copy": "Создать новую команду на основе существующей.",
      "create": "Настройте команду и выберите, как она будет запускаться."
    },
    "errors": {
      "nameExists": "Команда с таким именем уже существует",
      "nameLaunching": "Команда с таким именем сейчас запускается",
      "createConfigFailed": "Не удалось создать конфиг команды",
      "loadProjectsFailed": "Не удалось загрузить проекты"
    },
    "fields": {
      "color": "Цвет (optional)",
      "description": "Описание (optional)",
      "prompt": "Prompt для team lead (optional)",
      "teamName": "Имя команды"
    },
    "launchAfterCreate": {
      "description": "Сразу запустить команду через локальный Claude CLI.",
      "label": "Выполнить команду после создания"
    },
    "localOnly": "Доступно только в локальном Electron mode.",
    "onDisk": "На диске:",
    "placeholders": {
      "description": "Краткое описание назначения команды",
      "prompt": "Инструкции для team lead во время provisioning..."
    },
    "saved": "Сохранено",
    "solo": {
      "description": "Будет запущен только team lead (main process) - teammates не будут созданы. Работает как обычная agent session в выбранном runtime (Claude Code, Codex, OpenCode, Gemini), но с доступом к task board для планирования. Экономит tokens за счёт отсутствия coordination overhead между teammates. Участников можно добавить позже в настройках команды.",
      "label": "Solo team"
    },
    "title": {
      "copy": "Копировать команду",
      "create": "Создать команду"
    },
    "optional": {
      "launchSettingsTitle": "Опциональные настройки запуска",
      "launchSettingsDescription": "Промпт, безопасность и переопределения CLI находятся здесь, когда они нужны.",
      "teamDetailsTitle": "Опциональные детали команды",
      "teamDetailsDescription": "Основной поток остаётся компактным. Открывайте этот блок, когда нужен дополнительный контекст или свой цвет."
    },
    "prepare": {
      "unsupportedPreload": "Текущая версия preload не поддерживает team:prepareProvisioning. Перезапустите dev app.",
      "selectWorkingDirectory": "Выберите рабочую директорию, чтобы проверить окружение запуска.",
      "someProvidersNeedAttention": "Некоторым выбранным providers нужно внимание.",
      "readyWithNotes": "Все выбранные providers готовы, есть заметки.",
      "ready": "Все выбранные providers готовы.",
      "failed": "Не удалось подготовить выбранных providers",
      "checkingProviders": "Проверка выбранных providers...",
      "preparingEnvironment": "Подготовка окружения...",
      "selectedProvidersReadyWithNotes": "Выбранные providers готовы (есть заметки)",
      "selectedProvidersReady": "Выбранные providers готовы"
    },
    "validation": {
      "nameMustContainLetterOrDigit": "Имя должно содержать хотя бы одну букву или цифру",
      "nameTooLong": "Имя слишком длинное (максимум 128 символов)",
      "selectWorkingDirectory": "Выберите рабочую директорию (cwd)",
      "memberNameRequired": "Имя участника не может быть пустым",
      "memberNameInvalid": "Имя участника должно начинаться с буквы или цифры и содержать только [a-zA-Z0-9._-], максимум 128 символов",
      "memberNamesUnique": "Имена участников должны быть уникальными",
      "openCodeLeadModelRequired": "Для lead на OpenCode нужно выбрать модель.",
      "openCodeTeammateRequired": "Для lead на OpenCode нужен хотя бы один teammate OpenCode.",
      "teamLaunching": "Команда сейчас запускается",
      "teamNameExists": "Команда с таким именем уже существует",
      "checkFormFields": "Проверьте поля формы"
    }
  },
  "editTeam": {
    "actions": {
      "cancel": "Отмена",
      "save": "Сохранить"
    },
    "addMemberLockReason": "Используйте отдельный диалог добавления участника, чтобы добавлять teammates во время работы команды.",
    "description": "Измените имя, описание и цвет команды",
    "errors": {
      "changesSavedRefreshFailed": "Изменения команды сохранены, но не удалось обновить последний вид: {{message}}",
      "liveRenameBlocked": "Нельзя переименовывать существующих teammates, пока команда работает. Переименованы: {{names}}",
      "memberNameEmpty": "Имя участника не может быть пустым",
      "memberNameInvalid": "Имя участника должно начинаться с буквы или цифры, использовать только [a-zA-Z0-9._-] и быть не длиннее 128 символов",
      "memberNameNumericSuffix": "Имя участника \"{{name}}\" недоступно, потому что зарезервировано для auto-suffix Claude CLI. Используйте \"{{base}}\".",
      "memberNameReserved": "Имя участника \"{{name}}\" зарезервировано",
      "memberNamesUnique": "Перед сохранением имена участников должны быть уникальными",
      "newLiveTeammates": "Добавляйте новых teammates через отдельный диалог добавления участника, пока команда работает. Edit Team поддерживает только изменение существующих teammates.",
      "provisioning": "Настройки команды нельзя редактировать, пока provisioning ещё идёт. Дождитесь завершения запуска и попробуйте снова.",
      "restartFailedMany": "Команда сохранена, но не удалось перезапустить этих teammates: {{failures}}",
      "restartFailedOne": "Команда сохранена, но не удалось перезапустить этого teammate: {{failures}}",
      "saveFailed": "Не удалось сохранить",
      "settingsChanged": "Настройки команды изменились, пока диалог был открыт. Откройте его заново и проверьте актуальное состояние перед сохранением.",
      "settingsSavedMembersAndRefreshFailed": "Настройки команды сохранены, но изменения участников не применились: {{message}}. Обновление тоже завершилось ошибкой: {{refreshError}}",
      "settingsSavedMembersFailed": "Настройки команды сохранены, но изменения участников не применились: {{message}}",
      "settingsSavedRefreshFailed": "Настройки команды сохранены, но не удалось обновить последний вид: {{message}}",
      "teamNameEmpty": "Имя команды не может быть пустым",
      "unsupportedMixedPrimaryMutation": "Live-изменения primary-owned teammates в mixed OpenCode teams пока не поддерживаются. Остановите команду, измените roster и запустите заново. Затронуты: {{names}}"
    },
    "fields": {
      "colorOptional": "Цвет (необязательно)",
      "description": "Описание",
      "name": "Имя"
    },
    "memberRestartWarning": "Сохранение перезапустит этого teammate, чтобы применить изменения роли, workflow, worktree isolation, provider, model, effort или MCP access.",
    "notices": {
      "liveRenameBlocked": "Live-сохранение заблокировано, потому что существующие teammates были переименованы. Отмените эти identity changes или сначала остановите команду.",
      "newLiveTeammates": "Новых teammates нельзя добавлять из Edit Team, пока команда работает. Используйте диалог добавления участника.",
      "provisioning": "Provisioning команды ещё идёт. Редактирование временно заблокировано до завершения запуска.",
      "restartMany": "Сохранение перезапустит или перезапустит заново этих teammates, чтобы применить изменения роли, workflow, worktree isolation, provider, model, effort или MCP access: {{names}}.",
      "restartOne": "Сохранение перезапустит или перезапустит заново этого teammate, чтобы применить изменения роли, workflow, worktree isolation, provider, model, effort или MCP access: {{names}}.",
      "unsupportedMixedPrimaryMutation": "Live-изменения или удаления primary-owned teammates в mixed OpenCode teams требуют остановки и повторного запуска команды: {{names}}."
    },
    "placeholders": {
      "description": "Описание команды (необязательно)",
      "teamName": "Имя команды"
    },
    "teamLead": {
      "changeRuntime": "Изменить runtime lead",
      "changeRuntimeDescription": "Откройте Relaunch Team, чтобы изменить provider, model или effort для lead.",
      "modelLockReason": "Runtime team lead управляется через Relaunch Team.",
      "readOnlyHint": "Имя и роль team lead здесь доступны только для чтения. Откройте runtime panel в строке lead, чтобы изменить provider, model или effort.",
      "role": "Team Lead"
    },
    "title": "Редактировать команду"
  },
  "memberDraft": {
    "actions": {
      "remove": "Удалить участника",
      "removeAria": "Удалить {{name}}",
      "restore": "Восстановить участника",
      "restoreAria": "Восстановить {{name}}"
    },
    "anthropicContext": {
      "defaultSetting": "настройка контекста по умолчанию",
      "description": "Контекст Anthropic действует на всю команду для этого запуска: {{mode}}. Используйте checkbox Limit context в runtime panel lead, чтобы изменить это.",
      "limitEnabled": "лимит 200K включён"
    },
    "mcp": {
      "buttonInherit": "MCP inherit",
      "buttonScopes": "MCP scopes",
      "chooseScopes": "Выбрать scopes",
      "inheritLead": "Наследовать lead",
      "lockedInfo": "Для всех teammates включён режим только Agent Teams MCP. Этот teammate запустится только с Agent Teams server.",
      "mode": "MCP mode",
      "scopes": {
        "local": "local",
        "project": "project",
        "user": "user"
      },
      "serverNames": "Имена servers",
      "settingInfo": "Agent Teams MCP запускает этого teammate только с Agent Teams server. Scope и allowlist modes применяются только к запуску этого teammate.",
      "strictAllowlist": "Строгий allowlist",
      "tooltip": "{{label}}: управление MCP inheritance policy этого участника",
      "agentTeamsMcp": "Agent Teams MCP"
    },
    "model": {
      "ariaLabel": "{{provider}} provider, {{model}}",
      "currentLeadRuntime": "Текущий runtime lead",
      "default": "По умолчанию",
      "inheritedTooltip": "Provider, model и effort наследуются от lead, пока включена синхронизация.",
      "leadSuffix": "{{label}} (lead)",
      "liveDisabled": "Изменения provider, model и effort отключены, пока команда работает. Переподключите команду, чтобы применить их безопасно.",
      "lockedActionFallback": "Изменения runtime lead открывают Relaunch Team, где можно обновить provider, model и effort.",
      "restartWholeTeam": "Сохранение этих runtime changes перезапустит всю команду."
    },
    "nameAria": "Имя участника {{index}}",
    "nameFallback": "участник {{index}}",
    "noRole": "Без роли",
    "removed": "Удалён",
    "workflow": {
      "addTooltip": "Добавить workflow teammate",
      "editTooltip": "Редактировать workflow teammate",
      "label": "Workflow (необязательно)",
      "placeholder": "Как этот agent должен работать и взаимодействовать с другими...",
      "saved": "Сохранено"
    },
    "worktree": {
      "description": "Запускать этого teammate в отдельном git worktree. Apply/reject changes будут работать с этим worktree, а не с workspace lead.",
      "label": "Worktree"
    },
    "addMembers": {
      "title": "Добавить участников",
      "description": "Добавить новых участников в {{teamName}}"
    },
    "placeholders": {
      "name": "member-name",
      "mcpServers": "github, sentry"
    }
  },
  "detail": {
    "actions": {
      "add": "Добавить",
      "cancel": "Отмена",
      "delete": "Удалить",
      "editCode": "Редактировать код",
      "launch": "Запустить",
      "remove": "Удалить",
      "stop": "Остановить",
      "task": "Задача",
      "visualize": "Визуализировать"
    },
    "deleteTeam": {
      "description": "Удалить команду \"{{team}}\"? Это действие необратимо. Все данные команды и задачи будут удалены.",
      "title": "Удалить команду"
    },
    "draft": {
      "descriptionPrefix": "Это draft-команда -",
      "descriptionSuffix": "настроена с {{count}} {{member}}, но ещё не provisioned через CLI. Нажмите «Запустить», чтобы выбрать модель и стартовать команду.",
      "descriptionSuffix_few": "настроена с {{count}} {{member}}, но ещё не provisioned через CLI. Нажмите «Запустить», чтобы выбрать модель и стартовать команду.",
      "descriptionSuffix_many": "настроена с {{count}} {{member}}, но ещё не provisioned через CLI. Нажмите «Запустить», чтобы выбрать модель и стартовать команду.",
      "descriptionSuffix_one": "настроена с {{count}} {{member}}, но ещё не provisioned через CLI. Нажмите «Запустить», чтобы выбрать модель и стартовать команду.",
      "descriptionSuffix_other": "настроена с {{count}} {{member}}, но ещё не provisioned через CLI. Нажмите «Запустить», чтобы выбрать модель и стартовать команду.",
      "member": "участниками",
      "member_few": "участниками",
      "member_many": "участниками",
      "member_one": "участником",
      "member_other": "участниками",
      "title": "Команда ещё не запущена"
    },
    "invalidTab": "Некорректная вкладка команды",
    "kanbanSafeData": "Не удалось полностью загрузить kanban. Показаны безопасные данные.",
    "loadFailed": "Не удалось загрузить команду",
    "loading": "Загрузка команды",
    "loadingSidebar": "Загрузка sidebar команды",
    "offline": {
      "offline": "Команда offline",
      "partialFailed": "Последний запуск частично не удался",
      "partialMissing": "Последний запуск частично не удался - {{missing}}/{{expected}} teammates не подключились",
      "reconciling": "Последний запуск ещё сверяется"
    },
    "previous": "Предыдущие: {{paths}}",
    "removeMember": {
      "description": "Удалить \"{{member}}\" из команды? Задачи и сообщения сохранятся, но это имя нельзя будет использовать повторно.",
      "title": "Удалить участника"
    },
    "sections": {
      "team": "Команда"
    },
    "solo": "Solo",
    "status": {
      "active": "Активно",
      "launching": "Запуск...",
      "running": "Работает"
    },
    "telemetry": {
      "cpu": "CPU",
      "memory": "Memory"
    },
    "tooltips": {
      "deleteTeam": "Удалить команду",
      "editTeam": "Редактировать команду",
      "editUnavailableProvisioning": "Редактирование недоступно, пока provisioning ещё выполняется",
      "openBuiltInEditor": "Открыть проект во встроенном редакторе",
      "openTeamGraph": "Открыть граф команды",
      "stopTeam": "Остановить команду"
    },
    "waitingForProvisioning": "Данные команды появятся после завершения provisioning",
    "context": {
      "title": "Контекст",
      "loading": "Загрузка...",
      "noSessionLoaded": "Сессия не загружена",
      "closePanel": "Закрыть панель контекста {{team}}",
      "loadingContext": "Загрузка контекста...",
      "openLeadSession": "Откройте сессию лида команды, чтобы посмотреть контекст."
    }
  },
  "review": {
    "fileHeader": {
      "actions": {
        "accept": "Принять",
        "discard": "Отменить",
        "discardTooltip": "Отменить все правки в этом файле",
        "keepMyDraft": "Оставить мой черновик",
        "reject": "Отклонить",
        "reloadFromDisk": "Перезагрузить с диска",
        "restore": "Восстановить",
        "restoreTooltip": "Создать или восстановить этот файл на диске из предпросмотра",
        "saveFile": "Сохранить файл",
        "saveFileTooltip": "Сохранить файл на диск"
      },
      "badges": {
        "deleted": "УДАЛЁН",
        "manualReview": "РУЧНОЙ REVIEW",
        "new": "НОВЫЙ",
        "worktree": "WORKTREE"
      },
      "contentSource": {
        "disk-current": "Текущее состояние диска",
        "file-history": "История файла",
        "git-fallback": "Git fallback",
        "ledger-exact": "Task ledger",
        "ledger-snapshot": "Снимок ledger",
        "snippet-reconstruction": "Реконструировано",
        "unavailable": "Содержимое недоступно"
      },
      "contentUnavailable": {
        "badge": "Содержимое недоступно",
        "description": "В ledger записаны metadata для этого изменения, но полный текст недоступен. Обычно это binary, большой файл или hash-only content.",
        "safety": "Автоматические accept/reject отключены для этого файла, чтобы избежать небезопасной записи на диск.",
        "title": "Текстовое содержимое недоступно"
      },
      "disabled": {
        "acceptRejectContentUnavailable": "Accept/Reject отключён, потому что полный текст недоступен.",
        "acceptRejectMissingOnDisk": "Accept/Reject отключён, пока файл отсутствует на диске.",
        "rejectBaselineUnavailable": "Reject отключён, потому что исходный baseline недоступен.",
        "rejectContentUnavailable": "Reject отключён, потому что полный текст недоступен.",
        "rejectManualLedgerReview": "Reject отключён, потому что это ledger-изменение содержит binary, большой или недоступный content."
      },
      "externalChange": {
        "changedOnDisk": "Изменён на диске",
        "deletedOnDisk": "Удалён на диске",
        "recreatedOnDisk": "Создан заново на диске"
      },
      "missingOnDisk": {
        "badge": "Отсутствует на диске",
        "description": "Предпросмотр из agent logs всё ещё доступен, но filesystem не синхронизирован.",
        "restorePrefix": "Нажмите",
        "restoreSuffix": "чтобы записать preview content обратно на диск.",
        "restoreUnavailable": "Полное содержимое файла недоступно для автоматического восстановления.",
        "title": "Файл отсутствует на диске"
      },
      "pathChange": {
        "from": "Из {{path}}",
        "to": "В {{path}}"
      },
      "worktree": {
        "isolated": "Изолированный worktree"
      }
    },
    "toolbar": {
      "stats": {
        "pending": "{{count}} pending",
        "pending_one": "{{count}} pending",
        "pending_few": "{{count}} pending",
        "pending_many": "{{count}} pending",
        "pending_other": "{{count}} pending",
        "accepted": "{{count}} accepted",
        "accepted_one": "{{count}} accepted",
        "accepted_few": "{{count}} accepted",
        "accepted_many": "{{count}} accepted",
        "accepted_other": "{{count}} accepted",
        "rejected": "{{count}} rejected",
        "rejected_one": "{{count}} rejected",
        "rejected_few": "{{count}} rejected",
        "rejected_many": "{{count}} rejected",
        "rejected_other": "{{count}} rejected",
        "acrossFiles": "в {{count}} файлах",
        "acrossFiles_one": "в {{count}} файле",
        "acrossFiles_few": "в {{count}} файлах",
        "acrossFiles_many": "в {{count}} файлах",
        "acrossFiles_other": "в {{count}} файлах",
        "edited": "{{count}} edited",
        "edited_one": "{{count}} edited",
        "edited_few": "{{count}} edited",
        "edited_many": "{{count}} edited",
        "edited_other": "{{count}} edited"
      },
      "actions": {
        "auto": "Auto",
        "undo": "Отменить",
        "acceptAll": "Принять всё",
        "rejectAll": "Отклонить всё",
        "applying": "Применение...",
        "applyRejections": "Применить отклонения"
      },
      "tooltips": {
        "autoOn": "Auto-mark файлов как viewed при прокрутке до конца (ON)",
        "autoOff": "Auto-mark файлов как viewed при прокрутке до конца (OFF)",
        "undo": "Отменить последнюю review operation (Ctrl+Z)",
        "acceptAll": "Принять все изменения во всех файлах",
        "rejectAll": "Отклонить все безопасно отклоняемые изменения во всех файлах",
        "rejectAllDisabled": "У pending файлов нет безопасного original baseline для отклонения.",
        "applyRejections": "Применить отклонённые hunks на диск; принятые изменения останутся как есть"
      }
    },
    "diffError": {
      "title": "Не удалось отрендерить diff view",
      "unexpected": "При рендеринге diff произошла неожиданная ошибка.",
      "actions": {
        "retry": "Повторить"
      },
      "raw": {
        "show": "Показать raw diff data",
        "file": "Файл: {{file}}",
        "original": "--- Original",
        "modified": "+++ Modified",
        "charsTotal": "... (всего символов: {{count}})",
        "charsTotal_one": "... (всего {{count}} символ)",
        "charsTotal_few": "... (всего {{count}} символа)",
        "charsTotal_many": "... (всего {{count}} символов)",
        "charsTotal_other": "... (всего {{count}} символов)"
      }
    },
    "fileTree": {
      "viewed": "Просмотрено",
      "badges": {
        "new": "new",
        "deleted": "deleted"
      },
      "collapseFolder": "Свернуть {{name}}",
      "expandFolder": "Развернуть {{name}}",
      "empty": {
        "noChangedFiles": "Нет изменённых файлов",
        "noMatchingFiles": "Нет подходящих файлов"
      },
      "searchPlaceholder": "Поиск файлов…",
      "filters": {
        "unresolved": "Нерешённые",
        "rejected": "Отклонённые",
        "new": "Новые",
        "clear": "Очистить"
      }
    },
    "diffControls": {
      "previousChunk": "Предыдущий chunk",
      "nextChunk": "Следующий chunk",
      "rejectChange": "Отклонить изменение (⌘N)",
      "acceptChange": "Принять изменение (⌘Y)",
      "undo": "Отменить",
      "keep": "Оставить",
      "rejectShortcut": "⌘N",
      "acceptShortcut": "⌘Y"
    },
    "conflict": {
      "title": "Обнаружен конфликт",
      "description": "Файл был изменён после правок агента",
      "cancel": "Отмена",
      "saveResolution": "Сохранить решение",
      "editManually": "Редактировать вручную",
      "useOriginal": "Использовать исходный вариант",
      "keepCurrent": "Оставить текущий вариант"
    },
    "fullDiffLoading": {
      "titleOne": "Подготовка полного diff",
      "titleMany": "Подготовка полных diff: {{count}}",
      "subtitleForFile": "Финализируется точный editor diff для {{file}}.",
      "subtitleCurrentFile": "Финализируется точный editor diff для текущего файла.",
      "subtitleMany": "Определяются точные before/after baseline для загружаемых файлов.",
      "previewsReady": "готово preview: {{count}}",
      "previewsReady_one": "готово {{count}} preview",
      "previewsReady_few": "готово preview: {{count}}",
      "previewsReady_many": "готово preview: {{count}}",
      "previewsReady_other": "готово preview: {{count}}",
      "editorViewLoading": "Загружается editor view",
      "filesInProgress": "файлов в процессе: {{count}}",
      "filesInProgress_one": "{{count}} файл в процессе",
      "filesInProgress_few": "файлов в процессе: {{count}}",
      "filesInProgress_many": "файлов в процессе: {{count}}",
      "filesInProgress_other": "файлов в процессе: {{count}}",
      "filesReady": "готово файлов: {{ready}}/{{total}}",
      "progressDescription": "Готово: {{ready}}, ещё загружается: {{loading}}. Preview diff остаются видимыми ниже, пока остальные baseline определяются.",
      "singleDescription": "Preview diff остаются видимыми ниже, пока определяется точный baseline."
    },
    "fileMissingPrefix": "Файл отсутствует на диске. Этот diff может быть только предпросмотром из логов агента. Используйте",
    "restore": "Восстановить",
    "fileMissingSuffix": "чтобы создать файл на диске.",
    "filePlaceholder": {
      "loading": "Загрузка",
      "description": "Подготовка полного editor diff для этого файла."
    },
    "loading": {
      "diff": "DIFF",
      "ledgerObjectsProcessed": "обработано ledger-объектов: {{count}}",
      "ledgerObjectsProcessed_one": "обработан {{count}} ledger-объект",
      "ledgerObjectsProcessed_few": "обработано {{count}} ledger-объекта",
      "ledgerObjectsProcessed_many": "обработано {{count}} ledger-объектов",
      "ledgerObjectsProcessed_other": "обработано {{count}} ledger-объектов",
      "phases": {
        "readingLedger": "Чтение task ledger...",
        "resolvingFiles": "Определение состояния файлов...",
        "checkingWorktree": "Проверка worktree...",
        "preparingDiffs": "Подготовка review diff..."
      }
    },
    "progress": {
      "viewed": "{{viewed}}/{{total}} просмотрено"
    },
    "scope": {
      "readMore": "Подробнее",
      "tiers": {
        "exact": {
          "title": "Область задачи определена точно",
          "detail": "В логе сессии найдены маркеры начала и завершения. Diff включает только изменения этой задачи - изменения других задач в тех же файлах исключены."
        },
        "endEstimated": {
          "title": "Граница завершения оценена приблизительно",
          "detail": "Найден только маркер начала - у задачи ещё нет маркера завершения. Показаны изменения от старта задачи до конца сессии. Если после неё в той же сессии выполнялись другие задачи, их изменения тоже могут попасть в diff."
        },
        "startEstimated": {
          "title": "Граница начала оценена приблизительно",
          "detail": "Найден только маркер завершения - начало работы не было зафиксировано. Если до этой задачи в той же сессии выполнялись другие задачи, их изменения в тех же файлах тоже могут попасть в diff."
        },
        "allSession": {
          "title": "Показаны все изменения сессии",
          "detail": "В логе сессии нет маркеров задачи. Нельзя изолировать конкретную задачу - показаны все изменения файлов за всю сессию, включая изменения других задач. Такое возможно со старыми версиями CLI или нестандартными workflows."
        }
      },
      "ledger": {
        "exact": {
          "title": "Изменения зафиксированы task ledger",
          "detail": "Orchestrator зафиксировал эти изменения файлов во время работы агента над задачей.",
          "badge": "Точно по ledger"
        },
        "limited": {
          "title": "Изменения зафиксированы с ограниченной проверяемостью",
          "detail": "Orchestrator зафиксировал эти изменения для задачи, но хотя бы одно изменение пришло из snapshot или metadata-only источника. Проверяйте точные текстовые diff там, где они доступны; binary или недоступный контент может требовать ручного review.",
          "mixedBadge": "Смешанная проверяемость",
          "needsReviewBadge": "Нужен review"
        }
      },
      "workInterval": {
        "title": "Область задана сохранённым рабочим интервалом",
        "detail": "Маркер начала задачи недоступен в логе сессии, поэтому diff ограничен рабочим интервалом задачи, сохранённым на доске.",
        "badge": "По интервалу"
      },
      "confidence": {
        "high": "Высокая уверенность",
        "medium": "Средняя уверенность",
        "low": "Низкая уверенность",
        "bestEffort": "Best effort"
      }
    },
    "shortcuts": {
      "title": "Горячие клавиши",
      "actions": {
        "nextChange": "Следующее изменение",
        "previousChange": "Предыдущее изменение",
        "nextFile": "Следующий файл",
        "previousFile": "Предыдущий файл",
        "acceptChange": "Принять изменение",
        "rejectChange": "Отклонить изменение",
        "saveFile": "Сохранить файл",
        "undo": "Отменить",
        "redo": "Повторить",
        "toggleShortcuts": "Показать/скрыть подсказки",
        "closeDialog": "Закрыть диалог"
      }
    },
    "timeline": {
      "empty": "Нет событий редактирования",
      "titleWithCount": "История правок ({{count}})"
    },
    "continuousScroll": {
      "empty": "Нет изменений файлов для ревью"
    },
    "empty": {
      "noSafeDiff": "Нет безопасного diff",
      "noFileChangesRecorded": "Изменения файлов не записаны",
      "noSafeDiffDescription": "Журнал задачи не предоставил безопасный diff файлов для этой задачи.",
      "noSafeDiffDiagnosticsDescription": "Журнал задачи не предоставил безопасный diff файлов для этой задачи. Диагностика ниже объясняет причину.",
      "noFileEventsYet": "В журнале задачи пока нет событий файлов.",
      "noFileEvents": "В журнале задачи нет событий файлов."
    }
  },
  "messages": {
    "actions": {
      "bottomSheetActions": "Действия нижней панели сообщений",
      "collapseAll": "Свернуть все сообщения",
      "collapseSheet": "Свернуть панель",
      "expandAll": "Развернуть все сообщения",
      "expandSheet": "Развернуть панель",
      "floatComposer": "Открепить composer",
      "floatMessagesComposer": "Открепить composer сообщений",
      "hideSearch": "Скрыть поиск",
      "loadOlder": "Загрузить старые сообщения",
      "markAllRead": "Отметить всё прочитанным",
      "messageActions": "Действия сообщений",
      "moveMessagesToBottomSheet": "Переместить сообщения в нижнюю панель",
      "moveMessagesToSidebar": "Переместить сообщения в sidebar",
      "moveToBottomSheet": "Переместить в нижнюю панель",
      "moveToInline": "Переместить inline",
      "moveToSidebar": "Переместить в sidebar",
      "panelActions": "Действия панели сообщений",
      "searchMessages": "Искать сообщения"
    },
    "delivery": {
      "copied": "Скопировано",
      "copyDebugDetails": "Копировать debug details",
      "details": "Детали",
      "fields": {
        "acceptanceUnknown": "acceptanceUnknown",
        "delivered": "delivered",
        "diagnostics": "diagnostics",
        "ledgerStatus": "ledgerStatus",
        "messageId": "messageId",
        "providerId": "providerId",
        "queuedBehindMessageId": "queuedBehindMessageId",
        "reason": "reason",
        "responsePending": "responsePending",
        "responseState": "responseState",
        "statusMessageId": "statusMessageId",
        "userVisibleMessage": "userVisibleMessage",
        "userVisibleNextReviewAt": "userVisibleNextReviewAt",
        "userVisibleReasonCode": "userVisibleReasonCode",
        "userVisibleState": "userVisibleState",
        "visibleReplyCorrelation": "visibleReplyCorrelation",
        "visibleReplyMessageId": "visibleReplyMessageId"
      }
    },
    "panelMode": "Режим панели сообщений",
    "title": "Сообщения",
    "unread": {
      "new": "Новых: {{count}}",
      "new_few": "Новых: {{count}}",
      "new_many": "Новых: {{count}}",
      "new_one": "Новое: {{count}}",
      "new_other": "Новых: {{count}}",
      "unread": "Непрочитано: {{count}}",
      "unread_few": "Непрочитано: {{count}}",
      "unread_many": "Непрочитано: {{count}}",
      "unread_one": "Непрочитанное: {{count}}",
      "unread_other": "Непрочитано: {{count}}"
    },
    "filter": {
      "ariaLabel": "Фильтровать сообщения",
      "tooltip": "Фильтровать сообщения",
      "from": "От",
      "to": "Кому",
      "noData": "Нет данных",
      "showStatusUpdates": "Показывать status updates (idle/shutdown)",
      "actions": {
        "reset": "Сбросить",
        "save": "Сохранить"
      }
    },
    "status": {
      "title": "Статус"
    },
    "actionMode": {
      "label": "Режим действия"
    },
    "search": {
      "placeholder": "Поиск..."
    }
  },
  "modelSelector": {
    "badges": {
      "configured": "Настроено",
      "connected": "Подключено",
      "failed": "Ошибка",
      "free": "Бесплатно",
      "local": "Локально",
      "needsTest": "Нужен тест",
      "verified": "Проверено",
      "unavailable": "Недоступно",
      "issue": "Проблема"
    },
    "customModelId": "Custom model id",
    "label": "Модель (optional)",
    "multimodelRequired": "Codex и Gemini требуют Multimodel mode.",
    "openCode": {
      "allSources": "Все OpenCode sources",
      "filterSource": "Фильтровать {{source}}",
      "filterSources": "Фильтровать OpenCode sources",
      "freeOnly": "Только бесплатные",
      "freeTooltip": "OpenCode помечает эту модель как бесплатную.",
      "loadingModels": "Загрузка моделей OpenCode...",
      "noSourcesFound": "Sources не найдены.",
      "recommendedOnly": "Только рекомендованные",
      "searchSources": "Поиск sources",
      "sourcesCount": "OpenCode sources: {{count}}",
      "sourcesCount_few": "OpenCode sources: {{count}}",
      "sourcesCount_many": "OpenCode sources: {{count}}",
      "sourcesCount_one": "OpenCode source: {{count}}",
      "sourcesCount_other": "OpenCode sources: {{count}}"
    },
    "reason": "Причина: {{reason}}",
    "runtimeModelsSyncing": "Явные модели загружаются из текущего runtime. Default остаётся доступным, пока список синхронизируется.",
    "fastMode": {
      "codexLabel": "Быстрый режим (2x credits)",
      "optionalLabel": "Быстрый режим (опционально)",
      "defaultOff": "По умолчанию (выкл.)",
      "fast": "Fast",
      "off": "Выкл.",
      "defaultFast": "По умолчанию (Fast)",
      "defaultResolvesTo": "Сейчас default resolves to {{mode}}.",
      "runtimeBackedHint": "Fast mode зависит от runtime и доступен только когда resolved Anthropic launch model его поддерживает."
    },
    "anthropicExtraUsage": {
      "pricingDocs": "Открыть документацию Anthropic по ценам"
    },
    "searchModels": "Поиск моделей",
    "defaultModel": "По умолчанию",
    "empty": {
      "noSearchMatches": "По этому поиску модели не найдены.",
      "recommendedFreeOpenCode": "В текущем списке runtime нет рекомендованных бесплатных моделей OpenCode.",
      "freeOpenCode": "В текущем списке runtime нет бесплатных моделей OpenCode.",
      "recommendedOpenCode": "В текущем списке runtime нет рекомендованных моделей OpenCode.",
      "noModels": "В текущем списке runtime нет моделей."
    },
    "openCodeStatus": {
      "notReadyTitle": "OpenCode не готов к запуску команды",
      "freeModelsAvailableTitle": "Доступны бесплатные модели OpenCode",
      "providerNotConnectedTitle": "Provider OpenCode не подключён",
      "readyTitle": "OpenCode готов",
      "readyMessage": "OpenCode прошёл проверку готовности provider. Выберите его, чтобы использовать модели OpenCode для этой команды.",
      "useOpenCode": "Использовать OpenCode",
      "badges": {
        "check": "Проверка",
        "install": "Установить",
        "free": "Free",
        "setup": "Настроить"
      },
      "summary": {
        "checking": "Статус OpenCode: проверка runtime",
        "status": "Статус OpenCode: {{parts}}"
      },
      "summaryParts": {
        "teamLaunchBlocked": "запуск команды заблокирован",
        "providerOptional": "подключение provider необязательно",
        "providerModelsNeedSetup": "provider-backed модели требуют настройки",
        "teamLaunchReady": "запуск команды готов",
        "runtimeDetected": "runtime найден",
        "runtimeMissing": "runtime не найден",
        "freeWithoutAuth": "free модели доступны без auth",
        "providerConnected": "provider подключён",
        "providerNotConnected": "provider не подключён"
      },
      "messages": {
        "checking": "Приложение ещё проверяет OpenCode runtime. Дождитесь завершения проверки provider status и попробуйте снова.",
        "unsupported": "OpenCode не установлен, не найден или найденный runtime не поддерживается. Установите или обновите OpenCode, затем обновите статус provider. Также можно использовать кнопку Install на домашней странице.",
        "freeAvailable": "OpenCode найден. Можно использовать free модели OpenCode, например Big Pickle, без подключения provider. Подключайте provider только если нужны provider-backed модели.",
        "noFreeListed": "OpenCode найден, но free модель OpenCode пока не указана. Обновите provider status или подключите provider в OpenCode для provider-backed моделей.",
        "launchBlocked": "OpenCode установлен и authenticated, но готовность Agent Teams launch заблокирована.",
        "ready": "OpenCode готов к запуску команды."
      },
      "loadingRuntime": "Статус OpenCode runtime ещё загружается."
    },
    "advisory": {
      "pingNotConfirmed": "Ping не подтверждён",
      "note": "Заметка"
    },
    "placeholders": {
      "customModelId": "openai/gpt-oss-20b"
    },
    "routeGroups": {
      "openCodeConfig": "Конфиг OpenCode",
      "builtinFree": "Бесплатные встроенные",
      "connectedProviders": "Подключённые providers",
      "otherCatalog": "Другой каталог OpenCode"
    },
    "pricing": {
      "free": "Бесплатно",
      "inputShort": "in {{rate}}",
      "outputShort": "out {{rate}}",
      "perMillionSummary": "{{summary}} / 1M",
      "inputTitle": "Input: {{rate}} за 1M tokens",
      "outputTitle": "Output: {{rate}} за 1M tokens",
      "cacheReadTitle": "Cache read: {{rate}} за 1M tokens",
      "cacheWriteTitle": "Cache write: {{rate}} за 1M tokens"
    },
    "defaultTooltip": {
      "anthropicCompatibleWithResolved": "Использует default model Anthropic-compatible endpoint.\nСейчас resolves to {{model}}.",
      "anthropicCompatible": "Использует default model Anthropic-compatible endpoint.",
      "anthropic": "Использует default model команды Claude.\nResolves to {{longContextModel}} с 1M context или {{limitedContextModel}} с 200K context, когда включён Limit context.",
      "openCodeWithResolved": "Использует default model OpenCode.\nСейчас resolves to {{model}}.",
      "openCode": "Использует runtime default model OpenCode.",
      "runtime": "Использует runtime default для выбранного provider."
    },
    "multimodelOff": "Multimodel выключен",
    "unavailableInRuntime": "Недоступно в текущем runtime"
  },
  "taskDetail": {
    "actions": {
      "cancel": "Отмена",
      "delete": "Удалить",
      "markResolved": "Отметить решённым",
      "save": "Сохранить"
    },
    "attachments": {
      "commentAttachment": "Вложение комментария",
      "fromComments": "Из комментариев",
      "preview": "Предпросмотр {{filename}}"
    },
    "changes": {
      "badges": {
        "attention": "требует внимания",
        "noSafeDiff": "нет безопасного diff"
      },
      "empty": {
        "noFileChangesRecorded": "Изменения файлов не записаны",
        "noFileChangesRecordedYet": "Изменения файлов пока не записаны",
        "noReviewableChangesRecovered": "Не удалось восстановить изменения файлов для review",
        "noSafeDiffAvailable": "Безопасный diff недоступен"
      },
      "loadFailed": "Не удалось загрузить сводку изменений задачи",
      "loading": "Загрузка изменений...",
      "fileCount": "Файлов: {{count}}",
      "fileCount_few": "Файла: {{count}}",
      "fileCount_many": "Файлов: {{count}}",
      "fileCount_one": "Файл: {{count}}",
      "fileCount_other": "Файла: {{count}}",
      "fileRowsHidden": "Скрыто строк файлов: {{count}}",
      "fileRowsHidden_few": "Скрыто строки файлов: {{count}}",
      "fileRowsHidden_many": "Скрыто строк файлов: {{count}}",
      "fileRowsHidden_one": "Скрыта строка файла: {{count}}",
      "fileRowsHidden_other": "Скрыто строки файлов: {{count}}",
      "moreDiagnostics": "Ещё диагностик: {{count}}",
      "moreDiagnostics_few": "Ещё диагностики: {{count}}",
      "moreDiagnostics_many": "Ещё диагностик: {{count}}",
      "moreDiagnostics_one": "Ещё диагностика: {{count}}",
      "moreDiagnostics_other": "Ещё диагностики: {{count}}",
      "moreFiles": "Ещё файлов: {{count}}",
      "moreFiles_few": "Ещё файла: {{count}}",
      "moreFiles_many": "Ещё файлов: {{count}}",
      "moreFiles_one": "Ещё файл: {{count}}",
      "moreFiles_other": "Ещё файла: {{count}}",
      "openInEditor": "Открыть в редакторе",
      "openTask": "Открыть задачу {{subject}}",
      "refresh": "Обновить изменения",
      "refreshFailed": "Не удалось обновить: {{error}}",
      "refreshing": "Обновление",
      "refreshingChanges": "Обновление изменений...",
      "refreshTeamChanges": "Обновить изменения команды",
      "refreshShort": "Обновить",
      "reviewDiff": "Открыть diff для review",
      "reviewTaskDiff": "Открыть diff задачи для review",
      "scannedCandidateTasks": "Просканировано {{requested}} из {{eligible}} candidate tasks",
      "tasksDeferred": "Отложено задач за этот проход: {{count}}",
      "tasksDeferred_few": "Отложено задачи за этот проход: {{count}}",
      "tasksDeferred_many": "Отложено задач за этот проход: {{count}}",
      "tasksDeferred_one": "Отложена задача за этот проход: {{count}}",
      "tasksDeferred_other": "Отложено задачи за этот проход: {{count}}",
      "title": "Изменения"
    },
    "clarification": {
      "awaitingLead": "Ожидается уточнение от team lead",
      "awaitingUser": "Ожидается уточнение от вас"
    },
    "description": {
      "add": "Добавить описание...",
      "edit": "Редактировать описание",
      "placeholder": "Описание задачи (поддерживает markdown)"
    },
    "loading": {
      "fetchingTeamData": "Загрузка данных команды",
      "title": "Загрузка задачи..."
    },
    "logs": {
      "newArriving": "Поступают новые task logs"
    },
    "notFound": "Задача не найдена",
    "related": {
      "blockedBy": "Заблокировано",
      "blocks": "Блокирует",
      "linkedFrom": "Ссылаются из",
      "links": "Связано",
      "title": "Связанные задачи"
    },
    "review": {
      "reviewer": "Reviewer: {{reviewer}}"
    },
    "sections": {
      "attachments": "Вложения",
      "changes": "Изменения",
      "comments": "Комментарии",
      "description": "Описание",
      "taskLogs": "Логи задачи",
      "workflowHistory": "История workflow"
    },
    "unassigned": "Не назначено",
    "workflow": {
      "implementationTimeTitle": "Время реализации по сохранённым рабочим интервалам",
      "inProgressTime": "Время в работе {{duration}}"
    },
    "comments": {
      "renderLimit": "Показаны последние {{formattedCount}} комментариев, чтобы интерфейс оставался отзывчивым.",
      "badges": {
        "approved": "Одобрено",
        "reviewRequested": "Запрошен review"
      },
      "unknownTime": "неизвестное время",
      "actions": {
        "reply": "Ответить",
        "replyToComment": "Ответить на комментарий",
        "showMore": "Показать ещё комментарии ({{visible}}/{{total}})",
        "cancelReply": "Отменить ответ",
        "comment": "Комментировать"
      },
      "attachments": {
        "previewAlt": "Предпросмотр вложения",
        "downloadFailed": "Не удалось скачать"
      },
      "replyingTo": "Ответ на",
      "input": {
        "placeholder": "Добавьте комментарий... (Enter для отправки)",
        "charsLeft": "Осталось символов: {{count}}",
        "charsLeft_one": "Остался {{count}} символ",
        "charsLeft_few": "Осталось {{count}} символа",
        "charsLeft_many": "Осталось {{count}} символов",
        "charsLeft_other": "Осталось {{count}} символов"
      }
    },
    "workflowTimeline": {
      "empty": "История workflow не записана",
      "currentImplementationInterval": "Текущий интервал реализации",
      "implementationIntervalEnded": "Интервал реализации завершился на этом переходе",
      "runningPrefix": "идёт ",
      "createdAs": "Создано как",
      "by": "от",
      "reassigned": "Переназначено",
      "assignedTo": "Назначено",
      "unassignedFrom": "Снято с",
      "ownerChanged": "Владелец изменён",
      "reviewRequested": "Запрошен review",
      "reviewStarted": "Review начат",
      "changesRequested": "Запрошены изменения",
      "approved": "Одобрено",
      "unknownEvent": "Неизвестное событие"
    },
    "reviewStates": {
      "approved": "Одобрено",
      "needsFix": "Нужны правки",
      "inReview": "На review"
    }
  },
  "tasks": {
    "createTask": {
      "assignee": "Исполнитель",
      "assigneeOptional": "Исполнитель (необязательно)",
      "blockedByOptional": "Блокируется задачами (необязательно)",
      "blockedBySummary": "Задачу будут блокировать: {{tasks}}",
      "cancel": "Отмена",
      "create": "Создать",
      "creating": "Создание...",
      "description": "Задача будет создана в директории tasks/ команды и появится на Kanban-доске.",
      "descriptionOptional": "Описание (необязательно)",
      "detailsPlaceholder": "Детали задачи (поддерживается Markdown)",
      "hideOptionalFields": "Скрыть дополнительные поля",
      "offlineNotice": {
        "after": "- запустите команду, чтобы начать выполнение.",
        "before": "Команда офлайн. Задача будет добавлена в"
      },
      "promptOptional": "Prompt для исполнителя (необязательно)",
      "promptPlaceholder": "Дополнительные инструкции для участника команды...",
      "relatedOptional": "Связанные задачи (необязательно)",
      "relatedSummary": "Связанные: {{tasks}}",
      "saved": "Сохранено",
      "searchTasks": "Поиск задач...",
      "selectMember": "Выберите участника",
      "selectMemberOptional": "Выберите участника...",
      "showOptionalFields": "Показать дополнительные поля",
      "startImmediately": "Запустить сразу",
      "startOfflineHint": "Команда офлайн. Сначала запустите команду, чтобы сразу стартовать задачи.",
      "subject": "Тема",
      "subjectPlaceholder": "Что нужно сделать?",
      "title": "Создать задачу",
      "todo": "TODO"
    },
    "list": {
      "columns": {
        "blockedBy": "Заблокировано",
        "blocks": "Блокирует",
        "id": "ID",
        "owner": "Владелец",
        "status": "Статус",
        "subject": "Тема"
      },
      "empty": "В этой команде нет задач",
      "filters": {
        "allOwners": "Все владельцы",
        "allStatuses": "Все статусы",
        "ownerAria": "Фильтр задач по владельцу",
        "statusAria": "Фильтр задач по статусу"
      },
      "showing": "Показано {{shown}} из {{total}}"
    },
    "status": {
      "completed": "completed",
      "deleted": "deleted",
      "inProgress": "in_progress",
      "pending": "pending"
    },
    "statusSummary": {
      "progressAria": "Задачи: выполнено {{completed}}/{{total}}",
      "inProgress": "{{count}} в работе",
      "inProgress_one": "{{count}} в работе",
      "inProgress_few": "{{count}} в работе",
      "inProgress_many": "{{count}} в работе",
      "inProgress_other": "{{count}} в работе",
      "pending": "{{count}} ожидают",
      "pending_one": "{{count}} ожидает",
      "pending_few": "{{count}} ожидают",
      "pending_many": "{{count}} ожидают",
      "pending_other": "{{count}} ожидают",
      "completed": "{{count}} выполнено",
      "completed_one": "{{count}} выполнена",
      "completed_few": "{{count}} выполнено",
      "completed_many": "{{count}} выполнено",
      "completed_other": "{{count}} выполнено"
    },
    "unassigned": "Не назначено",
    "teamPrefix": "Команда:",
    "openTask": "Открыть задачу",
    "deleteConfirm": {
      "title": "Удалить задачу",
      "message": "Переместить задачу #{{taskId}} в корзину?",
      "confirmLabel": "Удалить",
      "cancelLabel": "Отмена"
    }
  },
  "editor": {
    "actions": {
      "cancel": "Отмена",
      "closeEditor": "Закрыть редактор",
      "closeTab": "Закрыть вкладку",
      "closeTooltip": "Закрыть редактор (Esc)",
      "discard": "Отменить изменения",
      "discardAndClose": "Отменить и закрыть",
      "keep": "Оставить",
      "keepMine": "Оставить мои изменения",
      "keyboardShortcuts": "Горячие клавиши",
      "overwrite": "Перезаписать",
      "refreshAria": "Обновить (F5)",
      "refreshTooltip": "Обновить git status (F5)",
      "reload": "Перезагрузить",
      "retry": "Повторить",
      "save": "Сохранить",
      "saveAllAndClose": "Сохранить всё и закрыть"
    },
    "ariaLabel": "Редактор проекта",
    "dialogs": {
      "conflictDescription": "Файл был изменён извне после открытия. Перезаписать его вашими изменениями?",
      "conflictTitle": "Конфликт сохранения",
      "unsavedDescription": "Есть несохранённые изменения. Что сделать?",
      "unsavedFileDescription": "В этом файле есть несохранённые изменения. Что сделать?",
      "unsavedTitle": "Несохранённые изменения"
    },
    "newFile": {
      "validation": {
        "nameRequired": "Имя не может быть пустым",
        "invalidName": "Недопустимое имя",
        "invalidCharacters": "Имя содержит недопустимые символы",
        "nameTooLong": "Имя слишком длинное"
      },
      "placeholders": {
        "fileName": "Имя файла...",
        "folderName": "Имя папки..."
      },
      "aria": {
        "newFileName": "Имя нового файла",
        "newFolderName": "Имя новой папки"
      }
    },
    "draftRecovered": "Восстановлены несохранённые изменения из предыдущей сессии.",
    "externalChange": {
      "changed": "Файл изменён на диске.",
      "deleted": "Файла больше нет на диске."
    },
    "saveFailed": "Не удалось сохранить: {{error}}",
    "sidebar": {
      "explorer": "Проводник",
      "hide": "Скрыть sidebar",
      "hideWithShortcut": "Скрыть sidebar ({{shortcut}})",
      "show": "Показать sidebar",
      "showWithShortcut": "Показать sidebar ({{shortcut}})"
    },
    "searchInFiles": {
      "title": "Поиск по файлам",
      "closeSearch": "Закрыть поиск",
      "closeSearchShortcut": "Закрыть поиск (Esc)",
      "searchPlaceholder": "Искать...",
      "matchCase": "Учитывать регистр",
      "matchCaseToggle": "Aa",
      "noResults": "Ничего не найдено",
      "resultsSummary": "{{count}} совпадений в {{fileCount}} файлах",
      "resultsSummary_one": "{{count}} совпадение в {{fileCount}} файлах",
      "resultsSummary_few": "{{count}} совпадения в {{fileCount}} файлах",
      "resultsSummary_many": "{{count}} совпадений в {{fileCount}} файлах",
      "resultsSummary_other": "{{count}} совпадений в {{fileCount}} файлах",
      "truncated": "(обрезано)"
    },
    "fileTree": {
      "failedToLoadFiles": "Не удалось загрузить файлы: {{error}}",
      "loading": "Загрузка файлов...",
      "empty": "Файлы не найдены",
      "dropForProjectRoot": "Перетащите сюда для корня проекта",
      "moveToTrash": "Переместить в корзину",
      "moveToTrashConfirm": "Переместить \"{{name}}\" в корзину?",
      "cancel": "Отмена"
    },
    "goToLine": {
      "title": "Перейти к строке",
      "position": "(текущая: {{current}}, всего: {{total}})",
      "placeholder": "Номер строки, +смещение, -смещение или %",
      "go": "Перейти"
    },
    "searchPanel": {
      "previousMatch": "Предыдущее совпадение",
      "nextMatch": "Следующее совпадение",
      "close": "Закрыть",
      "replacePlaceholder": "Замена",
      "replace": "Заменить",
      "replaceNext": "Заменить следующее",
      "all": "Все",
      "replaceAll": "Заменить все"
    },
    "statusBar": {
      "position": "Стр {{line}}, Кол {{col}}",
      "enableWatcher": "Включить отслеживание файлов",
      "disableWatcher": "Отключить отслеживание файлов",
      "watch": "следить",
      "watching": "слежение",
      "watchExternalChanges": "Следить за внешними изменениями",
      "disableExternalWatcher": "Отключить отслеживание внешних изменений",
      "encodingUtf8": "UTF-8",
      "spaces": "Пробелы: {{count}}"
    },
    "imagePreview": {
      "loading": "Загрузка предпросмотра...",
      "openFullSize": "Открыть полноразмерный предпросмотр",
      "openSystemViewer": "Открыть в системном просмотрщике"
    },
    "quickOpen": {
      "title": "Быстрое открытие",
      "searchPlaceholder": "Поиск файлов по имени...",
      "loading": "Загрузка файлов...",
      "empty": "Файлы не найдены"
    },
    "errorBoundary": {
      "crashed": "Редактор упал",
      "unknownError": "Неизвестная ошибка"
    },
    "binaryPlaceholder": {
      "file": "Бинарный файл ({{size}})"
    },
    "unsavedChanges": "Несохранённые изменения",
    "empty": {
      "selectFile": "Выберите файл в дереве, чтобы редактировать"
    },
    "search": {
      "toggleReplace": "Переключить замену",
      "placeholder": "Поиск"
    },
    "shortcuts": {
      "title": "Горячие клавиши",
      "groups": {
        "fileOperations": "Операции с файлами",
        "search": "Поиск",
        "navigation": "Навигация",
        "editing": "Редактирование",
        "markdown": "Markdown",
        "general": "Общее"
      },
      "actions": {
        "quickOpen": "Быстрое открытие",
        "save": "Сохранить",
        "saveAll": "Сохранить всё",
        "closeTab": "Закрыть вкладку",
        "findInFile": "Найти в файле",
        "searchInFiles": "Поиск по файлам",
        "goToLine": "Перейти к строке",
        "nextTab": "Следующая вкладка",
        "previousTab": "Предыдущая вкладка",
        "cycleTabs": "Переключать вкладки",
        "toggleSidebar": "Переключить боковую панель",
        "undo": "Отменить",
        "redo": "Повторить",
        "selectNextMatch": "Выбрать следующее совпадение",
        "toggleComment": "Переключить комментарий",
        "splitPreview": "Разделённый предпросмотр",
        "fullPreview": "Полный предпросмотр",
        "closeEditor": "Закрыть редактор"
      }
    },
    "toolbar": {
      "enableWordWrap": "Включить перенос строк",
      "disableWordWrap": "Отключить перенос строк",
      "closeSplitPreview": "Закрыть разделённый предпросмотр",
      "closePreview": "Закрыть предпросмотр"
    }
  },
  "launch": {
    "actions": {
      "createSchedule": "Создать расписание",
      "creating": "Создание...",
      "goToDashboard": "Перейти в Dashboard",
      "launchTeam": "Запустить команду",
      "launching": "Запуск...",
      "relaunchTeam": "Перезапустить команду",
      "relaunching": "Перезапуск...",
      "saveChanges": "Сохранить изменения",
      "saving": "Сохранение..."
    },
    "billing": {
      "prefix": "С 15 июня 2026 года Anthropic списывает использование",
      "readArticle": "Открыть статью Anthropic",
      "suffix": "и Agent SDK из ежемесячного Agent SDK credit отдельно от интерактивных лимитов Claude Code. Credit обновляется каждый billing cycle, неиспользованный остаток не переносится."
    },
    "conflict": {
      "description": "Запуск двух команд в одной директории рискован - они могут конфликтовать при изменении одних и тех же файлов. Лучше выбрать другую директорию или git worktree для изоляции.",
      "title": "Другая команда \"{{team}}\" уже работает в этой working directory",
      "workingDirectory": "Working directory:"
    },
    "description": {
      "createSchedule": "Настроить автоматическое выполнение Claude task",
      "createScheduleForTeam": "Настроить автоматические запуски для команды \"{{team}}\"",
      "editSchedule": "Редактирование расписания для команды \"{{team}}\"",
      "launchPrefix": "Запустить команду",
      "launchSuffix": "через локальный Claude CLI.",
      "relaunchPrefix": "Остановить текущий запуск для",
      "relaunchSuffix": "и запустить его заново через локальный Claude CLI."
    },
    "prepare": {
      "action": {
        "launch": "запуск",
        "relaunch": "перезапуск"
      },
      "blocked": "Runtime environment недоступен - {{action}} заблокирован",
      "checkingProviders": "Проверка выбранных providers...",
      "failed": "Не удалось подготовить выбранных providers",
      "preflight": "Pre-flight проверка, чтобы поймать ошибки до действия: {{action}}",
      "preparingEnvironment": "Подготовка environment...",
      "ready": "Все выбранные providers готовы.",
      "readyWithNotes": "Все выбранные providers готовы, есть заметки.",
      "unsupportedPreload": "Текущая версия preload не поддерживает team:prepareProvisioning. Перезапустите dev app.",
      "selectWorkingDirectory": "Выберите рабочую директорию, чтобы проверить окружение запуска.",
      "someProvidersNeedAttention": "Некоторым выбранным providers нужно внимание."
    },
    "prompt": {
      "label": "Prompt",
      "oneShotPrefix": "Этот prompt будет передан в",
      "oneShotSuffix": "для one-shot выполнения",
      "saved": "Сохранено",
      "schedulePlaceholder": "Инструкции для Claude, которые нужно выполнить по расписанию...",
      "teamLeadOptional": "Prompt для team lead (optional)",
      "teamLeadPlaceholder": "Инструкции для team lead..."
    },
    "providerChanged": "Provider изменён с {{from}} на {{to}}. Предыдущая lead session не будет возобновлена, lead начнёт с fresh context, чтобы новый runtime применился корректно.",
    "relaunchFreshSession": "Team relaunch запускает fresh lead session. Durable team state, task board и настройки участников будут rehydrated в launch prompt.",
    "relaunchWarning": {
      "description": "Сохранение этих настроек остановит текущий team process, сохранит обновлённый roster и снова запустит команду с новым runtime.",
      "title": "Relaunch перезапустит текущий team run"
    },
    "schedule": {
      "labelOptional": "Label (optional)",
      "labelPlaceholder": "Например: Daily code review, Nightly tests...",
      "maxBudgetUsd": "Max budget (USD)",
      "maxTurns": "Max turns",
      "noLimit": "Без лимита",
      "noMatches": "Команды не найдены по поиску.",
      "noTeams": "Нет доступных команд. Сначала создайте команду.",
      "searchTeams": "Поиск команд...",
      "selectTeam": "Выберите команду...",
      "team": "Команда",
      "title": "Расписание"
    },
    "title": {
      "createSchedule": "Создать расписание",
      "editSchedule": "Редактировать расписание",
      "launch": "Запуск команды",
      "relaunch": "Перезапуск команды"
    },
    "errors": {
      "loadProjectsFailed": "Не удалось загрузить проекты",
      "saveScheduleFailed": "Не удалось сохранить расписание",
      "relaunchFailed": "Не удалось перезапустить команду",
      "launchFailed": "Не удалось запустить команду"
    },
    "validation": {
      "openCodeLeadModelRequired": "Для lead на OpenCode нужно выбрать модель.",
      "openCodeTeammateRequired": "Для lead на OpenCode нужен хотя бы один teammate OpenCode.",
      "selectWorkingDirectory": "Выберите рабочую директорию (cwd)",
      "fixMemberNames": "Исправьте имена участников перед запуском",
      "memberNamesUnique": "Имена участников должны быть уникальными перед запуском"
    },
    "optionalSettings": {
      "relaunchTitle": "Настройки перезапуска",
      "title": "Дополнительные настройки запуска",
      "relaunchDescription": "Проверьте состав и runtime lead перед перезапуском команды.",
      "description": "Оставьте запуск сфокусированным на пути проекта и раскрывайте этот блок только когда нужен дополнительный контроль."
    }
  },
  "list": {
    "actions": {
      "copyTeam": "Скопировать команду",
      "createTeam": "Создать команду",
      "deleteForever": "Удалить навсегда",
      "deletePermanently": "Удалить окончательно",
      "deleteTeam": "Удалить команду",
      "launching": "Запуск...",
      "launchTeam": "Запустить команду",
      "relaunchTeam": "Перезапустить команду",
      "restore": "Восстановить",
      "restoreTeam": "Восстановить команду",
      "retry": "Повторить",
      "stopTeam": "Остановить команду",
      "stopping": "Остановка..."
    },
    "electronOnly": {
      "description": "В browser mode доступ к локальным директориям `~/.claude/teams` недоступен.",
      "title": "Команды доступны только в Electron mode"
    },
    "empty": {
      "description": "Создайте команду здесь, чтобы начать. Она автоматически появится в списке.",
      "localOnly": "Создание команд доступно только в локальном Electron mode.",
      "title": "Команды не найдены"
    },
    "filter": {
      "clearAll": "Очистить всё",
      "label": "Фильтровать команды",
      "projectPriority": "Приоритет проекта",
      "status": "Статус"
    },
    "loadFailed": "Не удалось загрузить команды",
    "loading": "Загрузка команд...",
    "localOnly": "Доступно только в локальном Electron mode.",
    "membersCount": "Участников: {{count}}",
    "membersCount_few": "Участников: {{count}}",
    "membersCount_many": "Участников: {{count}}",
    "membersCount_one": "Участник: {{count}}",
    "membersCount_other": "Участников: {{count}}",
    "noDescription": "Нет описания",
    "noMatches": "Нет команд по текущим фильтрам",
    "partial": {
      "pending": "Последний запуск ещё сверяется.",
      "skipped": "В последнем запуске были пропущены teammates.",
      "skippedWithCount": "Последний запуск пропустил {{count}}/{{expected}} teammate.",
      "skippedWithCount_few": "Последний запуск пропустил {{count}}/{{expected}} teammates.",
      "skippedWithCount_many": "Последний запуск пропустил {{count}}/{{expected}} teammates.",
      "skippedWithCount_one": "Последний запуск пропустил {{count}}/{{expected}} teammate.",
      "skippedWithCount_other": "Последний запуск пропустил {{count}}/{{expected}} teammates.",
      "stopped": "Последний запуск остановился до подключения всех teammates.",
      "stoppedWithCount": "Последний запуск остановился до подключения {{count}}/{{expected}} teammate.",
      "stoppedWithCount_few": "Последний запуск остановился до подключения {{count}}/{{expected}} teammates.",
      "stoppedWithCount_many": "Последний запуск остановился до подключения {{count}}/{{expected}} teammates.",
      "stoppedWithCount_one": "Последний запуск остановился до подключения {{count}}/{{expected}} teammate.",
      "stoppedWithCount_other": "Последний запуск остановился до подключения {{count}}/{{expected}} teammates."
    },
    "searchPlaceholder": "Поиск команд...",
    "sections": {
      "otherTeams": "Другие команды",
      "projectTeams": "Команды для {{project}}",
      "selectedProject": "выбранного проекта"
    },
    "solo": "Solo",
    "status": {
      "active": "Активно",
      "deleted": "Удалено",
      "launching": "Запуск...",
      "offline": "Offline",
      "partialFailure": "Запуск частично не удался",
      "partialPending": "Bootstrap ожидает",
      "partialSkipped": "Запуск пропустил участника",
      "running": "Работает"
    },
    "title": "Выбор команды",
    "trash": "Корзина ({{count}})",
    "trash_few": "Корзина ({{count}})",
    "trash_many": "Корзина ({{count}})",
    "trash_one": "Корзина ({{count}})",
    "trash_other": "Корзина ({{count}})",
    "deleteDraft": {
      "title": "Удалить черновик",
      "message": "Удалить черновик команды «{{teamName}}»? Это действие нельзя отменить.",
      "confirmLabel": "Удалить",
      "cancelLabel": "Отмена"
    },
    "moveToTrash": {
      "title": "Переместить в корзину",
      "message": "Переместить команду «{{teamName}}» в корзину? Её можно будет восстановить позже.",
      "confirmLabel": "В корзину",
      "cancelLabel": "Отмена"
    },
    "deleteForever": {
      "title": "Удалить навсегда",
      "message": "Удалить команду «{{teamName}}» навсегда? Все данные будут потеряны.",
      "confirmLabel": "Удалить навсегда",
      "cancelLabel": "Отмена"
    }
  },
  "messageComposer": {
    "crossTeam": {
      "hint": "Совет: cross-team сообщения идут team lead целевой команды. Если ответ должен вернуться вашему team lead, а не вам, явно напишите это в сообщении."
    },
    "attachments": {
      "attachFiles": "Прикрепить файлы (paste или drag & drop)",
      "unavailable": "Вложения недоступны",
      "disabledHint": "Файлы можно отправлять online team lead и online OpenCode teammates. Удалите вложения или смените получателя.",
      "restrictions": {
        "crossTeam": "Файловые вложения не поддерживаются для cross-team сообщений",
        "teamOffline": "Команда должна быть online, чтобы прикреплять файлы",
        "unsupportedRecipient": "Файлы можно отправлять team lead или OpenCode teammates",
        "openCodeOffline": "Команда должна быть online, чтобы прикреплять файлы для OpenCode teammates",
        "sending": "Дождитесь завершения текущей отправки перед добавлением файлов",
        "maximumReached": "Достигнут лимит вложений",
        "leadOnly": "Файлы можно отправлять только team lead"
      }
    },
    "slash": {
      "restrictions": {
        "attachments": "Slash commands требуют live team lead и не отправляются с вложениями",
        "crossTeam": "Slash commands можно запускать только на team lead текущей команды",
        "notLead": "Slash commands можно отправлять только team lead",
        "leadOffline": "Slash commands требуют, чтобы team lead был online"
      }
    },
    "status": {
      "reusedCrossTeamRequest": "Повторно использован недавний cross-team request",
      "teamOffline": "оффлайн"
    },
    "revision": {
      "editing": "Редактируется предыдущее сообщение",
      "cancel": "Отмена",
      "tooltip": "Попросить агента игнорировать предыдущее сообщение и вернуть его текст в composer."
    },
    "input": {
      "charsLeft": "Осталось символов: {{count}}",
      "charsLeft_one": "Остался {{count}} символ",
      "charsLeft_few": "Осталось {{count}} символа",
      "charsLeft_many": "Осталось {{count}} символов",
      "charsLeft_other": "Осталось {{count}} символов",
      "teamLaunchingPlaceholder": "Команда запускается... сообщение будет поставлено в очередь inbox delivery.",
      "crossTeamPlaceholder": "Cross-team сообщение для {{team}}...",
      "teamFallback": "команда",
      "placeholder": "Напишите сообщение... (Enter для отправки, Shift+Enter для новой строки)",
      "slashTip": "Совет: используйте \"/\", чтобы запускать любые Claude commands."
    },
    "teamSelector": {
      "thisTeam": "Эта команда",
      "current": "текущая",
      "online": "online",
      "offline": "offline",
      "onlineTitle": "Online",
      "offlineTitle": "Offline"
    },
    "recipient": {
      "select": "Выбрать...",
      "searchPlaceholder": "Поиск...",
      "noResults": "Ничего не найдено"
    },
    "actions": {
      "voiceToText": "Voice to text",
      "send": "Отправить",
      "sendingUnavailableLaunching": "Отправка недоступна, пока команда запускается"
    }
  },
  "claudeLogs": {
    "filter": {
      "ariaLabel": "Фильтровать логи",
      "tooltip": "Фильтровать логи",
      "sections": {
        "stream": "Stream",
        "content": "Content"
      },
      "kinds": {
        "output": "Output",
        "thinking": "Thinking",
        "tool": "Tool calls"
      },
      "actions": {
        "reset": "Сбросить",
        "save": "Сохранить"
      },
      "streams": {
        "stdout": "stdout",
        "stderr": "stderr"
      }
    },
    "rawLineCount": "сырых строк: {{formattedCount}}",
    "rawLineCount_one": "{{formattedCount}} сырая строка",
    "rawLineCount_few": "сырых строки: {{formattedCount}}",
    "rawLineCount_many": "сырых строк: {{formattedCount}}",
    "rawLineCount_other": "сырых строки: {{formattedCount}}",
    "rawLinesCaptured": "{{count}} записано",
    "emptyRawLogs": "{{count}}; среди них пока нет assistant/tool output.",
    "noLogsYet": "Логов пока нет.",
    "teamNotRunning": "Команда не запущена.",
    "searchPlaceholder": "Искать в логах...",
    "clearSearch": "Очистить поиск",
    "newCount": "+{{count}} новых",
    "loading": "Загрузка...",
    "showMore": "Показать больше",
    "noLogsCaptured": "Логи не записаны.",
    "noMatchingLogs": "Подходящих логов нет.",
    "openFullscreen": "Открыть логи на весь экран",
    "fullscreen": "На весь экран",
    "viewingFullscreen": "Просмотр в полноэкранном режиме",
    "logsTitle": "Логи",
    "sourceSelect": {
      "placeholder": "Выберите источник логов...",
      "searchPlaceholder": "Искать источники логов...",
      "emptyMessage": "Источники логов не найдены.",
      "ariaLabel": "Источник логов",
      "leadLabel": "Лид",
      "selectSourceEmpty": "Выберите источник логов.",
      "leadDescription": "Лид команды",
      "removedLabel": "удален",
      "removedDescription": "Удален"
    }
  },
  "agentGraph": {
    "popover": {
      "externalTeam": "Внешняя команда",
      "process": {
        "startedBy": "Запущено:",
        "at": "Время:",
        "openUrl": "Открыть URL"
      },
      "overflow": {
        "hiddenTasks": "Скрытые задачи",
        "empty": "Нет доступных скрытых задач."
      },
      "member": {
        "lead": "Lead",
        "workingOn": "работает над",
        "recentTools": "Недавние tools",
        "spawn": {
          "waitingToStart": "ожидает запуска",
          "starting": "запускается",
          "failed": "ошибка"
        },
        "state": {
          "active": "активен",
          "idle": "ожидает",
          "offline": "offline",
          "runningTool": "запускает tool"
        },
        "activeTool": {
          "running": "Tool выполняется",
          "failed": "Tool завершился ошибкой",
          "finished": "Tool завершён"
        },
        "actions": {
          "message": "Сообщение",
          "profile": "Профиль",
          "task": "Задача"
        }
      }
    },
    "logPreview": {
      "logs": "Логи",
      "loading": "Загрузка логов",
      "more": "+{{count}} ещё",
      "more_one": "+{{count}} ещё",
      "more_few": "+{{count}} ещё",
      "more_many": "+{{count}} ещё",
      "more_other": "+{{count}} ещё",
      "unsupportedProvider": "Провайдер не поддерживается",
      "openCodeLogsDelayed": "Логи OpenCode задерживаются",
      "logsUnavailable": "Логи недоступны",
      "noRecentLogs": "Нет недавних логов",
      "toolError": "Ошибка инструмента",
      "toolResult": "Результат инструмента",
      "toolUse": "Вызов инструмента",
      "thinking": "Размышление",
      "error": "Ошибка",
      "logEvent": "Событие лога",
      "noErrorOutput": "Нет вывода ошибки",
      "noOutput": "Нет вывода",
      "noInput": "Нет входных данных"
    },
    "blockingEdge": {
      "title": "Блокирующая зависимость",
      "blocks": "блокирует",
      "close": "Закрыть",
      "blockingHiddenTasks": "Скрытые блокирующие задачи",
      "blockedHiddenTasks": "Скрытые заблокированные задачи",
      "links_one": "{{count}} связь",
      "links_other": "{{count}} связи",
      "hiddenBlockingLinks_one": "{{count}} скрытая блокирующая связь",
      "hiddenBlockingLinks_other": "{{count}} скрытые блокирующие связи",
      "hiddenTaskStack": "Стек скрытых задач",
      "hiddenTasks_one": "{{count}} скрытая задача",
      "hiddenTasks_other": "{{count}} скрытые задачи",
      "task": "Задача",
      "openBlockerStack": "Открыть стек блокирующих задач",
      "openBlockedStack": "Открыть стек заблокированных задач",
      "openBlockerTask": "Открыть блокирующую задачу",
      "openBlockedTask": "Открыть заблокированную задачу"
    },
    "activityHud": {
      "activity": "Активность",
      "noRecentActivity": "Недавней активности нет",
      "more": "+{{count}} ещё",
      "more_one": "+{{count}} ещё",
      "more_few": "+{{count}} ещё",
      "more_many": "+{{count}} ещё",
      "more_other": "+{{count}} ещё"
    },
    "provisioning": {
      "launchDetails": "Детали запуска",
      "launchDetailsDescription": "Подробный прогресс запуска команды, live-вывод и логи CLI."
    }
  },
  "projectPath": {
    "label": "Проект",
    "source": {
      "claude": "Найдено Claude",
      "codex": "Найдено Codex",
      "mixed": "Найдено Claude и Codex"
    },
    "deleted": {
      "title": "Папка проекта больше не существует",
      "label": "Удалён"
    },
    "mode": {
      "projectList": "Из списка проектов",
      "customPath": "Свой путь"
    },
    "loadingProjects": "Загрузка проектов...",
    "selectProject": "Выберите проект...",
    "searchPlaceholder": "Поиск проекта по имени или пути",
    "empty": "Ничего не найдено",
    "selectFromList": "Выберите проект из списка",
    "noProjects": "Проекты не найдены, переключитесь на свой путь.",
    "customWorkingDirectory": "Custom working directory",
    "browse": "Выбрать",
    "createAutomatically": "Если директории нет, она будет создана автоматически."
  },
  "members": {
    "badges": {
      "worktree": "worktree"
    },
    "runtimeTelemetry": {
      "title": "Локальная нагрузка runtime",
      "description": "Только parent и child processes. Remote LLM inference не учитывается.",
      "cpu": "CPU",
      "memory": "Память",
      "summedRss": "суммарный RSS",
      "sharedHost": "Метрика shared OpenCode host. Она не эксклюзивна для этого участника.",
      "processTreeCapped": "Process tree был ограничен для этого sample.",
      "rssHint": "RSS может включать shared pages, поэтому это лучше читать как сигнал нагрузки, а не эксклюзивную память."
    },
    "editor": {
      "title": "Участники",
      "addMember": "Добавить участника",
      "editAsJson": "Редактировать как JSON",
      "runInSeparateWorktrees": "Запускать участников в отдельных worktree",
      "agentTeamsMcpOnly": "Только Agent Teams MCP",
      "removedCount": "Удалённые ({{count}})",
      "removedModelLockReason": "Удалённые участники сохранены для истории soft delete. Восстановите их, чтобы редактировать настройки.",
      "memberNamesUnique": "Имена участников должны быть уникальными"
    },
    "stats": {
      "computing": "Расчёт статистики...",
      "empty": "Статистика недоступна",
      "lines": "Строки",
      "linesInfo": "Приблизительно. Точно для инструментов Edit и Write. Записи файлов через Bash оцениваются по паттернам команд (heredoc, echo, sed) и могут быть занижены.",
      "files": "Файлы",
      "toolCalls": "Вызовы инструментов",
      "tokens": "Токены",
      "toolUsage": "Использование инструментов",
      "filesTouched": "Затронутые файлы ({{count}})",
      "viewAllChanges": "Показать все изменения",
      "showLess": "Показать меньше",
      "moreFiles": "+{{count}} ещё",
      "footer": "{{count}} сессий · рассчитано {{computedAgo}}",
      "footer_one": "{{count}} сессия · рассчитано {{computedAgo}}",
      "footer_few": "{{count}} сессии · рассчитано {{computedAgo}}",
      "footer_many": "{{count}} сессий · рассчитано {{computedAgo}}",
      "footer_other": "{{count}} сессии · рассчитано {{computedAgo}}"
    },
    "logs": {
      "searching": "Поиск логов...",
      "empty": "Логи не найдены",
      "waitingForTaskActivity": "Задача выполняется - ожидаем активность сессии (автообновление)...",
      "noTaskActivity": "Для этой задачи пока нет активности сессии",
      "noMemberActivity": "У этого участника пока нет записанной активности сессии",
      "leadSessionTooltip": "Полные логи сессии team lead - полезны для общего orchestration-контекста, не специфичного для этого агента",
      "memberSessionTooltip": "Полные логи постоянной сессии участника - полезны, когда работа идёт в корневой member session, а не в subagent-файле",
      "startedAt": "начато {{time}}",
      "active": "активно",
      "showDetails": "Показать детали",
      "hideDetails": "Скрыть детали",
      "loadingDetails": "Загрузка деталей...",
      "failedToLoadDetails": "Не удалось загрузить детали"
    },
    "detail": {
      "relaunchOpenCode": "Перезапустить OpenCode",
      "restart": "Перезапустить",
      "legacyLogsFallback": "Fallback legacy-логов",
      "copyDiagnostics": "Скопировать диагностику",
      "pid": "PID {{pid}}",
      "removedAt": "Удалён {{date}}",
      "failedToRestartMember": "Не удалось перезапустить участника",
      "sendMessage": "Отправить сообщение",
      "assignTask": "Назначить задачу",
      "remove": "Удалить"
    },
    "list": {
      "loading": "Загрузка участников команды",
      "unavailable": "Состав участников недоступен",
      "unavailableDescription": "{{count}} участников известны из метаданных команды, но детали состава отсутствуют.",
      "unavailableDescription_one": "{{count}} участник известен из метаданных команды, но детали состава отсутствуют.",
      "unavailableDescription_few": "{{count}} участника известны из метаданных команды, но детали состава отсутствуют.",
      "unavailableDescription_many": "{{count}} участников известны из метаданных команды, но детали состава отсутствуют.",
      "unavailableDescription_other": "{{count}} участника известны из метаданных команды, но детали состава отсутствуют.",
      "soloLeadOnly": "Solo team - только lead",
      "removedCount": "Удалённые ({{count}})"
    },
    "executionLog": {
      "empty": "Нечего показать",
      "emptyUserMessage": "{{time}} - (пусто)",
      "agentInstructions": "Инструкции агента",
      "memberTurn": "{{member}} turn",
      "agentTurn": "Ход агента",
      "turn": "ход"
    },
    "recentMessages": {
      "latest": "Последние сообщения",
      "latestForMember": "Последние сообщения - {{member}}",
      "loadMore": "Загрузить ещё",
      "expand": "Развернуть",
      "collapse": "Свернуть"
    },
    "leadModel": {
      "defaultModel": "По умолчанию",
      "providerModelAria": "Провайдер {{provider}}, модель {{model}}",
      "leadShort": "лид",
      "teamLead": "Лид команды",
      "syncWithTeammates": "Синхронизировать модель с участниками",
      "anthropicTeamWide": "Anthropic для всей команды",
      "runtimeInheritance": "Рантайм лида применяется к участникам, если они не задали собственного провайдера или модель.",
      "anthropicContextLimit": "Лимит контекста 200K действует на всю команду для рантаймов Anthropic в этом запуске, включая кастомных участников Anthropic."
    },
    "runtimeLogs": {
      "autoRefresh": "Автообновление",
      "wrapLines": "Перенос строк",
      "loadingTail": "Загрузка хвоста лога процесса...",
      "empty": "Лог процесса для этого участника пока не сохранен.",
      "copy": "Копировать",
      "fileEmpty": "Файл лога процесса пуст.",
      "showingLast": "Показаны последние {{bytes}}.",
      "showing": "Показано {{bytes}}."
    },
    "tasks": {
      "empty": "У этого участника нет назначенных задач"
    },
    "messages": {
      "loadOlder": "Загрузить более старые сообщения",
      "filters": {
        "all": "Все",
        "messages": "Сообщения",
        "comments": "Комментарии"
      },
      "empty": {
        "loading": "Загрузка активности...",
        "noComments": "У этого участника нет комментариев",
        "noLoadedMessages": "Загруженных сообщений этого участника пока нет",
        "noMessages": "Сообщений с этим участником нет",
        "noLoadedActivity": "Загруженной активности этого участника пока нет",
        "noActivity": "Активности с этим участником нет"
      }
    },
    "actions": {
      "openProfile": "Открыть профиль",
      "editRole": "Редактировать роль",
      "sendMessage": "Отправить сообщение",
      "assignTask": "Назначить задачу"
    },
    "roleSelect": {
      "customRolePlaceholder": "Введите свою роль..."
    }
  },
  "schedule": {
    "count": "{{count}} schedules",
    "count_one": "{{count}} schedule",
    "count_few": "{{count}} schedules",
    "count_many": "{{count}} schedules",
    "count_other": "{{count}} schedules",
    "nextRun": "Next: {{next}}",
    "actions": {
      "runNow": "Запустить сейчас",
      "edit": "Редактировать",
      "pause": "Пауза",
      "resume": "Возобновить",
      "delete": "Удалить",
      "addSchedule": "Добавить schedule"
    },
    "runHistory": {
      "loading": "Загрузка run history...",
      "empty": "Запусков ещё нет"
    },
    "runLog": {
      "title": "Лог запуска",
      "exitCode": "exit {{code}}",
      "retryCount": "retry {{count}}/{{max}}",
      "stillRunning": "Задача ещё выполняется...",
      "loadingLogs": "Загрузка логов...",
      "errors": "Ошибки",
      "close": "Закрыть"
    },
    "cron": {
      "expression": "Cron-выражение",
      "highFrequencyWarning": "Высокая частота расписания (интервал меньше 5 минут)",
      "nextRuns": "Следующие запуски:",
      "timezone": "Часовой пояс",
      "selectTimezone": "Выберите часовой пояс",
      "warmUpTime": "Время прогрева",
      "warmUpDescription": "Подготавливает выбранных провайдеров перед запуском по расписанию",
      "errors": {
        "enterExpression": "Введите cron-выражение",
        "invalidExpression": "Некорректное cron-выражение"
      },
      "presets": {
        "everyHour": "Каждый час",
        "everySixHours": "Каждые 6 часов",
        "dailyAtNine": "Ежедневно в 9:00",
        "weekdaysAtNine": "По будням в 9:00",
        "mondayAtNine": "В понедельник в 9:00",
        "everyThirtyMinutes": "Каждые 30 минут"
      },
      "warmUpOptions": {
        "none": "Без прогрева",
        "fiveMinutes": "5 мин",
        "tenMinutes": "10 мин",
        "fifteenMinutes": "15 мин",
        "thirtyMinutes": "30 мин"
      }
    },
    "empty": {
      "title": "Расписаний пока нет",
      "description": "Создайте расписание, чтобы автоматически запускать задачи Claude по cron."
    },
    "title": "Расписания",
    "status": {
      "active": "Активно",
      "paused": "Пауза",
      "disabled": "Отключено"
    },
    "runStatus": {
      "pending": "Ожидает",
      "warmingUp": "Прогрев",
      "warm": "Готово к запуску",
      "running": "Выполняется",
      "completed": "Завершено",
      "failed": "Ошибка",
      "interrupted": "Прервано",
      "cancelled": "Отменено"
    }
  },
  "openCodeContextConfigHint": {
    "summary": "Локальные модели OpenCode могут использовать бюджет контекста OpenCode вместо ограничений только в промпте.",
    "description": "Добавьте соответствующие лимиты в конфиг OpenCode для провайдера и модели этого участника. Это поможет OpenCode выполнять compact и prune до того, как локальная модель переполнит контекстное окно.",
    "replacePrefix": "Замените",
    "and": "и",
    "replaceSuffix": "на ID провайдера и модели из вашей настройки OpenCode. Инструкции в промпте вроде",
    "promptInstructionsSuffix": "слабее, потому что запрос собирается до того, как модель их прочитает.",
    "providerLimits": "Лимиты провайдера",
    "compactionConfig": "Конфиг compaction"
  },
  "sessions": {
    "noProjectPath": "Путь проекта не привязан",
    "provisioningHint": "Сессии появятся после provisioning команды",
    "projectNotFound": "Проект не найден",
    "loading": "Загрузка сессий...",
    "empty": "Сессии не найдены",
    "showAllSessions": "Показать для всех сессий",
    "lead": "lead",
    "removeFilter": "Убрать фильтр",
    "filterBySession": "Фильтровать по этой сессии",
    "openSession": "Открыть сессию",
    "title": "Сессии"
  },
  "provisioning": {
    "pid": "PID {{pid}}",
    "cancel": "Отменить",
    "moreWarningsHidden": "Скрыто ещё {{count}} предупреждений",
    "diagnostics": "Диагностика",
    "liveOutput": "Живой вывод",
    "diagnosticsCopied": "Диагностика скопирована",
    "copyDiagnostics": "Скопировать диагностику",
    "copied": "Скопировано",
    "noOutput": "Вывод пока не записан.",
    "cliLogs": "Логи CLI",
    "steps": {
      "starting": "Запуск",
      "configuring": "Настройка команды",
      "assembling": "Подключение участников",
      "finalizing": "Завершение"
    },
    "providerStatus": {
      "status": {
        "checking": "проверка...",
        "ready": "OK",
        "notes": "OK (есть заметки)",
        "failed": "ERR",
        "pending": "ожидание"
      },
      "detailSummary": {
        "cliBinaryMissing": "CLI binary не найден",
        "openCodeRuntimeMissing": "OpenCode runtime отсутствует",
        "openCodeWindowsAccessBlocked": "Доступ OpenCode в Windows заблокирован",
        "openCodeNoOutput": "Проверка OpenCode runtime не вернула вывод",
        "openCodeMcpUnreachable": "OpenCode app MCP недоступен",
        "workingDirectoryMissing": "Working directory отсутствует",
        "cliBinaryCouldNotStart": "CLI binary не удалось запустить",
        "cliPreflightIncomplete": "CLI preflight не завершился",
        "authenticationRequired": "Требуется аутентификация",
        "runtimeProviderNotConfigured": "Runtime provider не настроен",
        "cliPreflightFailed": "CLI preflight завершился с ошибкой",
        "selectedModelCompatible": "Выбранная модель совместима",
        "selectedModelCompatibilityPending": "Совместимость выбранной модели ещё проверяется",
        "selectedModelAvailable": "Выбранная модель доступна",
        "selectedModelVerified": "Выбранная модель проверена",
        "selectedModelUnavailable": "Выбранная модель недоступна",
        "selectedModelTimedOut": "Проверка выбранной модели истекла по таймауту",
        "selectedModelCheckFailed": "Проверка выбранной модели не удалась",
        "selectedModelDeferred": "Проверка выбранной модели отложена",
        "selectedModelPingNotConfirmed": "Ping выбранной модели не подтверждён",
        "readyWithNotes": "Готово с заметками",
        "needsAttention": "Требует внимания"
      },
      "modelChecksSummary": "Проверки выбранных моделей - {{details}}",
      "modelParts": {
        "unavailable": "{{count}} модель недоступна",
        "unavailable_one": "{{count}} модель недоступна",
        "unavailable_few": "{{count}} модели недоступны",
        "unavailable_many": "{{count}} моделей недоступно",
        "unavailable_other": "{{count}} модели недоступны",
        "checkFailed": "{{count}} проверка модели не удалась",
        "checkFailed_one": "{{count}} проверка модели не удалась",
        "checkFailed_few": "{{count}} проверки моделей не удались",
        "checkFailed_many": "{{count}} проверок моделей не удались",
        "checkFailed_other": "{{count}} проверки моделей не удались",
        "timedOut": "{{count}} модель по таймауту",
        "timedOut_one": "{{count}} модель по таймауту",
        "timedOut_few": "{{count}} модели по таймауту",
        "timedOut_many": "{{count}} моделей по таймауту",
        "timedOut_other": "{{count}} модели по таймауту",
        "deferred": "{{count}} проверка отложена",
        "deferred_one": "{{count}} проверка отложена",
        "deferred_few": "{{count}} проверки отложены",
        "deferred_many": "{{count}} проверок отложено",
        "deferred_other": "{{count}} проверки отложены",
        "pingNotConfirmed": "{{count}} ping не подтверждён",
        "pingNotConfirmed_one": "{{count}} ping не подтверждён",
        "pingNotConfirmed_few": "{{count}} ping не подтверждены",
        "pingNotConfirmed_many": "{{count}} ping не подтверждены",
        "pingNotConfirmed_other": "{{count}} ping не подтверждены",
        "compatibilityPending": "{{count}} совместима, глубокая проверка продолжается",
        "compatibilityPending_one": "{{count}} совместима, глубокая проверка продолжается",
        "compatibilityPending_few": "{{count}} совместимы, глубокая проверка продолжается",
        "compatibilityPending_many": "{{count}} совместимы, глубокая проверка продолжается",
        "compatibilityPending_other": "{{count}} совместимы, глубокая проверка продолжается",
        "compatible": "{{count}} совместима",
        "compatible_one": "{{count}} совместима",
        "compatible_few": "{{count}} совместимы",
        "compatible_many": "{{count}} совместимы",
        "compatible_other": "{{count}} совместимы",
        "checking": "{{count}} проверяется",
        "checking_one": "{{count}} проверяется",
        "checking_few": "{{count}} проверяются",
        "checking_many": "{{count}} проверяются",
        "checking_other": "{{count}} проверяются",
        "available": "{{count}} доступна",
        "available_one": "{{count}} доступна",
        "available_few": "{{count}} доступны",
        "available_many": "{{count}} доступны",
        "available_other": "{{count}} доступны",
        "verified": "{{count}} проверена",
        "verified_one": "{{count}} проверена",
        "verified_few": "{{count}} проверены",
        "verified_many": "{{count}} проверены",
        "verified_other": "{{count}} проверены"
      },
      "openProviderSettings": "Открыть настройки {{provider}}",
      "copied": "Скопировано",
      "copyDiagnostics": "Скопировать диагностику",
      "deepVerificationPending": "Глубокая проверка ещё выполняется. Бесплатные модели OpenCode могут проверяться около 20 секунд.",
      "progress": {
        "checkingSelectedProviders": "Проверка выбранных провайдеров параллельно...",
        "checkingProvider": "Проверка провайдера {{provider}}...",
        "checkingProviders": "Проверка провайдеров {{providers}}..."
      },
      "failureHints": {
        "openCodeAccessDenied": "Исправьте права на папку или перенесите проект в папку, доступную пользователю для записи. Запуск от администратора - только временный обходной путь.",
        "openCodeBridgeNoOutput": "Перезапустите приложение и runtime OpenCode, затем повторите. Если повторится, скопируйте diagnostics.",
        "workingDirectoryMissing": "Выберите существующую рабочую папку, затем откройте этот диалог заново.",
        "authenticationRequired": "Авторизуйте нужного провайдера в Claude CLI, затем откройте этот диалог заново.",
        "runtimeProviderNotConfigured": "Настройте выбранный provider runtime, затем откройте этот диалог заново.",
        "openCodeRuntimeMissing": "Установите или повторите запуск runtime OpenCode из карточки статуса провайдера, затем откройте этот диалог заново.",
        "openCodeAppMcpUnreachable": "Повторите launch, чтобы обновить OpenCode app MCP bridge. Если повторится, перезапустите приложение и runtime OpenCode.",
        "cliBinaryMissing": "Убедитесь, что локальный бинарь Claude CLI существует и может запускаться, затем откройте этот диалог заново.",
        "default": "Исправьте проблему выше, затем откройте этот диалог заново.",
        "openCodeNodeModulesSymlinkPermission": "Запустите Agent Teams AI от имени администратора, затем повторите launch."
      }
    },
    "presentation": {
      "awaitingPermission": "{{count}} участник(ов) ожидает подтверждения permission",
      "nameListWithMore": "{{names}}, +{{count}} ещё",
      "waitingForOpenCode": "Ожидание OpenCode: {{names}}",
      "bootstrapStalled": "Bootstrap завис: {{names}}",
      "bootstrapStalledWithOpenCodeWait": "{{stalled}}; ожидание OpenCode: {{names}}",
      "namedPendingDiagnostic": "{{label}}: {{names}}",
      "countPendingDiagnostic": "{{count}} - {{label}}",
      "pendingLabels": {
        "bootstrapStalled": "Bootstrap завис",
        "shellOnly": "Только shell",
        "waitingForBootstrap": "Ожидание bootstrap",
        "bootstrapUnconfirmed": "Bootstrap не подтверждён",
        "awaitingPermission": "Ожидание permission",
        "waitingForRuntime": "Ожидание runtime",
        "shellOnlyLower": "только shell",
        "waitingForBootstrapLower": "ожидает bootstrap",
        "bootstrapUnconfirmedLower": "bootstrap не подтверждён",
        "awaitingPermissionLower": "ожидает permission",
        "waitingForRuntimeLower": "ожидает runtime"
      },
      "failed": {
        "memberFailedToStart": "{{name}} не запустился",
        "teammatesFailedToStart": "{{count}} участник(ов) не запустилось",
        "teammatesFailedRatio": "{{count}}/{{total}} участник(ов) не запустилось"
      },
      "skipped": {
        "memberSkipped": "{{name}} пропущен для этого запуска",
        "memberSkippedWithReason": "{{name}} пропущен для этого запуска - {{reason}}",
        "memberSkippedCompact": "{{name}} пропущен",
        "teammatesSkipped": "{{count}} участник(ов) пропущено",
        "teammatesSkippedList": "Пропущенные участники: {{list}}",
        "teammatesSkippedRatio": "{{count}}/{{total}} участник(ов) пропущено для этого запуска"
      },
      "joining": {
        "teammatesStillJoining": "{{count}} участник(ов) ещё подключается",
        "teammatesStillJoining_one": "{{count}} участник ещё подключается",
        "teammatesStillJoining_few": "{{count}} участника ещё подключаются",
        "teammatesStillJoining_many": "{{count}} участников ещё подключается",
        "teammatesStillJoining_other": "{{count}} участника(ов) ещё подключается",
        "teammatesConfirmedRatio": "{{count}}/{{total}} участников подтверждено"
      },
      "ready": {
        "leadOnline": "Lead online",
        "allTeammatesJoined": "Все участники подключились: {{count}}",
        "teamProvisionedLeadOnline": "Команда подготовлена - lead online",
        "teamProvisionedAllJoined": "Команда подготовлена - все участники подключились: {{count}}",
        "teamProvisionedStillJoining": "Команда подготовлена - участники ещё подключаются",
        "launchFinishedWithErrors": "Запуск завершён с ошибками - {{count}}/{{total}} участник(ов) не запустилось",
        "launchContinuedSkipped": "Запуск продолжен - {{count}}/{{total}} участник(ов) пропущено",
        "teamLaunchedLeadOnline": "Команда запущена - lead online",
        "teamLaunchedAllJoined": "Команда запущена - все участники подключились: {{count}}"
      },
      "panel": {
        "launchFailed": "Запуск не удался",
        "launchDetails": "Детали запуска",
        "launchFinishedWithErrors": "Запуск завершён с ошибками",
        "launchContinuedSkipped": "Запуск продолжен с пропущенными участниками",
        "coreTeamReady": "Основная команда готова",
        "finishingLaunch": "Завершение запуска",
        "teamLaunched": "Команда запущена",
        "launchingTeam": "Запуск команды"
      }
    }
  },
  "liveRuntimeStatus": {
    "title": "Статус live runtime",
    "description": "Информационный heartbeat и состояние запуска. Управление процессами находится ниже.",
    "source": "источник: {{source}}",
    "lane": "lane {{lane}}",
    "diagnosticOnly": "Только для диагностики",
    "updated": "обновлено {{value}}",
    "states": {
      "running": "Работает",
      "starting": "Запускается",
      "waiting": "Ожидает",
      "degraded": "Требует внимания",
      "stopped": "Остановлен",
      "unknown": "Неизвестно"
    }
  },
  "taskLogs": {
    "exact": {
      "title": "Точные логи задачи",
      "loading": "Загрузка точных логов задачи...",
      "description": "Точные фрагменты transcript отображаются теми же компонентами execution-log, что и в логах.",
      "emptyTitle": "Точных логов задачи пока нет",
      "emptyDescription": "Точные transcript bundles появятся здесь, когда будут доступны явные метаданные transcript, связанные с задачей.",
      "summaryOnly": "только summary"
    },
    "executionSessions": {
      "title": "Сессии выполнения",
      "online": "Онлайн",
      "updating": "Обновление...",
      "description": "Просмотр и предпросмотр старых транскриптов, сгруппированных по сессиям."
    },
    "stream": {
      "title": "Поток логов задачи"
    }
  },
  "kanban": {
    "taskCard": {
      "cancelTask": "Отменить задачу {{taskId}}",
      "cancel": "Отменить",
      "moveBackToTodoConfirm": "Переместить задачу обратно в TODO и уведомить команду?",
      "confirm": "Подтвердить",
      "keep": "Оставить",
      "changesNeedAttention": "Изменения требуют внимания",
      "changes": "Изменения",
      "deleteTask": "Удалить задачу",
      "taskLogsActive": "Логи задачи активны",
      "newTaskLogsArriving": "Поступают новые логи задачи",
      "awaitingUser": "Ожидает пользователя",
      "awaitingLead": "Ожидает lead",
      "blockedBy": "Заблокировано",
      "blocks": "Блокирует",
      "start": "Начать",
      "complete": "Завершить",
      "approve": "Одобрить",
      "requestReview": "Запросить ревью",
      "manualReview": "Ручное ревью",
      "requestChanges": "Запросить правки"
    },
    "filter": {
      "title": "Фильтр задач",
      "session": "Сессия",
      "allSessions": "Все сессии",
      "teammate": "Участник",
      "unassigned": "(не назначено)",
      "column": "Колонка",
      "clearAll": "Очистить всё"
    },
    "board": {
      "addTask": "Добавить задачу",
      "noTasks": "Нет задач",
      "showMore": "Показать ещё {{count}}",
      "hiddenCount": "Скрыто: {{count}}",
      "trash": "Корзина",
      "gridView": "Вид сеткой",
      "columnsView": "Вид колонками"
    },
    "trash": {
      "title": "Корзина",
      "empty": "Удалённых задач нет",
      "subject": "Тема",
      "owner": "Исполнитель",
      "deleted": "Удалено",
      "unassigned": "Не назначено",
      "restoreTask": "Восстановить задачу",
      "restore": "Восстановить",
      "close": "Закрыть"
    },
    "sort": {
      "title": "Сортировка задач",
      "sortBy": "Сортировать по",
      "reset": "Сбросить",
      "options": {
        "updatedAt": {
          "label": "Последнее обновление",
          "description": "Сначала недавно обновлённые"
        },
        "createdAt": {
          "label": "Создано",
          "description": "Сначала новые"
        },
        "owner": {
          "label": "Исполнитель",
          "description": "По имени исполнителя"
        },
        "manual": {
          "label": "Вручную",
          "description": "Порядок drag-and-drop"
        }
      }
    },
    "search": {
      "clearSearch": "Очистить поиск",
      "tasks": "Задачи",
      "createdAgo": "создано {{time}}",
      "updatedAgo": "обновлено {{time}}",
      "placeholder": "Поиск задач... (#id или текст)"
    },
    "grid": {
      "addTask": "Добавить задачу",
      "noTasks": "Нет задач"
    },
    "title": "Канбан",
    "columns": {
      "todo": "TODO",
      "inProgress": "В РАБОТЕ",
      "review": "РЕВЬЮ",
      "done": "ГОТОВО",
      "approved": "ОДОБРЕНО"
    }
  },
  "worktreeGitReadiness": {
    "checking": "Проверка Git-репозитория для worktree участников...",
    "ready": "Git worktree готовы.",
    "readyOnBranch": "Git worktree готовы на ветке {{branch}}.",
    "needsSetup": "Для worktree isolation нужна настройка Git",
    "initialCommitNotice": "Действие initial commit добавит в индекс и закоммитит все текущие файлы с сообщением",
    "initializeRepository": "Инициализировать Git-репозиторий",
    "createInitialCommit": "Создать initial commit",
    "initialCommitMessage": "chore: initial commit"
  },
  "toolApproval": {
    "settings": "Настройки",
    "autoAllowAllTools": "Автоматически разрешать все инструменты",
    "autoAllowFileEdits": "Автоматически разрешать правки файлов (Edit, Write, NotebookEdit)",
    "autoAllowSafeCommands": "Автоматически разрешать безопасные команды (git, pnpm, npm, ls...)",
    "onTimeout": "При таймауте:",
    "after": "через",
    "secondsShort": "сек",
    "timeoutActions": {
      "wait": "Ждать всегда",
      "allow": "Разрешить",
      "deny": "Отклонить"
    },
    "submit": "Отправить",
    "allow": "Разрешить",
    "deny": "Отклонить",
    "allowAll": "Разрешить всё",
    "pendingCount": "ожидает: {{count}}",
    "autoActionIn": "Авто-{{action}} через {{time}}",
    "diff": {
      "previewChanges": "Предпросмотр изменений",
      "readingFile": "Чтение файла...",
      "binaryFile": "Бинарный файл - предпросмотр невозможен",
      "truncated": "Файл обрезан на 2MB - diff может быть неполным",
      "newFile": "Новый файл"
    }
  },
  "memberWorkSync": {
    "details": {
      "title": "Синхронизация работы участника",
      "actionableItems": "Действия",
      "fingerprint": "Fingerprint",
      "report": "Отчёт",
      "none": "нет",
      "shadowWouldNudge": "Shadow отправил бы nudge",
      "yes": "да",
      "no": "нет",
      "moreActionableItems": "Ещё действий: {{count}}",
      "diagnostics": "Диагностика: {{diagnostics}}"
    },
    "title": "Синхронизация работы участника",
    "loadingDiagnostics": "Загрузка диагностики синхронизации работы участника.",
    "diagnosticsUnavailable": "Диагностика синхронизации работы участника недоступна."
  },
  "advancedCli": {
    "title": "Дополнительно",
    "useWorktree": "Использовать worktree",
    "recent": "Недавние",
    "commandPreview": "Предпросмотр команды",
    "customArguments": "Пользовательские аргументы",
    "validate": "Проверить",
    "validation": {
      "allFlagsValid": "Все флаги корректны",
      "unknownFlags": "Неизвестные: {{flags}}",
      "protectedFlags": "Защищённые: {{flags}}",
      "failed": "Проверка не удалась"
    },
    "placeholders": {
      "worktreeName": "worktree-name"
    }
  },
  "processes": {
    "ago": "{{time}} назад",
    "stoppedAgo": "остановлен {{time}} назад",
    "running": "Работает",
    "stopped": "Остановлен",
    "stopProcess": "Остановить процесс (SIGTERM)",
    "kill": "Убить",
    "openInBrowser": "Открыть в браузере",
    "open": "Открыть",
    "pid": "PID{{pid}}",
    "title": "Процессы CLI"
  },
  "taskActivity": {
    "loadingDetails": "Загрузка деталей активности...",
    "contextUnavailable": "Детальный transcript-контекст для этой активности больше недоступен.",
    "loading": "Загрузка активности задачи...",
    "lowSignalOnly": "Ключевая активность задачи пока не найдена. Низкоуровневые детали выполнения доступны ниже в Task Log Stream.",
    "empty": "Явная активность задачи пока не найдена в доступных transcript. Более старые или эвристические логи сессий могут быть доступны ниже в Execution Sessions.",
    "title": "Активность задачи",
    "description": "Ключевая runtime-активность, связанная с задачей через transcript metadata."
  },
  "sendMessage": {
    "title": "Отправить сообщение",
    "description": "Отправить прямое сообщение участнику команды.",
    "recipientLabel": "Получатель",
    "selectMemberPlaceholder": "Выберите участника...",
    "messageLabel": "Сообщение",
    "placeholder": "Напишите сообщение... (Enter для отправки)",
    "send": "Отправить",
    "sending": "Отправка...",
    "charsLeft": "осталось символов: {{count}}",
    "saved": "Сохранено",
    "attachments": {
      "teamOnlineRequired": "Команда должна быть онлайн, чтобы прикреплять файлы",
      "recipientUnsupported": "Файлы можно отправлять лиду команды или участникам OpenCode",
      "openCodeOnlineRequired": "Команда должна быть онлайн, чтобы прикреплять файлы для участников OpenCode",
      "disabledHint": "Файлы поддерживаются для онлайн-лида команды и онлайн-участников OpenCode. Удалите вложения или смените получателя.",
      "attachFiles": "Прикрепить файлы (вставка или drag & drop)",
      "unavailable": "Вложения недоступны"
    },
    "quote": {
      "remove": "Удалить цитату",
      "replyingTo": "Ответ для"
    }
  },
  "taskComments": {
    "cancelReply": "Отменить ответ",
    "replyingTo": "Ответ для",
    "placeholder": "Добавьте комментарий... (Enter для отправки)",
    "attachFile": "Прикрепить файл (или вставить)",
    "voiceToText": "Голос в текст",
    "comment": "Комментарий",
    "charsLeft": "осталось символов: {{count}}",
    "saved": "Сохранено",
    "awaitingReplyFrom": "Ожидается ответ от",
    "or": "или"
  },
  "taskAttachments": {
    "dropImageHere": "Перетащите изображение сюда",
    "attachImage": "Прикрепить изображение",
    "pasteOrDragDrop": "или вставьте / перетащите",
    "fromOriginalMessage": "Из исходного сообщения",
    "dropFilesHere": "Перетащите файлы сюда",
    "loading": "Загрузка вложений..."
  },
  "permissions": {
    "autoApproveAllTools": "Автоодобрение всех инструментов",
    "autonomousModeDescription": "Автономный режим: инструменты команды выполняются без подтверждения. Будьте осторожны с недоверенным кодом.",
    "manualModeDescription": "Ручной режим: вы будете одобрять или отклонять каждый вызов инструмента в реальном времени."
  },
  "memberLogStream": {
    "tabs": {
      "execution": "Выполнение",
      "process": "Процесс"
    },
    "filters": {
      "all": "Все"
    },
    "logs": {
      "title": "Логи",
      "loading": "Загрузка потока логов участника...",
      "emptyTitle": "Для этого участника пока не найдено записей потока логов.",
      "emptyDescription": "Транскрипт участника и runtime-логи появятся здесь, когда будут доступны."
    }
  },
  "reviewDialog": {
    "placeholder": "Опишите, что нужно изменить... (Enter для отправки)",
    "submit": "Отправить",
    "charsLeft": "осталось символов: {{count}}",
    "saved": "Сохранено",
    "title": "Запросить изменения"
  },
  "dialogs": {
    "actions": {
      "openDashboard": "Открыть дашборд",
      "openTeam": "Открыть команду",
      "cancel": "Отмена"
    },
    "membersJson": {
      "hide": "Скрыть JSON"
    },
    "optional": {
      "badge": "Опционально"
    }
  },
  "runningTeams": {
    "title": "Активные команды",
    "status": {
      "active": "Активна",
      "provisioning": "Запускается",
      "idle": "Работает"
    },
    "noProject": "Без проекта"
  },
  "layout": {
    "maxPanesReached": "Достигнут максимум панелей: {{count}}"
  },
  "codexReconnect": {
    "description": "Сессия Codex выглядит устаревшей. Переподключитесь, чтобы продолжить.",
    "useCode": "Использовать код",
    "generating": "Генерируется...",
    "openLogin": "Открыть вход",
    "generateLink": "Создать ссылку"
  },
  "effortLevel": {
    "label": "Уровень усилий (опционально)",
    "maxDescription": "Max даёт модели больше всего времени на рассуждение для сложных задач."
  },
  "contextLimit": {
    "limitTo200k": "Ограничить контекст до 200K токенов",
    "always200k": "(для этой модели всегда 200K)",
    "tooltipContent": "Ограничивает запуск окном контекста 200K токенов, когда это поддерживается.",
    "tooltipTitle": "Лимит контекста"
  },
  "roleSelect": {
    "noRole": "Без роли",
    "customRole": "Своя роль...",
    "searchPlaceholder": "Поиск ролей...",
    "empty": "Роли не найдены.",
    "reservedRole": "Эта роль зарезервирована",
    "emptyCustomRole": "Роль не может быть пустой"
  }
}
