[mod] manage - implement babel commands, drop update_translations.sh

In ./manage implement babel.*:

-  extract   : extract messages from source files and generate POT file
-  update    : update existing message catalogs from POT file
-  compile   : compile translation catalogs into binary MO files

Replace searx_extra/update/update_translations.sh by command:

- ci.babel.update

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
Markus Heiser 2021-08-01 10:17:14 +02:00 committed by Alexandre Flament
parent 7fa7177759
commit 900baf2eae
4 changed files with 44 additions and 37 deletions

View File

@ -111,9 +111,7 @@ jobs:
- name: Update transations - name: Update transations
id: update id: update
continue-on-error: true continue-on-error: true
run: | run: make V=1 ci.babel.update
pip install babel jinja2
searx_extra/update/update_translations.sh
- name: Open pull request - name: Open pull request
if: steps.update.outcome == 'success' if: steps.update.outcome == 'success'
uses: peter-evans/create-pull-request@v3 uses: peter-evans/create-pull-request@v3

View File

@ -77,7 +77,7 @@ test.shell:
# wrap ./manage script # wrap ./manage script
MANAGE += buildenv MANAGE += buildenv
MANAGE += babel.compile MANAGE += ci.babel.update babel.extract babel.update babel.compile
MANAGE += data.all data.languages data.useragents data.osm_keys_tags MANAGE += data.all data.languages data.useragents data.osm_keys_tags
MANAGE += docs.html docs.live docs.gh-pages docs.prebuild docs.clean MANAGE += docs.html docs.live docs.gh-pages docs.prebuild docs.clean
MANAGE += docker.build docker.push docker.buildx MANAGE += docker.build docker.push docker.buildx

47
manage
View File

@ -44,8 +44,10 @@ help() {
cat <<EOF cat <<EOF
buildenv: buildenv:
rebuild ./utils/brand.env rebuild ./utils/brand.env
babel.compile: babel.:
pybabel compile ./searx/translations extract : extract messages from source files and generate POT file
update : update existing message catalogs from POT file
compile : compile translation catalogs into binary MO files
data.: data.:
all : update searx/languages.py and ./data/* all : update searx/languages.py and ./data/*
languages : update searx/data/engines_languages.json & searx/languages.py languages : update searx/data/engines_languages.json & searx/languages.py
@ -120,12 +122,47 @@ buildenv() {
return "${PIPESTATUS[0]}" return "${PIPESTATUS[0]}"
} }
babel.compile() { babel.sha256sum() {
build_msg BABEL compile grep "msgid" "searx/translations/messages.pot" | sort | sha256sum | cut -f1 -d ' '
pyenv.cmd pybabel compile -d "${REPO_ROOT}/searx/translations" }
ci.babel.update() {
local sha_before
( set -e
sha_before="$(babel.sha256sum)"
babel.extract
if [ "$(babel.sha256sum)" = "${sha_before}" ]; then
build_msg BABEL 'no changes detected, exiting'
return 1
fi
babel.update
build_msg BABEL 'update done, edit .po files if required and run babel.compile'
)
dump_return $? dump_return $?
} }
babel.extract() {
build_msg BABEL 'extract messages from source files and generate POT file'
pyenv.cmd pybabel extract -F babel.cfg \
-o "searx/translations/messages.pot" \
"searx/"
dump_return $?
}
babel.update() {
build_msg BABEL 'update existing message catalogs from POT file'
pyenv.cmd pybabel update -N \
-i "searx/translations/messages.pot" \
-d "searx/translations"
dump_return $?
}
babel.compile() {
build_msg BABEL 'compile translation catalogs into binary MO files'
pyenv.cmd pybabel compile --statistics \
-d "searx/translations"
dump_return $?
}
data.all() { data.all() {
data.languages data.languages

View File

@ -1,28 +0,0 @@
#!/usr/bin/env bash
# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
# script to easily update translation language files
# add new language:
# pybabel init -i searx/translations/messages.pot -d searx/translations -l en
APP_DIR="searx"
TRANSLATIONS="${APP_DIR}/translations"
MESSAGES_POT="${TRANSLATIONS}/messages.pot"
get_sha256() {
echo "$(grep "msgid" "${MESSAGES_POT}" | sort | sha256sum | cut -f1 -d\ )"
}
EXISTING_SHA="$(get_sha256)"
pybabel extract -F babel.cfg -o "${MESSAGES_POT}" "${APP_DIR}"
if [ "$(get_sha256)" = "${EXISTING_SHA}" ]; then
echo '[!] no changes detected, exiting']
exit 1
fi
pybabel update -N -i "${MESSAGES_POT}" -d "${TRANSLATIONS}"
echo '[!] update done, edit .po files if required and run pybabel compile -d searx/translations/'
exit 0