Browse Source
- added language-update.sh
- 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.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@155 a1433add-5e2c-0410-b055-b7f2511e0802
postfixadmin-2.3
1 changed files with 127 additions and 0 deletions
@ -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 |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue