123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- #!/usr/bin/env perl
- use warnings;
- # GNOME po update utility.
- # (C) 2000 The Free Software Foundation
- #
- # Author(s): Kenneth Christiansen
- $VERSION = "1.2.5 beta 2";
- $LANG = $ARGV[0];
- $PACKAGE = "mc";
- if (! $LANG){
- print "update.pl: missing file arguments\n";
- print "Try `update.pl --help' for more information.\n";
- exit;
- }
- 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;
- }
- 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;
- }
- elsif($LANG eq "--pot" || "$LANG" eq "-P"){
-
- print "Building the $PACKAGE.pot ...";
- $b="xgettext --default-domain\=$PACKAGE --directory\=\.\."
- ." --add-comments=TRANSLATORS: --keyword\=\_ --keyword\=N\_"
- ." --keyword\=Q\_ --files-from\=\.\/POTFILES\.in ";
- $b1="test \! -f $PACKAGE\.po \|\| \( rm -f \.\/$PACKAGE\.pot "
- ."&& mv $PACKAGE\.po \.\/$PACKAGE\.pot \)";
-
- `$b`;
- `$b1`;
- print "...done\n";
- exit;
- }
-
- elsif ($LANG eq "--maintain" || "$LANG" eq "-M"){
- $a="find ../ -type f -print | egrep '.*\\.(c|y|cc|c++|cxx|cpp|h|gob)\$' ";
- open(BUF2, "POTFILES.in") || die "update.pl: there is no POTFILES.in !!!\n";
- print "Searching for missing _(\" \") entries...\n";
- open(BUF1, "$a|");
- @buf2 = <BUF2>;
- @buf1 = <BUF1>;
- 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 my $file (@buf1){
- open FILE, "<$file";
- while (<FILE>) {
- if ($_=~/_\s*\(\"/o){
- $file = unpack("x4 A*",$file) . "\n";
- push @buff1, $file;
- last;
- }
- }
- }
- @bufff1 = sort (@buff1);
- @bufff2 = sort (@buf2);
- my %in2;
- foreach (@bufff2) {
- $in2{$_} = 1;
- }
- 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";
- }
- }
- else{
- print "update.pl: invalid option -- $LANG\n";
- print "Try `update.pl --help' for more information.\n";
- }
- exit;
- }
- elsif(-s "$LANG.po"){
- print "Building the $PACKAGE.pot ...";
- $c="xgettext --default-domain\=$PACKAGE --directory\=\.\."
- ." --add-comments=TRANSLATORS: --keyword\=\_ --keyword\=N\_"
- ." --keyword\=Q\_ --files-from\=\.\/POTFILES\.in ";
- $c1="test \! -f $PACKAGE\.po \|\| \( rm -f \.\/$PACKAGE\.pot "
- ."&& mv $PACKAGE\.po \.\/$PACKAGE\.pot \)";
- `$c`;
- `$c1`;
- print "...done";
- print "\nNow merging $LANG.po with $PACKAGE.pot, and creating an updated $LANG.po ...\n";
-
- $d="mv $LANG.po $LANG.po.old && msgmerge --no-location $LANG.po.old $PACKAGE.pot -o $LANG.po";
- $f="msgfmt --statistics $LANG.po";
- `$d`;
- `$f`;
- unlink "messages";
- unlink "$LANG.po.old";
- exit;
- }
- else{
- print "update.pl: sorry, $LANG.po doesn't exist!\n";
- print "Try `update.pl --help' for more information.\n";
- exit;
- }
|