#!/usr/bash strippo() { msgcat --sort-by-file --width 80 --to-code UTF-8 $1 \ | sed '/^"\(Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language\|Language-Team\|X-Generator\):/d;0,/^msgid/{/^#/d}' } podiff() { src=$1 dst=${2:-$(echo $1 | sed 's,/tmp/,/po/,')} if [ "${src%%.pot}" != "$src" -o "${src%%.po}" != "$src" ] then diff --unified --label "$src" <(strippo $src) --label "$dst" <(strippo $dst) elif [ "${src%%.tm}" != "$src" ] then diff --brief $src $dst > /dev/null else diff --unified $src $dst fi } diffmv() { if [ ! -z "$1" -a ! -z "$2" ] then if [ -f "$2" ] then if podiff "$2" "$1" then /bin/rm -f "$1" else /bin/mv -f "$1" "$2" fi else /bin/mv -f "$1" "$2" fi fi } diffcp() { if [ ! -z "$1" -a ! -z "$2" ] then if [ -f "$2" ] then if ! podiff "$2" "$1" then /bin/cp -a "$1" "$2" fi else /bin/cp -a "$1" "$2" fi fi } potempl() { xgettext --from-code UTF-8 -L perl -o - $@ \ | sed 's@charset=CHARSET@charset=UTF-8@;s@[^ ]\+/\([^/]\+\)/[^/]\+/root/@\1/root/@g;s@Id-Version.*\\n@Id-Version: SME Template\\n@' \ | sed '/Report-Msgid-Bugs-To/d;/POT-Creation-Date/d;/PO-Revision-Date/d;/Language-Team/d;/X-Generator/d;0,/^msgid/{/^#/d}' \ | msgcat -F -t UTF-8 - } xmltempl() { mkdir -p /var/lib/pootle/templates/$1/ root=$(echo $2 | sed 's@.*/root/@root/@') cat $2 \ | perl -pe 's@<@_{_@g;s@>@_}_@g;s@&@_AMP_@g;s@_{_(/?(?:lexicon|entry|base|trans).*?)_}_@<$1>@g' \ | sed '/<\\\?lexicon/p;0,/ /var/lib/pootle/tmp/$(basename $2).orig xml2po -m sme -e -o - /var/lib/pootle/tmp/$(basename $2).orig \ | sed "/(lexicon)/{N;N;N;d};s@[^ ]\+\(:[0-9]\+([^)]\+)\)@$1/$root\1@g" \ | tee >(cat - | sed '/^msgid/{p;s@msgid@msgstr@p;N;d}' \ | xml2po -m sme -p - /var/lib/pootle/tmp/$(basename $2).orig \ > /var/lib/pootle/tmp/$(basename $2) ) \ | perl -pe 's@_AMP_@&@g;s@_{_@<@g;s@_}_@>@g' \ | msgcat -F -t UTF-8 - \ | sed "/^\"POT-Creation-Date:/d;s@Id-Version.*\\\n@Id-Version: SME Template\\\n@" \ > /var/lib/pootle/tmp/$(basename $2).pot diffmv /var/lib/pootle/tmp/$(basename $2).orig /var/lib/pootle/templates/$1/$(basename $2).orig diffmv /var/lib/pootle/tmp/$(basename $2) /var/lib/pootle/templates/$1/$(basename $2) diffmv /var/lib/pootle/tmp/$(basename $2).pot /var/lib/pootle/templates/$1/$(basename $2).pot } anacondatmpl() { content="" if [[ "$1" == "sme8" ]];then content="/var/lib/pootle/cvs/smeserver/cdrom.image/$1/updates/*.py /var/lib/pootle/cvs/smeserver/cdrom.image/$1/*/installclasses/*.py" fi xgettext -L python \ -k=_ \ -k=N_ \ -o - \ $(sed -n "/\.py/s@^\([^ \t]\+\)[ \t]\+\([^/]\+\)\(/.*\)\?@/var/lib/pootle/cvs/smeserver/\2/$1/\2-*\3/\1@p" \ /var/lib/pootle/cvs/smeserver/cdrom.image/$1/updates/README.txt) \ $content \ 2> /dev/null \ | sed 's@charset=CHARSET@charset=UTF-8@;s@Id-Version.*\\n@Id-Version: SME Template\\n@' \ | sed 's@/var/lib/pootle/cvs/smeserver/[^/]\+/@@' \ | msgcat -u \ --use-first \ - \ <(sed 's@CHARSET@UTF-8@' /var/lib/pootle/cvs/smeserver/anaconda/$1/anaconda-*/po/anaconda.pot) \ <(sed 's@CHARSET@UTF-8@' /var/lib/pootle/cvs/smeserver/anaconda/$1/anaconda-*/po/anaconda.pot) \ | sed '/Report-Msgid-Bugs-To/d;/POT-Creation-Date/d;/PO-Revision-Date/d;/Last-Translator/d;/Language-Team/d;/X-Generator/d;0,/^msgid/{/^#/d}' \ | msgcat -F -t UTF-8 - } xmltrans() { if [ ! -f /var/lib/pootle/templates/$1/$(basename $2) ] then echo "Missing /var/lib/pootle/templates/$1/$(basename $2)" elif [ ! -f /var/lib/pootle/templates/$1/$(basename $2).pot ] then echo "Missing /var/lib/pootle/templates/$1/$(basename $2).pot" else #| iconv -f ISO-8859-1 -t UTF-8 \ #lang=$(echo $2 | sed 's@.*/locale/\([^/]\+\)/.*@\1@') cat $2 \ | perl -pe 's@<@_{_@g;s@>@_}_@g;s@&@_AMP_@g;s@_{_(/?(?:lexicon|entry|base|trans).*?)_}_@<$1>@g' \ | sed '/<\\\?lexicon/p;0,/@g' \ | sed "/(lexicon)/{N;N;N;d}" \ | msgcat -F -t UTF-8 - \ | msgmerge -q -F - /var/lib/pootle/templates/$1/$(basename $2).pot fi } xmlgen() { if [ ! -f /var/lib/pootle/templates/$1/$(basename $2 | sed 's@\.pot\?$@@') ] then echo "Missing /var/lib/pootle/templates/$1/$(basename $2 | sed 's@\.pot\?$@@')" 1>&2 else #lang=$(basename $(dirname $2)) msgcat -F $2 \ | perl -pe 's@<@_{_@g;s@>@_}_@g;s@&@_AMP_@g' \ | sed '/#,/d' | sed '1,/X-Generator/{;s,_{_,<,g;s,_}_,>,g;s,_AMP_,\&,g;}' \ | sed '/#,/d' \ | xml2po -m sme -p - /var/lib/pootle/templates/$1/$(basename $2 | sed 's@\.pot\?$@@') \ | sed '1d' \ | perl -pe 's@_AMP_@&@g;s@_{_@<@g;s@_}_@>@g' \ | perl -pe 's@(lexicon\s+lang[^"]+"[^"]+)_([^"]+)"@"$1-".lc($2)."\""@e' fi } anacondagen() { if [ -f /var/lib/pootle/cvs/smeserver/anaconda/$1/anaconda-*/po/$2.po ] then msgcat --use-first \ /var/lib/pootle/cvs/smeserver/anaconda/$1/anaconda-*/po/$2.po \ /var/lib/pootle/po/$1/$2/anaconda.po \ | msgfmt -f -o - - 2> /dev/null if [ $? -ne 0 ] then msgcat --use-first \ /var/lib/pootle/cvs/smeserver/anaconda/$1/anaconda-*/po/$2.po \ /var/lib/pootle/po/$1/$2/anaconda.po \ | msgfmt -o - - 2> /dev/null fi fi } localedir() { dir=$(echo $1 | perl -pe 's/_(.*)/-lc($1)/e') if [ "$2" == "general" ] then echo "root/etc/e-smith/locale/$dir/FormMagick" elif [ "$2" == "userpassword" ] then echo "root/etc/e-smith/locale/$dir/etc/e-smith/web/panels/password/cgi-bin" else echo "root/etc/e-smith/locale/$dir/etc/e-smith/web/functions" fi }