#!/usr/bin/env python3

import re
import sys

buf = []
def read_line(fp):
    s = fp.readline()
    if s:
        buf.insert(0,s)

with open(sys.argv[1]) as fp:
    read_line(fp)

    while buf:
        if buf[0] == '#, fuzzy, c-format\n':
            read_line(fp)
            read_line(fp)
            read_line(fp)

            if len(buf) == 4:
                m1 = re.compile(r'^#\| msgid "(.*)"$').match(buf[2])
                m2 = re.compile(r'^msgid "(.*)"$').match(buf[1])
                m3 = re.compile(r'^msgstr "(.*)"$').match(buf[0])

                if m1 is not None and m2 is not None and m3 is not None:
                    s1 = m1.group(1)
                    s2 = m2.group(1)
                    s3 = m3.group(1)

                    rewrites = [
                        ( r'^%s: (.*)$'
                        , r'^(.*)$'
                        , r'^%s: (.*)$'
                        , lambda x: x
                        ),
                        ( r'^%s: (.*)\\n$'
                        , r'^(.*)$'
                        , r'^%s: (.*)\\n$'
                        , lambda x: x
                        ),
                        ( r'^(.*)\\n$'
                        , r'^(.*)$'
                        , r'^(.*)\\n$'
                        , lambda x: x
                        ),
                        ( r'^(.*)%s$'
                        , r'^(.*)%m$'
                        , r'^(.*)%s$'
                        , lambda x: "{}%m".format(x)
                        ),
                        ( r'^(.*)%s\\n$'
                        , r'^(.*)%m$'
                        , r'^(.*)%s\\n$'
                        , lambda x: "{}%m".format(x)
                        ),
                        ( r'^%s: (.*)%s\\n$'
                        , r'^(.*)%m$'
                        , r'^%s: (.*)%s\\n$'
                        , lambda x: "{}%m".format(x)
                        ),
                        ( r'^(.*)%m$'
                        , r'^(.*)%s$'
                        , r'^(.*)%m$'
                        , lambda x: "{}%s".format(x)
                        ),
                        ( r'^(.*)%m\\n$'
                        , r'^(.*)%s$'
                        , r'^(.*)%m\\n$'
                        , lambda x: "{}%s".format(x)
                        ),
                        ( r'^%s: (.*)%m\\n$'
                        , r'^(.*)%s$'
                        , r'^%s: (.*)%m\\n$'
                        , lambda x: "{}%s".format(x)
                        )
                    ]

                    for r1,r2,r3,f in rewrites:
                        m1 = re.compile(r1).match(s1)
                        m2 = re.compile(r2).match(s2)
                        m3 = re.compile(r3).match(s3)

                        if m1 is not None and m2 is not None and m3 is not None:
                            if m1.group(1) == m2.group(1):
                                str = f(m3.group(1))

                                print('#, c-format')
                                print(buf[1], end='')
                                print('msgstr "{}"'.format(str))
                                buf = []
                                break

        while buf:
            print(buf.pop(), end='')

        read_line(fp)
