#!/bin/bash set -e # abort if a command exits non-zero # update localization files from transifex and compile .po to .mo # .po files are updated according to minimum_perc in .tx/config, outdated files are not removed! # Then commit and push changes manually. # find source root upward from CWD while ! test -r .tx/config; do cd .. test "`pwd`" = "/" && echo "no source directory found" >&2 && exit done command -v pocompile >/dev/null 2>&1 || { echo >&2 "pocompile (translate-toolkit) is needed but not installed. Aborting."; exit 1; } command -v tx >/dev/null 2>&1 || { echo >&2 "tx (transifex-client) is needed but not installed. Aborting."; exit 1; } # check if working directory is clean to ensure we only commit localization changes if test 0 -ne `git status -s -uno |wc -l`; then echo "Warning: You have pending changes! Please make sure to only commit localization changes!" fi echo "pulling translations from transifex" # this updates existing languages and adds new languages tx pull -a echo "compiling localization files for Manager and Client" srcdir=`pwd` cd ${srcdir}/locale templates=("BOINC-Manager" "BOINC-Client" "BOINC-Setup" "BOINC-Web") for template_name in "${templates[@]}"; do for file in `find -name "${template_name}.po"`; do dir=`dirname $file` locale=`basename $dir` cd ${srcdir}/locale/${locale} # Compile the PO file into an MO file. pocompile ${template_name}.po ${template_name}.mo # Touch each file to adjust timestamps touch ${template_name}.po done cd ${srcdir}/locale done echo "running pofilter for BOINC-Manager.po" echo "Please check output in BOINC-Manager-pofilter.txt!" echo "" > BOINC-Manager-pofilter.txt for file in `find -name "BOINC-Manager.po"`; do dir=`dirname $file` locale=`basename $dir` echo $file >> BOINC-Manager-pofilter.txt pofilter --language ${locale} -t printf -t escapes -t numbers -t tabs --nofuzzy ${srcdir}/locale/${locale}/BOINC-Manager.po >> BOINC-Manager-pofilter.txt done cd ${srcdir} echo "Translations compiled successfully. Now some manual steps:" echo " 1. less BOINC-Manager-pofilter.txt # check output from pofilter and adjust translations then start this script again" echo " 2. git add -u # only update already tracked files (add new files when needed too)" echo " 3. git commit -m \"Locale: Update localization files [skip ci]\"" echo " 4. git push" exit 0