Files
Senko-san 885fa4c273 fix
2026-06-14 23:42:39 +03:00

154 lines
8.4 KiB
Bash

# English strings. Each entry sets MSG[<key>]. Loaded by lib/i18n.sh.
# Keep keys in sync with i18n/ru.sh.
MSG[yes]="yes"
MSG[no]="no"
MSG[default_label]="default"
MSG[invalid_input]="Invalid input, please try again."
MSG[aborted]="Aborted."
MSG[enter_to_keep]="(Enter to keep default)"
# -- preflight -------------------------------------------------------------
MSG[err_need_docker]="Docker is not installed or not on PATH. See https://docs.docker.com/get-docker/"
MSG[err_docker_daemon]="The Docker daemon is not reachable. Is Docker running?"
MSG[err_need_compose]="Docker Compose v2 is required ('docker compose'). Update Docker Desktop or install the compose plugin."
MSG[err_need_openssl]="openssl is required to generate secrets."
MSG[preflight_ok]="Preflight checks passed."
MSG[port_in_use]="Port %s looks busy. Choose another or stop whatever is using it."
# -- locale / welcome ------------------------------------------------------
MSG[choose_locale]="Choose language / Выберите язык"
MSG[welcome_title]="MCMA installer"
MSG[welcome_body]="This wizard will ask a few questions, generate a .env.deploy and docker-compose.yml, pull the images, run database migrations, create the first admin and verify everything is healthy. Secrets are generated for you — nothing secret is printed. Press Ctrl+C any time to abort cleanly."
# -- existing install ------------------------------------------------------
MSG[existing_found]="An existing installation was found (.env.deploy). What would you like to do?"
MSG[menu_update_images]="Update images (pull + restart, keep config)"
MSG[menu_reconfigure]="Reconfigure (back up current config, run the wizard again)"
MSG[menu_cancel]="Cancel"
MSG[backup_made]="Backed up current config to %s"
# -- services --------------------------------------------------------------
MSG[step_services]="Which services do you want to run?"
MSG[svc_backend]="mcma-backend — core app + sync node + worker (required)"
MSG[svc_webui]="mcma-webui — web interface"
MSG[backend_required]="The backend is required and cannot be disabled."
# -- image tag -------------------------------------------------------------
MSG[step_tag]="Which image tag should be deployed?"
MSG[tag_latest]="latest — always the newest build (may occasionally break)"
MSG[tag_custom]="Enter a specific tag (e.g. a release version)"
MSG[tag_prompt]="Image tag"
# -- database --------------------------------------------------------------
MSG[step_db]="Database"
MSG[db_embedded]="Use the built-in Postgres (recommended)"
MSG[db_external]="Connect to an external Postgres"
MSG[db_host]="Postgres host"
MSG[db_port]="Postgres port"
MSG[db_name]="Database name"
MSG[db_user]="Database user"
MSG[db_pass]="Database password"
# -- redis -----------------------------------------------------------------
MSG[step_redis]="Redis"
MSG[redis_embedded]="Use the built-in Redis (recommended)"
MSG[redis_external]="Connect to an external Redis"
MSG[redis_url_prompt]="Redis URL (redis://host:port/db)"
# -- storage ---------------------------------------------------------------
MSG[step_storage]="Where should media files be stored?"
MSG[storage_local]="Local directory on the host (recommended)"
MSG[storage_s3]="S3-compatible object storage"
MSG[storage_path_prompt]="Host directory for media"
MSG[s3_choice]="S3 storage"
MSG[s3_embedded]="Use built-in MinIO"
MSG[s3_external]="Connect to an external S3 endpoint"
MSG[s3_endpoint]="S3 endpoint URL (https://...)"
MSG[s3_bucket]="S3 bucket name"
MSG[s3_region]="S3 region (blank if not applicable)"
MSG[s3_key]="S3 access key"
MSG[s3_secret]="S3 secret key"
# -- network ---------------------------------------------------------------
MSG[step_network]="Network & access"
MSG[proxy_note]="The web UI and API must share one origin. The bundled Caddy proxy does that for you as a single entrypoint."
MSG[net_caddy_http]="Bundled reverse proxy (Caddy), plain HTTP on a port — recommended"
MSG[net_caddy_https]="Bundled reverse proxy (Caddy), automatic HTTPS for a domain"
MSG[net_direct]="No bundled proxy — publish ports / I run my own proxy"
MSG[direct_cors_warn]="Without the bundled proxy the web UI and API must be same-origin: the backend sends no CORS headers, so a cross-origin API URL will be blocked by the browser. Use '/api/v1' only if your own proxy serves both on one origin."
MSG[domain_prompt]="Domain name (e.g. music.example.com)"
MSG[acme_email_prompt]="Email for Let's Encrypt (optional, for expiry notices)"
MSG[http_port_prompt]="HTTP port to publish"
MSG[api_port_prompt]="Backend API port to publish"
MSG[webui_port_prompt]="Web UI port to publish"
MSG[public_api_prompt]="Browser-facing API base URL"
# -- admin -----------------------------------------------------------------
MSG[step_admin]="First administrator"
MSG[admin_q]="Create the first admin user now?"
MSG[admin_user]="Admin username"
MSG[admin_pass]="Admin password (min 8 chars)"
MSG[admin_pass_confirm]="Confirm admin password"
MSG[pass_mismatch]="Passwords do not match."
MSG[pass_too_short]="Password must be at least 8 characters."
MSG[admin_skip_note]="You can create an admin later with: make logs (see README)."
# -- ml --------------------------------------------------------------------
MSG[step_ml]="Optional ML service"
MSG[ml_prompt]="ML service URL (leave blank — backend degrades gracefully)"
# -- enrichment / acoustid -------------------------------------------------
MSG[step_enrichment]="Metadata enrichment (optional)"
MSG[enrichment_note]="Imported files are auto-tagged from their embedded tags. Add an AcoustID key to also identify untagged files by audio fingerprint (free: https://acoustid.org/new-application)."
MSG[acoustid_prompt]="AcoustID API key (leave blank to use embedded tags only)"
MSG[musicbrainz_note]="MusicBrainz/AcoustID require a contact email in their User-Agent or they may throttle requests."
MSG[musicbrainz_email_prompt]="Contact email for MusicBrainz/AcoustID (leave blank to use the project's default)"
# -- youtube source --------------------------------------------------------
MSG[step_youtube]="YouTube Music (search + download)"
MSG[youtube_note]="Lets users search YouTube Music and download tracks into the library (via yt-dlp). Search and most downloads work with no setup."
MSG[youtube_q]="Enable the YouTube Music source?"
MSG[youtube_cookies_note]="Optional: a browser cookies file (Netscape format) lets yt-dlp fetch age/region-restricted items. The folder below is mounted into the backend; drop your cookies.txt in it any time (leave default if unsure)."
MSG[youtube_cookies_prompt]="Host folder to mount for the cookies file"
MSG[summary_youtube]="YouTube"
MSG[done_youtube_title]="YouTube downloads are enabled."
MSG[done_youtube_cookies]="For restricted items, place an exported cookies.txt in: %s"
# -- summary / run ---------------------------------------------------------
MSG[summary_title]="Summary (secrets hidden)"
MSG[summary_services]="Services"
MSG[summary_tag]="Image tag"
MSG[summary_db]="Database"
MSG[summary_redis]="Redis"
MSG[summary_storage]="Storage"
MSG[summary_access]="Access"
MSG[confirm_start]="Generate config and start now?"
MSG[embedded]="built-in"
MSG[external]="external"
MSG[enabled]="enabled"
MSG[disabled]="disabled"
MSG[pull_images]="Pulling images (%s)..."
MSG[pull_hint]="If pulls fail with 'unauthorized', run 'docker login git.ollyhearn.ru' first (private registry)."
MSG[starting_deps]="Starting backing services..."
MSG[waiting_health]="Waiting for %s to become healthy..."
MSG[running_migrations]="Running database migrations..."
MSG[creating_admin]="Creating the first admin..."
MSG[starting_app]="Starting application services..."
MSG[checking_health]="Verifying the API is healthy..."
# -- done / errors ---------------------------------------------------------
MSG[done_title]="MCMA is up."
MSG[done_url]="Open"
MSG[done_config]="Config (keep private)"
MSG[done_admin_login]="Admin username"
MSG[done_commands]="Manage with: make status | make logs | make update | make down"
MSG[err_migrations_failed]="Migrations failed. The backend was NOT started over a broken database. Check 'make logs'."
MSG[err_health_timeout]="The API did not become healthy in time. Check 'make logs' and 'make status'."
MSG[hint_logs]="Run 'make logs' to see what went wrong."
MSG[no_config]="No installation found. Run 'make deploy' first."
MSG[clean_confirm]="Remove generated config files?"
MSG[clean_volumes_confirm]="Also DELETE all data volumes (database, media)? This is irreversible."
MSG[clean_done]="Cleaned up."