From: Richard Heck Date: Tue, 5 Apr 2011 22:32:32 +0000 (+0000) Subject: Add option processing to pocheck.pl so that we can selectively check for certain... X-Git-Tag: 2.0.0~228 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=89bb06a23e7337c0587a575f7b4a39f8acb97817;p=features.git Add option processing to pocheck.pl so that we can selectively check for certain problems, rather than having to sort through everything manually. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38265 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/po/pocheck.pl b/po/pocheck.pl index 1c826e1752..fe45b059ce 100755 --- a/po/pocheck.pl +++ b/po/pocheck.pl @@ -7,19 +7,43 @@ # # author: Michael Gerz, michael.gerz@teststep.org # -# This script performs some consistency checks on po files: -# -# 1. Uniform translation of messages that are identical except -# for capitalization, shortcuts, and shortcut notation. -# 2. Usage of the following elements in both the original and -# the translated message (or no usage at all): -# shortcuts ("&" and "|..."), trailing space, trailing colon -# -# Invocation: -# pocheck.pl po_file po_file ... use strict; use warnings; +use Getopt::Std; + +my $usage = < $n; } - if ($n <= 0) { - print "Problem finding arguments in:\n $msgid!\n"; - $warn++; - } else { - foreach my $i (1..$n) { - my $arg = "%$i\\\$s"; - if ( $msgstr !~ m/$arg/ ) { - print "Missing argument `$arg'\n '$msgid' ==> '$msgstr'\n"; - $warn++; + if ($check_args) { + my @argstrs = ( $msgid =~ m/%(\d)\$s/g ); + if (@argstrs) { + my $n = 0; + foreach my $arg (@argstrs) { $n = $arg if $arg > $n; } + if ($n <= 0) { + print "Problem finding arguments in:\n $msgid!\n"; + $warn++; + } else { + foreach my $i (1..$n) { + my $arg = "%$i\\\$s"; + if ( $msgstr !~ m/$arg/ ) { + print "Missing argument `$arg'\n '$msgid' ==> '$msgstr'\n"; + $warn++; + } } } } } - # Check colon at the end of a message - if ( ( $msgid =~ m/: *(\|.*)?$/ ) != ( $msgstr =~ m/: *(\|.*)?$/ ) ) { - print( "Missing or unexpected colon:\n" ); - print( " '$msgid' => '$msgstr'\n" ); - $warn++; + if ($check_colons) { + # Check colon at the end of a message + if ( ( $msgid =~ m/: *(\|.*)?$/ ) != ( $msgstr =~ m/: *(\|.*)?$/ ) ) { + print( "Missing or unexpected colon:\n" ); + print( " '$msgid' => '$msgstr'\n" ); + $warn++; + } } - # Check period at the end of a message; uncomment code if you are paranoid - #if ( ( $msgid =~ m/\. *(\|.*)?$/ ) != ( $msgstr =~ m/\. *(\|.*)?$/ ) ) { - # print( "Missing or unexpected period:\n" ); - # print( " '$msgid' => '$msgstr'\n" ); - # $warn++; - #} - - # Check space at the end of a message - if ( ( $msgid =~ m/ *?(\|.*)?$/ ) != ( $msgstr =~ m/ *?(\|.*)?$/ ) ) { - print( "Missing or unexpected space:\n" ); - print( " '$msgid' => '$msgstr'\n" ); - $warn++; + if ($check_periods) { + # Check period at the end of a message; uncomment code if you are paranoid + if ( ( $msgid =~ m/\. *(\|.*)?$/ ) != ( $msgstr =~ m/\. *(\|.*)?$/ ) ) { + print( "Missing or unexpected period:\n" ); + print( " '$msgid' => '$msgstr'\n" ); + $warn++; + } } - # Check for "&" shortcuts - if ( ( $msgid =~ m/&[^ ]/ ) != ( $msgstr =~ m/&[^ ]/ ) ) { - print( "Missing or unexpected Qt shortcut:\n" ); - print( " '$msgid' => '$msgstr'\n" ); - $warn++; + if ($check_spaces) { + # Check space at the end of a message + if ( ( $msgid =~ m/ *?(\|.*)?$/ ) != ( $msgstr =~ m/ *?(\|.*)?$/ ) ) { + print( "Missing or unexpected space:\n" ); + print( " '$msgid' => '$msgstr'\n" ); + $warn++; + } } - # Check for "|..." shortcuts - if ( ( $msgid =~ m/\|[^ ]/ ) != ( $msgstr =~ m/\|[^ ]/ ) ) { - print( "Missing or unexpected menu shortcut:\n" ); - print( " '$msgid' => '$msgstr'\n" ); - $warn++; + if ($check_qt) { + # Check for "&" shortcuts + if ( ( $msgid =~ m/&[^ ]/ ) != ( $msgstr =~ m/&[^ ]/ ) ) { + print( "Missing or unexpected Qt shortcut:\n" ); + print( " '$msgid' => '$msgstr'\n" ); + $warn++; + } } + + if ($check_menu) { + # Check for "|..." shortcuts + if ( ( $msgid =~ m/\|[^ ]/ ) != ( $msgstr =~ m/\|[^ ]/ ) ) { + print( "Missing or unexpected menu shortcut:\n" ); + print( " '$msgid' => '$msgstr'\n" ); + $warn++; + } + } + + next unless $check_trans; # we now collect these translations in a hash. # this will allow us to check below if we have translated @@ -139,19 +177,21 @@ foreach my $pofilename ( @ARGV ) $trans{$msgid_clean}{$msgstr_clean} = [ $msgid, $msgstr ]; } - foreach $msgid ( keys %trans ) { - # so $ref is a reference to the inner hash. - my $ref = $trans{$msgid}; - # @msgstrkeys is an array of the keys of that inner hash. - my @msgstrkeys = keys %$ref; - - # do we have more than one such key? - if ( $#msgstrkeys > 0 ) { - print( "Different translations for '$msgid':\n" ); - foreach $msgstr ( @msgstrkeys ) { - print( " '" . $trans{$msgid}{$msgstr}[0] . "' => '" . $trans{$msgid}{$msgstr}[1] . "'\n" ); + if ($check_trans) { + foreach $msgid ( keys %trans ) { + # so $ref is a reference to the inner hash. + my $ref = $trans{$msgid}; + # @msgstrkeys is an array of the keys of that inner hash. + my @msgstrkeys = keys %$ref; + + # do we have more than one such key? + if ( $#msgstrkeys > 0 ) { + print( "Different translations for '$msgid':\n" ); + foreach $msgstr ( @msgstrkeys ) { + print( " '" . $trans{$msgid}{$msgstr}[0] . "' => '" . $trans{$msgid}{$msgstr}[1] . "'\n" ); + } + $warn++; } - $warn++; } }