User:Manishearth/sidebartranslinks.js: Difference between revisions

Content deleted Content added
No edit summary
cleanup for readability and global variable usage. add title to A and make it a tad more efficient. use helper functions such as getInnerText and changeText where appropriate
Line 1:
// This script is by User:Manishearth, using a script by User:Tra with changes by User:TheDJ and User:Voice_of_All
// It adds little (t) links next to the languages which, when clicked, directly translated the page via Google translate
// I have made it primarily as a research tool, as one can get ten times the info on enwiki by going through the other language wikis
// Screenshot at [[:File:Sidebartrans.jpg]]
 
addOnloadHook(function() {
var SidebarTrans = {};
languagereplace()
//The oldlist of google translate languages
if (document.getElementById('p-lang')) {
var SidebarTrans.googlangs = "Afrikaans,Albanian,Arabic,Belarusian,Bulgarian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Filipino,Finnish,French,Galician,German,Greek,Haitian,Creole,Hebrew,Hindi,Hungarian,Icelandic,Indonesian,Irish,Italian,Japanese,Korean,Latvian,Lithuanian,Macedonian,Malay,Maltese,Norwegian,Persian,Polish,Portuguese,Romanian,Russian,Serbian,Slovak,Slovenian,Spanish,Swahili,Swedish,Thai,Turkish,Ukrainian,Vietnamese,Welsh,Yiddish"
var LangNodes=document.getElementById('p-lang').getElementsByTagName('ul')[0].getElementsByTagName('li');
SidebarTrans.langsArray = SidebarTrans.googlangs.split(",");
 
for( var x = 0; x < LangNodes.length; x++ ) {
// run by addOnloadHook
LangNodes[x].innerHTML=LangNodes[x].innerHTML + " " + mkLink(LangNodes[x].innerHTML,LangNodes[x].getElementsByTagName('a')[0].innerHTML);
SidebarTrans.init = function() {
if ( !document.getElementById('p-lang') ) {return;
SidebarTrans.languageReplace();
SidebarTrans.addTranslate();
}
 
// Add (t) link to Google Translate
SidebarTrans.addTranslate = function() {
var LangNodes=document.getElementById('p-lang').getElementsByTagName('ul')[0].getElementsByTagName('li');
 
for( var x = 0; x < LangNodes.length; x++ ) {
LangNodes[x].innerHTML=LangNodes[x].innerHTML + " " + SidebarTrans.mkLink(LangNodes[x].innerHTML,LangNodes[x].getElementsByTagName('a')[0].innerHTML);
}
}
 
});
// Creates the (t) links
SidebarTrans.mkLink = function( li ) {
function mkLink(inner,lname){
var a = li.getElementsByTagName('a')[0];
if(!a) return "";
var link= inner.split("href=\"")[1].split("\"")[0];
var lname = getInnerText( a );
if(SidebarTrans.googleSupported(lname)) {
return ("<Aa HREFhref=\"http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=" + linka.href +"\"><B>(t)</B></A>");
"\" title=\"Translate " + lname + " to English\" ><b>(t)</b></a>");
} else {
return ("<Aa HREFhref=\"http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=" + linka.href +"\" ><font color=\"#FF8888\">(t)</font></A>");
"\" title=\"Attemp to translate " + lname + " to English\" style=\"color: #FF8888;\" >(t)</a>");
}
}
}
function googleSupported(lname){
//The old google translate languages
var googlangsold="Albanian,Arabic,Bulgarian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Filipino,Finnish,French,Galician,German,Greek,Hebrew,Hindi,Hungarian,Indonesian,Italian,Japanese,Korean,Latvian,Lithuanian,Maltese,Norwegian,Persian,Polish,Portuguese,Romanian,Russian,Serbian,Slovak,Slovenian,Spanish,Swedish,Thai,Turkish,Ukrainian,Vietnamese,Afrikaans,Belarusian,Icelandic,Irish,Macedonian,Malay,Swahili,Welsh,Yiddish";
 
//the newerChecks if the language listis supported by Google Translate
function SidebarTrans.googleSupported = function(lname) {
var googlangs="Afrikaans,Albanian,Arabic,Belarusian,Bulgarian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Filipino,Finnish,French,Galician,German,Greek,Haitian,Creole,Hebrew,Hindi,Hungarian,Icelandic,Indonesian,Irish,Italian,Japanese,Korean,Latvian,Lithuanian,Macedonian,Malay,Maltese,Norwegian,Persian,Polish,Portuguese,Romanian,Russian,Serbian,Slovak,Slovenian,Spanish,Swahili,Swedish,Thai,Turkish,Ukrainian,Vietnamese,Welsh,Yiddish"
for( var i=0;i<googlangsSidebarTrans.split(",")langsArray.length;i++){
if(lname.indexOf(googlangsSidebarTrans.split(",")langsArray[i])!=-1){
return true;
}
}
}
return false;
}
 
 
//This is a utility, made by User:Tra, modified by meUser:Manishearth to power this script:
 
 
 
 
 
 
 
 
 
 
 
 
 
//This is a utility, made by User:Tra, modified by me to power this script:
 
/////////////////////////////////////////////////////////////////////////
// Translates the 'in other languages' list in the sidebar to English. //
Line 62 ⟶ 59:
// (bug fix by Voice_of_All) //
/////////////////////////////////////////////////////////////////////////
 
SidebarTrans.languageReplace = function() {
var LangNodes=document.getElementById('p-lang').getElementsByTagName('ul')[0].getElementsByTagName('li');
 
for( var x = 0; x < LangNodes.length; x++ ) {
function languagereplace() {
var a = LangNodes[x].getElementsByTagName('a')[0];
if (document.getElementById('p-lang')) {
a.title="Original language name: " + getInnerText(a);
var LangNodes=document.getElementById('p-lang').getElementsByTagName('ul')[0].getElementsByTagName('li');
changeText( a, SidebarTrans.localtoEnglish( getInnerText(a) ));
for( var x = 0; x < LangNodes.length; x++ ) {
}
LangNodes[x].getElementsByTagName('a')[0].title="Original language name: " + LangNodes[x].getElementsByTagName('a')[0].innerHTML
LangNodes[x].getElementsByTagName('a')[0].innerHTML = localtoEnglish(LangNodes[x].getElementsByTagName('a')[0].innerHTML);
}
}
}
//addOnloadHook ()
function localtoEnglish(localname) {
function SidebarTrans.localtoEnglish = function(localname) {
switch (localname) {
 
Line 357 ⟶ 349:
}
 
addOnloadHook(function(SidebarTrans.init) {