Move this out of the manual tree, and into build.
git-svn-id: https://svn.apache.org/repos/asf/httpd/docs-build/trunk@1040118 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/review_translations.pl b/review_translations.pl
new file mode 100755
index 0000000..ad2edf8
--- /dev/null
+++ b/review_translations.pl
@@ -0,0 +1,116 @@
+#!/opt/local/bin/perl
+use XML::Simple;
+use Getopt::Std;
+use File::Glob;
+use Data::Dumper;
+use strict;
+
+our ( $opt_m, $opt_x, $opt_l );
+our $VERSION = '0.01';
+our %LANGS = (
+ 'fr' => 'French',
+ 'ja' => 'Japanese',
+ 'de' => 'German',
+ 'ko' => 'Korean',
+ 'tr' => 'Turkish'
+ );
+
+getopts("xl:m:");
+HELP_MESSAGE() unless $opt_m;
+
+$opt_m =~ s/\.xml$//;
+HELP_MESSAGE() unless -f $opt_m . '.xml';
+
+my $eng = $opt_m . '.xml';
+my @files = glob $opt_m . '.xml.*';
+
+my $xs = XML::Simple->new();
+my $eng_xml = $xs->XMLin( $eng );
+
+print "This document defines the following directives:\n";
+my @directives;
+foreach my $directive ( sort( keys %{ $eng_xml->{directivesynopsis} } ) ) {
+ push @directives, $directive;
+ print $directive . "\n";
+}
+print "\n";
+
+foreach my $file (@files) {
+
+ next if $file =~ m/\.meta$/;
+ my $lang = $file;
+ $lang =~ s/.*\.([^.]+)$/$1/;
+
+ if ( $opt_l ) {
+ next unless $lang eq $opt_l;
+ }
+
+ print "Translation available in ". ($LANGS{$lang}?$LANGS{$lang}:$lang) ."\n";
+ my $lang_xml = $xs->XMLin( $file );
+
+ my @missing;
+ foreach my $d ( @directives ) {
+ unless ( defined( $lang_xml->{directivesynopsis}->{$d} ) ) {
+ print "Translation does not define $d\n";
+ push @missing, $d;
+ }
+ }
+
+ if ( $opt_x && @missing ) {
+ print "\nPaste the following into the XML:\n\n";
+ foreach my $d ( @missing ) {
+ directive_doc( $d, $eng_xml ) if $opt_x;
+ }
+ }
+
+ print "\n\n";
+}
+
+sub directive_doc {
+ my ($d, $eng_xml) = @_;
+
+ print "<directivesynopsis>\n";
+ print "<name>" . $d . "</name>\n";
+ print "<description>" .
+ $eng_xml->{directivesynopsis}->{$d}->{description} .
+ "</description>\n";
+ print "<contextlist>";
+
+ # If there's only one context, this is a scalar, not an arrayref.
+ if ( !ref( $eng_xml->{directivesynopsis}->{$d}->{contextlist}->{context}) ) {
+ $eng_xml->{directivesynopsis}->{$d}->{contextlist}->{context}
+ = [ $eng_xml->{directivesynopsis}->{$d}->{contextlist}->{context} ]
+ }
+
+ foreach my $c ( @{ $eng_xml->{directivesynopsis}->{$d}->{contextlist}->{context} } ) {
+ print "<context>".$c."</context>";
+ }
+ print "</contextlist>\n";
+ print "<usage>Documentation not yet translated. Please see English version of document.</usage>\n";
+ print "</directivesynopsis>\n\n";
+}
+
+sub HELP_MESSAGE {
+ print STDERR qq~
+
+Usage:
+
+cd manual/mod
+../../review_translations.pl -m mod_rewrite
+
+Lists languages with available translations, and tells you what
+directives are missing from each translation.
+
+-m mod_foo - Run for mod_foo.
+
+-x - Generate XML for missing directives, to be pasted into the
+translation XML.
+
+-l xx - Only look at document in language xx
+
+~;
+
+ exit();
+}
+
+