#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Version: 2005-05-07, by Saša Tomić <stomic@gmx.net>
#          2005-08-12, by Danilo Šegan <danilo@gnome.org>

import sys

if len(sys.argv)>3 or (len(sys.argv)>1 and sys.argv[1] == '-h'):
	print """
Usage: translator.py input_cyrillic_file.po output_latin_file.po
or:    translator.py - output_latin_file.po
or:    ... | translator.py > output_latin_file.po
"""
	sys.exit()

transv = { }
for letter in [ u'A', u'B', u'C', u'Č', u'Ć', u'D', u'Đ', u'Dž', u'E', u'F',
		u'G', u'H', u'I', u'J', u'K', u'L', u'Lj', u'M', u'N', u'Nj',
		u'O', u'P', u'R', u'S', u'Š', u'T', u'U',  u'V', u'Z', u'Ž' ]:
	for digraph in [ u'Lj', u'Nj', u'Dž' ]:
		transv[digraph + letter] = digraph.upper() + letter
		#transv[letter + digraph] = letter + digraph.upper()

trans = {u'а':u'a', u'б':u'b', u'в':u'v', u'г':u'g', u'д':u'd', u'ђ':u'đ',
	 u'е':u'e', u'ж':u'ž', u'з':u'z', u'и':u'i', u'ј':u'j', u'к':u'k',
	 u'л':u'l', u'љ':u'lj',u'м':u'm', u'н':u'n', u'њ':u'nj',u'о':u'o',
	 u'п':u'p', u'р':u'r', u'с':u's', u'т':u't', u'ћ':u'ć', u'у':u'u',
	 u'ф':u'f', u'х':u'h', u'ц':u'c', u'ч':u'č', u'џ':u'dž',u'ш':u'š',
	 u'А':u'A', u'Б':u'B', u'В':u'V', u'Г':u'G', u'Д':u'D', u'Ђ':u'Đ',
	 u'Е':u'E', u'Ж':u'Ž', u'З':u'Z', u'И':u'I', u'Ј':u'J', u'К':u'K',
	 u'Л':u'L', u'Љ':u'Lj',u'М':u'M', u'Н':u'N', u'Њ':u'Nj',u'О':u'O',
	 u'П':u'P', u'Р':u'R', u'С':u'S', u'Т':u'T', u'Ћ':u'Ć', u'У':u'U',
	 u'Ф':u'F', u'Х':u'H', u'Ц':u'C', u'Ч':u'Č', u'Џ':u'Dž',u'Ш':u'Š'
	 }

inf = sys.stdin
outf = sys.stdout
if len(sys.argv)>=2 and sys.argv[1] != '-': inf = file(sys.argv[1], 'rb')
if len(sys.argv)==3: outf = file(sys.argv[2], "wb")

l = inf.read().decode('utf-8')
i = 0
for char in trans:
	l = l.replace(char, trans[char])
for char in transv:
	l = l.replace(char, transv[char])
	
outf.write(l.encode('utf-8'))
