diff options
-rwxr-xr-x | po/update.pl | 260 |
1 files changed, 158 insertions, 102 deletions
diff --git a/po/update.pl b/po/update.pl index 9cc746fa46..9ca5a33d8a 100755 --- a/po/update.pl +++ b/po/update.pl @@ -1,14 +1,23 @@ #!/usr/bin/perl -w -# GNOME po update utility. +# GNOME PO Update Utility. # (C) 2000 The Free Software Foundation # # Author(s): Kenneth Christiansen +# +# GNOME PO Update Utility requires the XML to POT Generator, ui-extract.pl +# Please distribute it along with this scrips, aswell as desk.po and +# README.tools. +# +# Also remember to change $PACKAGE to reflect the package the script is +# used within. -$VERSION = "1.2.5 beta 2"; +$VERSION = "1.3.2"; $LANG = $ARGV[0]; $PACKAGE = "evolution"; +$| = 1; + if (! $LANG){ print "update.pl: missing file arguments\n"; @@ -19,118 +28,129 @@ if (! $LANG){ if ($LANG=~/^-(.)*/){ if ("$LANG" eq "--version" || "$LANG" eq "-V"){ - print "GNOME PO Updater $VERSION\n"; - print "Written by Kenneth Christiansen <kenneth\@gnome.org>, 2000.\n\n"; - print "Copyright (C) 2000 Free Software Foundation, Inc.\n"; - print "This is free software; see the source for copying conditions. There is NO\n"; - print "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"; - exit; + &Version; } - - elsif ($LANG eq "--help" || "$LANG" eq "-H"){ - print "Usage: ./update.pl [OPTIONS] ...LANGCODE\n"; - print "Updates pot files and merge them with the translations.\n\n"; - print " -V, --version shows the version\n"; - print " -H, --help shows this help page\n"; - print " -P, --pot only generates the potfile\n"; - print " -M, --maintain search for missing files in POTFILES.in\n"; - print "\nExamples of use:\n"; - print "update.sh --pot just creates a new pot file from the source\n"; - print "update.sh da created new pot file and updated the da.po file\n\n"; - print "Report bugs to <kenneth\@gnome.org>.\n"; - exit; + &Help; } - - elsif($LANG eq "--pot" || "$LANG" eq "-P"){ - - print "Building the $PACKAGE.pot ..."; - - $b="xgettext --default-domain\=$PACKAGE --directory\=\.\." - ." --add-comments --keyword\=\_ --keyword\=N\_" - ." --files-from\=\.\/POTFILES\.in "; - $b1="test \! -f $PACKAGE\.po \|\| \( rm -f \.\/$PACKAGE\.pot " - ."&& mv $PACKAGE\.po \.\/$PACKAGE\.pot \)"; - - `$b`; - `$b1`; - - print "...done\n"; - + elsif ($LANG eq "--dist" || "$LANG" eq "-D"){ + &Merging; +# &Status; + } + elsif ($LANG eq "--pot" || "$LANG" eq "-P"){ + &GeneratePot; exit; } - elsif ($LANG eq "--maintain" || "$LANG" eq "-M"){ + &Maintain; + } + else { + &InvalidOption; + } - $a="find ../ -print | egrep '.*\\.(c|y|cc|c++|h|gob)' "; - - open(BUF2, "POTFILES.in") || die "update.pl: there's not POTFILES.in!!!\n"; - print "Searching for missing _(\" \") entries...\n"; - open(BUF1, "$a|"); - +} else { + if(-s "$LANG.po"){ + &GeneratePot; + &Merging; + &Status; + } + else { + &NotExisting; + } +} - @buf2 = <BUF2>; - @buf1 = <BUF1>; +sub Version{ + print "GNOME PO Updater $VERSION\n"; + print "Written by Kenneth Christiansen <kenneth\@gnome.org>, 2000.\n\n"; + print "Copyright (C) 2000 Free Software Foundation, Inc.\n"; + print "This is free software; see the source for copying conditions. There is NO\n"; + print "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"; + exit; +} - if (-s "POTFILES.ignore"){ - open FILE, "POTFILES.ignore"; - while (<FILE>) { - if ($_=~/^[^#]/o){ - push @bup, $_; - } - } - print "POTFILES.ignore found! Ignoring files...\n"; - @buf2 = (@bup, @buf2); - } +sub Help{ + print "Usage: ./update.pl [OPTIONS] ...LANGCODE\n"; + print "Updates pot files and merge them with the translations.\n\n"; + print " -V, --version shows the version\n"; + print " -H, --help shows this help page\n"; + print " -P, --pot only generates the potfile\n"; +# print " -S, --status shows the status of the po file\n"; + print " -M, --maintain search for missing files in POTFILES.in\n"; + print "\nExamples of use:\n"; + print "update.sh --pot just creates a new pot file from the source\n"; + print "update.sh da created new pot file and updated the da.po file\n\n"; + print "Report bugs to <kenneth\@gnome.org>.\n"; + exit; +} - foreach my $file (@buf1){ - open FILE, "<$file"; - while (<FILE>) { - if ($_=~/_\(\"/o){ - $file = unpack("x3 A*",$file) . "\n"; - push @buff1, $file; - last; - } - } - } +sub Maintain{ + $a="find ../ -print | egrep '.*\\.(c|y|cc|c++|h|gob)' "; - @bufff1 = sort (@buff1); + open(BUF2, "POTFILES.in") || die "update.pl: there's not POTFILES.in!!!\n"; + + print "Searching for missing _(\" \") entries...\n"; + + open(BUF1, "$a|"); - @bufff2 = sort (@buf2); + @buf2 = <BUF2>; + @buf1 = <BUF1>; - my %in2; - foreach (@bufff2) { - $in2{$_} = 1; + if (-s "POTFILES.ignore"){ + open FILE, "POTFILES.ignore"; + while (<FILE>) { + if ($_=~/^[^#]/o){ + push @bup, $_; + } } + print "POTFILES.ignore found! Ignoring files...\n"; + @buf2 = (@bup, @buf2); + } - foreach (@bufff1){ - if (!exists($in2{$_})){ - push @result, $_ } + foreach my $file (@buf1){ + open FILE, "<$file"; + while (<FILE>) { + if ($_=~/_\(\"/o){ + $file = unpack("x3 A*",$file) . "\n"; + push @buff1, $file; + last; } - - if(@result){ - open OUT, ">POTFILES.in.missing"; - print OUT @result; - print "\nHere are the results:\n\n", @result, "\n"; - print "File POTFILES.in.missing is being placed in directory...\n"; - print "Please add the files that should be ignored in POTFILES.ignore\n"; } - else{ - print "\nWell, it's all perfect! Congratulation!\n"; - } } + @bufff1 = sort (@buff1); + @bufff2 = sort (@buf2); - else{ - print "update.pl: invalid option -- $LANG\n"; - print "Try `update.pl --help' for more information.\n"; + my %in2; + foreach (@bufff2) { + $in2{$_} = 1; } - exit; + + foreach (@bufff1){ + if (!exists($in2{$_})){ + push @result, $_ } + } + + if(@result){ + open OUT, ">POTFILES.in.missing"; + print OUT @result; + print "\nHere are the results:\n\n", @result, "\n"; + print "File POTFILES.in.missing is being placed in directory...\n"; + print "Please add the files that should be ignored in POTFILES.ignore\n"; } + else{ + print "\nWell, it's all perfect! Congratulation!\n"; + } +} -elsif(-s "$LANG.po"){ +sub InvalidOption{ + print "update.pl: invalid option -- $LANG\n"; + print "Try `update.pl --help' for more information.\n"; +} + + +sub GeneratePot{ - print "Building the $PACKAGE.pot ..."; + print "Building the $PACKAGE.pot...\n\n"; $c="xgettext --default-domain\=$PACKAGE --directory\=\.\." ." --add-comments --keyword\=\_ --keyword\=N\_" @@ -138,29 +158,65 @@ elsif(-s "$LANG.po"){ $c1="test \! -f $PACKAGE\.po \|\| \( rm -f \.\/$PACKAGE\.pot " ."&& mv $PACKAGE\.po \.\/$PACKAGE\.pot \)"; - `$c`; - `$c1`; + if (-s "ui-extract.pl"){ + open FILE, "<POTFILES.in"; + while (<FILE>) { + if ($_=~ /(.*)(\.xml\.h)/o){ + $filename = "$1\.xml"; + $xmlfiles="\.\/ui-extract.pl --update ../$filename"; + system($xmlfiles); + } + + elsif ($_=~ /(.*)(\.glade\.h)/o){ + $filename = "$1\.glade"; + $xmlfiles="\.\/ui-extract.pl --update ../$filename"; + system($xmlfiles); + } + } + } - print "...done"; + close FILE; - print "\nNow merging $LANG.po with $PACKAGE.pot, and creating an updated $LANG.po ...\n"; + system($c); + system($c1); +} - - $d="mv $LANG.po $LANG.po.old && msgmerge $LANG.po.old $PACKAGE.pot -o $LANG.po"; +sub Merging{ - $f="msgfmt --statistics $LANG.po"; + if ($ARGV[1]){ + $LANG = $ARGV[1]; + } else { + $LANG = $ARGV[0]; + } + + if ($ARGV[0] ne "--dist" && $ARGV[0] ne "-D") { + print "\n\nMerging $LANG.po with $PACKAGE.pot, creating updated $LANG.po...\n\n"; + } + + $d="cp $LANG.po $LANG.po.old && msgmerge $LANG.po.old $PACKAGE.pot -o $LANG.po"; - `$d`; - `$f`; + if ($ARGV[0] ne "--dist" && $ARGV[0] ne "-D") { + print "Working, please wait"; + } + system($d); + + if ($ARGV[0] ne "--dist" && $ARGV[0] ne "-D") { + print "\n\n"; + } unlink "messages"; unlink "$LANG.po.old"; - - exit; } -else{ +sub NotExisting{ print "update.pl: sorry $LANG.po does not exist!\n"; print "Try `update.pl --help' for more information.\n"; exit; } + +sub Status{ + $f="msgfmt --statistics $LANG.po"; + + system($f); + print "\n"; +} |