name: Update crowdin sources

on:
  workflow_dispatch:
  push:
    branches: 
      - main

jobs:
  install-dependencies:
    uses: ./.github/workflows/dependencies.yml
    with:
      node_version: '22.x'
      with-front-dependencies-installation: true
      with-build_mails: true

  synchronize-with-crowdin:
    needs: install-dependencies
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4
      # Backend i18n
      - name: Install Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.13.3"
          cache: "pip"
      - name: Upgrade pip and setuptools
        run: pip install --upgrade pip setuptools
      - name: Install development dependencies
        run: pip install --user .
        working-directory: src/backend
      - name: Restore the mail templates
        uses: actions/cache@v4
        id: mail-templates
        with:
          path: "src/backend/core/templates/mail"
          key: mail-templates-${{ hashFiles('src/mail/mjml') }}
          fail-on-cache-miss: true
      - name: Install gettext
        run: |
          sudo apt-get update
          sudo apt-get install -y gettext pandoc
      - name: generate pot files
        working-directory: src/backend
        run: |
          DJANGO_CONFIGURATION=Build python manage.py makemessages -a --keep-pot
      # frontend i18n
      - name: Restore the frontend cache
        uses: actions/cache@v4
        with:
          path: "src/frontend/**/node_modules"
          key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }}
          fail-on-cache-miss: true
      - name: generate source translation file
        working-directory: src/frontend
        run: yarn i18n:extract
      # crowdin workflow
      - name: crowdin action
        uses: crowdin/github-action@v2
        with:
          config: crowdin/config.yml
          upload_sources: true
          upload_translations: false
          download_translations: false
          create_pull_request: false
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # A numeric ID, found at https://crowdin.com/project/<projectName>/tools/api
          CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}

          # Visit https://crowdin.com/settings#api-key to create this token
          CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

          CROWDIN_BASE_PATH: "../src/"
