diff --git a/.github/workflows/translations-pull.yml b/.github/workflows/translations-pull.yml new file mode 100644 index 000000000..3df9fdb85 --- /dev/null +++ b/.github/workflows/translations-pull.yml @@ -0,0 +1,55 @@ +# Pull down translations from Crowdin every two hours or when triggered manually. + +name: 'Pull translations' + +on: + workflow_dispatch: + workflow_call: + # Cron disabled until i18n PR is landed. + # schedule: + # - cron: '0 */2 * * *' # Every two hours. + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + pull_translations: + name: Pull translations + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - uses: ./.github/actions/node-install + + - name: Compile translations + id: compile_translations + run: npm run translate:compile -- -- --strict + continue-on-error: true + + - name: Pull translations from Crowdin + if: steps.compile_translations.outcome == 'failure' + uses: crowdin/github-action@v2 + with: + upload_sources: false + upload_translations: false + download_translations: true + export_only_approved: false + localization_branch_name: chore/translations + commit_message: 'chore: add translations' + pull_request_title: 'chore: add translations' + + env: + # A classic GitHub Personal Access Token with the 'repo' scope selected (the user should have write access to the repository). + GITHUB_TOKEN: ${{ secrets.GITHUB_CROWDIN_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 }}