User:Manishearth/sidebartranslinks.js: Difference between revisions

Content deleted Content added
No edit summary
maintenance: more info Uncaught ReferenceError: getInnerText is not defined
 
(14 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]]
 
var SidebarTrans = {};
addOnloadHook(function() {
//The list of google translate languages
languagereplace()
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"
if (document.getElementById('p-lang')) {
SidebarTrans.langsArray = SidebarTrans.googlangs.split(",");
var LangNodes=document.getElementById('p-lang').getElementsByTagName('ul')[0].getElementsByTagName('li');
 
// run by addOnloadHook
for( var x = 0; x < LangNodes.length; x++ ) {
SidebarTrans.init = function() {
LangNodes[x].innerHTML=LangNodes[x].innerHTML + " " + mkLink(LangNodes[x].innerHTML,LangNodes[x].getElementsByTagName('a')[0].innerHTML);
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 ) {
var a = li.getElementsByTagName('a')[0];
if(!a) return "";
var lname = a.textContent;
if(SidebarTrans.googleSupported(lname)) {
function mkLink(inner,lname){
return ("<a href=\"http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=" + a.href +
"\" title=\"Translate " + lname + " to English\" ><b>(t)</b></a>");
var link= inner.split("href=\"")[1].split("\"")[0];
} else {
return ("<a href=\"http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=" + a.href +
if(googleSupported(lname)){
return ( "\"<A HREFtitle=\"http://Attempt to translate.google.com/translate?hl=en&sl=auto&tl=en&u= " + linklname + " to English\"><B style=\"color: #FF8888;\" >(t)</B></Aa>");
}
}else{
return ("<A HREF=\"http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=" + link +"\" ><font color=\"#FF8888\">(t)</font></A>");
}
 
// Checks if the language is supported by Google Translate
SidebarTrans.googleSupported = function(lname) {
for( var i=0;i<SidebarTrans.langsArray.length;i++){
if(lname.indexOf(SidebarTrans.langsArray[i])!=-1){
return true;
}
}
return false;
}
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";
for(i=0;i<googlangs.split(",").length;i++){
if(lname.indexOf(googlangs.split(",")[i])!=-1){
return true;
}
}
return false;
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
//This is a utility, made by User:Tra, modified by me to power this script:
 
//This is a utility, made by User:Tra, modified by User:Manishearth to power this script:
/////////////////////////////////////////////////////////////////////////
// Translates the 'in other languages' list in the sidebar to English. //
Line 56 ⟶ 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);
}
}
}
SidebarTrans.localtoEnglish = function(localname) {
//addOnloadHook ()
function localtoEnglish(localname) {
switch (localname) {
 
case 'Deutsch': return 'German'; break;
case 'Français': return 'French'; break;
Line 87:
case '中文': return 'Chinese'; break;
case 'Suomi': return 'Finnish'; break;
case 'Norsk \(bokmålbokm\ål\)‬': return 'Norwegian (bokmål)'; break;
case '‪Norsk (nynorsk)‬': return 'Norwegian (nynorsk)'; break;
case 'Esperanto': return 'Esperanto'; break;
Line 131:
case 'Srpskohrvatski / Српскохрватски': return 'Serbo-Croatian'; break;
case 'Latina': return 'Latin'; break;
/* case 'Krèyol ayisyen': return 'Haitian'; break; */
case 'Sicilianu': return 'Sicilian'; break;
case 'Kurdî / كوردی': return 'Kurdish'; break;
Line 346:
case 'Ποντιακά': return 'Pontic'; break;
case 'Эрзянь' : return 'Erzya'; break;
 
default: return localname;
}
}
 
$(SidebarTrans.init)