CVS general

debian-flyers-devel@lists.alioth.debian.org debian-flyers-devel@lists.alioth.debian.org
Sun, 27 Feb 2005 11:11:29 -0700


Update of /cvsroot/debian-flyers/general
In directory haydn:/tmp/cvs-serv8356

Modified Files:
	Makefile TODO 
Added Files:
	translation-check.pl 
Log Message:
added make-target "check", to check for translation up-to-date-ness

--- /cvsroot/debian-flyers/general/Makefile	2004/11/22 19:55:09	1.13
+++ /cvsroot/debian-flyers/general/Makefile	2005/02/27 18:11:29	1.14
@@ -24,8 +24,11 @@
 
 base = flyer
 texfiles = preamble.tex layout.tex
-langfiles = deutsch.tex italiano.tex nederlands.tex english.tex \
-	francaise.tex portugues.tex svenska.tex dansk.tex
+origfile = english.tex
+transfiles = deutsch.tex italiano.tex nederlands.tex francaise.tex \
+	portugues.tex svenska.tex dansk.tex
+
+langfiles = $(origfile) $(transfiles)
 
 .SUFFIXES:	.ps .pdf .dvi
 
@@ -91,6 +94,10 @@
 # housekeeping targets
 #
 
+# check up-to-dateness of translations
+check:
+	@for l in $(transfiles); do ./translation-check.pl $$l; done
+
 upload: clean
 	$(MAKE) $(base).ps
 	-rm -f $(base).{eps,dvi,aux,log}
--- /cvsroot/debian-flyers/general/TODO	2005/02/27 11:48:35	1.3
+++ /cvsroot/debian-flyers/general/TODO	2005/02/27 18:11:29	1.4
@@ -1,9 +1,7 @@
-# $Id: TODO,v 1.3 2005/02/27 11:48:35 joostvb Exp $
+# $Id: TODO,v 1.4 2005/02/27 18:11:29 joostvb Exp $
 # $Source: /cvsroot/debian-flyers/general/TODO,v $
 
 - Get dansk.tex, italiano.tex, portugues.tex, svenska.tex updated
-- Document the "translation-check" mechanism (uses english.tex CVS Id).
-  A "check" make-target would be nice.
 - Get http://alioth.debian.org/projects/debian-flyers/ linked to from
   http://www.nl.debian.org/events/material#flyers (a link
   to Jaldhar H. Vyas's DocBook XML leaflet on

--- /cvsroot/debian-flyers/general/translation-check.pl	2005/02/27 18:11:30	NONE
+++ /cvsroot/debian-flyers/general/translation-check.pl	2005/02/27 18:11:30	1.1
#!/usr/bin/perl -w

# $Id: translation-check.pl,v 1.1 2005/02/27 18:11:29 joostvb Exp $
# $Source: /cvsroot/debian-flyers/general/translation-check.pl,v $

# shamelessly stolen by Joost van Baal from
# cvs/cvs.debian.org/webwml/webwml/english/template/debian/translation-check.wml
# , which is by Javier Fernández-Sanguino

# See also http://www.nl.debian.org/devel/website/uptodate and
# cvs/cvs.debian.org/webwml/webwml/check_trans.pl

use strict;

my $debug = 0; # set to 1 for debugging

my $version = '';

$#ARGV == 0 or die 'usage: ./translation-check.pl <language>.tex';

my ($lang) = @ARGV;

# original file
my $file = "english.tex";

# version as stored in translation file translation-check header
my $translation;

# Read the original CVS/Entries file and extract version from it
if (open (CVS_ENTRY,"<CVS/Entries")) {
    while (<CVS_ENTRY>) {
        ($version) = $_ =~ m,/\Q$file\E/([\d\.]*),;
        last if $version;
    }
    close CVS_ENTRY;
} else {
    $version = "1.1";
}

# find translation-check marker in translation
open (FILE, "$lang") or die "No file $lang\n";
while (<FILE>) {
    ($translation) = $_ =~ /translation\-check\ translation="(\d+\.\d+)"/;
    last if $translation;
}

# maj rev of $file, maj rev in $translation,
my ($major_number, $major_translated_number, $last_number, $last_translated_number);

if ($version ne "")
{
    $debug and print "File " . $file . "'s original CVS revision is $version.\n";

    my @version_numbers = split /\./,$version;
    $major_number = $version_numbers[0];
    $last_number = pop @version_numbers;
    die "Invalid CVS revision for $file: $version\n"
        unless ($major_number =~ /\d+/ && $last_number =~ /\d+/);

    my @translation_numbers = split /\./,$translation;
    $major_translated_number = $translation_numbers[0];
    $last_translated_number = pop @translation_numbers;
    die "Invalid translation revision for $file: $translation.\n"
        unless ($major_translated_number =~ /\d+/ && $last_translated_number =~ /\d+/);
}

# Here we compare the original version with the translated one and print
# a note for the user if their first or last numbers are too far apart

$debug and print "Comparing original version $version to translation version $translation.\n";

if ($version eq "") {
    print "Original gone\n";
} elsif ( $major_number > $major_translated_number ) {
    print "Translation $lang out of date: $file has major revision $major_number, while $lang claims to translate major $major_translated_number only.\n";
} elsif ( $last_number > $last_translated_number ) {
    print "Translation $lang out of date: $file has minor revision $last_number, while $lang claims to translate minor $last_translated_number only.\n";
}