]> git.phdru.name Git - m_lib.git/blob - m_lib/rus/rus2lat.py
Initial import
[m_lib.git] / m_lib / rus / rus2lat.py
1 #! /usr/bin/env python
2 # -*- coding: koi8-r -*-
3
4 #
5 # Rus -> Lat transliteration (koi2lat and win2lat)
6 # Written by Broytman. Copyright (C) 1997-2002 PhiloSoft Design
7 #
8
9 koi2lat_d = {
10    "�": "A",
11    "�": "B",
12    "�": "V",
13    "�": "G",
14    "�": "D",
15    "�": "E",
16    "�": "Zh",
17    "�": "Z",
18    "�": "I",
19    "�": "Y",
20    "�": "K",
21    "�": "L",
22    "�": "M",
23    "�": "N",
24    "�": "O",
25    "�": "P",
26    "�": "R",
27    "�": "S",
28    "�": "T",
29    "�": "U",
30    "�": "F",
31    "�": "H",
32    "�": "Ts",
33    "�": "Ch",
34    "�": "Sh",
35    "�": "Sh",
36    "�": "'",
37    "�": "'",
38    "�": "Y",
39    "�": "E",
40    "�": "Yu",
41    "�": "Ya",
42    "�": "a",
43    "�": "b",
44    "�": "v",
45    "�": "g",
46    "�": "d",
47    "�": "e",
48    "�": "zh",
49    "�": "z",
50    "�": "i",
51    "�": "y",
52    "�": "k",
53    "�": "l",
54    "�": "m",
55    "�": "n",
56    "�": "o",
57    "�": "p",
58    "�": "r",
59    "�": "s",
60    "�": "t",
61    "�": "u",
62    "�": "f",
63    "�": "h",
64    "�": "ts",
65    "�": "ch",
66    "�": "sh",
67    "�": "sh",
68    "�": "'",
69    "�": "'",
70    "�": "y",
71    "�": "e",
72    "�": "yu",
73    "�": "ya"
74 }
75
76 def make_xxx2lat(encoding="cp1251"):
77    d = {}
78    for k, v in koi2lat_d.items():
79       k = unicode(k, "koi8-r").encode(encoding)
80       d[k] = v
81    return d
82
83
84 from m_lib.lazy.dict import LazyDictInitFunc
85 win2lat_d = LazyDictInitFunc(make_xxx2lat, encoding="cp1251")
86
87
88 def rus2lat(instr, rus2lat_d = koi2lat_d):
89    out = []
90    for c in instr:
91       out.append(rus2lat_d.get(c, c))
92    return ''.join(out)
93
94
95 koi2lat = rus2lat
96
97 def win2lat(instr):
98    return rus2lat(instr, win2lat_d)
99
100
101 if __name__ == "__main__":
102    Test = "�������� ����� �����������. ��� xyz ��� ����� �����"
103    print "Test:", Test
104    print "����:", koi2lat(Test)
105    print "����:", win2lat(unicode(Test, "koi8-r").encode("cp1251"))