#!/bin/bash # # Start Translation Service (port 6006). # # Design: # - Run in isolated venv `.venv-translator` # - Load enabled translation capabilities at startup # - Local models should be downloaded ahead of time into configured model_dir # set -euo pipefail PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "${PROJECT_ROOT}" TRANSLATOR_VENV="${TRANSLATOR_VENV:-${PROJECT_ROOT}/.venv-translator}" PYTHON_BIN="${TRANSLATOR_VENV}/bin/python" if [[ ! -x "${PYTHON_BIN}" ]]; then echo "ERROR: translator venv not found: ${TRANSLATOR_VENV}" >&2 echo "Please run: ./scripts/setup_translator_venv.sh" >&2 exit 1 fi # shellcheck source=scripts/lib/load_env.sh source "${PROJECT_ROOT}/scripts/lib/load_env.sh" load_env_file "${PROJECT_ROOT}/.env" TRANSLATION_HOST="${TRANSLATION_HOST:-0.0.0.0}" TRANSLATION_PORT="${TRANSLATION_PORT:-6006}" DEFAULT_MODEL=$("${PYTHON_BIN}" -c "from config.services_config import get_translation_config; print(get_translation_config()['default_model'])") ENABLED_MODELS=$("${PYTHON_BIN}" -c "from config.services_config import get_translation_config; from translation.settings import get_enabled_translation_models; print(','.join(get_enabled_translation_models(get_translation_config())))") echo "========================================" echo "Starting Translation Service" echo "========================================" echo "Python: ${PYTHON_BIN}" echo "Host: ${TRANSLATION_HOST}" echo "Port: ${TRANSLATION_PORT}" echo "Default model: ${DEFAULT_MODEL}" echo "Enabled models: ${ENABLED_MODELS}" echo echo "Tips:" echo " - Use a single worker so local models are loaded once." echo " - Download local models first if you enable them in config." echo exec "${PYTHON_BIN}" -m uvicorn api.translator_app:app \ --host "${TRANSLATION_HOST}" \ --port "${TRANSLATION_PORT}" \ --workers 1