#!/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') { $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 " "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1" "Content-Transfer-Encoding: 8bit"', en => '"Language-Team: English " "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1" "Content-Transfer-Encoding: 8bit"', it => '"Language-Team: Italian " "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1" "Content-Transfer-Encoding: 8bit"', de => => '"Language-Team: Deutsh " "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1" "Content-Transfer-Encoding: 8bit"', es => => '"Language-Team: Spanish " "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1" "Content-Transfer-Encoding: 8bit"'); print STDERR "$ARGV[0] =>"; $ARGV[0] =~ /(.*\/).*\.(.*)\..*/; open(PO, "> $1$2.po"); my $date = `date +%Y-%m-%d\\ %H:%M\\ %z`; chomp $date; print PO 'msgid "" msgstr "" '.$lang{"$2"}.' "Project-Id-Version: drakwizard" "POT-Creation-Date: '.$date.'" "PO-Revision-Date: '.$date.'" "Last-Translator: wpo2po " '; foreach (keys %{$wpo}) { if ($_ ne "") { if ($_ eq $wpo->{$_}) { print PO "msgid \"$_\"\nmsgstr \"\"\n\n"; } else { print PO "msgid \"$_\"\nmsgstr \"$wpo->{$_}\"\n\n"; } } } close PO; print STDERR "$1$2.po\n";