name: Update crowdin sources on: workflow_dispatch: push: branches: - main permissions: contents: read 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 # Backend i18n - name: Set up Python uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: python-version-file: "src/backend/pyproject.toml" - name: Install uv uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 - name: Install the project working-directory: src/backend run: uv sync --locked --all-extras - name: Restore the mail templates uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5 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 uv run python manage.py makemessages -a --keep-pot # frontend i18n - name: Restore the frontend cache uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5 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@8868a33591d21088edfc398968173a3b98d51706 # 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//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/"