]> git.lyx.org Git - features.git/commitdiff
Clean up and add soem comments to pocheck.pl.
authorRichard Heck <rgheck@comcast.net>
Tue, 5 Apr 2011 21:48:55 +0000 (21:48 +0000)
committerRichard Heck <rgheck@comcast.net>
Tue, 5 Apr 2011 21:48:55 +0000 (21:48 +0000)
It wouldn't be a bad thing to port this to Python....

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38262 a592a061-630c-0410-9148-cb99ea01b6c8

po/pocheck.pl

index 69bc405b2b947b1c1b9a59f5a850cebdee2b8d97..dbbf1935d13318087737897640f79c4b98460085 100755 (executable)
@@ -36,77 +36,90 @@ foreach $pofilename ( @ARGV )
 
   $i = 0;
   while ($i <= $noOfLines) {
-    if ( ( $msgid ) = ( $pofile[$i] =~ m/^msgid "(.*)"/ ) ) {
+    ( $msgid ) = ( $pofile[$i] =~ m/^msgid "(.*)"/ );
+    $i++;
+    next unless $msgid;
+    
+    # some msgid's are more than one line long, so add those.
+    while ( ( $more ) = $pofile[$i] =~ m/^"(.*)"/ ) {
+      $msgid = $msgid . $more;
       $i++;
-      while ( ( $more ) = $pofile[$i] =~ m/^"(.*)"/ ) {
-        $msgid = $msgid . $more;
-        $i++;
-      }
+    }
 
-      until ( ( $msgstr ) = ( $pofile[$i] =~ m/^msgstr "(.*)"/ ) ) { $i++; };
+    # now look for the associated msgstr.
+    until ( ( $msgstr ) = ( $pofile[$i] =~ m/^msgstr "(.*)"/ ) ) { $i++; };
+    $i++;
+    # again collect any extra lines.
+    while ( ( $i <= $noOfLines ) &&
+            ( ( $more ) = $pofile[$i] =~ m/^"(.*)"/ ) ) {
+      $msgstr = $msgstr . $more;
       $i++;
-      while ( ( $i <= $noOfLines ) &&
-              ( ( $more ) = $pofile[$i] =~ m/^"(.*)"/ ) ) {
-        $msgstr = $msgstr . $more;
-        $i++;
-      }
+    }
 
-      if ( $msgid ne "" && $msgstr ne "" ) {
-
-        # 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++;
-        }
-
-        # Check for "&" shortcuts
-        if ( ( $msgid =~ m/&[^ ]/ ) != ( $msgstr =~ m/&[^ ]/ ) ) {
-          print( "Missing or unexpected Qt shortcut:\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++;
-        }
-
-        $msgid_clean  = lc($msgid);
-        $msgstr_clean = lc($msgstr);
-
-        $msgid_clean  =~ s/(.*)\|.*?$/$1/;  # strip menu shortcuts
-        $msgstr_clean =~ s/(.*)\|.*?$/$1/;
-        $msgid_clean  =~ s/&([^ ])/$1/;     # strip Qt shortcuts
-        $msgstr_clean =~ s/&([^ ])/$1/;
-
-        $trans{$msgid_clean}{$msgstr_clean} = [ $msgid, $msgstr ];
-      }
-    } else {
-      $i++;
+    # nothing to do if one of them is empty. 
+    # (surely that is always $msgstr?)
+    next if ($msgid eq "" or $msgstr eq "");
+
+    # 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++;
+    }
+
+    # Check for "&" shortcuts
+    if ( ( $msgid =~ m/&[^ ]/ ) != ( $msgstr =~ m/&[^ ]/ ) ) {
+      print( "Missing or unexpected Qt shortcut:\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++;
+    }
+
+    # we now collect these translations in a hash.
+    # this will allow us to check below if we have translated
+    # anything more than one way.
+    $msgid_clean  = lc($msgid);
+    $msgstr_clean = lc($msgstr);
+
+    $msgid_clean  =~ s/(.*)\|.*?$/$1/;  # strip menu shortcuts
+    $msgstr_clean =~ s/(.*)\|.*?$/$1/;
+    $msgid_clean  =~ s/&([^ ])/$1/;     # strip Qt shortcuts
+    $msgstr_clean =~ s/&([^ ])/$1/;
+
+    # this is a hash of hashes. the keys of the outer hash are
+    # cleaned versions of ORIGINAL strings. the keys of the inner hash 
+    # are the cleaned versions of their TRANSLATIONS. The value for the 
+    # inner hash is an array of the orignal string and translation.
+    $trans{$msgid_clean}{$msgstr_clean} = [ $msgid, $msgstr ];
   }
 
   foreach $msgid ( keys %trans ) {
+    # so $ref is a reference to the inner hash.
     $ref = $trans{$msgid};
+    # @msgstrkeys is an array of the keys of that inner hash.
     @msgstrkeys = keys %$ref;
 
+    # do we have more than one such key?
     if ( $#msgstrkeys > 0 ) {
       print( "Different translations for '$msgid':\n" );
       foreach $msgstr ( @msgstrkeys ) {