#!/usr/bin/perl -w -s
our($s);
use Data::Dumper;
use strict;
use lib 'lib';
use XML::TMX::FromPO;
my $tmx = new XML::TMX::FromPO(DEBUG => 1);
my %convert = ( 'pt_en' => 'pt en',
'pt_es' => 'pt es',
'pt_de' => 'pt de',
'pt_it' => 'pt it',
'pt_ru' => 'pt ru',
'pt_fr' => 'pt fr',
'pt_br' => 'pt pt_BR',
'br_en' => 'pt_BR en',
'br_es' => 'pt_BR es',
'br_de' => 'pt_BR de',
'br_it' => 'pt_BR it',
'br_ru' => 'pt_BR ru',
'br_fr' => 'pt_BR fr',
'en_fr' => 'en fr'
);
if($s){
my $lang = $s;
if ($s eq "1") { die("Usage $0 -s=pt DIR\n")}
while(my $dir = shift()) {
$tmx->rec_get_po($dir, $lang, LANG=>"$lang en");
open(XML, "| tee _1.aux |xmllint --recover --format - | bzip2 > $lang-en.tmx.bz2");
# print STDOUT Dumper($tmx);
*STDOUT = *XML;
$tmx->create_tmx(LANG => "$lang en");
close(XML);
$tmx->clean_tmx()
}
}
else{
my $lang = '';
for my $c (keys %convert) {
$lang = $lang . " $convert{$c}";
}
while(my $dir = shift()) {
if(-d "$dir/po" and <$dir/po/*.po>){ $tmx->parse_dir("$dir/po", LANG => $lang) ; }
if(-d "$dir" and <$dir/*.po>) { $tmx->parse_dir("$dir", LANG => $lang) ; }
$dir =~ m/([a-z0-9_\.-]+)\/*$/i;
for my $conv (keys %convert) {
open(XML, "|xmllint --format - | bzip2 > $1_$conv.tmx.bz2");
*STDOUT = *XML;
$tmx->create_tmx(LANG => "$convert{$conv}");
close(XML);
}
$tmx->clean_tmx()
}
}
=encoding UTF-8
=head1 NAME
po2tmx - creates TMX files from PO files
=head1 SYNOPSIS
po2tmx POdir #
po2tmx -s=fr #single PO files en-fr (does not join multiple PO-files)
=head1 DESCRIPTION
read several POs, and joinds their translation units to build several
TMX pairs.
=head1 SEE ALSO
XML::TMX
=cut