--- /dev/null
+
+package Sesse::ExtractGettext;
+use strict;
+use warnings;
+use Template::Directive;
+
+our @ISA = qw(Template::Directive);
+
+sub textblock {
+ my ($self, $text) = @_;
+
+ while ($text =~ s/<(h[1-6]|p|td|th|title|input|span|li|_)[^>]*>(.*?)<\/\1>//s) {
+ my $text = $2;
+ $text =~ s/\n/\\n"\n"/g;
+ $text =~ s/(.)"(?!\n)/$1\\"/g;
+
+ print "msgid \"$text\"\n";
+ print "msgstr \"\"\n";
+ print "\n";
+ }
+
+ return $self->SUPER::textblock($text);
+}
+
+
+
--- /dev/null
+#! /usr/bin/perl
+use Template;
+require 'Sesse::ExtractGettext.pm';
+
+my $template = Template->new({ FACTORY => 'Sesse::ExtractGettext' });
+my $date = `date +"%Y-%M-%d %H:%M%z"`; # pah :-)
+chomp $date;
+
+print <<"EOF";
+# ccbs template file for $ARGV[0]
+msgid ""
+msgstr ""
+"Project-Id-Version: ccbs\\n"
+"Report-Msgid-Bugs-To: \\n"
+"POT-Creation-Date: $date\\n"
+"MIME-Version: 1.0\\n"
+"Content-Type: text/plain; charset=utf-8\\n"
+"Content-Transfer-Encoding: 8bit\\n"
+
+EOF
+
+my $eaten = '';
+$template->process($ARGV[0], $vars, \$eaten)
+or die $template->error();