#!/bin/bash method="$1" script="$2" domain="$3" languages="de" localedir="/usr/share/locale" usage() { echo "Usage: $0 [method] [shell script] {domain}" echo "Known methods:" echo " --create-pot - creates pot file from script" echo " --append-pot - appends current pot file with script" echo " --generate - generates pot and po files" echo " --compile - compiles mo files" echo echo "Examples:" echo " $0 --generate example.sh" echo " $0 --compile example.sh" echo } create_pot() { local pot install -d locale pot="locale/${domain}.pot" bash --dump-po-strings "${script}" > "${pot}" } append_pot() { local pot install -d locale pot="locale/${domain}.pot" bash --dump-po-strings "${script}" >> "${pot}" } generate_po() { local lang local po local pot pot="locale/${domain}.pot" if [ ! -f "${pot}" ] then echo "Error: ${pot} missing - run --create-pot or --append-pot" exit 1 fi for lang in ${languages} do po="locale/${lang}/${domain}.po" if [ -f "${po}" ] then echo "Updating lang '${lang}'" msgmerge --quiet --no-fuzzy-matching --no-wrap --update "${po}" "${pot}" else echo "Processing lang '${lang}'" install -d locale/"${lang}" install -m0644 "${pot}" "${po}" fi done } generate_mo() { local lang local dir local po for lang in ${languages} do echo "Compiling lang '${lang}'" po="locale/${lang}/${domain}.po" if [ ! -f "${po}" ] then echo "Error: ${po} missing - run --generate first" exit 1 fi dir="${DESTDIR}/${localedir}/${lang}/LC_MESSAGES" install -d "${dir}" msgfmt -o "${dir}"/"${domain}".mo "${po}" done } if [[ -z ${script} ]] then usage echo "Error: Script missing" exit 1 fi if [[ -z ${domain} ]] then domain="${script}" fi case ${method} in --create-pot) create_pot ;; --append-pot) append_pot ;; --generate) generate_po ;; --compile) generate_mo ;; *) usage ;; esac