SF.net SVN: postfixadmin: [155] trunk/languages/language-update.sh
Brought to you by:
christian_boltz,
gingerdog
From: <chr...@us...> - 2007-10-13 19:19:44
|
Revision: 155 http://postfixadmin.svn.sourceforge.net/postfixadmin/?rev=155&view=rev Author: christian_boltz Date: 2007-10-13 12:19:47 -0700 (Sat, 13 Oct 2007) Log Message: ----------- - added language-update.sh Script to update the language files, with lots of tricky bash code ;-) MUST be run everytime you add a string to en.lang. ./language-update.sh --patch should do the job, unless something goes wrong. ./language-update.sh --help prints all available options. Added Paths: ----------- trunk/languages/language-update.sh Added: trunk/languages/language-update.sh =================================================================== --- trunk/languages/language-update.sh (rev 0) +++ trunk/languages/language-update.sh 2007-10-13 19:19:47 UTC (rev 155) @@ -0,0 +1,127 @@ +#!/bin/bash + + # Postfix Admin + # + # LICENSE + # This source file is subject to the GPL license that is bundled with + # this package in the file LICENSE.TXT. + # + # Further details on the project are available at : + # http://www.postfixadmin.com or http://postfixadmin.sf.net + # + # @version $Id$ + # @license GNU GPL v2 or later. + # + # File: language-update.sh + # Lists missing translations in language files and optionally patches the + # english texts into the language file + # + # written by Christian Boltz + + +notext=0 # output full lines by default +patch=0 # do not patch by default +nocleanup=0 # don't delete tempfiles +filelist="en.lang" # always needed for comparison + +while [ -n "$1" ] ; do + case "$1" in + --help) + echo ' +Lists missing translations in language files and optionally patches the +english texts into the language file + + Usage: + + '"$0"' [--notext | --patch] [--nocleanup] [foo.lang [bar.lang [...] ] ] + + --notext will only list the translation keys (useful for a quick overview) + --patch will patch the language file directly + --nocleanup will keep all temp files (for debugging only) + + You can give any number of langugage files as parameter. + If no files are given, all *.lang files will be used. + + Note for translators: untranslated entries have a comment + # XXX + attached. +' + exit 0; + ;; + --notext) + notext=1 + ;; + --patch) + patch=1 + ;; + --nocleanup) + nocleanup=1 + ;; + -*) + echo 'unknown option. Try --help ;-)' >&2 + exit 1 + ;; + *) + filelist="$filelist $1" + ;; + esac + shift +done + +test $notext = 1 && test $patch = 1 && echo "ERROR: You can't use --notext AND --patch at the same time." >&2 && exit 2 + +test "$filelist" = "en.lang" && filelist="`ls -1 *.lang`" + +for file in $filelist ; do + echo "<?php include('$file'); print join(\"\\n\", array_keys(\$PALANG)) . \"\\n\"; ?>" | php > $file.strings +done + + +for file in $filelist ; do + test "$file" = "en.lang" && continue + LANG=C diff -U1 $file.strings en.lang.strings > $file.diff && echo "*** $file: no difference ***" + + test $notext = 1 && cat $file.diff && continue + + grep -v 'No newline at end of file' "$file.diff" | while read line ; do + greptext="$(echo $line | sed 's/^[+ -]//')" + grepresult=$(grep "'$greptext'" en.lang) || grepresult="***DEFAULT*** $line" + grepresult2=$(grep "'$greptext'" $file) || grepresult2="$grepresult" + case "$line" in + ---*) + echo "$line" + ;; + +++*) + echo "$line" + ;; + @*) + echo "$line" + ;; + -*) + echo "-$grepresult" + ;; + +*) + # needs translation + # already added as comment? + test "$grepresult" = "$grepresult2" && { + echo "+$grepresult # XXX" # english + } || { + echo " $grepresult2" # translated + echo "keeping line $grepresult2" >&2 + echo "This will result in a malformed patch." >&2 + } + ;; + *) + echo " $grepresult2" + ;; + esac + done > $file.patch + + test $patch = 0 && cat $file.patch + test $patch = 1 && patch $file < $file.patch +done +############################################################################### + +test $nocleanup = 0 && for file in $filelist ; do + rm -f $file.patch $file.strings $file.diff +done Property changes on: trunk/languages/language-update.sh ___________________________________________________________________ Name: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |