PEF-Front

 view release on metacpan or  search on metacpan

nls/import-po.pl  view on Meta::CPAN

#!/usr/bin/perl
use DBIx::Connector;
use Locale::PO;
use JSON;
use Encode;
use SQL::Abstract;

my $dbuser = ((getpwuid $>)[0]);
my $dbname = $dbuser;
my $dbpass = "";
my $conn;
my $fname;
my $language;

for (my $i = 0 ; $i < @ARGV ; ++$i) {
	if ($ARGV[$i] =~ /^-/) {
		$ARGV[$i] =~ /^-dbname/ && do {
			$dbname = $ARGV[$i + 1];
			++$i;
		};
		$ARGV[$i] =~ /^-dbuser/ && do {
			$dbuser = $ARGV[$i + 1];
			++$i;
		};
		$ARGV[$i] =~ /^-dbpass/ && do {
			$dbpass = $ARGV[$i + 1];
			++$i;
		};
	} else {
		$fname = $ARGV[$i];
	}
}

die <<USAGE if not $fname;
import-po.pl [options] filename
  -dbname  full dsn or PostreSQL db name
  -dbuser  db user
  -dbpass  db password
USAGE

sub db_connect {
	$dbname = "dbi:Pg:dbname=$dbname" if $dbname !~ /^dbi:/;
	my ($driver) = $dbname =~ /^dbi:([^:]+):/;
	my $attrs = {
		AutoCommit          => 1,
		PrintError          => 0,
		AutoInactiveDestroy => 1,
		RaiseError          => 1,
	};
	$attrs->{pg_enable_utf8}    = 1 if $driver eq 'Pg';
	$attrs->{mysql_enable_utf8} = 1 if $driver eq 'mysql';
	$conn = DBIx::Connector->new($dbname, $dbuser, $dbpass, $attrs)
	  or die "SQL_connect: " . DBI->errstr();
	$conn->mode('fixup');
	$conn;
}

my $aref = Locale::PO->load_file_asarray($fname);

if (Locale::PO->dequote($aref->[0]->msgid) ne '') {
	die "unknown PO-file format $fname";
}

my $header       = Locale::PO->dequote($aref->[0]->msgstr);
my %header_lines = map {
	my ($h, $v) = split /:/, $_, 2;
	$v =~ s/^\s+//;
	($h => $v)



( run in 3.354 seconds using v1.01-cache-2.11-cpan-8f98c5d2c55 )