Utilisateur:Arkanosis/aTrans.js
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.// TODO mettre les résultats en cache pour éviter plusieurs requêtes
// TODO supporter d'autres langues que le français
// TODO internationalisation
function aTransTranslate(destination)
{
var textBox = document.getElementById('wpTextbox1');
var panel = document.getElementById('aTransPanel');
textBox.value = textBox.value.replace(
new RegExp('\\[\\[([^\\]\\|]+)(?:\\|([^\\]]+))?\\]\\]', 'g'),
function(match, target, label) {
var xhr = new XMLHttpRequest();
xhr.open('GET', mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&prop=langlinks&titles=' + encodeURIComponent(target) + '&redirects&format=xml&lllimit=500', false);
xhr.send('');
var langLinks = xhr.responseXML.getElementsByTagName('langlinks');
if (!langLinks || !langLinks[0])
{
panel.innerHTML += '<br /><img src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a2/X_mark.svg/200px-X_mark.svg.png" width="15px"/>' + target + ' introuvable';
return '[[???|' + (label ? label : target) + ']]';
}
langLinks = langLinks[0].childNodes;
for (var langId = 0; langId < langLinks.length; ++langId)
if (langLinks[langId].getAttribute('lang') == destination)
{
var translation = langLinks[langId].firstChild.nodeValue;
panel.innerHTML += '<br /><img src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/15px-Yes_check.svg.png" />' + target + ' donne ' + translation;
return '[[' + translation + '|' + (label ? label : target) + ']]';
}
panel.innerHTML += '<br /><img src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a2/X_mark.svg/200px-X_mark.svg.png" width="15px" />' + target + ' introuvable dans la langue demandée';
return '[[???|' + (label ? label : target) + ']]';
}
);
}
function aTrans()
{
if (mw.config.get('wgAction') == 'edit')
{
var panel = document.createElement('p');
panel.setAttribute('id', 'aTransPanel');
panel.innerHTML = 'Traduire les liens vers <select id="aTransTarget"><option selected="selected" value="en">en</option></select> <input type="submit" value="Traduire" onClick="javascript:aTransTranslate(\'en\'); return false;" />';
document.getElementById('specialcharsets').parentNode.appendChild(panel);
}
}
addOnloadHook(aTrans);