This commit is contained in:
Senko-san
2026-06-08 12:49:45 +03:00
commit 1b251869c4
21 changed files with 1404 additions and 0 deletions
+135
View File
@@ -0,0 +1,135 @@
# Русские строки. Каждая запись задаёт MSG[<key>]. Загружается lib/i18n.sh.
# Ключи должны совпадать с i18n/en.sh.
MSG[yes]="да"
MSG[no]="нет"
MSG[default_label]="по умолчанию"
MSG[invalid_input]="Неверный ввод, попробуйте ещё раз."
MSG[aborted]="Прервано."
MSG[enter_to_keep]="(Enter — оставить по умолчанию)"
# -- preflight -------------------------------------------------------------
MSG[err_bash_version]="Требуется Bash 4+ (найден %s). Установите более новый bash."
MSG[err_need_docker]="Docker не установлен или не в PATH. См. https://docs.docker.com/get-docker/"
MSG[err_docker_daemon]="Демон Docker недоступен. Docker запущен?"
MSG[err_need_compose]="Требуется Docker Compose v2 ('docker compose'). Обновите Docker Desktop или установите плагин compose."
MSG[err_need_openssl]="Для генерации секретов требуется openssl."
MSG[preflight_ok]="Предварительные проверки пройдены."
MSG[port_in_use]="Порт %s, похоже, занят. Выберите другой или освободите его."
# -- locale / welcome ------------------------------------------------------
MSG[choose_locale]="Choose language / Выберите язык"
MSG[welcome_title]="Установщик MCMA"
MSG[welcome_body]="Мастер задаст несколько вопросов, создаст .env.deploy и docker-compose.yml, скачает образы, выполнит миграции БД, создаст первого администратора и проверит работоспособность. Секреты генерируются автоматически — ничего секретного не печатается. Ctrl+C в любой момент — чистый выход."
# -- existing install ------------------------------------------------------
MSG[existing_found]="Найдена существующая установка (.env.deploy). Что сделать?"
MSG[menu_update_images]="Обновить образы (pull + перезапуск, конфиг не трогаем)"
MSG[menu_reconfigure]="Перенастроить (бэкап конфига и запуск мастера заново)"
MSG[menu_cancel]="Отмена"
MSG[backup_made]="Текущий конфиг сохранён в %s"
# -- services --------------------------------------------------------------
MSG[step_services]="Какие сервисы запустить?"
MSG[svc_backend]="mcma-backend — ядро + синк-нода + worker (обязателен)"
MSG[svc_webui]="mcma-webui — веб-интерфейс"
MSG[backend_required]="Backend обязателен и не может быть отключён."
# -- image tag -------------------------------------------------------------
MSG[step_tag]="Какой тег образов развернуть?"
MSG[tag_latest]="latest — всегда свежее (может иногда ломаться)"
MSG[tag_custom]="Ввести конкретный тег (например, версию релиза)"
MSG[tag_prompt]="Тег образа"
# -- database --------------------------------------------------------------
MSG[step_db]="База данных"
MSG[db_embedded]="Использовать встроенный Postgres (рекомендуется)"
MSG[db_external]="Подключиться к внешнему Postgres"
MSG[db_host]="Хост Postgres"
MSG[db_port]="Порт Postgres"
MSG[db_name]="Имя базы"
MSG[db_user]="Пользователь базы"
MSG[db_pass]="Пароль базы"
# -- redis -----------------------------------------------------------------
MSG[step_redis]="Redis"
MSG[redis_embedded]="Использовать встроенный Redis (рекомендуется)"
MSG[redis_external]="Подключиться к внешнему Redis"
MSG[redis_url_prompt]="URL Redis (redis://host:port/db)"
# -- storage ---------------------------------------------------------------
MSG[step_storage]="Где хранить медиафайлы?"
MSG[storage_local]="Локальный каталог на хосте (рекомендуется)"
MSG[storage_s3]="S3-совместимое хранилище"
MSG[storage_path_prompt]="Каталог на хосте для медиа"
MSG[s3_choice]="Хранилище S3"
MSG[s3_embedded]="Использовать встроенный MinIO"
MSG[s3_external]="Подключиться к внешнему S3"
MSG[s3_endpoint]="URL эндпоинта S3 (https://...)"
MSG[s3_bucket]="Имя бакета S3"
MSG[s3_region]="Регион S3 (пусто, если не нужно)"
MSG[s3_key]="Access key S3"
MSG[s3_secret]="Secret key S3"
# -- network ---------------------------------------------------------------
MSG[step_network]="Сеть и доступ"
MSG[proxy_note]="Веб-интерфейс и API должны быть на одном origin. Встроенный прокси Caddy обеспечивает это как единая точка входа."
MSG[net_caddy_http]="Встроенный прокси (Caddy), обычный HTTP на порту — рекомендуется"
MSG[net_caddy_https]="Встроенный прокси (Caddy), авто-HTTPS для домена"
MSG[net_direct]="Без встроенного прокси — публикую порты / свой прокси"
MSG[direct_cors_warn]="Без встроенного прокси веб-интерфейс и API должны быть на одном origin: backend не отправляет CORS-заголовки, поэтому кросс-origin URL заблокирует браузер. Используйте '/api/v1', только если ваш прокси отдаёт оба на одном origin."
MSG[domain_prompt]="Доменное имя (например, music.example.com)"
MSG[acme_email_prompt]="Email для Let's Encrypt (необязательно, для уведомлений)"
MSG[http_port_prompt]="HTTP-порт для публикации"
MSG[api_port_prompt]="Порт API backend для публикации"
MSG[webui_port_prompt]="Порт веб-интерфейса для публикации"
MSG[public_api_prompt]="Базовый URL API для браузера"
# -- admin -----------------------------------------------------------------
MSG[step_admin]="Первый администратор"
MSG[admin_q]="Создать первого администратора сейчас?"
MSG[admin_user]="Логин администратора"
MSG[admin_pass]="Пароль администратора (мин. 8 символов)"
MSG[admin_pass_confirm]="Подтвердите пароль"
MSG[pass_mismatch]="Пароли не совпадают."
MSG[pass_too_short]="Пароль должен быть не короче 8 символов."
MSG[admin_skip_note]="Администратора можно создать позже (см. README)."
# -- ml --------------------------------------------------------------------
MSG[step_ml]="Опциональный ML-сервис"
MSG[ml_prompt]="URL ML-сервиса (оставьте пустым — backend деградирует штатно)"
# -- summary / run ---------------------------------------------------------
MSG[summary_title]="Сводка (секреты скрыты)"
MSG[summary_services]="Сервисы"
MSG[summary_tag]="Тег образа"
MSG[summary_db]="База данных"
MSG[summary_redis]="Redis"
MSG[summary_storage]="Хранилище"
MSG[summary_access]="Доступ"
MSG[confirm_start]="Сгенерировать конфиг и запустить сейчас?"
MSG[embedded]="встроенный"
MSG[external]="внешний"
MSG[pull_images]="Скачивание образов (%s)..."
MSG[pull_hint]="Если pull падает с 'unauthorized', выполните 'docker login git.ollyhearn.ru' (приватный регистри)."
MSG[starting_deps]="Запуск зависимостей..."
MSG[waiting_health]="Ожидание готовности %s..."
MSG[running_migrations]="Выполнение миграций БД..."
MSG[creating_admin]="Создание первого администратора..."
MSG[starting_app]="Запуск сервисов приложения..."
MSG[checking_health]="Проверка работоспособности API..."
# -- done / errors ---------------------------------------------------------
MSG[done_title]="MCMA запущен."
MSG[done_url]="Откройте"
MSG[done_config]="Конфиг (храните в секрете)"
MSG[done_admin_login]="Логин администратора"
MSG[done_commands]="Управление: make status | make logs | make update | make down"
MSG[err_migrations_failed]="Миграции не выполнились. Backend НЕ запущен поверх битой БД. Смотрите 'make logs'."
MSG[err_health_timeout]="API не стал healthy вовремя. Смотрите 'make logs' и 'make status'."
MSG[hint_logs]="Выполните 'make logs', чтобы увидеть причину."
MSG[no_config]="Установка не найдена. Сначала выполните 'make deploy'."
MSG[clean_confirm]="Удалить сгенерированные файлы конфигурации?"
MSG[clean_volumes_confirm]="Также УДАЛИТЬ все тома данных (база, медиа)? Это необратимо."
MSG[clean_done]="Очистка завершена."