#!/usr/bin/perl use strict; use XML::Parser; sub load_wpo { my ($tree, $tag, $page) = @_; foreach my $leaf (@$tree) { if (ref($leaf) eq 'ARRAY') { $page = load_wpo($leaf, $tag, $page); } elsif (ref($leaf) eq 'HASH') { # XML compatibility $leaf->{to} =~ s/\\'/\\\\'/g; $leaf->{to} =~ s/\\q/\\\\q/g; $leaf->{to} =~ s/\\a/\\\\a/g; $leaf->{from} =~ s/\\'/\\\\'/g; $leaf->{from} =~ s/\\q/\\\\q/g; $leaf->{from} =~ s/\\a/\\\\a/g; $page->{$leaf->{from}} = $leaf->{to}; } elsif (ref($leaf) =~ /\w\D/) { $tag = $leaf; } } $page; } my $xmltree = XML::Parser->new(Style => 'Tree')->parsefile($ARGV[0]); my $wpo = load_wpo($xmltree); my %lang = (fr => '"Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n"', en => '"Language-Team: English \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n"', it => '"Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n"', de => => '"Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n"', es => => '"Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n"'); print STDERR "$ARGV[0] =>"; $ARGV[0] =~ m!.*/(.*)\.(.*)\.!; my $PO; open($PO, "> ./po/$1_$2.po"); my $date = `date +%Y-%m-%d\\ %H:%M%z`; chomp $date; print $PO 'msgid "" msgstr "" "Project-Id-Version: drakwizard 0.1\n" "POT-Creation-Date: '.$date.'\n" "PO-Revision-Date: '.$date.'\n" "Last-Translator: Arnaud Desmons \n" '.$lang{$2}.' "X-Generator: wpo2pl 0.1\n" '; foreach (keys %$wpo) { if ($_ ne "") { if ($_ eq $wpo->{$_}) { print $PO qq(msgid "$_"\nmsgstr ""\n\n); } else { print $PO qq(msgid "$_"\nmsgstr "$wpo->{$_}"\n\n); } } } close $PO; print STDERR "./po/$1_$2.po\n";