]> git.phdru.name Git - m_lib.git/blob - m_lib/rus/lat2rus.py
abf8af3823708ec56a391b81488942a7dbd607e6
[m_lib.git] / m_lib / rus / lat2rus.py
1 #! /usr/bin/env python
2 # -*- coding: koi8-r -*-
3
4 #
5 # Lat -> Rus translation
6 # Written by Broytman. Copyright (C) 2002 PhiloSoft Design
7 #
8
9 lat2koi_d = {
10    "q": "й",
11    "w": "ц",
12    "e": "у",
13    "r": "к",
14    "t": "е",
15    "y": "н",
16    "u": "г",
17    "i": "ш",
18    "o": "щ",
19    "p": "з",
20    "[": "х",
21    "]": "ъ",
22    "a": "ф",
23    "s": "ы",
24    "d": "в",
25    "f": "а",
26    "g": "п",
27    "h": "р",
28    "j": "о",
29    "k": "л",
30    "l": "д",
31    ";": "ж",
32    "'": "э",
33    "z": "я",
34    "x": "ч",
35    "c": "с",
36    "v": "м",
37    "b": "и",
38    "n": "т",
39    "m": "ь",
40    ",": "б",
41    ".": "ю",
42    "Q": "Й",
43    "W": "Ц",
44    "E": "У",
45    "R": "К",
46    "T": "Е",
47    "Y": "Н",
48    "U": "Г",
49    "I": "Ш",
50    "O": "Щ",
51    "P": "З",
52    "{": "Х",
53    "}": "Ъ",
54    "A": "Ф",
55    "S": "Ы",
56    "D": "В",
57    "F": "А",
58    "G": "П",
59    "H": "Р",
60    "J": "О",
61    "K": "Л",
62    "L": "Д",
63    ":": "Ж",
64    "\"": "Э",
65    "Z": "Я",
66    "X": "Ч",
67    "C": "С",
68    "V": "М",
69    "B": "И",
70    "N": "Т",
71    "M": "Ь",
72    "<": "Б",
73    ">": "Ю",
74    "`": "ё",
75    "~": "Ё",
76    "!": "!",
77    "@": "\"",
78    "#": "#",
79    "$": "*",
80    "%": ":",
81    "^": ",",
82    "&": ".",
83    "*": ";"
84 }
85
86
87 def make_lat2xxx(encoding="cp1251"):
88    d = {}
89    for k, v in lat2koi_d.items():
90       v = unicode(v, "koi8-r").encode(encoding)
91       d[k] = v
92    return d
93
94
95 from m_lib.lazy.dict import LazyDictInitFunc
96 lat2win_d = LazyDictInitFunc(make_lat2xxx, encoding="cp1251")
97
98
99 def lat2rus(instr, lat2rus_d = lat2koi_d):
100    out = []
101    for c in instr:
102       out.append(lat2rus_d.get(c, c))
103    return ''.join(out)
104
105
106 lat2koi = lat2rus
107
108 def lat2win(instr):
109    return lat2rus(instr, lat2win_d)
110
111
112 if __name__ == "__main__":
113    Test = "Ghbdtn nt,t^ ghtrhfcysq vbh!"
114    print "Test:", Test
115    print "Тест:", lat2koi(Test)
116    print "Тест:", unicode(lat2win(Test), "cp1251").encode("koi8-r")