#!/usr/bin/perl -w # # Script for translators that extract .sgml files into .sgml.po ones # # Copyright (C) 2001 Héctor García Álvarez. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # This script is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this library; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # # Authors: Héctor García Álvarez ## Loaded modules use strict; use File::Basename; use Getopt::Long; my $LANG = $ARGV[0]; #my $OUTFILE = "./tmp/$FILE.h"; my %string = (); my @elements; my @items; my $n=0; if (! $LANG){ print "Usage: update_po.pl LANGCODE\n"; exit; } else { $LANG .=".po"; } if ( !(-d "./$LANG") ){ mkdir ("./$LANG", 0755) ; } chdir ("./C"); if ( !(-d "./tmp") ) { mkdir ("./tmp", 0755) ; } my $comand=""; open FILES, "POTFILES.in.h"; while () { undef (%string); s/\n//g; my $Original_file = $_ ; s/.\///g; my $Converted_file = "./tmp/".$_.".h"; # print $Original_file."\n"; # print $Translated_file."\n"; print "Converting ".$Original_file."\n" ; system "rm -f $Converted_file"; &Convert ($Original_file); open OUT, ">>$Converted_file"; &addMessages; close OUT; $comand = "xgettext --default-domain=$Original_file "; $comand .="--directory=. --add-comments --keyword=_ --keyword=N_ "; $comand .="$Converted_file "; system ( $comand ); print ("Updating $Original_file.po\n"); system ("mv $Original_file.po ../$LANG/$Original_file.pot"); if ( -f "../$LANG/$Original_file.po") { system ("cp ../$LANG/$Original_file.po ../$LANG/$Original_file.po.old"); system ("msgmerge ../$LANG/$Original_file.po.old ../$LANG/$Original_file.pot -o ../$LANG/$Original_file.po"); } else { system ("mv ../$LANG/$Original_file.pot ../$LANG/$Original_file.po"); } system ("msgfmt --statistics ../$LANG/$Original_file.po"); system ("rm -f ../$LANG/$Original_file.pot"); # print POTFILE $Converted_file."\n"; print ".\n"; } close FILES; system ("rm -rf ./tmp "); exit 0; sub Convert() { ## Reading the file open (IN, "<$_[0]") || die "can't open $_[0]: $!"; ### For translatable Sgml files ### while () { if ( //) ) { $string{$Salida} = []; } else { while () { $Salida .= $_ ; if ( /-->/ ) { last ; } } $string{$Salida} = []; } } elsif ( // ) { my $number_of_para = 1; my $Salida = $_ ; if ( /<\/para>/ ) { $string{$Salida} = []; } else { while () { if ( // ) { $number_of_para++; } $Salida .= $_ ; if ( /<\/para>/ ) { $number_of_para--; if ( $number_of_para==0) {last ; } } } $string{$Salida} = []; } } elsif ( // ) { my $Salida = $_ ; if ( /<\/title>/ ) { $string{$Salida} = []; } else { while (<IN>) { $Salida .= $_ ; if ( /<\/title>/ ) { last ; } } $string{$Salida} = []; } } elsif ( /<glossterm>/ ) { my $Salida = $_ ; if ( /<\/glossterm>/ ) { $string{$Salida} = []; } else { while (<IN>) { $Salida .= $_ ; if ( /<\/glossterm>/ ) { last ; } } $string{$Salida} = []; } } elsif ( /<guilabel>/ ) { my $Salida = $_ ; if ( /<\/guilabel>/ ) { $string{$Salida} = []; } else { while (<IN>) { $Salida .= $_ ; if ( /<\/guilabel>/ ) { last ; } } $string{$Salida} = []; } } } close (IN); } sub addMessages{ foreach my $theMessage (sort keys %string) { my ($tag) = $string{$theMessage} ; # Replace XML codes for special chars to # geniune gettext syntax #--------------------------------------- $theMessage =~ s/"/\\"/mg; $theMessage =~ s/\n/\\n\n/mg; # $theMessage =~ s/</</mg; # $theMessage =~ s/>/>/mg; if ($theMessage =~ /\n/) { #if ($tag) { print OUT "/* $tag */\n"; } @elements = split (/\n/, $theMessage); for ($n = 0; $n < @elements; $n++) { if ($n == 0) { print OUT "gchar *s = N_"; print OUT "(\"$elements[$n]\""; if ($n == @elements - 1) { print OUT ");\n"; } print OUT "\n"; } elsif ($n == @elements - 1) { print OUT " "; print OUT "\"$elements[$n]\");\n\n"; } elsif ($n > 0) { print OUT " "; print OUT "\"$elements[$n]\"\n"; } } } else { # if ($tag) { print OUT "/* $tag */\n"; } print OUT "gchar *s = N_(\"$theMessage\");\n"; } } } t/cgit.cgi/freebsd-ports-gnome/about/?h=mate-1.16'>about</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/?h=mate-1.16'>summary</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/refs/?h=mate-1.16&id=387f6e55b30f630f647de98294a693ae9a6f3537'>refs</a><a class='active' href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/x11-toolkits/scx?h=mate-1.16'>log</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/tree/x11-toolkits/scx?h=mate-1.16&id=387f6e55b30f630f647de98294a693ae9a6f3537'>tree</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/x11-toolkits/scx?h=mate-1.16&id=387f6e55b30f630f647de98294a693ae9a6f3537'>commit</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/diff/x11-toolkits/scx?h=mate-1.16&id=387f6e55b30f630f647de98294a693ae9a6f3537'>diff</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/stats/x11-toolkits/scx?h=mate-1.16'>stats</a></td><td class='form'><form class='right' method='get' action='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/x11-toolkits/scx'> <input type='hidden' name='h' value='mate-1.16'/><input type='hidden' name='id' value='387f6e55b30f630f647de98294a693ae9a6f3537'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/?h=mate-1.16&id=387f6e55b30f630f647de98294a693ae9a6f3537'>root</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/x11-toolkits?h=mate-1.16&id=387f6e55b30f630f647de98294a693ae9a6f3537'>x11-toolkits</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/x11-toolkits/scx?h=mate-1.16&id=387f6e55b30f630f647de98294a693ae9a6f3537'>scx</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th></th><th class='left'>Commit message (<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/x11-toolkits/scx?h=mate-1.16&id=387f6e55b30f630f647de98294a693ae9a6f3537&showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Age</th><th class='left'>Files</th><th class='left'>Lines</th></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/x11-toolkits/scx?h=mate-1.16&id=bce9b81f9d6099820f3839d7809d6b08c1d2ae7b'>- Remove unneeded dependency from gtk12/gtk20 [1]</a></td><td>miwi</td><td><span title='2008-04-20 01:56:05 +0800'>2008-04-20</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/x11-toolkits/scx?h=mate-1.16&id=7b56c40b952a22521dd35f39e00fcfbb408463b5'>- Remove USE_XLIB/USE_X_PREFIX/USE_XPM in favor of USE_XORG</a></td><td>miwi</td><td><span title='2008-03-26 06:44:48 +0800'>2008-03-26</span></td><td>1</td><td><span class='deletions'>-2</span>/<span class='insertions'>+2</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/x11-toolkits/scx?h=mate-1.16&id=1b536ca8b6409e5db2f68d35136bde877d05136b'>- Marked deprecated (Version branch long since retired)</a></td><td>miwi</td><td><span title='2007-09-28 06:56:11 +0800'>2007-09-28</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+3</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/x11-toolkits/scx?h=mate-1.16&id=efd76f161f87d729ad91181c24fedfe13ad22c50'>- Fix build after objformat removal</a></td><td>miwi</td><td><span title='2007-07-03 18:47:34 +0800'>2007-07-03</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+3</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/x11-toolkits/scx?h=mate-1.16&id=87f4d471fb27b9547c1a0de221b51f4c31684157'>- Welcome X.org 7.2 \o/.</a></td><td>flz</td><td><span title='2007-05-20 04:36:56 +0800'>2007-05-20</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr>