From 170d2eab9ddecfae62854ef29a9c2cd9ffbb266d Mon Sep 17 00:00:00 2001 From: name Date: Sun, 21 Aug 2022 14:08:30 +0300 Subject: [PATCH 1/5] Refactor remove goslat and add googletrans for python 3 support --- README.md | 2 +- autotranslate/compat.py | 8 ++++---- autotranslate/services.py | 14 +++++++------- autotranslate/utils.py | 2 +- requirements.txt | 2 +- tox.ini | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) 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..e063f41 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,23 +26,23 @@ 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 translate, '`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) 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) + translations = self.service.translate(list(strings),dest=target_language,src=source_language) return translations if optimized else [_ for _ in translations] 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..691f7b2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ django -goslate +googletrans 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 From b64fc82c93f17acfb7b4f8632f451801d12ef87d Mon Sep 17 00:00:00 2001 From: name Date: Mon, 22 Aug 2022 09:44:15 +0300 Subject: [PATCH 2/5] fix translation serverce --- autotranslate/services.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/autotranslate/services.py b/autotranslate/services.py index e063f41..541616c 100644 --- a/autotranslate/services.py +++ b/autotranslate/services.py @@ -33,17 +33,17 @@ class GoogleTranslatorService(BaseTranslatorService): """ def __init__(self): - assert translate, '`TranslateTranslatorService` requires `translate` package' + 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,dest=target_language,src=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' + 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 translations if optimized else [_ for _ in translations] + return [item.text for item in translations] class GoogleAPITranslatorService(BaseTranslatorService): From 81bdd80f5ec9cb919e49831a61c017a24af25e8e Mon Sep 17 00:00:00 2001 From: name Date: Mon, 22 Aug 2022 09:51:15 +0300 Subject: [PATCH 3/5] update requirments --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 691f7b2..16ea60b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ django -googletrans +googletrans==3.1.0a0 polib six From 0fc3dcbba9b32800799b454fbad51b616d5cf85e Mon Sep 17 00:00:00 2001 From: name Date: Mon, 22 Aug 2022 10:18:14 +0300 Subject: [PATCH 4/5] update requirments --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 16ea60b..fc746e8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ django -googletrans==3.1.0a0 +# googletrans==3.1.0a0 +googletrans polib six From 4e1d2661e7c3add447f969a65504532a204a41ae Mon Sep 17 00:00:00 2001 From: name Date: Mon, 22 Aug 2022 10:19:26 +0300 Subject: [PATCH 5/5] update reqirments --- requirements.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index fc746e8..16ea60b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ django -# googletrans==3.1.0a0 -googletrans +googletrans==3.1.0a0 polib six