start_translator.sh 1.79 KB
#!/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