Changeset View
Changeset View
Standalone View
Standalone View
pykolab/translit.py
Show All 17 Lines | |||||
# | # | ||||
import pykolab | import pykolab | ||||
from pykolab.translate import _ | from pykolab.translate import _ | ||||
log = pykolab.getLogger('pykolab.translit') | log = pykolab.getLogger('pykolab.translit') | ||||
locale_translit_map = { | locale_translit_map = { | ||||
'ru_RU': 'cyrillic' | 'ru_RU': 'cyrillic', | ||||
'en_US': 'latin1', | |||||
'fr_FR': 'latin1', | |||||
'es_ES': 'latin1', | |||||
'de_DE': 'latin1', | |||||
'de_CH': 'latin1', | |||||
'pt_PT': 'latin1', | |||||
'it_IT': 'latin1', | |||||
'nl_NL': 'latin1', | |||||
'da_DK': 'latin1', | |||||
'sv_SE': 'latin1', | |||||
'nn_NO': 'latin1', | |||||
'nb_NO': 'latin1', | |||||
'fi_FI': 'latin1', | |||||
} | } | ||||
translit_map = { | translit_map = { | ||||
'cyrillic': { | 'cyrillic': { | ||||
u'А': 'A', | u'А': 'A', | ||||
u'а': 'a', | u'а': 'a', | ||||
u'Б': 'B', | u'Б': 'B', | ||||
u'б': 'b', | u'б': 'b', | ||||
▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | translit_map = { | ||||
u'Ь': '', | u'Ь': '', | ||||
u'ь': '', | u'ь': '', | ||||
u'Э': 'E', | u'Э': 'E', | ||||
u'э': 'e', | u'э': 'e', | ||||
u'Ю': 'Yu', | u'Ю': 'Yu', | ||||
u'ю': 'yu', | u'ю': 'yu', | ||||
u'Я': 'Ya', | u'Я': 'Ya', | ||||
u'я': 'ya', | u'я': 'ya', | ||||
}, | |||||
'latin1': { | |||||
u"À": u"A", u"Á": u"A", u"Â": u"A", u"Ã": u"A", | |||||
u"Ä": u"A", u"Å": u"A", u"Æ": u"Ae", | |||||
u"Ç": u"C", | |||||
u"È": u"E", u"É": u"E", u"Ê": u"E", u"Ë": u"E", | |||||
u"Ì": u"I", u"Í": u"I", u"Î": u"I", u"Ï": u"I", | |||||
u"Ð": u"D", | |||||
u"Ñ": u"N", | |||||
u"Ò": u"O", u"Ó": u"O", u"Ô": u"O", u"Õ": u"O", u"Ö": u"O", | |||||
u"Ø": u"O", | |||||
u"Ù": u"U", u"Ú": u"U", u"Û": u"U", u"Ü": u"U", | |||||
u"Ý": u"Y", | |||||
u"Þ": u"p", | |||||
u"ß": u"b", | |||||
u"à": u"a", u"á": u"a", u"â": u"a", u"ã": u"a", u"ä": u"a", | |||||
u"å": u"a", | |||||
u"æ": u"ae", | |||||
u"ç": u"c", | |||||
u"è": u"e", u"é": u"e", u"ê": u"e", u"ë": u"e", | |||||
u"ì": u"i", u"í": u"i", u"î": u"i", u"ï": u"i", | |||||
u"ð": u"d", | |||||
u"ñ": u"n", | |||||
u"ò": u"o", u"ó": u"o", u"ô": u"o", u"õ": u"o", u"ö": u"o", | |||||
u"ø": u"o", | |||||
u"ù": u"u", u"ú": u"u", u"û": u"u", u"ü": u"u", | |||||
u"ý": u"y", u"ÿ": u"y", | |||||
u"þ": u"p", | |||||
} | } | ||||
} | } | ||||
def transliterate(_input, lang, _output_expected=None): | def transliterate(_input, lang, _output_expected=None): | ||||
Lint: PEP8 E302: expected 2 blank lines, found 1 | |||||
if locale_translit_map.has_key(lang): | if locale_translit_map.has_key(lang): | ||||
_translit_name = locale_translit_map[lang] | _translit_name = locale_translit_map[lang] | ||||
else: | else: | ||||
_translit_name = lang | _translit_name = lang | ||||
_output = '' | _output = '' | ||||
if not isinstance(_input, unicode): | if not isinstance(_input, unicode): | ||||
for char in _input.decode('utf-8'): | for char in _input.decode('utf-8'): | ||||
if translit_map.has_key(_translit_name): | if translit_map.has_key(_translit_name): | ||||
if translit_map[_translit_name].has_key(char): | if translit_map[_translit_name].has_key(char): | ||||
_output += translit_map[_translit_name][char] | _output += translit_map[_translit_name][char] | ||||
elif char in [repr(x) for x in translit_map[_translit_name].keys()]: | elif char in [repr(x) for x in translit_map[_translit_name].keys()]: | ||||
Lint: PEP8 E501 line too long (84 > 79 characters) Lint: PEP8 E501: line too long (84 > 79 characters) | |||||
_output += translit_map[_translit_name][[char in [raw(x) for x in translit_map[_translit_name].keys()]][0]] | _output += translit_map[_translit_name][[char in [raw(x) for x in translit_map[_translit_name].keys()]][0]] | ||||
Lint: PEP8 E501 line too long (127 > 79 characters) Lint: PEP8 E501: line too long (127 > 79 characters) | |||||
else: | else: | ||||
_output += char | _output += char | ||||
else: | else: | ||||
_output += char | _output += char | ||||
else: | else: | ||||
for char in _input: | for char in _input: | ||||
if translit_map.has_key(_translit_name): | if translit_map.has_key(_translit_name): | ||||
if translit_map[_translit_name].has_key(char): | if translit_map[_translit_name].has_key(char): | ||||
_output += translit_map[_translit_name][char] | _output += translit_map[_translit_name][char] | ||||
elif char in [repr(x) for x in translit_map[_translit_name].keys()]: | elif char in [repr(x) for x in translit_map[_translit_name].keys()]: | ||||
Lint: PEP8 E501 line too long (84 > 79 characters) Lint: PEP8 E501: line too long (84 > 79 characters) | |||||
_output += translit_map[_translit_name][[char in [raw(x) for x in translit_map[_translit_name].keys()]][0]] | _output += translit_map[_translit_name][[char in [raw(x) for x in translit_map[_translit_name].keys()]][0]] | ||||
Lint: PEP8 E501 line too long (127 > 79 characters) Lint: PEP8 E501: line too long (127 > 79 characters) | |||||
else: | else: | ||||
_output += char | _output += char | ||||
else: | else: | ||||
_output += char | _output += char | ||||
return _output | return _output | ||||
expected 2 blank lines, found 1