From f791a6c4d1160ff053b30332ea9e87a86f0aaa92 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Mon, 10 Mar 2003 12:57:57 +0000 Subject: [PATCH] new pocheck.pl script git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6419 a592a061-630c-0410-9148-cb99ea01b6c8 --- po/ChangeLog | 10 ++++- po/POTFILES.in | 46 ++++++++++---------- po/pocheck.pl | 113 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+), 25 deletions(-) create mode 100755 po/pocheck.pl diff --git a/po/ChangeLog b/po/ChangeLog index 2126eaccb3..9f126f52e6 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,7 +1,13 @@ +2003-03-10 Michael Schmitt + + * pocheck.pl: new perl script that checks the consistency of a + given po file + 2003-02-14 Jean-Marc Lasgouttes - * POTFILES.in: * Makefile.in.in: use a plain sort instead of "sort - -f -n" to gewnerate POTFILES.in. Hopefully everybody will get the + * POTFILES.in: + * Makefile.in.in: use a plain sort instead of "sort -f -n" to + generate POTFILES.in. Hopefully everybody will get the same ordering now. 2003-02-06 Lars Gullik Bjønnes diff --git a/po/POTFILES.in b/po/POTFILES.in index ea8b902a84..4a5d31c732 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,17 +1,20 @@ -src/buffer.C -src/bufferlist.C src/BufferView.C -src/bufferview_funcs.C src/BufferView_pimpl.C src/Chktex.C -src/converter.C src/CutAndPaste.C +src/LColor.C +src/LaTeX.C +src/LyXAction.C +src/MenuBackend.C +src/buffer.C +src/bufferlist.C +src/bufferview_funcs.C +src/converter.C src/debug.C src/exporter.C src/format.C -src/frontends/controllers/biblio.C +src/frontends/LyXView.C src/frontends/controllers/ButtonController.h -src/frontends/controllers/character.C src/frontends/controllers/ControlAboutlyx.C src/frontends/controllers/ControlBibtex.C src/frontends/controllers/ControlCharacter.C @@ -27,13 +30,14 @@ src/frontends/controllers/ControlSearch.C src/frontends/controllers/ControlSpellchecker.C src/frontends/controllers/ControlThesaurus.C src/frontends/controllers/ControlVCLog.C +src/frontends/controllers/biblio.C +src/frontends/controllers/character.C src/frontends/controllers/frnt_lang.C src/frontends/controllers/helper_funcs.C src/frontends/gnome/GLog.C -src/frontends/LyXView.C src/frontends/qt2/Alert_pimpl.C +src/frontends/qt2/Dialogs3.C src/frontends/qt2/FileDialog.C -src/frontends/qt2/lengthcombo.C src/frontends/qt2/QAbout.C src/frontends/qt2/QBibitem.C src/frontends/qt2/QBibtex.C @@ -46,17 +50,16 @@ src/frontends/qt2/QCommandBuffer.C src/frontends/qt2/QDelimiterDialog.C src/frontends/qt2/QDocument.C src/frontends/qt2/QDocumentDialog.C -src/frontends/qt2/QError.C src/frontends/qt2/QERT.C +src/frontends/qt2/QError.C src/frontends/qt2/QExternal.C src/frontends/qt2/QExternalDialog.C src/frontends/qt2/QFloat.C src/frontends/qt2/QGraphics.C src/frontends/qt2/QGraphicsDialog.C src/frontends/qt2/QInclude.C -src/frontends/qt2/QIndex.C -src/frontends/qt2/QLog.C src/frontends/qt2/QLPrintDialog.C +src/frontends/qt2/QLog.C src/frontends/qt2/QMathDialog.C src/frontends/qt2/QMathMatrixDialog.C src/frontends/qt2/QMinipage.C @@ -74,13 +77,13 @@ src/frontends/qt2/QTabularCreate.C src/frontends/qt2/QTexinfo.C src/frontends/qt2/QThesaurus.C src/frontends/qt2/QToc.C -src/frontends/qt2/QtView.C src/frontends/qt2/QURL.C src/frontends/qt2/QVCLog.C src/frontends/qt2/QWrap.C +src/frontends/qt2/QtView.C +src/frontends/qt2/lengthcombo.C src/frontends/xforms/Alert_pimpl.C src/frontends/xforms/ColorHandler.C -src/frontends/xforms/combox.C src/frontends/xforms/Dialogs3.C src/frontends/xforms/FileDialog.C src/frontends/xforms/FormAboutlyx.C @@ -92,8 +95,8 @@ src/frontends/xforms/FormCharacter.C src/frontends/xforms/FormCitation.C src/frontends/xforms/FormDialogView.C src/frontends/xforms/FormDocument.C -src/frontends/xforms/FormError.C src/frontends/xforms/FormERT.C +src/frontends/xforms/FormError.C src/frontends/xforms/FormExternal.C src/frontends/xforms/FormFiledialog.C src/frontends/xforms/FormFloat.C @@ -125,14 +128,15 @@ src/frontends/xforms/FormToc.C src/frontends/xforms/FormUrl.C src/frontends/xforms/FormVCLog.C src/frontends/xforms/FormWrap.C -src/frontends/xforms/input_validators.C src/frontends/xforms/Menubar_pimpl.C -src/frontends/xforms/xforms_helpers.C src/frontends/xforms/XMiniBuffer.C +src/frontends/xforms/combox.C +src/frontends/xforms/input_validators.C +src/frontends/xforms/xforms_helpers.C src/gettext.h src/importer.C -src/insets/insetbibtex.C src/insets/inset.C +src/insets/insetbibtex.C src/insets/insetcaption.C src/insets/inseterror.C src/insets/insetert.C @@ -159,15 +163,12 @@ src/insets/insetwrap.C src/ispell.C src/kbsequence.C src/language.C -src/LaTeX.C -src/LColor.C src/lengthcommon.C -src/LyXAction.C src/lyx_cb.C +src/lyx_main.C src/lyxfind.C src/lyxfont.C src/lyxfunc.C -src/lyx_main.C src/lyxrc.C src/lyxtextclasslist.C src/lyxvc.C @@ -176,11 +177,10 @@ src/mathed/formulamacro.C src/mathed/math_hullinset.C src/mathed/math_parboxinset.C src/mathed/ref_inset.C -src/MenuBackend.C src/paragraph.C src/rowpainter.C src/support/filetools.C src/tabular.C +src/text.C src/text2.C src/text3.C -src/text.C diff --git a/po/pocheck.pl b/po/pocheck.pl new file mode 100755 index 0000000000..c1bb637766 --- /dev/null +++ b/po/pocheck.pl @@ -0,0 +1,113 @@ +#! /usr/bin/perl -w + +# file pocheck.pl +# +# This file is part of LyX, the document processor. +# Licence details can be found in the file COPYING. +# +# author: Michael Schmitt, michael.schmitt@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 ... + +foreach $pofilename ( @ARGV ) +{ + print "Processing po file '$pofilename'...\n"; + + open( INPUT, "<$pofilename" ) + || die "Cannot read po file '$pofilename'"; + @pofile = ; + close( INPUT ); + + undef( %trans ); + keys( %trans ) = 10000; + + $noOfLines = $#pofile; + + $warn = 0; + + $i = 0; + while ($i <= $noOfLines) { + if ( ( $msgid ) = ( $pofile[$i] =~ m/^msgid "(.*)"/ ) ) { + $i++; + while ( ( $more ) = $pofile[$i] =~ m/^"(.*)"/ ) { + $msgid = $msgid . $more; + $i++; + } + + until ( ( $msgstr ) = ( $pofile[$i] =~ m/^msgstr "(.*)"/ ) ) { $i++; }; + $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 redundant 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 redundant period:\n" ); + # print( " '$msgid' => '$msgstr'\n" ); + # $warn++; + #} + + # Check space at the end of a message + if ( ( $msgid =~ m/ *?(\|.*)?$/ ) != ( $msgstr =~ m/ *?(\|.*)?$/ ) ) { + print( "Missing or redundant space:\n" ); + print( " '$msgid' => '$msgstr'\n" ); + $warn++; + } + + # Check for "&" shortcuts + if ( ( $msgid =~ m/&[^ ]/ ) != ( $msgstr =~ m/&[^ ]/ ) ) { + print( "Missing or redundant QT shortcut:\n" ); + print( " '$msgid' => '$msgstr'\n" ); + $warn++; + } + + # Check for "|..." shortcut(s) + if ( ( $msgid =~ m/\|[^ ]/ ) != ( $msgstr =~ m/\|[^ ]/ ) ) { + print( "Missing or redundant xforms shortcut:\n" ); + print( " '$msgid' => '$msgstr'\n" ); + $warn++; + } + + $msgid_clean = lc($msgid); + $msgstr_clean = lc($msgstr); + + $msgid_clean =~ s/|.*?$//; + $msgid_clean =~ s/&([^ ])/$1/; + $msgstr_clean =~ s/|.*?$//; + $msgstr_clean =~ s/&([^ ])/$1/; + + if ( defined( $trans{$msgid_clean} ) && $msgstr_clean ne $trans{$msgid_clean}{'msgstr_clean'} ) { + print( "Different translations for '$msgid_clean':\n" ); + print( " '$msgid' => '$msgstr'\n" ); + print( " '$trans{$msgid_clean}{'msgid'}' => '$trans{$msgid_clean}{'msgstr'}'\n" ); + $warn++; + } else { + $trans{$msgid_clean} = { 'msgid' => $msgid, 'msgstr' => $msgstr, 'msgstr_clean' => $msgstr_clean }; + } + } + } else { + $i++; + } + } + print( "\nTotal number of warnings: $warn\n\n" ); +}