diff --git a/.github/workflows/crowdin_upload.yml b/.github/workflows/crowdin_upload.yml new file mode 100644 index 0000000..bdb545e --- /dev/null +++ b/.github/workflows/crowdin_upload.yml @@ -0,0 +1,76 @@ +name: Update crowdin sources + +on: + workflow_dispatch: + push: + branches: + - main + +jobs: + install-dependencies: + uses: ./.github/workflows/dependencies.yml + with: + node_version: '18.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@v3 + with: + python-version: "3.11" + - 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//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/"