[Slim-Checkins] r12620 - /trunk/tools/find_translations_todo.pl
bklaas at svn.slimdevices.com
bklaas at svn.slimdevices.com
Mon Aug 20 09:54:00 PDT 2007
Author: bklaas
Date: Mon Aug 20 09:53:59 2007
New Revision: 12620
URL: http://svn.slimdevices.com?rev=12620&view=rev
Log:
Support for xml output
Modified:
trunk/tools/find_translations_todo.pl
Modified: trunk/tools/find_translations_todo.pl
URL: http://svn.slimdevices.com/trunk/tools/find_translations_todo.pl?rev=12620&r1=12619&r2=12620&view=diff
==============================================================================
--- trunk/tools/find_translations_todo.pl (original)
+++ trunk/tools/find_translations_todo.pl Mon Aug 20 09:53:59 2007
@@ -15,6 +15,7 @@
my @default_supported_langs = qw/ EN DE ES IT FR NL /;
my $command_args = command_args();
+my $xml_template = get_xml_template();
my $supported_langs = $command_args->{'langs'};
my $dirs = $command_args->{'dirs'};
@@ -23,6 +24,9 @@
my $strings_files = get_strings_files();
my @strings_to_translate;
+
+print $xml_template->{'root_header'} if $command_args->{'format'} eq 'xml';
+
for my $string_file (@$strings_files) {
my $slurp = 0;
my %got_it; my @strings;
@@ -54,21 +58,44 @@
}
close(STRINGS);
if ($output) {
- print "FILE:\t" . $string_file . "\n" if $command_args->{'verbose'};
- print $output;
+ if ($command_args->{'format'} eq 'xml') {
+ my $filepath_header = $xml_template->{'filepath_header'};
+ $filepath_header =~ s/__FILEPATH/$string_file/g;
+ print $filepath_header;
+ print $output;
+ print $xml_template->{'filepath_footer'};
+ } else {
+ print "FILE:\t" . $string_file . "\n" if $command_args->{'verbose'};
+ print $output;
+ }
}
}
+
+print $xml_template->{'root_footer'} if $command_args->{'format'} eq 'xml';
sub compare_hashes {
my ($seen, $string, $strings) = @_;
my $missing_translations = missing_translations($seen);
my $return = "";
if ($missing_translations) {
- $return .= "$string\n";
- for my $line (@$strings) {
- $return.= "\t$line->{'lang'}\t$line->{'string'}\n";
+ if ($command_args->{'format'} eq 'xml') {
+ my $string_header = $xml_template->{'string_header'};
+ $string_header =~ s/__STRING/$string/;
+ $return .= $string_header;
+ for my $line (@$strings) {
+ my $string_data = $xml_template->{'string_data'};
+ $string_data =~ s/__LANG/$line->{'lang'}/;
+ $string_data =~ s/__TRANSLATION/$line->{'string'}/;
+ $return .= $string_data;
+ }
+ $return .= $xml_template->{'string_footer'};
+ } else {
+ $return .= "$string\n";
+ for my $line (@$strings) {
+ $return.= "\t$line->{'lang'}\t$line->{'string'}\n";
+ }
+ $return .= "\n";
}
- $return .= "\n";
}
return $return;
}
@@ -93,7 +120,8 @@
sub command_args {
my %args;
- my $usage = "usage: find_translations_todo.pl (--verbose) (--dirs '...') (--langs '...')
+ my $usage = "usage: find_translations_todo.pl (--verbose) (--format [xml|txt]) (--dirs '...') (--langs '...')
+ --format defaults to txt. xml is the other option.
--verbose prints file information on each line
argument to --dirs is a list of dirs to search
(defaults to '.')
@@ -103,6 +131,7 @@
'help' => \$args{'help'},
'dirs=s' => \$args{'dirstring'},
'langs=s' => \$args{'langstring'},
+ 'format=s' => \$args{'format'},
'verbose' => \$args{'verbose'},
);
if ($args{'help'}) {
@@ -116,6 +145,8 @@
}
$args{'dirs'} = \@dirs;
+ $args{'format'} eq 'txt' unless $args{'format'} eq 'xml';
+
my @langs = @default_supported_langs;
if ($args{'langstring'}) {
@langs = split/[^A-Z]+/, $args{'langstring'};
@@ -124,3 +155,25 @@
return \%args;
}
+
+sub get_xml_template {
+ my %return;
+ $return{'root_header'} = <<XMLHEAD;
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+ <Root>
+XMLHEAD
+ $return{'filepath_header'} = <<FILEPATH;
+ <File RelativePath="__FILEPATH">
+FILEPATH
+ $return{'filepath_footer'} = "\t\t</File>\n";
+
+ $return{'string_header'} = <<XMLSTRING;
+ <TranslationUnit Id="__STRING">
+XMLSTRING
+ $return{'string_footer'} = "\t\t\t</TranslationUnit>\n";
+ $return{'string_data'} = <<STRINGDATA;
+ <Target Language = "__LANG">__TRANSLATION</Target>
+STRINGDATA
+ $return{'root_footer'} = "\t</Root>\n";
+ return \%return;
+}
More information about the checkins
mailing list