#REFACTORING by cg
class: EditTextView
added:
#googleTranslate:from:to:
#googleTranslateFrom:to:
comment/format in: #babelFishTranslate:
changed:
#editMenu
#googleTranslate:
--- a/EditTextView.st Mon Jan 20 04:27:28 2020 +0000
+++ b/EditTextView.st Wed Jan 29 17:25:33 2020 +0100
@@ -6956,9 +6956,11 @@
babelFishTranslate:fromToModeString
"translate the selected text and paste it after the selection.
- This is now obsolete, as that web service no longer exists (sigh)"
+ Used to use babelFish, which is now obsolete, as that web service no longer exists (sigh).
+ So now we use google..."
^ self googleTranslate:fromToModeString.
+
"/ |original translated|
"/
"/ original := self selectionAsString.
@@ -7171,6 +7173,7 @@
('Spanish -> English' (babelFishTranslate: 'es_en') )
('Portuguese -> English' (babelFishTranslate: 'pt_en') )
('-' )
+ ('any -> English' (babelFishTranslate: 'auto_en') )
('any -> German' (babelFishTranslate: 'auto_de') )
('any -> French' (babelFishTranslate: 'auto_fr') )
('any -> Italian' (babelFishTranslate: 'auto_it') )
@@ -7479,17 +7482,22 @@
!
googleTranslate:fromToModeString
- "translate the selected text and paste it after the selection."
-
- |sourceLang targetLang response url req o original translated|
+ "translate the selected text and paste it after the selection.
+ fromToModeString is of the form sourceLang_destLang"
+
+ |sourceLang targetLang|
"/ 'en_de' upTo:$_.
"/ 'en_de' copyAfter:$_.
sourceLang := fromToModeString upTo:$_.
targetLang := fromToModeString copyAfter:$_.
-
- original := self selectionAsString.
- original size == 0 ifTrue:[^ self].
+ self googleTranslateFrom:sourceLang to:targetLang
+!
+
+googleTranslate:original from:sourceLang to:targetLang
+ "translate the selected text and return it"
+
+ |response url o translated|
self withWaitCursorDo:[
url := 'http://translate.googleapis.com/translate_a/single?client=gtx&sl=%1&tl=%2&dt=t&ie=UTF-8&oe=UTF-8&q=%3'
@@ -7502,9 +7510,23 @@
"/
"/ response := HTTPInterface post:url with:req.
].
- response isErrorResponse ifTrue:[^ self].
+ response isErrorResponse ifTrue:[^ nil].
o := JSONReader decode:response data.
translated := o first first first.
+ translated isEmpty ifTrue:[^ nil].
+ ^ translated
+!
+
+googleTranslateFrom:sourceLang to:targetLang
+ "translate the selected text and paste it after the selection."
+
+ |original translated|
+
+ original := self selectionAsString.
+ original size == 0 ifTrue:[^ self].
+
+ translated := self googleTranslate:original from:sourceLang to:targetLang.
+ translated isNil ifTrue:[^ self].
"/ v pasteOrReplace:translated
self cursorLine:(self selectionEndLine) col:(self selectionEndCol + 1).