barseghyanartur / transliterate

Bi-directional transliterator for Python. Transliterates (unicode) strings according to the rules specified in the language packs.
https://pypi.python.org/pypi/transliterate
297 stars 50 forks source link

LanguageDetectionError | Can't detect english language? #26

Open nurzhannogerbek opened 6 years ago

nurzhannogerbek commented 6 years ago

Hello! =) First of all Thank you for this library.

I have one problem. Let me try to explain this little problem.

I use your library in my Django project. User can write english (latin) or russian (cyrillic) letters in field. If user write russian words it change word to latin letters but if user write english words I see next error: LanguageDetectionError: Can't detect language for the text "document" given.

I use this code: transliterate.translit(field_value, reversed=True)

Also I notice that in your project its impossible to detect english language, isn't it?

transliterate.detect_language(field_value) return None when user enter english word.

My aim is to transliterate only if user wrote russion word, but don't touch it user wrote english word. What can you advice?

idchlife commented 6 years ago

If I am correct, there is no language pack for english language in this library yet. But... You can contribute!

https://github.com/barseghyanartur/transliterate/tree/master/src/transliterate/contrib/languages

barseghyanartur commented 6 years ago

@NogerbekNurzhan:

Yep. Honestly, auto-detection is very-very basic. I would suggest using another dedicated libraries for that.

idchlife commented 6 years ago

@NogerbekNurzhan also small idea. How about doing reversed logic.

If it's not russian - it's english (well, we gotta stick to something, don't we?)

Use

# lang will be None if english
lang = detect_language(text)
translit(text, "ru", reversed=False if lang else True)