diff options
-rw-r--r-- | po/ChangeLog | 8 | ||||
-rw-r--r-- | po/README.tools | 58 | ||||
-rwxr-xr-x | po/desk.pl | 118 | ||||
-rwxr-xr-x | po/update.pl | 166 |
4 files changed, 350 insertions, 0 deletions
diff --git a/po/ChangeLog b/po/ChangeLog index 7d918b15bb..e611ac34da 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,11 @@ +2000-06-05 Kenneth Christiansen <kenneth@gnu.org> + + * README.tools: Added readme file, which explains the + use of the newly checked in po tools. + + hmm, looking forward to tomorrow...viva los compleaņos! + :) + 2000-06-05 Fatih Demir <kabalak@gmx.net> * tr.po: A quick-update ( not fully finished ). diff --git a/po/README.tools b/po/README.tools new file mode 100644 index 0000000000..4ec99c1640 --- /dev/null +++ b/po/README.tools @@ -0,0 +1,58 @@ +The po/ directory includes two perlscripts, which is done to help +making the translations fully uptodate. + +The first script is called update.pl and is supposed to be run like this: + + ./update.pl [OPTIONS] ...LANGCODE + +This will updates the pot file (the po template, generated from the source code) +and merge them with the translations po files. + +For instance to do this for Danish, type the following + + ./update.pl da + + +The update.pl script also supports other options, they are: + + -V, --version shows the version + -H, --help shows this help page + -P, --pot only generates the potfile + -M, --maintain search for missing files in POTFILES.in + +Especially the --maintain option is very handy for package maintainer, to check +if you included all the files that have marked strings in the POTFILES.in, so +they will be in the generated po template, the socalled pot file. + +There is though one thing to take notice of with this option, please check the +configure.in file to make sure that the files you add to POTFILES.in are being +build, otherwise this can leed to "make dist" throuble. + + +The other utility is the desk.pl script, which will check the cvs module for +missing translation in files like *.desktop, *.directory, *.soundlist and so on. + +Run the script like this: + + ./desk.pl [OPTIONS] ...LANGCODE ENTRY + +An example use could be. + + ./desk.pl da + +which will check all the files for missing Name[da] entries, or + + ./desk.pl no Comment + +which will check all the files for missing Comment[no] entries. "Comment" can +here be replaced with whatever you like + +All scripts support the --help option for further help, though it's not very +extensive for the moment. + +Kenneth Christiansen + +kenneth@gnu.org +kenneth@gnome.org + +Both scripts are copyright 2000 The Free Software Foundation and me. diff --git a/po/desk.pl b/po/desk.pl new file mode 100755 index 0000000000..08a2a18a56 --- /dev/null +++ b/po/desk.pl @@ -0,0 +1,118 @@ +#!/usr/bin/perl -w + +# GNOME entry finder utility. +# (C) 2000 The Free Software Foundation +# +# Author(s): Kenneth Christiansen + + +$VERSION = "1.0.0 beta 5"; +$LANG = $ARGV[0]; +$OPTION2 = $ARGV[1]; +$SEARCH = "Name"; + +if (! $LANG){ + print "desk.pl: missing file arguments\n"; + print "Try `desk.pl --help' for more information.\n"; + exit; +} + +if ($OPTION2){ + $SEARCH=$OPTION2; +} + +if ($LANG){ + +if ($LANG=~/^-(.)*/){ + + if ("$LANG" eq "--version" || "$LANG" eq "-V"){ + print "GNOME Entry finder $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: ./desk.pl [OPTIONS] ...LANGCODE ENTRY\n"; + print "Checks .desktop and alike files for missing translations.\n\n"; + print " -V, --version shows the version\n"; + print " -H, --help shows this help page\n"; + print "\nReport bugs to <kenneth\@gnome.org>.\n"; + exit; + } + + else{ + print "desk.pl: invalid option -- $LANG\n"; + print "Try `desk.pl --help' for more information.\n"; + exit; + } +} + +else{ + + $a="find ../ -print | egrep '.*\\.(desktop|soundlist" + ."|directory)' "; + + $b="find ../ -print | egrep '.*\\.(desktop|soundlist" + ."|directory)' "; + + print "Searching for missing $SEARCH\[$LANG\] entries...\n"; + + open(BUF1, "$a|"); + open(BUF2, "$b|"); + + @buf1 = <BUF1>; + foreach my $file (@buf1){ + open FILE, "<$file"; + while (<FILE>) { + if ($_=~/$SEARCH\[$LANG\]\=/o){ + $file = unpack("x2 A*",$file) . "\n"; + push @buff1, $file; + last; + } + } + } + + @buf2 = <BUF2>; + foreach my $file (@buf2){ + open FILE, "<$file"; + while (<FILE>) { + if ($_=~/$SEARCH\=/o){ + $file = unpack("x2 A*",$file) . "\n"; + push @buff2, $file; + last; + } + } + } + + @bufff1 = sort (@buff1); + @bufff2 = sort (@buff2); + + my %in2; + foreach (@bufff1) { + $in2{$_} = 1; + } + + foreach (@bufff2){ + if (!exists($in2{$_})){ + push @result, $_ } + } + } + + open(OUT1, ">MISSING.$LANG.$SEARCH"); + print OUT1 @result ; + close OUT1; + + + stat("MISSING.$LANG.$SEARCH"); + print "\nWell, you need to fix these:\n\n" if -s _; + print @result if -s _; + print "\nThe list is saved in MISSING.$LANG.$SEARCH\n" if -s _; + print "\nWell, it's all perfect! Congratulation!\n" if -z _; + unlink "MISSING.$LANG.$SEARCH" if -z _; + exit; +} + + diff --git a/po/update.pl b/po/update.pl new file mode 100755 index 0000000000..93bc46d42f --- /dev/null +++ b/po/update.pl @@ -0,0 +1,166 @@ +#!/usr/bin/perl -w + +# GNOME po update utility. +# (C) 2000 The Free Software Foundation +# +# Author(s): Kenneth Christiansen + + +$VERSION = "1.2.5 beta 2"; +$LANG = $ARGV[0]; +$PACKAGE = "nautilus"; + +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 --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"; + + exit; + } + + elsif ($LANG eq "--maintain" || "$LANG" eq "-M"){ + + $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|"); + + + @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 ($_=~/_\(\"/o){ + $file = unpack("x3 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 --keyword\=\_ --keyword\=N\_" + ." --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 $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 does not exist!\n"; + print "Try `update.pl --help' for more information.\n"; + exit; +} |