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 |