wok annotate tramys-server/stuff/tramys.cgi @ rev 17081

Add: tramys-server and tramys-client (yesterday version for history).
author Aleksej Bobylev <al.bobylev@gmail.com>
date Sun Aug 24 22:43:01 2014 +0300 (2014-08-24)
parents
children 24e0f312c73d
rev   line source
al@17081 1 #!/bin/sh
al@17081 2 # tramys - TRAnslate MY Slitaz. Server solution
al@17081 3 # Tool for managing translation files for SliTaz GNU/Linux
al@17081 4 # Aleksej Bobylev <al.bobylev@gmail.com>, 2014
al@17081 5
al@17081 6 # How to use: tramys.cgi?lang=$LANG
al@17081 7 # Pass packages list in HTTP_USER_AGENT header
al@17081 8 # (seems it have no restrictions for length and no encoded symbols ' ' and '+')
al@17081 9
al@17081 10 . /usr/bin/httpd_helper.sh
al@17081 11
al@17081 12 WORKING=$(mktemp -d)
al@17081 13 DATADIR=/home/lexeii/Public/tramys
al@17081 14
al@17081 15 # prepare list for search
al@17081 16 # original GNU gettext searches precisely in this order
al@17081 17 locales_list() {
al@17081 18 LL=$(echo $1 | sed 's|^\([^_.@]*\).*$|\1|')
al@17081 19 CC=$(echo $1 | sed -n '/_/s|^[^_]*\(_[^.@]*\).*$|\1|p')
al@17081 20 EE=$(echo $1 | sed -n '/./s|^[^\.]*\(\.[^@]*\).*$|\1|p')
al@17081 21 VV=$(echo $1 | sed -n '/@/s|^[^@]*\(@.*\)$|\1|p')
al@17081 22 ee=$(echo $EE | tr A-Z a-z | tr -cd a-z0-9); [ "$ee" ] && ee=.$ee
al@17081 23 [ "x$EE" == "x$ee" ] && ee=''
al@17081 24
al@17081 25 [ "$CC" -a "$EE" -a "$VV" ] && echo -n "$LL$CC$EE$VV "
al@17081 26 [ "$CC" -a "$ee" -a "$VV" ] && echo -n "$LL$CC$ee$VV "
al@17081 27 [ "$CC" -a "$VV" ] && echo -n "$LL$CC$VV "
al@17081 28 [ "$EE" -a "$VV" ] && echo -n "$LL$EE$VV "
al@17081 29 [ "$ee" -a "$VV" ] && echo -n "$LL$ee$VV "
al@17081 30 [ "$VV" ] && echo -n "$LL$VV "
al@17081 31 [ "$CC" -a "$EE" ] && echo -n "$LL$CC$EE "
al@17081 32 [ "$CC" -a "$ee" ] && echo -n "$LL$CC$ee "
al@17081 33 [ "$CC" ] && echo -n "$LL$CC "
al@17081 34 [ "$EE" ] && echo -n "$LL$EE "
al@17081 35 [ "$ee" ] && echo -n "$LL$ee "
al@17081 36 echo "$LL"
al@17081 37 }
al@17081 38 MY_LOCALES=$(locales_list $(GET lang))
al@17081 39
al@17081 40 # constants to use in lists
al@17081 41 US="/usr/share"
al@17081 42 LC="LC_MESSAGES"
al@17081 43 PY="/usr/lib/python2.7/site-packages"
al@17081 44 R="/usr/lib/R/library"
al@17081 45 RT="$R/translations/%/$LC"
al@17081 46
al@17081 47 for P in $HTTP_USER_AGENT; do
al@17081 48
al@17081 49 for list_type in mo qm; do
al@17081 50 IFS=$'\n'
al@17081 51 for line in $(grep -e "^$P " $DATADIR/$list_type.list); do
al@17081 52 locales=$(echo $line | cut -d' ' -f2)
al@17081 53 names=$(echo $line | cut -d' ' -f3)
al@17081 54 [ "x$names" == "x" ] && names=$P
al@17081 55 pathes=$(echo $line | cut -d' ' -f4)
al@17081 56 [ "x$pathes" == "x" ] && pathes="$US/locale/%/$LC"
al@17081 57
al@17081 58 IFS=' '
al@17081 59 for locale in $MY_LOCALES; do
al@17081 60 if $(echo " $locales " | grep -q " $locale "); then
al@17081 61
al@17081 62 for name in $names; do
al@17081 63 for path in $pathes; do
al@17081 64 eval "fullname=${path//%/$locale}/${name//%/$locale}.$list_type"
al@17081 65 mkdir -p $WORKING$(dirname $fullname)
al@17081 66 cp -pf /home/slitaz/cooking/chroot/home/slitaz/wok/$P/install$fullname \
al@17081 67 $WORKING$fullname
al@17081 68 done
al@17081 69 done
al@17081 70 break
al@17081 71 fi
al@17081 72 done
al@17081 73 done
al@17081 74 done
al@17081 75 done
al@17081 76
al@17081 77 busybox tar -czf $WORKING.tgz -C $WORKING .
al@17081 78 cat <<EOT
al@17081 79 Content-Type: application/x-compressed-tar
al@17081 80 Content-Length: $(stat -c %s $WORKING.tgz)
al@17081 81 Content-Disposition: attachment; filename=tramys.tgz
al@17081 82
al@17081 83 EOT
al@17081 84 cat $WORKING.tgz
al@17081 85
al@17081 86 rm -rf $WORKING
al@17081 87 rm -f $WORKING.tgz