Code

Added html and documentation when calling update-gosa
[gosa.git] / gosa-core / update-locale
1 #!/bin/bash
3 generate_po() {
4   ORIG=`pwd`
5   TEMPDIR="/tmp/gosa-locale"
6   TRUE=`which true`
8   echo
9   echo "Creating temporary directory..."
10   [ -d $TEMPDIR ] && rm -rf $TEMPDIR
11   mkdir $TEMPDIR
13   echo "Creating copy of GOsa..."
14   tar c . | tar x -C $TEMPDIR
16   echo "Converting .tpl files..."
17   pushd . &> /dev/null
18   cd $TEMPDIR
20   for template in $(find . -name '*.tpl'); do
21     echo "* converting .tpl files: $(basename $template)"
22     sed -e 's/{t}/<?php $t= _("/g;s!{/t}!");?>!g' $template > $template.new
23     mv $template.new $template
24   done
26   for class in $(find . -name 'class_*.inc'); do
27     echo "* converting class_*.inc files: $(basename $class)"
28     sed -e 's/\($pl[DH][^=]*\)= *"\([^"]*\)";$/\1= _("\2");/g' $class > $class.new
29     mv $class.new $class
30   done
32   echo "Extracting languages..."
33   [ -f locale/${l_path}messages.po ] && rm locale/${l_path}messages.po
34   find . -name '*.[ctpi][ophn][nlpc]' | xgettext -f - --keyword=must -d Domain -L PHP -n -o locale/${l_path}messages.po
36   echo "Merging po files with existing ones"
37   error=0
38   for f in locale/${l_path}??/LC_MESSAGES; do
39     [[ "$f" == "locale/${l_path}??/LC_MESSAGES" ]] && break
40     echo -n "* merging $f/messages.po: "
41     [ -f $f/messages.po ] && msgmerge $f/messages.po locale/${l_path}messages.po --output-file=$f/messages.po.new &> /dev/null
43     # Do an extra check for dummy dir 'locale/en/LC_MESSAGES'
44     if [ $? -ne 0 ]; then
45       [ "$f" == "locale/${l_path}en/LC_MESSAGES" ] && $TRUE
46     fi
48     if [ $? -eq 0 ]; then
49       echo "done";
50     else
51       echo "failed";
52       error=1
53     fi
55   done
57   echo "Copying new po files, making backups..."
58   find locale/${l_path} -name messages.po | while read f; do
60     if [ -f $ORIG/$f ]; then
61       mv $ORIG/$f $ORIG/$f.orig
62     fi
64     echo $f | grep -q "locale/${l_path}messages.po"
65     if [ $? -ne 0 ]; then
66       echo "* replaced $ORIG/$f"
67       cp $f.new $ORIG/$f
68     else
69       cp $f $ORIG/$f
70     fi
72   done
74   rm -rf $TEMPDIR
76   echo
77   if [ $error -eq 0 ]; then
78     if [ $ASSUME_Y -eq 1 ]; then
79       find $ORIG/ -type f -name 'messages.po.orig' -exec rm -f {} \;
80     else
81       read -p "Do you want to erase the message.po.orig files? (y/n)" -n1 ans
83       if [ "$ans" == "y" -o "$ans" == "Y" ]; then
84         find $ORIG/ -type f -name 'messages.po.orig' -exec rm -f {} \;
85       fi
86     fi
88   else
89     echo "There were errors during the transition. Please fix!"
90     exit 1
91   fi
93 cat <<-EOF
95 ---------------------------------------------------------------------
97 Now edit all files that have been replaced above (i.e. using kbabel
98 or gtranslator) and mail the changes to gosa@oss.gonicus.de to be 
99 included in the next release.
101 To see the changes you've made in GOsa, run "msgfmt messages.po" on
102 your freshly edited files and restart your apache after that. Set
103 the webbrowser to the language you've edited and go back to the
104 login screen.
106 ---------------------------------------------------------------------
108 EOF
110   popd &> /dev/null
114 # MAIN
116 GENERATE=0
117 ASSUME_Y=0
118 while getopts ":gyh" opt
119 do
120   case $opt in
121     g) GENERATE=1;
122        ;;
123     y) ASSUME_Y=1;
124        ;;
125     h|--help)
126        echo "Usage: $(basename $0) [-g] [-y] method"
127        echo "       method can be 'core' or 'plugin'"
128        echo "       -g extract strings from GOsa and generate po files"
129        echo "       -y assume yes"
130        exit 1
131        ;;
132   esac
133 done
134 shift $(($OPTIND - 1))
136 # Check method
137 if [ "$1" != "plugin" -a "$1" != "core" ]; then
138         echo "Need explicit method 'core' or 'plugin' to create locale."
139         exit 1
140 fi
141 if [ "$1" == "plugin" ]; then
142         l_path=""
143 else
144         l_path="core/"
145 fi
147 # Default to generate
148 if [ $GENERATE -eq 0 ]; then
149   GENERATE=1
150 fi
152 [ $GENERATE -eq 1 ] && generate_po
154 # vim:tabstop=2:expandtab:shiftwidth=2:syntax:ruler: