]> git.deb.at Git - deb/packages.git/blobdiff - bin/ttxgettext
Add L10N support for Template Toolkit output
[deb/packages.git] / bin / ttxgettext
index 7464f60f2837147cd23ea221c5cecb15c923fa92..5e3aced61652e4bba97e67e18549c5012aa629fd 100755 (executable)
@@ -1,5 +1,14 @@
 #! /usr/bin/perl -w
 
+# copied from webwml/english/po/wmlxgettext.pl and
+# adapted for Template Toolkit
+#  Copyright © 2002-2003  Denis Barbier <barbier@debian.org>
+#  Copyright © 2007 Frank Lichtenheld <frank@lichtenheld.de>
+#
+#  This program 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.
 use strict;
 use Getopt::Std;
 
@@ -41,18 +50,23 @@ sub processFile {
                 $repl = $1;
         }
         $file =~ s{^$prefix}{$repl}o unless $prefix eq '__';
-        #  Remove comments if they contain <gettext> or </gettext>
-        $text =~ s/^[ \t]*#.*<\/?gettext\b//mg;
+#        #  Remove comments if they contain <gettext> or </gettext>
+#        $text =~ s/^[ \t]*#.*<\/?gettext\b//mg;
         $lineno = 1;
-        while ($text =~ m{\G(.*?)(<gettext\b(?:\s+domain="([^"]+)")?[^>]*>)(.*?)</gettext>}gs) { # " -- to fix vim syntax hilighting :)
+        while ($text =~ m{\G(.*?) # begin at end of previous match, $1=prefix
+                             (\bg\(\s* # "g(" , $2=whole match
+                              (["']) # " quoting, $3=quotes
+                                (.*?)\3 # string, $4=string
+                              )}gxs) {
                 $msgid = escape($4);
                 $lineno += countNewline ($1.$2);
                 $nextlineno = countNewline ($4);;
-                my $dom = ($3) ? $3 : 'templates';
-                if ($domain ne $dom) {
-                   $lineno += $nextlineno;
-                   next;  # wrong domain
-                }
+               my $dom = $domain;
+#                my $dom = ($3) ? $3 : 'templates';
+#                if ($domain ne $dom) {
+#                   $lineno += $nextlineno;
+#                   next;  # wrong domain
+#                }
                 $comment = '';
                 if ($1 =~ m/(((^|\n)[ \t]*#.*)+)\n?[^\n]*$/) {
                         $comment = $1;
@@ -60,12 +74,12 @@ sub processFile {
                         $comment =~ s/\n[ \t]*#\s*/\n/g;
                 }
                 push (@msgids, $msgid);
-                if (defined ($messages->{$msgid})) {
-                        print STDERR "wmlxgettext: Warning: msgid multiple defined:\n\t".
-                                $msgid."\n";
-                } else {
-                        $messages->{$msgid} = [];
-                }
+#                if (defined ($messages->{$msgid})) {
+#                        print STDERR "ttxgettext: Warning: msgid multiple defined:\n\t".
+#                                $msgid."\n";
+#                } else {
+#                        $messages->{$msgid} = [];
+#                }
                 push (@{$messages->{$msgid}}, $comment, $file, $lineno);
                 $lineno += $nextlineno;
         }