[gedit-plugins/translate] Yandex fixes
- From: Jordi Mas <jmas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit-plugins/translate] Yandex fixes
- Date: Sat, 22 Jul 2017 12:25:18 +0000 (UTC)
commit 6913632f3d869904f92c000a4c5c4a03f55fb968
Author: Jordi Mas <jmas softcatala org>
Date: Sat Jul 22 14:25:02 2017 +0200
Yandex fixes
plugins/translate/tests/testapertium.py | 4 +-
plugins/translate/tests/testyandex.py | 45 ++++++++++++++++++++++
plugins/translate/translate/__init__.py | 16 +++++++-
plugins/translate/translate/preferences.py | 8 ++--
plugins/translate/translate/services/apertium.py | 2 +-
plugins/translate/translate/services/service.py | 2 +-
6 files changed, 67 insertions(+), 10 deletions(-)
---
diff --git a/plugins/translate/tests/testapertium.py b/plugins/translate/tests/testapertium.py
index ea4f448..25b882b 100644
--- a/plugins/translate/tests/testapertium.py
+++ b/plugins/translate/tests/testapertium.py
@@ -23,7 +23,7 @@ from services.apertium import Apertium
from unittest.mock import patch, MagicMock
-class TestPagination(unittest.TestCase):
+class TestApertium(unittest.TestCase):
@patch('urllib.request.urlopen')
def test_translate_text(self, mock_urlopen):
@@ -32,7 +32,7 @@ class TestPagination(unittest.TestCase):
cm.read.return_value = bytes('{"responseData": {"translatedText": "Hauries d\'haver-hi rebut una
c\u00f2pia"}, "responseDetails": null, "responseStatus": 200}', 'utf-8')
cm.__enter__.return_value = cm
mock_urlopen.return_value = cm
-
+
apertium = Apertium(False)
translated = apertium.translate_text('You should have received a copy', 'eng|cat')
self.assertEqual('Hauries d\'haver-hi rebut una còpia', translated)
diff --git a/plugins/translate/tests/testyandex.py b/plugins/translate/tests/testyandex.py
new file mode 100644
index 0000000..39e8e5c
--- /dev/null
+++ b/plugins/translate/tests/testyandex.py
@@ -0,0 +1,45 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (c) 2017 Jordi Mas i Hernandez <jmas softcatala org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+
+import unittest
+from services.yandex import Yandex
+from unittest.mock import patch, MagicMock
+
+
+class TestYandex(unittest.TestCase):
+
+ @patch('urllib.request.urlopen')
+ def test_translate_text(self, mock_urlopen):
+ cm = MagicMock()
+ cm.getcode.return_value = 200
+ cm.read.return_value = bytes('{"code":200,"lang":"ca-en","text":["Hello friends"]}', 'utf-8')
+ cm.__enter__.return_value = cm
+ mock_urlopen.return_value = cm
+
+ yandex = Yandex()
+ yandex.set_api_key('our_key')
+ translated = yandex.translate_text('Hola amics', 'ca|en')
+ self.assertEqual('Hello friends', translated)
+ url =
"https://translate.yandex.net/api/v1.5/tr.json/translate?lang=ca-en&format=plain&key=our_key&text=Hola+amics"
+ mock_urlopen.assert_called_with(url)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/plugins/translate/translate/__init__.py b/plugins/translate/translate/__init__.py
index e3bc169..5885203 100644
--- a/plugins/translate/translate/__init__.py
+++ b/plugins/translate/translate/__init__.py
@@ -23,6 +23,7 @@ gi.require_version('GtkSource', '3.0')
gi.require_version('PeasGtk', '1.0')
from gi.repository import GObject, Gio, Gtk, Gedit, PeasGtk
+from .services.services import Services
from .services.apertium import Apertium
from .translateview import TranslateView
from .preferences import Preferences
@@ -103,6 +104,8 @@ class TranslateViewActivatable(GObject.Object, Gedit.ViewActivatable):
TRANSLATE_KEY_BASE = 'org.gnome.gedit.plugins.translate'
OUTPUT_TO_DOCUMENT = 'output-to-document'
LANGUAGE_PAIR = 'language-pair'
+ SERVICE = 'service'
+ API_KEY = 'api-key'
view = GObject.Property(type=Gedit.View)
@@ -157,13 +160,22 @@ class TranslateViewActivatable(GObject.Object, Gedit.ViewActivatable):
return start is not None and end is not None
+ def _get_translation_service(self):
+ service_id = self._settings.get_uint(self.SERVICE)
+ service = Services.get(service_id)
+ if service.has_api_key() is True:
+ key = self._settings.get_string(self.API_KEY)
+ service.set_api_key(key)
+
+ return service
+
def translate_text(self, document, start, end):
doc = self.view.get_buffer()
text = doc.get_text(start, end, False)
language_pair = self._settings.get_string(self.LANGUAGE_PAIR)
- apertium = Apertium()
- translated = apertium.translate_text(text, language_pair)
+ service = self._get_translation_service()
+ translated = service.translate_text(text, language_pair)
if self._settings.get_boolean(self.OUTPUT_TO_DOCUMENT):
doc.insert(start, translated)
diff --git a/plugins/translate/translate/preferences.py b/plugins/translate/translate/preferences.py
index 8247441..4da4f22 100644
--- a/plugins/translate/translate/preferences.py
+++ b/plugins/translate/translate/preferences.py
@@ -61,10 +61,6 @@ class Preferences(object):
self._apikey = None
return
- self._apikey.connect('changed', self._changed_apikey)
- key = self._settings.get_string(self.API_KEY)
- self._apikey.set_text(key)
-
def _update_api_key_ui(self, show):
apibox = self._ui.get_object('api_box')
@@ -73,6 +69,10 @@ class Preferences(object):
self._apilabel = Gtk.Label("API Key")
self._apikey= Gtk.Entry(expand=True)
+ self._apikey.connect('changed', self._changed_apikey)
+ key = self._settings.get_string(self.API_KEY)
+ self._apikey.set_text(key)
+
apibox.add(self._apilabel)
apibox.add(self._apikey)
apibox.show_all()
diff --git a/plugins/translate/translate/services/apertium.py
b/plugins/translate/translate/services/apertium.py
index c7e4ab5..a75b92a 100644
--- a/plugins/translate/translate/services/apertium.py
+++ b/plugins/translate/translate/services/apertium.py
@@ -48,7 +48,7 @@ class Apertium(Service):
def has_api_key(self):
return False
- def set_api_key(self):
+ def set_api_key(self, key):
pass
def get_language_names(self):
diff --git a/plugins/translate/translate/services/service.py b/plugins/translate/translate/services/service.py
index 7617b1a..27ad804 100644
--- a/plugins/translate/translate/services/service.py
+++ b/plugins/translate/translate/services/service.py
@@ -38,6 +38,6 @@ class Service(metaclass=ABCMeta):
pass
@abstractmethod
- def set_api_key(self):
+ def set_api_key(self, key):
pass
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]