forked from zaclys/searxng
[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:
parent
7fa7177759
commit
900baf2eae
|
@ -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
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -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
47
manage
|
@ -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
|
||||||
|
|
|
@ -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
|
|
Loading…
Reference in New Issue