0x1949 Team - FAZEMRX - MANAGER
Edit File: po2debconf
#! /bin/sh # po2debconf - merge translations into Debconf templates file # Copyright (C) 2002-2005 Denis Barbier <barbier@debian.org> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # This script is part of po-debconf : ${PODEBCONF_LIB=/usr/share/intltool-debian} : ${PODEBCONF_ENCODINGS=/usr/share/po-debconf/encodings} # Prevent automatic conversion to UTF-8 by Perl unset LANGUAGE LANG LC_ALL LC_CTYPE # Default values dftencoding=utf8 dftformat=2 help= quiet=--quiet origfile= podir= outfile= encoding=$dftencoding format=$dftformat for option do if [ -n "$prev" ]; then eval "$prev=\$option" prev= shift continue fi optarg=`expr "x$option" : 'x[^=]*=\(.*\)'` case $option in -h | --h | --help ) help=1 shift ;; -v | --v | --verbose ) quiet= shift ;; -o | --o | --output ) prev=outfile shift ;; -o=* | --o=* | --output=* ) outfile=$optarg shift ;; --podir ) prev=podir shift ;; --podir=* ) podir=$optarg shift ;; -e | --e | --encoding ) prev=encoding shift ;; --e=* | --encoding=* ) encoding=$optarg shift ;; -E | --E | --alt-encoding ) encoding=popular shift ;; -u | --u | --utf8 ) # Obsolete encoding=utf8 shift ;; -n | --n | --no-utf8 ) # Obsoleted encoding=po shift ;; -O | --O | --old-format ) # Obsolete, use po/output file instead format=1 shift ;; -* ) echo "$0: unknown option: $option ...exiting" 1>&2 exit 1 ;; * ) break ;; esac done origfile=$1 fail=0 [ -n "$origfile" ] || fail=1 if [ "x$help" = x1 ] || [ "x$fail" = x1 ]; then cat <<EOT 1>&2 Usage: po2debconf [options] master Options: -h, --help display this help message -v, --verbose enable verbose mode -o, --output=FILE specify output file (Default: stdout) -e, --encoding=STRING convert encoding, STRING is chosen between po: no conversion utf8: convert to UTF-8 popular: change encoding according to file map found in PODEBCONF_ENCODINGS environment variable (Default, map is $PODEBCONF_ENCODINGS) traditional: obsolete, replaced by popular --podir=DIR specify PO output directory (Default: <master directory>/po) EOT exit $fail fi [ -f "$origfile" ] || { echo "ERROR: File $origfile does not exist ...exiting" 1>&2 exit 1 } utf8= case $encoding in po | PO ) encoding=po ;; pop* | POP* ) encoding=popular ;; trad* | TRAD* ) encoding=popular ;; utf8 | utf-8 | UTF8 | UTF-8 ) encoding=utf8 ;; * ) echo "ERROR: Wrong --encoding argument, must be po, popular or utf8 ...exiting" 1>&2 exit 1 ;; esac [ -n "$podir" ] || podir=`dirname $origfile`/po [ -d "$podir" ] || { echo "ERROR: Directory $podir does not exist ...exiting" 1>&2 exit 1 } # Override values when $podir/output file is found if [ -f "$podir/output" ]; then outputformat=`sed -e 1q "$podir/output" | awk '{printf "%s", $1}'` [ -n "$outputformat" ] && format=$outputformat outputencoding=`sed -e 1q "$podir/output" | awk '{printf "%s", $2}'` [ -n "$outputencoding" ] && encoding=$outputencoding fi # Test validity of $encoding and $format values case $encoding in po | popular | utf8 ) # Do nothing : ;; * ) # Invalid value, set default encoding echo "Warning:Invalid encoding: $encoding, set to '$dftencoding'" 1>&2 encoding=$dftencoding ;; esac case $format in 1 | 2 ) # Do nothing : ;; * ) # Invalid value, set default encoding echo "Warning:Invalid format: $format, set to '$dftformat'" 1>&2 format=$dftformat ;; esac [ "$encoding" = popular ] || format=2 [ "$encoding" = utf8 ] && utf8="-u" outdir= fake= is_tmp= tmpfile= cleanup() { rc=$? [ -n "$outdir" ] && [ -d "$outdir" ] && { rm -f "$outdir"/*.po rmdir "$outdir" } [ -n "$fake" ] && [ -L "$podir/$fake.po" ] && rm -f "$podir/$fake.po" [ -n "$is_tmp" ] && [ -f "$outfile" ] && rm -f "$outfile" [ -n "$tmpfile" ] && [ -f "$tmpfile" ] && rm -f "$tmpfile" exit $rc } trap 'cleanup' HUP INT QUIT BUS PIPE TERM if [ "$encoding" = popular ]; then [ -f "$PODEBCONF_ENCODINGS" ] || { echo "ERROR: File $PODEBCONF_ENCODINGS does not exist ...exiting" 1>&2 exit 1 } outdir=`mktemp -t -d po2debconf.XXXXXXXXXX` || { echo "ERROR: Unable to create temporary directory ...exiting" 1>&2 exit 1 } tmpfile=`mktemp -t po2debconf.XXXXXXXXXX` || { echo "ERROR: Unable to create temporary file ...exiting" 1>&2 exit 1 } for f in $podir/*.po do [ -f "$f" ] || continue l=`echo $f | sed -e 's/.*\///' -e 's/\.po$//'` encto=`grep "^$l[ ]" "$PODEBCONF_ENCODINGS" | sed -e "s/^$l[ ][ ]*//" -e 1q` if [ -n "$encto" ]; then [ -n "$quiet" ] || echo "Converting $f to $encto..." 1>&2 if msgconv -t "$encto" "$f" -o "$tmpfile" 2>/dev/null; then mv "$tmpfile" "$outdir/$l.po" else echo "Warning: msgconv failed when converting file $f to $encto ... file skipped" >&2 fi else echo "Warning: Unknown default encoding for $l, get it from $f" 1>&2 cat "$f" > "$outdir/$l.po" fi done podir=$outdir rm -f "$tmpfile" fi if [ "x$outfile" = 'x-' ] || [ -z "$outfile" ]; then outfile=`mktemp -t po2debconf.XXXXXXXXXX` || { echo "ERROR: Unable to create temporary file ...exiting" 1>&2 exit 1 } is_tmp=1 fi # Helps no.po -> nb.po transition if [ -r "$podir/no.po" ]; then if [ -r "$podir/nb.po" ]; then echo "Warning: Both no.po and nb.po files exist, please consider removing no.po" 1>&2 else echo "Warning: no.po is obsolete and should be renamed into nb.po" 1>&2 fi elif [ -r "$podir/nb.po" ]; then # nb.po was found, copy it to no.po to provide both -nb and -no # localized fields and thus ease no -> nb transition for Norwegian # speaking people. fake=no ln -s nb.po "$podir/no.po" fi $PODEBCONF_LIB/intltool-merge $quiet --rfc822deb-style $utf8 $podir $origfile $outfile 1>&2 || exit 1 if [ $format -le 1 ]; then tmpfile=`mktemp -t po2debconf.XXXXXXXXXX` || { echo "ERROR: Unable to create temporary file ...exiting" 1>&2 exit 1 } sed -e 's/^\([^ :]*\)\.[^ :]*:/\1:/' $outfile > $tmpfile && mv -f $tmpfile $outfile fi tmpfile=`mktemp -t po2debconf.XXXXXXXXXX` || { echo "ERROR: Unable to create temporary file ...exiting" 1>&2 exit 1 } sed -e 's/^DefaultChoice/Default/' $outfile > $tmpfile && mv -f $tmpfile $outfile [ -n "$is_tmp" ] && cat "$outfile" # Set $? to 0 : cleanup