Skip to content

Instantly share code, notes, and snippets.

@huyz
Created September 6, 2011 12:32
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save huyz/1197422 to your computer and use it in GitHub Desktop.
Save huyz/1197422 to your computer and use it in GitHub Desktop.
Google+ Translate extension main.js decompiled
/* Copyright 2011 Google */
(function() {
var injectionScript = fillInTemplate("(function(){({{$code}})();})();", {
code: window.injection.toString()
}),
injectorScript = fillInTemplate("(function(){({{$code}})();})();", {
code: window.injector.toString()
});
delete window.injector;
delete window.injection;
function injectIntoPage(tabId, userLang, color) {
map = {
userLang: userLang,
color: color,
translateHeader: chrome.i18n.getMessage("translate_header")
};
map.content = escapeStrings(fillInTemplate(injectionScript, map));
chrome.tabs.insertCSS(tabId, {
code: ".goog-te-sectional-gadget-link,.goog-te-sectional-gadget-link div {display:inline}.goog-te-sectional-gadget-link-text {font-size:13px !important;font-weight:normal !important}.goog-trans-control:before {content: '\u00a0\u00a0-\u00a0\u00a0'}"
});
chrome.tabs.executeScript(tabId, {
code: fillInTemplate(injectorScript, map)
})
}
function addTranslateToTab(tabId, b, origin) {
var langcode = getNormalizedLangcode(),
color = "#ff9";
localStorage["gt-lang"] && (langcode = localStorage["gt-lang"]);
localStorage["gt-color"] && (color = localStorage["gt-color"]);
(origin == "user_click" || localStorage["gt-autoAdd"] != "false") && injectIntoPage(tabId, langcode, color)
}
function exportSymbols() {
for (var obj = addTranslateToTab, symbols = "addTranslateToTab", symbols = symbols.split("."), namespace = window, d = 0; d < symbols.length - 1; ++d)
namespace = namespace[symbols[d]] || (namespace[symbols[d]] = {});
namespace[symbols[symbols.length - 1]] = obj
}
function fillInTemplate(template, map) {
return template.replace(/\{\{\$.*?\}\}/g, function(template) {
template = template.substr(3, template.length - 5);
return String(map[template]) || ""
})
}
function escapeStrings(a) {
return a.replace(/\\/g, "\\\\").replace(/'/g, "\\'").replace(/"/g, '\\"').replace(/\n/g, "\\n")
}
function getNormalizedLangcode() {
var a = window.navigator.language;
return a.toLowerCase() == "zh-tw" ? "zh-TW" : a.toLowerCase() == "zh-cn" ? "zh-CN" : a.toLowerCase() == "pt-pt" ? "pt-PT" : a.toLowerCase() == "pt-br" ? "pt-BR" : a.length >= 2 ? a.substr(0, 2) : "en"
}
exportSymbols();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment