#!/usr/bin/env python # -*- coding: utf-8 -*- # Version: 2005-05-07, by Saša Tomić # 2005-08-12, by Danilo Šegan 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'))