User:Zocky/LanguageLinks.js

/*

  • LanguageLinks.js
  • Changes the text of language links in the sidebar,
  • by replacing the name of the language with the code
  • of the language and the name of the linked page,
  • changing the language box into an ersatz multi-lingual
  • dictionary.
  • /

// wait for everything to load

addOnloadHook(function() {

// get the language portlet

langs = document.getElementById('p-lang');

// proceed only if the language portlet exists

if(langs) {

// get the links

var lnks=langs.getElementsByTagName('a');

// start building the replacement table

var html = '

';

// cycle through all the links

for (var i=0;i

lnk=lnks[i];

// FF vs. IE 6

href = document.addEventListener

? lnk.href

: lnk.href.replace(/\/wiki\/(.*)$/,) + '/wiki/' + escape(lnk.href.replace(/^.*?\/wiki\//,));

// extract the language code and the page from the URL

var page=href.replace(/^.*?\/wiki\//,'').replace(/_/g,' ');

var lang=href.replace(/(^http:\/\/|\..*$)/g,'');

// prepare new text

// If pointing to the main page on another wiki, use the

// long language name, otherwise use the linked page's name.

var text = page == '' ? lnk.innerHTML : decodeURIComponent(page);

// for short language codes, make one row in the table

if (lang.length<4)

{

html += '

'

+ '

';

}

// for long language codes, make two rows

else

{

html += '

'

+ '

';

}

}; // end of the loop

// finish the table

html += '

'

+ lang

+ ':

' + text +'
'

+ lang

+ ':

' + text +'
';

//insert it into the first div in the portlet

langs.getElementsByTagName('div')[0].innerHTML=html

};

});