Skip to content

update-translations #1096

update-translations

update-translations #1096

Workflow file for this run

name: update-translations
on:
workflow_dispatch:
pull_request:
schedule:
- cron: "0 0 * * *" #runs at 00:00 UTC everyday
jobs:
update:
runs-on: ubuntu-latest
permissions:
contents: write # for git push; turn all other permissions 'read'
actions: write # to trigger GitHub Actions via dispatch
env:
SPHINXINTL_TRANSIFEX_ORGANIZATION_NAME: sphinx-doc
SPHINXINTL_TRANSIFEX_PROJECT_NAME: sphinx-doc
TX_TOKEN: ${{ secrets.TX_TOKEN }}
steps:
# 1. Set up environment
- uses: actions/checkout@v4
- name: Initialize and update submodule
run: |
git submodule update --init --remote
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: 3
cache: 'pip'
- name: Set up git config
run: |
git config --global user.email "sphinx-auto-update"
git config --global user.name "sphinx-auto-update"
- name: Install graphviz
run: sudo apt-get install graphviz
- name: Install dependencies
run: |
pip install -U pip setuptools
pip install -r ./requirements.txt
- name: Install Transifex CLI
working-directory: /usr/local/bin
run: |
curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
tx --version
# 2. Remove obsolete POT files from repository and obsolete resources from Transifex
- name: Generate templates from scratch
run: |
rm -rf ./locales/pot
./locales/generate_templates.sh
- name: Just print what would be locked and deleted of the resources in Transifex
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == 'sphinx-doc/sphinx-doc-translations' }}
run: locales/lock-translations.py locales/.tx/config -d
- name: Lock and delete obsolete resources in Transifex
if: github.event_name != 'pull_request'
run: locales/lock-translations.py locales/.tx/config
- name: Include obsolete catalog templates (pot files) for removal
run: |
deleted_files=$(git status -s | grep ^' D' | cut -d' ' -f3)
if [ -n "$deleted_files" ]; then git rm $deleted_files; fi
git checkout locales/
# 3. Update translation files
- name: Update translations
run: |
sh ./locales/generate_templates.sh
cat ./locales/.tx/config
sh ./locales/update.sh
- name: Include obsolete catalog messages (po files) for removal
run: |
deleted_files=$(git status -s | grep ^' D' | cut -d' ' -f3)
if [ -n "$deleted_files" ]; then git rm $deleted_files; fi
# 4. Commit and push changes
- name: After success
run: |
git add locales
git add sphinx
git diff-index --cached --quiet HEAD || git commit -vm "Update translations by GHA https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
- name: GitHub Push
if: github.event_name != 'pull_request'
run: git push
- name: Trigger translations testing
run: |
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/${{ github.repository }}/actions/workflows/test-translations.yml/dispatches \
-d '{"ref":"master"}'