#!/bin/sh # # Extract translations from Calamares source and send them # to Transifex. # # Run this at the top-level. # # Use the --no-tx option to do the extraction, but not the # pushing-to-Transifex part. This can be useful to check for # new strings or when testing the tools themselves. ### INITIAL SETUP # # This stuff needs to be done once; in a real CI environment where it # runs regularly in a container, the setup needs to be done when # creating the container. # # # cp ~/jenkins-master/.transifexrc ~ # Transifex user settings # cp ~/jenkins-master/.gitconfig ~ # Git config, user settings # cp -R ~/jenkins-master/.ssh ~ # SSH, presumably for github # # cd "$WORKSPACE" # git config --global http.sslVerify false test -f "CMakeLists.txt" || { echo "! Not at Calamares top-level" ; exit 1 ; } test -f ".tx/config" || { echo "! Not at Calamares top-level" ; exit 1 ; } test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; } if test "x$1" = "x--no-tx" ; then tx() { echo "Skipped tx $*" } fi ### CREATE TRANSLATIONS # # Use local tools (depending on type of source) to create translation # sources, then push to Transifex export QT_SELECT=5 # Don't pull branding translations in, # those are done separately. _srcdirs="src/calamares src/libcalamares src/libcalamaresui src/modules src/qml" lupdate $_srcdirs -ts -no-obsolete lang/calamares_en.ts tx push --source --no-interactive -r calamares.calamares-master tx push --source --no-interactive -r calamares.fdo ### PYTHON MODULES # # The Python tooling depends on the underlying distro to provide # gettext, and handles two cases: # # - python modules with their own lang/ subdir, for larger translations # - python modules without lang/, which use one shared catalog # PYGETTEXT="xgettext --keyword=_n:1,2 -L python" SHARED_PYTHON="" for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do FILES=$(find "$MODULE_DIR" -name "*.py" -a -type f) if test -n "$FILES" ; then MODULE_NAME=$(basename ${MODULE_DIR}) if [ -d ${MODULE_DIR}/lang ]; then ${PYGETTEXT} -p ${MODULE_DIR}/lang -d ${MODULE_NAME} -o ${MODULE_NAME}.pot ${MODULE_DIR}/*.py POTFILE="${MODULE_DIR}/lang/${MODULE_NAME}.pot" if [ -f "$POTFILE" ]; then sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' "$POTFILE" tx set -r calamares.${MODULE_NAME} --source -l en "$POTFILE" tx push --source --no-interactive -r calamares.${MODULE_NAME} fi else SHARED_PYTHON="$SHARED_PYTHON $FILES" fi fi done if test -n "$SHARED_PYTHON" ; then ${PYGETTEXT} -p lang -d python -o python.pot $SHARED_PYTHON POTFILE="lang/python.pot" sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' "$POTFILE" tx set -r calamares.python --source -l en "$POTFILE" tx push --source --no-interactive -r calamares.python fi