X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Fupdate-locale;h=033ba84a3fcbb35167e3731820ff4aec61e171e7;hb=f4b565cc1472409fb3f1f3fc4f67612ef0ff41c9;hp=4d69d1553fcd3cc17a7ebbe73868f1131612e94d;hpb=47d9abbc98056723fcde3131a70713d6fd075d8d;p=gosa.git diff --git a/gosa-core/update-locale b/gosa-core/update-locale index 4d69d1553..033ba84a3 100755 --- a/gosa-core/update-locale +++ b/gosa-core/update-locale @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash generate_po() { ORIG=`pwd` @@ -29,23 +29,32 @@ generate_po() { mv $class.new $class done - echo "* converting strings from gosa.conf" - sed -e 's/headline="\([^"]*\)"//g;s/name="\([^"]*\)"//g' contrib/gosa.conf > contrib/gosa.conf.new - mv contrib/gosa.conf.new contrib/gosa.conf - echo "Extracting languages..." - rm locale/messages.po - (echo contrib/gosa.conf; find . -name '*.[ctpi][ophn][nlpc]') | xgettext -f - --keyword=must -d Domain -L PHP -n -o locale/messages.po + [ -f locale/${l_path}messages.po ] && rm locale/${l_path}messages.po + find . -name '*.[ctpi][ophn][nlpc]' | xgettext -f - --keyword=must -d Domain -L PHP -n -o locale/${l_path}messages.po echo "Merging po files with existing ones" error=0 - for f in locale/??/LC_MESSAGES; do + for f in locale/${l_path}??/LC_MESSAGES; do + [[ "$f" == "locale/${l_path}??/LC_MESSAGES" ]] && break echo -n "* merging $f/messages.po: " - [ -f $f/messages.po ] && msgmerge $f/messages.po locale/messages.po --output-file=$f/messages.po.new &> /dev/null + [ ! -f $f/messages.po ] && touch $f/messages.po + + # If we're in a plugin of a trunk checkout, we can use the gosa-all messages.po as a dictionary + DICT_FILE_ALL="$ORIG/../../gosa-all/gosa/${f/locale/locale/core}/messages.po" + DICT_FILE_CORE="$ORIG/../../gosa-core/${f/locale/locale/core}/messages.po" + DICT="" + [ -r $DICT_FILE_ALL ] && DICT="-C $DICT_FILE_ALL" + [ ${#DICT} -eq 0 ] && [ -r $DICT_FILE_CORE ] && DICT="-C $DICT_FILE_CORE" + msgmerge $DICT $f/messages.po locale/${l_path}messages.po --output-file=$f/messages.po.tmp &> /dev/null + + # Filter out duplicates + msguniq $f/messages.po.tmp --output-file=$f/messages.po.new &> /dev/null + rm $f/messages.po.tmp # Do an extra check for dummy dir 'locale/en/LC_MESSAGES' if [ $? -ne 0 ]; then - [ "$f" == "locale/en/LC_MESSAGES" ] && $TRUE + [ "$f" == "locale/${l_path}en/LC_MESSAGES" ] && $TRUE fi if [ $? -eq 0 ]; then @@ -58,15 +67,13 @@ generate_po() { done echo "Copying new po files, making backups..." - find . -name messages.po | while read f; do + find locale/${l_path} -name messages.po | while read f; do if [ -f $ORIG/$f ]; then mv $ORIG/$f $ORIG/$f.orig - else - continue fi - echo $f | grep -q "locale/messages.po" + echo $f | grep -q "locale/${l_path}messages.po" if [ $? -ne 0 ]; then echo "* replaced $ORIG/$f" cp $f.new $ORIG/$f @@ -115,44 +122,20 @@ EOF popd &> /dev/null } -compile_po() -{ - po='messages.po' - mo='messages.mo' - - echo "Compiling po files..." - for f in locale/??/LC_MESSAGES; do - - if [ -f $f/$po ]; then - echo "* compiling $f/$po" - msgfmt $f/$po -o $f/$mo - else - echo "! skipped $f/$po - does not exist" - error=1 - continue - fi - - done -} - # # MAIN # GENERATE=0 -COMPILE=0 ASSUME_Y=0 -while getopts ":cgyh" opt +while getopts ":gyh" opt do case $opt in - c) COMPILE=1 - ;; g) GENERATE=1; ;; y) ASSUME_Y=1; ;; h|--help) - echo "Usage: $(basename $0) [-c] [-g] [-y]" - echo " -c compile existing po files into mo files" + echo "Usage: $(basename $0) [-g] [-y]" echo " -g extract strings from GOsa and generate po files" echo " -y assume yes" exit 1 @@ -161,12 +144,18 @@ do done shift $(($OPTIND - 1)) +# If there's a plugin.dsc in ., then assume "plugin" +if [ -f plugin.dsc ]; then + l_path="" +else + l_path="core/" +fi + # Default to generate -if [ $GENERATE -eq 0 -a $COMPILE -eq 0 ]; then +if [ $GENERATE -eq 0 ]; then GENERATE=1 fi [ $GENERATE -eq 1 ] && generate_po -[ $COMPILE -eq 1 ] && compile_po # vim:tabstop=2:expandtab:shiftwidth=2:syntax:ruler: