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();
+}
+
+