|
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 |
|
- 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 . ':!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 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 }} |