diff options
Diffstat (limited to 'po/stats.pl')
-rwxr-xr-x | po/stats.pl | 218 |
1 files changed, 0 insertions, 218 deletions
diff --git a/po/stats.pl b/po/stats.pl deleted file mode 100755 index e080296..0000000 --- a/po/stats.pl +++ /dev/null @@ -1,218 +0,0 @@ -#!/usr/bin/perl -# -# This script reads the xx.po file and generates some statistics -# information in form of XML output. This output is parsed by -# the translate.php file found on the KMyMoney web-site. -# -# (C) 2007 by Thomas Baumgart -# -# Syntax: -# stats.pl <path-to-po-file> -# -# The script requires to find the kmymoney2.pot file in the same -# directory in order to check if the po file is based on the current -# pot file. -# -#*************************************************************************** -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU General Public License as published by * -#* the Free Software Foundation; either version 2 of the License, or * -#* (at your option) any later version. * -#*************************************************************************** - -# total message counter -my $msgs = 0; - -# fuzzy message counter -my $fuzzy = 0; - -# translated message counter -my $translated = 0; - -# untranslated message counter -my $untranslated = 0; - -# state machine -# possible states: -# -# 0 - idle -# 1 - in message -# 2 - in msgid -# 3 - in empty msgstr -# 4 - in msgstr -my $state = 0; - -# line counter -my $linecnt = 0; - -# filename of file to process -my $fname; - -# pot version information -my $potVersion; - -# "po file matches current pot file" flag -my $poVersionOk = 0; - -if($#ARGV == -1) { - $fname = "-"; -} elsif($#ARGV == 0) { - $fname = $ARGV[0]; - $fname =~ /^(.*\/)?(.*)\.po$/; - $basedir = $1; - $langcode = $2; -} else { - print STDERR "Can only process one file at a time\n"; - exit 1; -} - - -$country{"ca"} = "Catalan"; -$country{"cs"} = "Czech"; -$country{"da"} = "Denmark"; -$country{"de"} = "Germany"; -$country{"en_GB"} = "Great Britain"; -$country{"es"} = "Spain"; -$country{"es_AR"} = "Argentina"; -$country{"fi"} = "Finnland"; -$country{"fr"} = "France"; -$country{"gl"} = "Galicia"; -$country{"it"} = "Italy"; -$country{"lt"} = "Lithuania"; -$country{"nl"} = "Netherlands"; -$country{"pl"} = "Poland"; -$country{"pt_BR"} = "Brazil"; -$country{"pt"} = "Portugal"; -$country{"ro"} = "Romania"; -$country{"ru"} = "Russia"; -$country{"sk"} = "Slovakia"; -$country{"sl"} = "Slovenia"; -$country{"sv"} = "Sweden"; -$country{"tr"} = "Turkey"; -$country{"zh_CN"} = "China"; - -$language{"ca"} = "Catalan"; -$language{"cs"} = "Czech"; -$language{"da"} = "Danish"; -$language{"de"} = "German"; -$language{"en_GB"} = "British"; -$language{"es"} = "Spanish (Spain)"; -$language{"es_AR"} = "Spanish (Argentina)"; -$language{"fi"} = "Suomi"; -$language{"fr"} = "French"; -$language{"gl"} = "Galician"; -$language{"it"} = "Italian"; -$language{"lt"} = "Lithuanian"; -$language{"nl"} = "Dutch"; -$language{"pl"} = "Polish"; -$language{"pt_BR"} = "Portuguese (Brazil)"; -$language{"pt"} = "Portuguese (Portugal)"; -$language{"ro"} = "Romanian"; -$language{"ru"} = "Russian"; -$language{"sk"} = "Slovak"; -$language{"sl"} = "Slovenian"; -$language{"sv"} = "Swedish"; -$language{"tr"} = "Turkish"; -$language{"zh_CN"} = "Simplified Chinese"; - -$flags{"es_AR"} = "ar"; -$flags{"en_GB"} = "gb"; -$flags{"pt_BR"} = "br"; -$flags{"pt"} = "pt"; -$flags{"da"} = "dk"; -$flags{"gl"} = "Galicia"; -$flags{"zh_CN"} = "cn"; - -open(IN, "< $basedir/kmymoney2.pot") or die("POT file not found."); -while(<IN>) { - if($_ =~ /POT-Creation-Date/) { - chomp($_); - $potVersion = $_; - last; - } -} -close IN; - -$potVersionOk="0"; - -open(IN, "< $fname") or die("Cannot open $fname for reading"); -while(<IN>) { - $linecnt++; - if($_ =~ /Language-Team: (.*) <.*>/) { - $language = $1; - next; - } - if($_ =~ /Last-Translator: (.*) <.*>/) { - $author = $1; - next; - } - if($_ =~ /POT-Creation-Date/) { - chomp($_); - $potVersionOk = "1" if($_ eq $potVersion); - next; - } - # "PO-Revision-Date: 2007-02-21 21:57+0100\n" - if($_ =~ /PO-Revision-Date: (\d+-\d+-\d+) /) { - $poRevision = $1; - } - - if($state == 0) { - if($_ =~ /^\#:/) { - $state = 1; - } - } elsif($state == 1) { - if($_ =~ /^msgid /) { - $msgs++; - $state = 2; - - } elsif($_ =~ /^#, fuzzy/) { - $fuzzy++; - } - - } elsif($state == 2) { - if($_ =~ /^msgstr ""$/) { - # we have detected an emtpy msgstr. this can have two reasons - # a) the message is untranslated, then the next line is empty - # b) the message is too long and starts on the next line - $state = 3; - } elsif($_ =~ /^msgstr "[^"]/) { - $translated++; - $state = 4; - } - } elsif($state == 3) { - if($_ =~ /^"[^"]/) { - $translated++; - $state = 4; - } else { - $untranslated++; - $state = 0; - } - } elsif($state == 4) { - chomp($_); - if($_ =~ /^$/) { - $state = 0; - } - } -} -close IN; - -my $flag = $flags{$langcode}; -$flag = $langcode if(length($flag) == 0); - -$ptransdisp = (int (($translated - $fuzzy) * 10000 / $msgs)) / 100; -; -$pfuzzy = int (($fuzzy * 100) / $msgs); -$puntrans = int (($untranslated * 100) / $msgs); - -print "<translation>\n"; -print " <flag>$flag</flag>\n"; -print " <language>$language{$langcode}</language>\n"; -print " <country>$country{$langcode}</country>\n"; -print " <translator>$author</translator>\n"; -print " <translated>$ptransdisp</translated>\n"; -print " <fuzzy>$pfuzzy</fuzzy>\n"; -print " <untranslated>$puntrans</untranslated>\n"; -print " <potcurrent>$potVersionOk</potcurrent>\n"; -print " <porevision>$poRevision</porevision>\n"; -print "</translation>\n"; - |