Update translations workflow for new `tx` client

This commit is contained in:
Adam Turner 2023-03-15 15:45:36 +00:00
parent 4d6aa53ae4
commit 57545d0789
3 changed files with 39 additions and 26 deletions

View File

@ -1,8 +1,9 @@
name: Sync translations on repository and transifex.com
name: Synchronise translations
on:
schedule:
- cron: "0 0 * * SUN"
# 22:38 GMT, every Sunday. Chosen to be a random time.
- cron: "38 22 * * SUN"
workflow_dispatch:
permissions:
@ -15,22 +16,25 @@ jobs:
steps:
- uses: actions/checkout@v3
with:
ref: 5.x
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9 # https://github.com/transifex/transifex-client/pull/330
python-version: 3
- name: Install transifex client
run: |
mkdir -p /tmp/tx_cli && cd $_
curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
shell: bash
- name: Install dependencies
run: pip install -U babel jinja2 transifex-client
- name: Install Sphinx
run: pip install .
run: pip install --upgrade babel jinja2
- name: Extract translations from source code
run: python utils/babel_runner.py extract
- name: Push translations to transifex.com
run: cd sphinx/locale && tx push -s --no-interactive --parallel
run: |
cd sphinx/locale
/tmp/tx_cli/tx push --source --use-git-timestamps --workers 10
env:
TX_TOKEN: "${{ secrets.TX_TOKEN }}"
TX_TOKEN: ${{ secrets.TX_TOKEN }}
pull:
permissions:
@ -41,28 +45,31 @@ jobs:
steps:
- uses: actions/checkout@v3
with:
ref: 5.x
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9 # https://github.com/transifex/transifex-client/pull/330
python-version: 3
- name: Install transifex client
run: |
mkdir -p /tmp/tx_cli && cd $_
curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
shell: bash
- name: Install dependencies
run: pip install -U babel jinja2 transifex-client
- name: Install Sphinx
run: pip install .
run: pip install --upgrade babel jinja2
- name: Extract translations from source code
run: python utils/babel_runner.py extract
- name: Pull translations to transifex.com
run: cd sphinx/locale && tx pull -a -f --no-interactive --parallel
- name: Pull translations from transifex.com
run: |
cd sphinx/locale
/tmp/tx_cli/tx pull --translations --all --force --use-git-timestamps --workers 10
env:
TX_TOKEN: "${{ secrets.TX_TOKEN }}"
TX_TOKEN: ${{ secrets.TX_TOKEN }}
- name: Compile message catalogs
run: python utils/babel_runner.py compile
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
with:
commit-message: "Update message catalogs"
commit-message: "[internationalisation] Update translations"
branch: bot/pull-translations
title: Update message catalogs
labels: i18n
title: [bot]: Update message catalogues
labels: "internals:internationalisation"

View File

@ -1,7 +1,7 @@
[main]
host = https://www.transifex.com
[sphinx-1.sphinx-pot]
[o:sphinx-doc:p:sphinx-1:r:sphinx-pot]
file_filter = <lang>/LC_MESSAGES/sphinx.po
source_file = sphinx.pot
source_lang = en

View File

@ -31,8 +31,6 @@ from babel.messages.pofile import read_po, write_po
from babel.util import pathmatch
from jinja2.ext import babel_extract as extract_jinja2
import sphinx
ROOT = os.path.realpath(os.path.join(os.path.abspath(__file__), "..", ".."))
TEX_DELIMITERS = {
'variable_start_string': '<%=',
@ -75,8 +73,16 @@ KEYWORDS = {**DEFAULT_KEYWORDS, '_': None, '__': None}
def run_extract():
"""Message extraction function."""
log = _get_logger()
with open('sphinx/__init__.py', encoding='utf-8') as f:
for line in f.read().splitlines():
if line.startswith('__version__ = '):
# remove prefix; strip whitespace; remove quotation marks
sphinx_version = line[14:].strip()[1:-1]
break
input_path = 'sphinx'
catalogue = Catalog(project='Sphinx', version=sphinx.__version__, charset='utf-8')
catalogue = Catalog(project='Sphinx', version=sphinx_version, charset='utf-8')
base = os.path.abspath(input_path)
for root, dirnames, filenames in os.walk(base):