2011-04-18

Babelfish - estensione Firefox per traduzioni

Babelfish, una comoda estensione per Firefox per chi, come me, è un po' arrugginito con le lingue straniere.
La funzionalità che trovo più utile di questa estensione è quella che traduce istantaneamente le parole sopra le quali viene posizionato il puntatore del mouse, di default tale funzionalità non è abilitata ma entrando nelle preferenze di questo componente aggiuntivo si può abilitare selezionando la casella di spunta (checkbox) contrassegnata da Hover (words only). Dal momento dell'attivazione della traduzione istantanea delle singole parole, ogni volta che il mouse passa sopra una parola ne viene visualizzata la traduzione sottoforma di suggerimento. Le lingue di traduzione vengono configurate nelle preferenze oppure facendo click sull'icona che compare nella barra di stato del browser, altra comodità è la sequenza di tasti utilizzabile per invertire le lingue, ad esempio Eng-Ita ==> Ita-Eng premendo insieme i tasti Alt e Ctrl, se impostato nelle preferenze.
Per il mio utilizzo ha un unico difetto che ho comunicato all'autore chiedendone la realizzazione, ovvero passando con il mouse sopra il testo di una pagina ogni parola viene tradotta anche le più semplici e di uso comune che conosco, quindi la comparsa del suggerimento a volte infastidisce. Una buona soluzione potrebbe essere, come ho chiesto, di presentare il suggerimento solo se il modificatore Ctrl della tastiera è schiacciato, così da permettere all'utente di decidere cosa far tradurre.
Nella risposta alla richiesta che ho inviato a Netticats, l'autore dell'estensione mi ha risposto che la richiesta gli risulta interessante ma che per mancanza di tempo dovuta al suo attuale lavoro non riuscirà a soddisfare in tempi brevi, ma di inserire la richiesta nel forum dedicato all'estensione, così ho fatto.
Ma nell'attesa non ho voluto smettere di usare la traduzione istantanea perché troppo invadente, allora armato di coraggio mi sono avventurato nei meandri delle estensioni installate nel mio Firefox ed ho effettuato la modifica, ho racchiuso la parte di codice preposta alla traduzione istantanea dentro:


if( event.ctrlKey ){ 

il file da modificare è bf.js, con una veloce ricerca nelle directory di firefox dell'utente si può trovare il percorso per raggiungerlo:

find ~/.mozilla/firefox -name bf.js 

le righe da racchiudere sono intorno alla riga 1131 ( per la versione 1.96 la riga è diventata 1057 ) ed il risultato finale è il seguente:

 if( event.ctrlKey ){
        hoverDiv = bf.createHoverTip(); //create hoverDiv

        var dLeft = parseInt( bf.currDoc.defaultView.getComputedStyle(bf.currDoc.body, null).getPropertyValue("left") );
        if(isNaN(dLeft))
                dLeft = 0;
        hoverDiv.style.setProperty("left", String(event.pageX - 20 - dLeft) + "px", "important");

        var dTop = parseInt( bf.currDoc.defaultView.getComputedStyle(bf.currDoc.body, null).getPropertyValue("top") );
        if(isNaN(dTop))
                dTop = 0;
        var top = event.pageY + Math.abs(bafiutils.getPref("extensions.babelmousish.HoverYoffset")) - dTop;
        if((event.target.tagName && event.target.tagName == "A") || (event.target.parentNode && event.target.parentNode.tagName && event.target.parentNode.tagName == "A"))
                top += 10; //on links the mouse pointer could hide pparts of the hovertip
        hoverDiv.style.setProperty("top", String(top) + "px", "important");

        //position correction
        hoverDiv.style.setProperty("width", "auto", "");
        bf.PositionCorrection(hoverDiv);
}

So che questa modifica non è sufficientemente flessibile da permettere di configurare la combinazione di modificatori per attivare la traduzione istantanea, ma per le mie esigenze va benissimo. Rimane inteso che se qualche lettore avesse la necessità di modificare la combinazione può farlo cambiando la condizione espressa nello statement if, oppure addirittura aggiungere una voce nelle preferenze in modo da permettere all'utente di sceglierla a piacere.

Nessun commento:

Posta un commento