User:Manishearth/sidebartranslinks.js: Difference between revisions

Content deleted Content added
No edit summary
maintenance: more info Uncaught ReferenceError: getInnerText is not defined
 
(7 intermediate revisions by 4 users not shown)
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 list of google translate languages
if (document.getElementById('p-lang')) {
SidebarTrans.googlangs = "Afrikaans,Albanian,Arabic,Armenian,Azerbaijani,Basque,Belarusian,Bulgarian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Filipino,Finnish,French,Galician,Georgian,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,Urdu,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('li');
 
for( var x = 0; x < LangNodes.length; x++ ) {
LangNodes[x].innerHTML=LangNodes[x].innerHTML + " " + SidebarTrans.mkLink(LangNodes[x]);
}
}
 
});
// 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 = a.textContent;
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{
} else {
return ("<A HREF=\"http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=" + link +"\" ><font color=\"#FF8888\">(t)</font></A>");
return ("<a href=\"http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=" + a.href +
"\" title=\"Attempt to translate " + lname + " to English\" style=\"color: #FF8888;\" >(t)</a>");
}
}
}
function googleSupported(lname){
var googlangs="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";
 
// Checks if the language is supported by Google Translate
var googlangs2="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"
SidebarTrans.googleSupported = function(lname) {
for(i=0;i<googlangs.split(",").length;i++){
for( var i=0;i<SidebarTrans.langsArray.length;i++){
if(lname.indexOf(googlangs2.split(",")[i])!=-1){
if(lname.indexOf(SidebarTrans.langsArray[i])!=-1){
return true;
return true;
}
}
}
}
return false;
return false;
}
 
 
//This is a utility, made by User:Tra, modified by User: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 60 ⟶ 59:
// (bug fix by Voice_of_All) //
/////////////////////////////////////////////////////////////////////////
 
SidebarTrans.languageReplace = function() {
var LangNodes=document.getElementById('p-lang').getElementsByTagName('li');
 
for( var x = 0; x < LangNodes.length; x++ ) {
function languagereplace() {
var a = LangNodes[x].getElementsByTagName('a')[0];
if (document.getElementById('p-lang')) {
if(a) {
var LangNodes=document.getElementById('p-lang').getElementsByTagName('ul')[0].getElementsByTagName('li');
a.title="Original language name: " + a.textContent;
for( var x = 0; x < LangNodes.length; x++ ) {
a.textContent = SidebarTrans.localtoEnglish( a.textContent );
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) {
SidebarTrans.localtoEnglish = function(localname) {
switch (localname) {
 
Line 355 ⟶ 351:
}
 
$(SidebarTrans.init)