# Adapted from python/python-docs-pt-br
# Original (replaced update.yml): https://github.com/python/python-docs-pt-br/blob/main/.github/workflows/sync.yml
name: Update translations
on:
workflow_dispatch:
schedule:
- cron: '40 23 * * *'
permissions:
contents: read
env:
CPYTHON_BRANCH: '3.15'
LANGUAGE: 'ja'
TX_CLI_VERSION: '1.6.17'
jobs:
update:
# Job to pull translation from Transifex platform, and commit & push changes
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check out ${{ github.repository }}
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ env.CPYTHON_BRANCH }}
- name: Check out CPython
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: python/cpython
persist-credentials: false
ref: ${{ env.CPYTHON_BRANCH }}
path: cpython
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ env.CPYTHON_BRANCH }}
allow-prereleases: true
cache: 'pip'
cache-dependency-path: '**/requirements*.txt'
- name: Install Transifex CLI
run: |
curl -fsSL https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash -s -- "v${TX_CLI_VERSION}"
working-directory: /usr/local/bin
- name: Install dependencies
run: |
sudo apt-get update -y && sudo apt-get install gettext -y
pip install --upgrade pip
pip install -r requirements.txt -r cpython/Doc/requirements.txt
- name: Test translation tooling
run: python -B -m unittest discover -s tests
- name: Update translations
run: |
sh scripts/update.sh
env:
TX_TOKEN: ${{ secrets.TX_TOKEN }}
LANGUAGE: ${{ env.LANGUAGE }}
- name: Wrap catalog message files
run: |
powrap --modified
- name: Ignore timestamp-only changes
run: python scripts/translations.py restore-timestamp-only .
- name: Commit and push changes
if: github.repository == 'python/python-docs-ja'
run: |
git config user.name github-actions
git config user.email github-actions@github.com
git status
git add -A
git diff-index --quiet HEAD || ( git commit -m "Update translations from Transifex" && git push )
merge:
# Merge translations previously updated into older branches to make sure
# older versions of Python Docs gets translated as well.
name: merge into ${{ matrix.branch }}
needs: [update]
strategy:
matrix:
branch: [ "3.14", "3.13" ]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check out source branch (${{ env.CPYTHON_BRANCH }})
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ env.CPYTHON_BRANCH }}
path: ${{ env.CPYTHON_BRANCH }}
persist-credentials: false
- name: Check out target branch (${{ matrix.branch }})
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ matrix.branch }}
path: ${{ matrix.branch }}
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ env.CPYTHON_BRANCH }}
allow-prereleases: true
cache: 'pip'
cache-dependency-path: '**/requirements*.txt'
- name: Install dependencies
run: |
sudo apt-get update -y && sudo apt-get install gettext -y
pip install pomerge powrap
- name: Merge overwriting on stable release branch
run: |
python "${{ env.CPYTHON_BRANCH }}/scripts/translations.py" merge "${{ env.CPYTHON_BRANCH }}" "${{ matrix.branch }}"
- name: Wrap catalog message files
run: |
powrap --modified -C "${{ matrix.branch }}"
- name: Ignore timestamp-only changes
run: python "${{ env.CPYTHON_BRANCH }}/scripts/translations.py" restore-timestamp-only "${{ matrix.branch }}"
- name: Commit and push changes
if: github.repository == 'python/python-docs-ja'
run: |
cd "${{ matrix.branch }}"
git config user.name github-actions
git config user.email github-actions@github.com
git status
git add -A
git diff-index --quiet HEAD || ( git commit -m "Merge ${{ env.CPYTHON_BRANCH }} into ${{ matrix.branch }}" && git push )