Skip to content

Commit 724ee4d

Browse files
committed
added support for Google Translate Toolkit
1 parent 107596c commit 724ee4d

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ Feature Requests:
2424
- Date Arithmetic
2525
- Work with Chatango
2626
- Work with Confluence (Atlassian)
27-
- Work with Google Translate (http://translate.google.com/toolkit)
2827
- Work with Outlook Meeting Request Body?
2928
- Work with Microsoft Forums (http://trainingsupport.microsoft.com/en-us/tcmva/forum)
3029
- Opera extension version
@@ -37,6 +36,7 @@ Hope this is useful to someone out there; would love any help optimizing and imp
3736
## Version History
3837
v1.8.1
3938
- Added support for Google Inbox
39+
- Added support for Google Translate
4040
- Added support for MailChimp
4141
- Replacing annoying exception messages in console when script does not work with iframes
4242

js/expander.js

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ jQuery.noConflict();
2323
, FACEBOOK_DOMAIN_REGEX = /facebook.com/
2424
, GMAIL_DOMAIN_REGEX = /mail.google.com/
2525
, INBOX_DOMAIN_REGEX = /inbox.google.com/
26+
, GTT_DOMAIN_REGEX = /translate.google.com/
2627
, OUTLOOK_DOMAIN_REGEX = /mail.live.com/
2728
, MAILCHIMP_DOMAIN_REGEX = /admin.mailchimp.com/
2829

@@ -37,6 +38,7 @@ jQuery.noConflict();
3738
, SELECTOR_INPUT = 'div[contenteditable=true],body[contenteditable=true],textarea,input'
3839
, SELECTOR_GMAIL_EDIT = 'div.aoI' // Class for Gmail's popup message composer
3940
, SELECTOR_INBOX_EDIT = 'div.aT' // Class for Inbox's inline reply container
41+
, SELECTOR_GTT_EDIT = 'div.goog-splitpane-second-container' // GTT editor
4042
, SELECTOR_MAILCHIMP_EDIT = 'iframe.cke_wysiwyg_frame' // Mailchimp web editor
4143
, SELECTOR_OUTLOOK_EDIT = '#ComposeRteEditor_surface' // Outlook web editor
4244
, SELECTOR_EVERNOTE_EDIT = 'gwt-debug-noteEditor' // Evernote web note editor
@@ -217,6 +219,8 @@ jQuery.noConflict();
217219
replaceTextEvernote(shortcut, autotext);
218220
} else if (MAILCHIMP_DOMAIN_REGEX.test(domain)) {
219221
replaceTextMailchimp(shortcut, autotext);
222+
} else if (GTT_DOMAIN_REGEX.test(domain)) {
223+
replaceTextTranslate(shortcut, autotext);
220224
} else if (BASECAMP_DOMAIN_REGEX.test(domain)) {
221225
replaceTextBasecamp(shortcut, autotext);
222226
} else {
@@ -366,6 +370,21 @@ jQuery.noConflict();
366370
replaceTextContentEditable(shortcut, autotext, node, iframeWindow);
367371
}
368372

373+
// Specific handler for Google Translate iframe replacements
374+
function replaceTextTranslate(shortcut, autotext)
375+
{
376+
debugLog("Domain: Google Translate");
377+
378+
// Get the focused / selected text node
379+
var iframeWindow = document.querySelector(SELECTOR_GTT_EDIT)
380+
.querySelector('iframe').contentWindow;
381+
var node = findFocusedNode(iframeWindow);
382+
debugLog("node:", node);
383+
384+
// Pass onto editable iframe text handler
385+
replaceTextContentEditable(shortcut, autotext, node, iframeWindow);
386+
}
387+
369388
// Reusable handler for editable iframe text replacements
370389
function replaceTextContentEditable(shortcut, autotext, node, win)
371390
{
@@ -809,7 +828,6 @@ jQuery.noConflict();
809828
// Add to editable divs, textareas, inputs
810829
var $document = $(document);
811830
var domain = window.location.host;
812-
813831
$document.on(EVENT_NAME_KEYPRESS, SELECTOR_INPUT, keyPressHandler);
814832
$document.on(EVENT_NAME_KEYUP, SELECTOR_INPUT, keyUpHandler);
815833
$document.on(EVENT_NAME_BLUR, SELECTOR_INPUT, clearTypingBuffer);
@@ -862,6 +880,21 @@ jQuery.noConflict();
862880
}, TIME_EDITOR_CHECK);
863881
}
864882

883+
// Special case for Google Translate
884+
if (GTT_DOMAIN_REGEX.test(domain))
885+
{
886+
debugLog("Domain: Google Translate");
887+
888+
// Annoying, need to check for existence of editor element
889+
var editorCheck = setInterval(function() {
890+
var $target = $(SELECTOR_GTT_EDIT);
891+
if ($target.length) {
892+
clearInterval(editorCheck);
893+
addListenersToIframe($target.find('iframe'));
894+
}
895+
}, TIME_EDITOR_CHECK);
896+
}
897+
865898
// Special case for Mailchimp
866899
if (MAILCHIMP_DOMAIN_REGEX.test(domain))
867900
{

0 commit comments

Comments
 (0)