#!/usr/bin/perl -w use strict; use open ':utf8', ':std'; use PO4Moz::POfile; sub check { my $key = shift; my $entry = shift; # print "Text: ".$entry->{"text"}."\n"; # print "Tran: ".$entry->{"translation"}."\n"; if (($entry->{"translation"} eq "") && ($entry->{"text"} ne "")) { print STDERR "$key\n translation is empty while original is not\n"; } my @refsorig = $entry->{"text"} =~ m/%(?:[0-9]+\$)?[a-zA-Z]/g; my @refstran = $entry->{"translation"} =~ m/%(?:[0-9]+\$)?[a-zA-Z]/g; if (@refsorig ne @refstran) { print STDERR "$key\n not the same references in original and translated strings.\n"; } if ($entry->{"file"} =~ /\.properties$/) { my @varsorig = $entry->{"text"} =~ m/\#[1-9]/g; my @varstran = $entry->{"translation"} =~ m/\#[1-9]/g; if (@varsorig ne @varstran) { print STDERR "$key\n not the same variable references in original and translated strings.\n"; } } } my $pofile = $ARGV[0]; if (!$pofile) { print STDERR "Usage: $0 pofile\n"; exit 1; } open F, "<$pofile" or die "Cannot read $pofile: $_"; my @lines = ; close F; PO4Moz::POfile::parse("$pofile", join("", @lines), \&check);