[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