initial
This commit is contained in:
+135
@@ -0,0 +1,135 @@
|
||||
# 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_bash_version]="Bash 4+ is required (found %s). Install a newer bash."
|
||||
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)"
|
||||
|
||||
# -- 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[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."
|
||||
Reference in New Issue
Block a user