aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--po/ChangeLog8
-rw-r--r--po/README.tools58
-rwxr-xr-xpo/desk.pl118
-rwxr-xr-xpo/update.pl166
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;
+}