diff --git a/README.md b/README.md index 074b5a6..8c6efff 100644 --- a/README.md +++ b/README.md @@ -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 = '' diff --git a/autotranslate/compat.py b/autotranslate/compat.py index 66ea244..8bd9789 100644 --- a/autotranslate/compat.py +++ b/autotranslate/compat.py @@ -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 diff --git a/autotranslate/services.py b/autotranslate/services.py index 0ae8743..541616c 100644 --- a/autotranslate/services.py +++ b/autotranslate/services.py @@ -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 @@ -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): diff --git a/autotranslate/utils.py b/autotranslate/utils.py index 9d2cb63..be837ef 100644 --- a/autotranslate/utils.py +++ b/autotranslate/utils.py @@ -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 diff --git a/requirements.txt b/requirements.txt index 78d6821..16ea60b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ django -goslate +googletrans==3.1.0a0 polib six diff --git a/tox.ini b/tox.ini index ab7e26e..cd8a722 100644 --- a/tox.ini +++ b/tox.ini @@ -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