from pyg3t.gtparse import Parser
from glob import glob

fnames = glob('*.po')
fnames.sort()

p = Parser()

U = 0
F = 0
T = 0

MSGS = 0

def printline_ascii(fname, t, f, u, msgs, last_translator):
    print '%42s: %4dT %4dF %4dU [msgs: %d]' % (fname, t, f, u, msgs)

def printline_wikiformat(fname, t, f, u, msgs, last_translator):
    print '|-'
    assert f == 0
    if last_translator is None:
        last_translator = 'ukendt'
    percentage = '%4.2f' % (100.0 * t / msgs)
    if last_translator.startswith('FULL NAME'):
        last_translator = 'ingen'
    last_translator = last_translator.replace('@', '(at)')
    string = '| %s || %s || %s || %s%% || %s || -' % (fname, t, u, percentage, 
                                                      last_translator)
    print string.encode('utf8')

for fname in fnames:
    u = 0
    f = 0
    t = 0
    msgs = 0
    last_translator = None
    for msg in p.parse_asciilike(open(fname)):
        if msg.msgid == '':
            lines = msg.msgstr.split('\\n')
            for line in lines:
                if line.startswith('Last-Translator: '):
                    last_translator = line.split(':', 1)[1].strip()
                    break
        msgs += 1
        if msg.istranslated:
            t += 1
            assert not msg.isfuzzy
        elif msg.isfuzzy:
            f += 1
        else:
            u += 1
    if u != 0 or f != 0:
        printline_wikiformat(fname, t, f, u, msgs, last_translator)
    U += u
    F += f
    T += t
    MSGS += msgs

print '=' * 78
print 'Translated     %d (%.2f%%)' % (T, 100.0 * float(T) / MSGS)
print 'Fuzzy          %d (%.2f%%)' % (F, 100.0 * float(F) / MSGS)
print 'Untranslated   %d (%.2f%%)' % (U, 100.0 * float(U) / MSGS)
print 'Total          %d' % MSGS
print '=' * 78

