#!/bin/bash # Functions . /etc/pootle/bin/functions # Clean up tmp dir rm -rf /etc/pootle/tmp mkdir -p /etc/pootle/tmp /var/www/html/{patches,errors,anaconda} #========================================================== export CVS_RSH=ssh # Update/expand smeserver cvs cd /etc/pootle/cvs/smeserver for pkg in */sme7 anaconda/sme8 do make -C $pkg clean &> /dev/null done cvs update -dPA > /dev/null for pkg in */sme7 anaconda/sme8 do make -C $pkg prep &> /dev/null done # Update/expand smecontribs cvs cd /etc/pootle/cvs/smecontribs for pkg in */contribs7 do make -C $pkg clean &> /dev/null done cvs update -dPA > /dev/null for pkg in */contribs7 do make -C $pkg prep &> /dev/null done cd /etc/pootle/tmp #========================================================== # Take server down to prevent translation issues killall PootleServer #========================================================== # Update anaconda templates anacondatmpl > anaconda.pot diffmv anaconda.pot /etc/pootle/po/sme7bc/templates/anaconda.pot # Update console templates potempl $(find /etc/pootle/cvs/smeserver/e-smith-quota/ -type f -name adminQuotaSummary.tmpl) > adminQuotaSummary.tmpl.pot diffmv adminQuotaSummary.tmpl.pot /etc/pootle/po/sme7bc/templates/adminQuotaSummary.tmpl.pot potempl $(find /etc/pootle/cvs/smeserver/e-smith-backup/ -type f -name do_backup -o -regex '.*/crontab/backup') > backup.pot diffmv backup.pot /etc/pootle/po/sme7bc/templates/backup.pot potempl $(find /etc/pootle/cvs/smeserver/e-smith-manager/ -type f -name 25Copyright) > foot.tmpl.pot diffmv foot.tmpl.pot /etc/pootle/po/sme7bc/templates/foot.tmpl.pot potempl $(find /etc/pootle/cvs/smeserver/ -type f -regex '.*/e-?smith/console.*') > server-console.pot diffmv server-console.pot /etc/pootle/po/sme7bc/templates/server-console.pot potempl $(find /etc/pootle/cvs/smeserver/e-smith-quota/ -type f -name userOverQuota.tmpl) > userOverQuota.tmpl.pot diffmv userOverQuota.tmpl.pot /etc/pootle/po/sme7bc/templates/userOverQuota.tmpl.pot # Update panel templates for pkg in $(find /etc/pootle/cvs/smeserver/*/*7/*/root/etc/e-smith/locale/en-us/ -type f -print) do xmltempl $pkg "SME Panels" diffcp /etc/pootle/templates/$(basename $pkg).pot /etc/pootle/po/sme7bp/templates/$(basename $pkg).pot done # Update contrib panel templates for pkg in $(find /etc/pootle/cvs/smecontribs/*/*7/*/root/etc/e-smith/locale/en-us/ -type f -print) do xmltempl $pkg "Contrib Panels" diffcp /etc/pootle/templates/$(basename $pkg).pot /etc/pootle/po/sme7cp/templates/$(basename $pkg).pot done #========================================================== # Apply templates to languages for lang in $(ls -I templates /etc/pootle/po/sme* | grep '[[:alpha:]]$' | sort -u) do # Create error compendium to assist translators pocompendium -e errors-$lang.po -d /etc/pootle/po/sme*/$lang sed -i '0,/^$/d' errors-$lang.po chmod 644 errors-$lang.po diffmv errors-$lang.po /var/www/html/errors/errors-$lang.po # Create compendium to assist translations pocompendium -c /etc/pootle/tmp/compendium-$lang.po -d /etc/pootle/po/*/$lang # Use compendium to migrate each project to new template for proj in $(ls -d /etc/pootle/po/sme*/$lang | sed 's@.*/\([^/]\+\)/[^/]\+$@\1@') do mkdir -p /etc/pootle/tmp/$proj/$lang pomigrate2 -F -C=/etc/pootle/tmp/compendium-$lang.po -q --no-wrap --locale=$lang /etc/pootle/po/$proj/$lang /etc/pootle/tmp/$proj/$lang /etc/pootle/po/$proj/templates > /dev/null # Ensure language is correct sed -i "/msgid \"en-us\"/{N;s@msgstr \"[^\"]*\"@msgstr \"$lang\"@}" /etc/pootle/tmp/$proj/$lang/* # Generate translation memory for panels updatetm --progress none -c 4 -i /etc/pootle/tmp/$proj/$lang -t /etc/pootle/tmp/compendium-$lang.po -o /etc/pootle/tmp/$proj/$lang done done # Set package name/version in new po files sed -i 's@Project-Id-Version.*\\n@Project-Id-Version: SME Console\\n@' /etc/pootle/tmp/sme7bc/*/*.po sed -i 's@Project-Id-Version.*\\n@Project-Id-Version: SME Anadonda\\n@' /etc/pootle/tmp/sme7bc/*/anaconda.po sed -i 's@Project-Id-Version.*\\n@Project-Id-Version: SME Panels\\n@' /etc/pootle/tmp/sme7bp/*/*.po sed -i 's@Project-Id-Version.*\\n@Project-Id-Version: Contrib Panels\\n@' /etc/pootle/tmp/sme7cp/*/*.po # Move files that have changed for chk in $(find /etc/pootle/tmp/sme* -type f) do diffmv $chk $(echo $chk | sed 's@/tmp/@/po/@') done #========================================================== # Recalculate stats and restart server cd /etc/pootle PootleServer --refreshstats &> /dev/null nohup PootleServer --servertype threaded >> /var/log/pootle.log 2>&1 & #========================================================== cd /etc/pootle/tmp # Build diffs for languages for lang in $(ls /etc/pootle/po/sme7bp -I templates) do # Build anaconda files mkdir -p /var/www/html/anaconda/sme7/$lang/LC_MESSAGES anacondagen sme7 $lang > /var/www/html/anaconda/sme7/$lang/LC_MESSAGES/anaconda.mo [ -s /var/www/html/anaconda/sme7/$lang/LC_MESSAGES/anaconda.mo ] || rm -rf /var/www/html/anaconda/sme7/$lang mkdir -p /var/www/html/anaconda/sme8/$lang/LC_MESSAGES anacondagen sme8 $lang > /var/www/html/anaconda/sme8/$lang/LC_MESSAGES/anaconda.mo [ -s /var/www/html/anaconda/sme8/$lang/LC_MESSAGES/anaconda.mo ] || rm -rf /var/www/html/anaconda/sme8/$lang # Build console files pkgname=$(ls -d /etc/pootle/cvs/smeserver/smeserver-locale/*7/*/root | cut -d/ -f8) mkdir -p ${pkgname}.update/po/$lang for pkg in $(ls /etc/pootle/po/sme7bc/templates/ -I anaconda.pot | sed 's@\.pot@\.po@') do msgcat -F --no-wrap /etc/pootle/po/sme7bc/$lang/$pkg \ | grep -v 'Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|X-Generator' \ | sed '0,/msgid ""/{/^#/d};/^#,/d' \ > ${pkgname}.update/po/$lang/$pkg done done # Build translated xml files for pkg in $(ls /etc/pootle/po/sme7*p/templates/ | sed -n 's@\.pot@@p') do pkgname=$(find /etc/pootle/cvs/smecontribs/*/*7/*/root/etc/e-smith/locale/en-us -name $pkg | cut -d/ -f8) if [ -z "$pkgname" ] then if [ -z "$(find /etc/pootle/cvs/smeserver/*/*7/*/root/etc/e-smith/locale/en-us -name $pkg)" ] then echo -e "\n *** Can't find package for $pkg ***\n" continue fi pkgname=$(ls -d /etc/pootle/cvs/smeserver/smeserver-locale/*7/*/root | cut -d/ -f8) else mkdir -p ${pkgname}.update/$(localedir en-us $pkg) cat /etc/pootle/templates/$pkg.orig \ | perl -pe 's@_AMP_@&@g;s@_{_@<@g;s@_}_@>@g' \ > ${pkgname}.update/$(localedir en-us $pkg)/$pkg fi for lang in $(ls /etc/pootle/po/sme7bp -I templates) do mkdir -p ${pkgname}.update/$(localedir $lang $pkg) xmlgen /etc/pootle/po/sme7*p/$lang/${pkg}.po \ > ${pkgname}.update/$(localedir $lang $pkg)/$pkg done done # Build xml diffs for pkg in $(ls -d *.update | sed 's@.update$@@') do orig=/etc/pootle/cvs/sme*/*/*7/$pkg/root/etc/e-smith/locale rm /var/www/html/patches/$(echo $pkg | sed 's/-[^-]\+$//')-*-locale-*.patch diff -ruN $orig $pkg.update/root/etc/e-smith/locale \ | sed 's@^\(---\|+++\) [^ ]\+/\([^/]\+/root/.*\)@\1 \2@;/^diff -ruN/d' \ > /var/www/html/patches/$pkg-locale-$(date +%F).patch done # Build console diffs pkg=$(ls -d smeserver-locale-* | sed 's@.update$@@') orig=/etc/pootle/cvs/smeserver/smeserver-locale/*7/$pkg/po rm /var/www/html/patches/$(echo $pkg | sed 's/-[^-]\+$//')-*-locale-*.patch diff -ruN $orig $pkg.update/po \ | sed 's@^\(---\|+++\) [^ ]\+/\([^/]\+/po/.*\)@\1 \2@;/^diff -ruN/d' \ >> /var/www/html/patches/$pkg-locale-$(date +%F).patch ## cd /etc/pootle/tmp ## ## # Build diffs for languages ## rm -f /var/www/html/patches/smeserver-locale-all-*.patch /var/www/html/patches/contribs/* ## for lang in $(ls /etc/pootle/po/sme7bp -I templates) ## do ## # Remove previous patches ## rm -f /var/www/html/patches/smeserver-locale-$lang-*.patch ## ## # Build anaconda files ## mkdir -p /var/www/html/anaconda/sme7/$lang/LC_MESSAGES ## anacondagen sme7 $lang > /var/www/html/anaconda/sme7/$lang/LC_MESSAGES/anaconda.mo ## [ -s /var/www/html/anaconda/sme7/$lang/LC_MESSAGES/anaconda.mo ] || rm -rf /var/www/html/anaconda/sme7/$lang ## ## mkdir -p /var/www/html/anaconda/sme8/$lang/LC_MESSAGES ## anacondagen sme8 $lang > /var/www/html/anaconda/sme8/$lang/LC_MESSAGES/anaconda.mo ## [ -s /var/www/html/anaconda/sme8/$lang/LC_MESSAGES/anaconda.mo ] || rm -rf /var/www/html/anaconda/sme8/$lang ## ## # Build console diffs ## mkdir -p pootleupdate/po/$lang ## for pkg in $(ls /etc/pootle/po/sme7bc/templates/ -I anaconda.pot | sed 's@\.pot@\.po@') ## do ## msgcat -F --no-wrap /etc/pootle/po/sme7bc/$lang/$pkg \ ## | grep -v 'Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|X-Generator' \ ## | sed '0,/msgid ""/{/^#/d}' \ ## > pootleupdate/po/$lang/$pkg ## if [ -f /etc/pootle/cvs/smeserver/smeserver-locale/*/*/po/$lang/$pkg ] ## then ## diff -u /etc/pootle/cvs/smeserver/smeserver-locale/*/*/po/$lang/$pkg pootleupdate/po/$lang/$pkg \ ## | sed 's@/etc/pootle/cvs/smeserver/smeserver-locale/@@' \ ## >> /var/www/html/patches/smeserver-locale-$lang-$(date +%F).patch ## else ## diff -u /dev/null pootleupdate/po/$lang/$pkg >> /var/www/html/patches/smeserver-locale-$lang-$(date +%F).patch ## fi ## done ## ## # Build panel diffs ## mkdir -p pootleupdate/{$(localedir $lang general),$(localedir $lang userpassword),$(localedir $lang other)} ## for pkg in $(ls /etc/pootle/po/sme7bp/templates/ | sed 's@\.pot@@') ## do ## match=$(find /etc/pootle/cvs/smeserver/ -type f -regex ".*/e-smith/locale/$lang/.*/$pkg") ## xmlgen /etc/pootle/po/sme7bp/$lang/$pkg.po > pootleupdate/$(localedir $lang $pkg)/$pkg ## diff -u ${match:-/dev/null} pootleupdate/$(localedir $lang $pkg)/$pkg \ ## | sed 's@^\(---\|+++\) [^ ]\+/\([^/]\+/root/.*\)@\1 \2@' \ ## >> /var/www/html/patches/smeserver-locale-$lang-$(date +%F).patch ## done ## ## # Build contrib diffs ## for pkg in $(ls /etc/pootle/po/sme7cp/templates/ | sed 's@\.pot@@') ## do ## match=$(find /etc/pootle/cvs/smecontribs/ -type f -regex ".*/e-smith/locale/$lang/.*/$pkg") ## pkgname=$(find /etc/pootle/cvs/smecontribs/ -type f -regex ".*/e-smith/locale/en-us/.*/$pkg" | sed 's@.*/\([^/]\+\)/root/.*@\1@') ## if [ ! -z "$pkgname" ] ## then ## xmlgen /etc/pootle/po/sme7cp/$lang/$pkg.po > pootleupdate/$(localedir $lang $pkg)/$pkg ## diff -u ${match:-/dev/null} pootleupdate/$(localedir $lang $pkg)/$pkg \ ## | sed 's@^\(---\|+++\) [^ ]\+/\([^/]\+/root/.*\)@\1 \2@' \ ## >> /var/www/html/patches/contribs/$pkgname-locale-$(date +%F).patch ## fi ## done ## done ## cat /var/www/html/patches/smeserver-locale-*-$(date +%F).patch > /var/www/html/patches/smeserver-locale-all-$(date +%F).patch