Browse Source

[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>
Markus Heiser 3 years ago
parent
commit
900baf2eae
4 changed files with 44 additions and 37 deletions
  1. 1 3
      .github/workflows/integration.yml
  2. 1 1
      Makefile
  3. 42 5
      manage
  4. 0 28
      searx_extra/update/update_translations.sh

+ 1 - 3
.github/workflows/integration.yml

@@ -111,9 +111,7 @@ jobs:
     - name: Update transations
     - name: Update transations
       id: update
       id: update
       continue-on-error: true
       continue-on-error: true
-      run: |
-        pip install babel jinja2
-        searx_extra/update/update_translations.sh
+      run: make V=1 ci.babel.update
     - 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

+ 1 - 1
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

+ 42 - 5
manage

@@ -44,8 +44,10 @@ help() {
     cat <<EOF
     cat <<EOF
 buildenv:
 buildenv:
   rebuild ./utils/brand.env
   rebuild ./utils/brand.env
-babel.compile:
-  pybabel compile ./searx/translations
+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
 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() {
-    build_msg BABEL compile
-    pyenv.cmd pybabel compile -d "${REPO_ROOT}/searx/translations"
+babel.sha256sum() {
+    grep "msgid" "searx/translations/messages.pot" | sort | sha256sum | cut -f1 -d ' '
+}
+
+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

+ 0 - 28
searx_extra/update/update_translations.sh

@@ -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