User:TachyonJack/translators.js

// /** Adds links to machine translations of external links near tags. * User:AnonEMouse, January 2008. */

hookEvent("load", addTranslators);

function addTranslators { var spans = document.getElementsByTagName("span"); for(var i=0;i<spans.length;++i){ addTranslations(spans[i]); } }

function googleTrans(link, language) { // Google works with: var langs = { "(Arabic)": "ar", "(Chinese)": "zh-CN", "(Traditional Chinese)": "zh-TW", "(Dutch)": "nl", "(French)": "fr", "(German)": "de", "(Greek)": "el", "(Italian)": "it", "(Japanese)": "ja", "(Korean)": "ko", "(Portuguese)": "pt", "(Russian)": "ru", "(Spanish)": "es",

"(Albanian)": "sq",

"(Bulgarian)": "bg",

Catalan)": ": "ca",

Croatian)": ": "

Czech)": "

Danish)": "

Dutch)": "

English)": "

Estonian)": "

Filipino)": "

Finnish)": "

French)": "

Galician)": "

German)": "

Greek)": "

Hebrew)": "

Hindi)": "

Hungarian)": "

Indonesian)": "

Italian)": "

Japanese)": "

Korean)": "

Latvian)": "

Lithuanian)": "

Maltese

Norwegian

Polish

Portuguese

Romanian

Russian

Serbian

Slovak

Slovenian

Spanish

Swedish

Thai

Turkish

Ukrainian

Vietnamese

} var langCode = langs[language]; // alert(link + language + langCode); if(langCode == null) return null; var transLink = document.createElement("a"); transLink.href = 'http://translate.google.com/translate?u=' + encodeURI(link.href) + '&langpair=' + langCode + '%7Cen&hl=en&ie=UTF-8'; transLink.innerHTML = 'GoogleTrans'; transLink.target = "_blank"; //alert("returning " + transLink.innerHTML); return transLink; }

function babelfish(link, language) { // Babelfish (Systran) works with: var langs = { "(Chinese)": "zh", "(Traditional Chinese)": "zt", "(Dutch)": "nl", "(French)": "fr", "(German)": "de", "(Greek)": "el", "(Italian)": "it", "(Japanese)": "ja", "(Korean)": "ko", "(Portuguese)": "pt", "(Russian)": "ru", "(Spanish)": "es", }

var langCode = langs[language]; // alert(link + language + langCode); if(langCode == null) return null; var transLink = document.createElement("a"); transLink.href = 'http://babelfish.altavista.com/babelfish/trurl_pagecontent?lp=' + langCode + '_en&url=' + encodeURI(link.href); transLink.target = "_blank"; transLink.innerHTML = 'Babelfish'; //alert("returning " + transLink.innerHTML); return transLink; }

function alphaWorks(link, language) { // AlphaWorks (IBM) works with: var langs = { "(Chinese)": "cn", "(Traditional Chinese)": "tw", "(French)": "fr", "(German)": "de", "(Italian)": "it", "(Japanese)": "jp", "(Spanish)": "es", }  var langCode = langs[language]; // alert(link + language + langCode); if(langCode == null) return null; var transLink = document.createElement("a"); transLink.href = 'http://demowsmt.dfw.ibm.com/demand?mtlang=' + langCode + 'en&translate=' + encodeURI(link.href);

transLink.target = "_blank"; transLink.innerHTML = 'AlphaWorks'; //alert("returning " + transLink.innerHTML); return transLink; }

function SDL(link, language) { // SDL (http://www.freetranslation.com/) works with: var langs = { "(Spanish)": "spanish", "(French)": "french", "(German)": "german", "(Italian)": "italian", "(Dutch)": "dutch", "(Portuguese)": "portuguese", }  var langCode = langs[language]; // alert(link + language + langCode); if(langCode == null) return null; var transLink = document.createElement("a"); transLink.href = 'http://fets5.freetranslation.com/?sequence=core&language=' + langCode + '/English&url=' + encodeURI(link.href); transLink.target = "_blank"; transLink.innerHTML = 'SDL'; //alert("returning " + transLink.innerHTML); return transLink; }

function gramTrans(link, language) { // GramTrans works with: var langs = { "(Danish)": "dan", "(Swedish)": "swe", }  var langCode = langs[language]; // alert(link + language + langCode); if(langCode == null) return null; var transLink = document.createElement("a"); transLink.href = 'http://gramtrans.com/gt/url/?url=' + encodeURI(link.href) + '&pair=' + langCode +'2eng&x-form-id=translate_url'; transLink.target = "_blank"; transLink.innerHTML = 'GramTrans'; //alert("returning " + transLink.href + transLink.text); return transLink; }

function apertium(link, language) {// Apertium works with: var langs = { "(Catalan)": "ca", }  var langCode = langs[language]; // alert(link + language + langCode); if(langCode == null) return null; var transLink = document.createElement("a"); transLink.href = 'http://xixona.dlsi.ua.es/apertium/tradurl.php?marcar=&direccion=' + langCode + '-en&inurl=' + encodeURI(link.href); transLink.target = "_blank"; transLink.innerHTML = 'Apertium'; //alert("returning " + transLink.href + transLink.text); return transLink; }

function windowsLive(link, language) {// Windows Live Translator works with: var langs = { "(Arabic)": "ar", "(Chinese)": "zh-chs", "(Traditional Chinese)": "zh-cht", "(Dutch)": "nl", "(French)": "fr", "(German)": "de", "(Italian)": "it", "(Japanese)": "ja", "(Korean)": "kp", "(Portuguese)": "pt", "(Russian)": "ru", "(Spanish)": "es", }  var langCode = langs[language]; // alert(link + language + langCode); if(langCode == null) return null; var transLink = document.createElement("a"); transLink.href = 'http://www.windowslivetranslator.com/BV.aspx?MKT=en-US&lp=' + langCode + '_en&a=' + encodeURI(link.href); transLink.target = "_blank"; transLink.innerHTML = 'WindowsLive'; //alert("returning " + transLink.href + transLink.text); return transLink; }

function gts(link, language) {// GTS (Global Translations) Translator works with: var langs = { "(Arabic)": "43", "(Chinese)": "42", "(Dutch)": "37", "(French)": "35", "(German)": "22", "(Hebrew)": "57", "(Italian)": "36", "(Japanese)": "61", "(Korean)": "62", "(Persian)": "53", "(Polish)": "38", "(Portuguese)": "39", "(Russian)": "40", "(Spanish)": "34", "(Turkish)": "63", "(Ukrainian)": "41", }

var langCode = langs[language]; // alert(link + language + langCode); if(langCode == null) return null; var transLink = document.createElement("a"); transLink.href = 'http://www.gts-translation.com/translatewebsite.asp?language=' + langCode + '&url=' + encodeURI(link.href); transLink.target = "_blank"; transLink.innerHTML = 'GTS'; //alert("returning " + transLink.href + transLink.text); return transLink; }

function addTranslations(span) { var transFuncs = new Array; transFuncs[0] = googleTrans; transFuncs[1] = babelfish; transFuncs[2] = alphaWorks; transFuncs[3] = SDL; transFuncs[4] = gramTrans; transFuncs[5] = apertium; transFuncs[6] = windowsLive; transFuncs[7] = gts; // alert(transFuncs);

var parent = span.parentNode; var lang = span.innerHTML; if(lang[0] != '(' || lang[lang.length -1] != ')') return; //alert(parent + ":" + siblings.length);

// icon inside link text if(parent.nodeName == "A"){ if(parent.href.indexOf("http") == 0 // it's a real link      && parent.href.indexOf("http://en.wikipedia.org/") != 0){ // it's an external link var linkParent = parent.parentNode; // alert(node.innerHTML); for(j=0; j<transFuncs.length; ++j){ // alert("transFuncs: " + transFuncs[j]); var translation = transFuncs[j](parent, lang); if(translation != null){ //alert("adding " + translation); translation.innerHTML = ' '+ translation.innerHTML + '; '; linkParent.insertBefore(translation, node.nextSibling); }     }    }      }  else { // icon on same line with link var siblings = parent.childNodes; for(var i=0; i<siblings.length;++i){ node = siblings[i]; // alert(node.nodeName); if(node.nodeName == "A"         && node.href.indexOf("http") == 0 // it's a real link         && node.href.indexOf("http://en.wikipedia.org/") != 0){ // it's an external link // alert(node.innerHTML); for(j=0; j<transFuncs.length; ++j){ // alert("transFuncs: " + transFuncs[j]); var translation = transFuncs[j](node, lang); if(translation != null){ //alert("adding " + translation); translation.innerHTML = ' '+ translation.innerHTML + '; '; parent.insertBefore(translation, node.nextSibling); ++i; }       }      }    }  } }

//