# Тексты интерфейса бота. Ключи читает app/texts.py; отсутствующий ключ — ошибка при старте. menu: commit: "📝 Коммит" status: "🩺 Статус" logs: "📜 Логи" alerts: "🚨 Алерты" members: "👥 Участники" back: "⬅️ Назад" cancel: "✖️ Отмена" placeholder: "Выберите раздел" start: welcome: |- Привет! Я tgit — git в телеграме. 📝 Коммит — изменить файлы и запушить 🩺 Статус — контейнеры и их health 📜 Логи — хвост, свой grep или вопрос агенту 🚨 Алерты — падения, перегрузка, список no_access: "Доступ к боту — только по приглашению. Попросите QR-код у администратора." invite_rejected: "Приглашение недействительно: истекло, уже использовано или ссылка неверная. Попросите новое у администратора." help: text: |- /menu — главное меню из любого места /help — эта справка Разделы открываются кнопками внизу. В любом шаге есть «⬅️ Назад» и «✖️ Отмена». section: commit: "📝 Коммит\n\nРаздел в разработке." logs: "📜 Логи\n\nРаздел в разработке." alerts: "🚨 Алерты\n\nРаздел в разработке." members: "👥 Участники\n\nРаздел в разработке." cancelled: "Отменено. Главное меню — кнопками внизу." members: title: "👥 Участники: {count}" line: "{icon} {name}{username} · с {joined} · был(а) {seen}" never: "—" invite: "➕ Пригласить" revoke: "🚫 {name}" confirm: "Отозвать доступ у {name}? Его черновик удалится, кнопки перестанут работать." confirm_yes: "Да, отозвать" confirm_no: "Нет" revoked: "Доступ отозван: {name}." not_revoked: "Нельзя отозвать: администратор или уже без доступа." invite_caption: |- Приглашение в tgit — отсканируйте QR или откройте ссылку: {link} Одноразовое, действует до {expires} UTC. commit: title: "📝 Коммит · /{path}" empty: "Папка пуста." page: "Стр. {page} из {pages}" up: "⬆️ Вверх" prev: "◀️" next: "▶️" dir_button: "📁 {name}" file_button: "📄 {name} · {size}" new_file: "➕ Новый файл" new_dir: "📁 Новая папка" file_card: |- 📄 /{path} Размер: {size} last_commit: |- Последний коммит: {sha} · {author} · {date} {subject} no_commits: "Коммитов по файлу нет." view: "👁 Показать" replace: "✏️ Заменить" delete: "🗑 Удалить" to_dir: "⬅️ К папке" soon: "Будет в следующей версии." unavailable: "Репозиторий загрузок недоступен, попробуйте через минуту." sent_as_file: "Файл большой или бинарный — отправил документом." ask_file_name: "Имя нового файла в /{dir} (латиница, цифры, «.», «_», «-»):" ask_dir_name: "Имя новой папки в /{dir}:" bad_name: "Недопустимое имя: латиница, цифры, «.», «_», «-», до 100 символов. Пришлите другое." exists: "Такое имя уже есть в этой папке. Пришлите другое." protected: "Это служебный путь репозитория — из бота его менять нельзя." ask_content: "Пришлите содержимое /{path} — текстом сообщения или файлом (до 100 КБ)." too_big: "Больше 100 КБ — не принимаю." binary: "Похоже на бинарный файл — принимаю только текст." encoding: "Файл не в кодировке UTF-8." syntax: "⚠️ Синтаксическая ошибка, строка {line}: {message}" fix: "✏️ Исправить" force: "Всё равно добавить" added: "🆕 /{path} — добавлен в черновик." modified: "✏️ /{path} — в черновике: +{added} −{removed}." deleted: "🗑 /{path} — в черновике на удаление." draft_button: "🧾 Черновик · {count}" draft_title: "🧾 Черновик · изменений: {count}" draft_empty: "Черновик пуст." unstage: "↩️ убрать {name}" draft_full: "В черновике уже 50 изменений — запушьте или уберите лишнее." in_draft_new: "В черновике: новый файл." in_draft_modified: "В черновике: изменён." in_draft_deleted: "В черновике: удалён." mark_new: "🆕 " mark_modified: "✏️ " mark_deleted: "🗑 " op_add: "A" op_modify: "M" op_delete: "D" message_button: "💬 Сообщение коммита" message_current: "💬 {message}" message_missing: "💬 Сообщение коммита не задано." ask_message: "Сообщение коммита: до 200 символов, первая строка — до 72." bad_message: "Сообщение: 1–200 символов, первая строка — до 72. Пришлите другое." push_button: "🚀 Push" commit_button: "🚀 Закоммитить · {count}" edit_message: "✏️ Изменить сообщение" push_confirm: |- Запушить в main? {summary} 💬 {message} push_go: "✅ Запушить" pushing: "⏳ Пушу…" pushed: "✅ Запушено: {sha} — {message}" ci_pending: "⏳ CI…" conflict: |- ⚠️ Пока вы готовили черновик, в main изменились те же файлы: {paths} Перезаписать их вашей версией? overwrite: "Перезаписать" push_empty: "В main уже всё так же — коммитить нечего. Черновик очищен." push_limit: "Лимит — 20 пушей в час. Попробуйте позже." push_failed: "Не удалось запушить: репозиторий недоступен. Черновик сохранён — попробуйте позже." status: title: "🩺 Статус · {count} конт. · {time} UTC" line: "{light} {name} · {state}" empty: "Контейнеров tgit не найдено." unavailable: "Docker недоступен, попробуйте через минуту." card: |- {light} {name} Сервис: {service} · образ: {image} Состояние: {state} · health: {health} Аптайм: {uptime} · рестартов: {restarts} CPU: {cpu} · RAM: {mem} из {limit} ({mem_pct}) Ревизия: {sha} · деплой: {deployed} none: "—" no_limit: "без лимита" check_button: "🩺 Запустить проверки" refresh: "🔄 Обновить" to_list: "⬅️ К списку" to_card: "⬅️ К контейнеру" checking: "🩺 Проверяю контейнеры…" report_title: "🩺 Проверки · без ошибок {ok} из {total} · {time} UTC" report_container: "{light} {name}" report_line: " {verdict} {title}{detail}" check_running: "запущен" check_health: "Docker health" check_restarts: "рестарты за 5 мин не растут" check_cpu: "CPU ниже порога" check_mem: "RAM ниже порога" check_log_errors: "нет ошибок в логе за 5 мин" check_http: "HTTP-проба" days: "д" hours: "ч" minutes: "мин" seconds: "с"