#!/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 = <F>;
close F;

PO4Moz::POfile::parse("$pofile", join("", @lines), \&check);
