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);