Skip to content

Pull Translations from Transifex #11

Pull Translations from Transifex

Pull Translations from Transifex #11

name: Pull Translations from Transifex
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
permissions:
contents: write
jobs:
update-translation:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version: [ '3.15', '3.14', '3.13', '3.12', '3.11', '3.10' ]
steps:
- uses: styfle/cancel-workflow-action@main
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-python@master
with:
python-version: '3.12'
- name: Install Dependencies
run: |
set -euxo pipefail
sudo apt-get update
sudo apt-get install -y gettext curl tar
python -m pip install --upgrade pip
pip install requests cogapp polib transifex-python sphinx-intl blurb six
# Install tx deterministically with retries instead of piping installer script.
TX_URL="https://github.com/transifex/cli/releases/latest/download/tx-linux-amd64.tar.gz"
curl -fL --retry 5 --retry-delay 2 --retry-connrefused "$TX_URL" -o /tmp/tx.tar.gz
tar -xzf /tmp/tx.tar.gz -C /tmp
sudo install -m 0755 /tmp/tx /usr/local/bin/tx
command -v tx
tx --version
- uses: actions/checkout@master
with:
ref: ${{ matrix.version }}
fetch-depth: 0
- run: curl -fL -o transifex-util.py https://raw.githubusercontent.com/python-docs-translations/transifex-automations/master/sample-workflows/transifex-util.py
- run: chmod +x transifex-util.py
- name: Patch helper for cross-version Doc Makefile compatibility
run: |
python - <<'PY'
from pathlib import Path
p = Path("transifex-util.py")
old = '_call("make -C cpython/Doc/ gettext")'
new = '_call("make -C cpython/Doc/ venv")\n _call("make -C cpython/Doc/ JOBS=1 gettext || make -C cpython/Doc/ JOBS=1 build BUILDER=gettext")'
s = p.read_text()
if old not in s:
raise SystemExit("Expected pattern was not found in transifex-util.py")
p.write_text(s.replace(old, new))
PY
grep -n "JOBS=1" transifex-util.py
- run: ./transifex-util.py recreate_tx_config --language ru --project-slug python-newest --version ${{ matrix.version }}
env:
TX_TOKEN: ${{ secrets.TX_TOKEN }}
- run: ./transifex-util.py fetch --language ru --pull-options="--mode reviewed" --project-slug python-newest --version ${{ matrix.version }}
env:
TX_TOKEN: ${{ secrets.TX_TOKEN }}
- run: ./transifex-util.py delete_obsolete_files --language ru --project-slug python-newest --version ${{ matrix.version }}
- name: Set up Git
run: |
git config --local user.email github-actions@github.com
git config --local user.name "GitHub Action's update-translation job"
- run: git add -N . ':!transifex-util.py'
- name: Filter files
run: |
! git diff --cached -I'^"POT-Creation-Date: ' \
-I'^"Language-Team: ' \
-I'^# ' -I'^"Last-Translator: ' \
--exit-code \
&& echo "SIGNIFICANT_CHANGES=1" >> $GITHUB_ENV || exit 0
- run: git add . ':!transifex-util.py'
- run: git commit -m 'Update translation from Transifex'
if: env.SIGNIFICANT_CHANGES == '1'
- uses: ad-m/github-push-action@master
if: env.SIGNIFICANT_CHANGES == '1'
with:
branch: ${{ matrix.version }}
github_token: ${{ secrets.GITHUB_TOKEN }}