Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor remove goslat and add googletrans for python 3 support #36

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Settings:
- Use a different Translation Service:

```python
# default: 'autotranslate.services.GoSlateTranslatorService'
# default: 'autotranslate.services.GoogleTranslatorService'
# pip install google-api-python-client
AUTOTRANSLATE_TRANSLATOR_SERVICE = 'autotranslate.services.GoogleAPITranslatorService'
GOOGLE_TRANSLATE_KEY = '<google-api-key>'
Expand Down
8 changes: 4 additions & 4 deletions autotranslate/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@
from django.utils import importlib

try:
import goslate
import googletrans
except ImportError:
goslate = None
googletrans = None
except SyntaxError:
import sys
import warnings
warnings.warn('goslate disabled due lack support of Python-%s' % (
warnings.warn('googletrans disabled due lack support of Python-%s' % (
sys.version.split()[0][:3]), RuntimeWarning)
goslate = None
googletrans = None

try:
import googleapiclient
Expand Down
18 changes: 9 additions & 9 deletions autotranslate/services.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import collections
import six

from autotranslate.compat import goslate, googleapiclient
from autotranslate.compat import googletrans, googleapiclient

from django.conf import settings

Expand All @@ -26,24 +26,24 @@ def translate_strings(self, strings, target_language, source_language='en', opti
raise NotImplementedError('.translate_strings() must be overridden.')


class GoSlateTranslatorService(BaseTranslatorService):
class GoogleTranslatorService(BaseTranslatorService):
"""
Uses the free web-based API for translating.
https://bitbucket.org/zhuoqiang/goslate
https://github.com/ssut/py-googletrans
"""

def __init__(self):
assert goslate, '`GoSlateTranslatorService` requires `goslate` package'
self.service = goslate.Goslate()
assert googletrans, '`TranslateTranslatorService` requires `translate` package'
self.service = googletrans.Translator()

def translate_string(self, text, target_language, source_language='en'):
assert isinstance(text, six.string_types), '`text` should a string literal'
return self.service.translate(text, target_language, source_language)
return self.service.translate(text,dest=target_language,src=source_language).text

def translate_strings(self, strings, target_language, source_language='en', optimized=True):
assert isinstance(strings, collections.Iterable), '`strings` should a iterable containing string_types'
translations = self.service.translate(strings, target_language, source_language)
return translations if optimized else [_ for _ in translations]
assert isinstance(strings, collections.abc.Iterable), '`strings` should a iterable containing string_types'
translations = self.service.translate(list(strings),dest=target_language,src=source_language)
return [item.text for item in translations]


class GoogleAPITranslatorService(BaseTranslatorService):
Expand Down
2 changes: 1 addition & 1 deletion autotranslate/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@ def get_translator():
Returns the default translator.
"""
TranslatorService = getattr(settings, 'AUTOTRANSLATE_TRANSLATOR_SERVICE',
'autotranslate.services.GoSlateTranslatorService')
'autotranslate.services.GoogleTranslatorService')
translator = perform_import(TranslatorService, 'AUTOTRANSLATE_TRANSLATOR_SERVICE')()
return translator
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
django
goslate
googletrans==3.1.0a0
polib
six
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ changedir = {toxinidir}/tests
commands = python manage.py test autotranslate
deps =
six
goslate
googletrans
polib
py26: unittest2
dj18: Django>=1.8,<1.9
Expand Down