last-partizan/pytils

Транслит

Closed this issue · 3 comments

А почему при транслите предполагается, что текст состоит только из русского или только из английского?

Если в тексте встречается буква, которой нет в русском или английском, то результат получается некорректный.

Например:

print translit.detranslify(u'The band is called Aavepyörä')

Возвращает:

Тхе банд ис cаллед Аавепyöрä

Или аналогично с русским текстом:

print translit.detranslify(u'His name is Андрей')

Возвращает:

Хис наме ис Ð�ндÑ�ей

А если попробовать так:

print translit.translify(u'Они используют Linux.')

То получится:

Unicode string doesn't transliterate completely, is it russian?

И slugify, похоже, тоже как-то странно сейчас работает:

print translit.slugify(u'Они используют Linux.')

Получается:

--linux

Я думаю, что в идеале функции транслитерации (как с русского на английский, так и с английского на русский) должны пропускать неизвестные символы и транслитерировать только те символы, которые присутствуют в таблице транслитерации.

Вообще, я писал статью про транслитерацию на Python. Если интересно, посмотрите.

А вообще классный проект! Спасибо, что сделали всё это.

Удачи!

@kmike Спасибо, но я и так в курсе. :)
Тут скорее именно предложения по усовершенствованию pytils (возможно, когда-нибудь потом, в будущем, когда будет время).

y10h commented

Ввиду наличия https://pypi.python.org/pypi/Unidecode , который поддерживает любой язык, не вижу смысла поддерживать pytils.translit. Скоро удалю его из пакета :)