Archivio per il tag trucchi

Nascondere un file in un’immagine (easy version)

Questa è una versione semplificata della procedura discussa in questo vecchio post, dove veniva spiegato come nascondere un file all’interno di un’immagine usando una tecnica di molto semplice (a dire il vero a me piace di più la vecchia versione :-P ),

Prima di tutto riepiloghiamo i passi da seguire per nascondere un qualunque file all’interno di un’immagine (esistono modi molto più raffinati di questo, ovviamente):

  1. si comprime il file da nascondere con un software di compressione (io ho scelto 7-Zip);
  2. si unisce l’immagine al file compresso ricavato al passo precedente.

Il file risultante dall’unione sarà un’immagine che se aperta con 7-ZIP mostrerà l’archivio in essa nascosto.

Nella prima versione lo script per nascondere il file funzionava da prompt dei comandi, questa seconda versione invece aggiunge una voce al menu contestuale di Explorer chiamata «Nascondi il file in un’immagine», selezionandola apparirà la classica finestrella per cercare un file da cui sarà possibile scegliere l’immagine da usare come contenitore. L’immagine «truccata» verrà generata nella sottocartella images. Nei dettagli:

Installazione

  1. Scaricare ed installare 7-Zip. Affinché non ci siano problemi installarlo nella cartella predefinita;
  2. estrarre il contenuto del file 7z nella cartella %ProgramFiles% (C:\Programmi\ se la vostra versione di Windows è in italiano);
  3. eseguire il file hfii.reg che aggiungerà la voce al menu contestuale di Windows.

Utilizzo

Per nascondere un file all’interno di un’immagine procedere come segue:

  1. cliccare col tasto destro del mouse sul file (oppure SHIFT-F10);
  2. scegliere “Nascondi questo file in un’immagine”;
  3. nella finestra che appare selezionare l’immagine desiderata;
  4. se tutto va a buon fine un’immagine contenente il file sarà creata in %ProgramFiles%\HFII\images\ ( di solito: “C:\Programmi\HFII\images).

E` possibile che qualche antivirus (o Vista stesso) blocchi lo script, in caso affermativo assicurarsi che abbia tutti i permessi necessari (non c’è nulla di malizioso nello script).

Immagine che nasconde al suo interno un file 7z con lo script diiscusso nell'articolo

PS: Photobuvket se ne accorge e sega l’immagine :-P .

Technorati Tags: , , ,

Cancellare le cartelle orfane con una sola riga di comando

Ecco un bel trucchetto postato su un blog che non seguo di solito, e che permette di cancellare tutte le cartelle vuote che ci sono sull’hard disk :-) .

Più che per lo script in sè questa cosa a me torna utile per migliorare tutti i miei file BATCH di pulizia e riordino. Il comando for lo conoscevo, ma sinceramente leggendo l’help di Microsoft non si capisce un cavolo :-P , soprattutto non si capisce che è possibile usarlo per elencare efiltrare tutti i file presenti sull’HD.

Quello che non sapevo era come iterare il comando in modo che cercasse nelle sottocartelle, ok il /s del comando dir, però mai avrei pensato si potesse filtrare l’output generato col for. Figo :-D .

In pratica per generare una lista da poter passare ad un for è sufficiente dargli l’opzione /b

Il comando da dare per cancellare tutte le cartelle vuote è:

for /f "usebackq delims=" %f in (`"dir /ad/b/s | sort /R"`) do rd "%f"

>

NOTA: faccio notare che di comando dir è racchiuso fra “accenti gravi” e non apostrofi (il codice numerico è 96).

Lo script in realtà non riesce a capire quali cartelle siano vuote o piene ma cerca di cancellarvele tutte, però, il comando rd non cancella una cartella che non sia vuota.

Se invece di cancellarle (si sa mai) volete visualizzare tutte le cartelle che avete sull’HD:

for /f "usebackq delims=" %d in (`"dir /ad/b/s | sort /R"`) do echo  "%d"

Se, come spiegato sul blog di MSDN, volete creare un file BAT (o CMD) dovete raddoppiare i %.

Con piccole modifiche, davvero piccole, è possibile usarlo per farsi una lista delle immagini sparse sull’HD, dei file MP3, oppure per cancellare gli indici di Thunderbird (vabbè con la 2.0 la cosa è meno utile di prima) e forse altro ancora :-) .

Questo, ad esempio, cancella tutti gli indici di TB (ogni tanto fa bene fare pulizia):

for /f "usebackq delims=" %f in (`"dir *.msf /b/s"`) do del  "%f"

NOTA: Faccio notare, che lo script iniziale è sbagliato :-P, in quanto non tiene conto degli spazi nei nomi di file/cartelle, cosa di cui mi ero accorto anch’io tentando di creare lo script per la cancellazione dei file msf e non capendo perchè non funzionasse :-P (tutti i percorsi venivano troncati in un bel “C:\Documents”), per fortuna ci sono i commenti, l’equivalente per il blog dei Service Pack di sistema :-) .

Fonte: MSDN Blog

Technorati Tags: , , ,

Impedire la disattivazione del ridimensionamento dei popup

Molte volte, le finestre popup che vengono aperte non sono ridimensionabili perché il webmaster ha richiesto esplicitamente di disabilitare il loro ridimensionamento da parte dell’utente. E’ possibile fare questo impostando il parametro resizable=0 passato alla funzione window.open. Purtroppo però, accade sin troppo spesso che tali finestre appaiano tagliate usando un browser diverso da IE.

Per bypassare questa restrizione è necessario impedire al webmaster di disattivare la proprietà di resizing delle finestre popup - non delle normali finestre, preferenza configurabile dalle Opzioni avanzate di Javascript - in modo da poter ridimensionare qualsiasi finestra a prescindere dalle direttive utilizzate nel codice javascript che l’ha generata. Per disattivare la proprietà resizable, procedere come segue:

  • digitare about:config nella barra degli indirizzi e dare invio;
  • trovare (o creare) questa preferenza:

dom.disable_window_open_feature.resizable

e settare il suo valore a true.

Un altro metodo è quello di impostare Firefox per aprire tutti i popup in schede impostando:

browser.link.open_newwindow.restriction

a 0.

< < TEST LINK >>

Fonte: ghacks.net.

Technorati Tags: , , ,

Autocompletamento nella barra degli indirizzi di Firefox

Questa è una richiesta che è stata fatta nel newsgroup italiano Mozilla: «E’ possibile attivare un autocompletamento degli indirizzi che vengono digitati ?»

Quando si inizia a digitare qualcosa nella barra degli indirizzi, Firefox propone una serie di indirizzi pescati dalla cronologia, è però necessario selezionarli dal menu a tendina per accedervi. Se si desidera che il primo di essi venga esplicitamente riportato nella barra degli indirizzi è necessario impostare questa voce:

browser.urlbar.autoFill

a true. Per farlo, come al solito, bisogna digitare about:config nella barra degli indirizzi, cercare la relativa preferenza e farci doppio click per cambiarne il valore.

Utenti più smaliziati possono inserire questa linea nel file user.js:

// Imposta l'autocompletamento nella barra degli indirizzi
user_pref(""browser.urlbar.autoFill",true);

Technorati Tags: , ,

Fare una lista dei software installati da prompt dei comandi

In questa vecchia pagina viene spiegato un metodo per ottenere un elenco delle applicazioni installate su un sistema Windows. La cosa può tornare utile per farsene una stampa quando si vuole fare pulizia di software inutili che non ci si ricorda manco di aver installato.

Il metodo proposto è però assai lento: per recuperare il nome delle applicazioni installate infatti, viene analizzato più volte un file temporaneo in cui si sono salvate le informazioni lette dal registro di sistema. Usando Sed si può sveltire l’operazione in modo radicale e ottenere una lista dei software installati, che può essere poi scritta su carta o su un file, dando come parametro la periferica di output.

Installazione ed esempi di utilizzo

Se non avete installato Sed è necessario farlo prima di utilizzare la mia versione modificata dello script, se è già installato, lo script tenta di recuperarlo da “C:\Programmi\Gnuwin32\bin” o “C:\Cygwin\bin”. Se l’eseguibile non è in una di queste cartelle (o in una facente parte del PATH di sistema) sarà necessario mettere l’eseguibile nella stessa cartella in cui si è scompattato l’archivio 7z (o modificare il file BAT).

L’archivio contiene due file: uno è il file BAT vero e proprio (installedapps.bat), il secondo file un elenco di direttive che Sed applicherà per formattare correttamente l’output (cmd.sed).

Per usarlo è sufficiente scrivere da prompt dei comandi (o facendo un collegamento sul desktop):

C:\installedapps> installedapps

Questo è un esempio dell’output generato:

7-Zip 4.57
Adobe Flash Player Plugin
Adobe Shockwave Player
Adobe SVG Viewer 3.0
Agent Ransack Version 1.7.3
Album Art Downloader 0.6-alpha2
Avira AntiVir PersonalEdition Classic
AVG Anti-Spyware 7.5
AviSynth 2.5
CamStudio
CCleaner
CDex extraction audio
ClamWin Free Antivirus 0.90
Codice Fiscale 32-bit v4.21
Intel A/V Codecs V2.0
CommandBurner 3.3
COMODO Firewall Pro
Crimson Editor

Si può anche inviare l’output ad un file o alla stampante (PRN):

C:\installedapps> installedapps > log.txt

Se non volete scaricare l’archivio questo è il contenuto dei due file:

installedapps.bat

@echo off
PATH=%PATH%;C:\Programmi\gnuwin32\bin;c:\cygwin\bin
regedit /a %TEMP%\install.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
sed -f cmd.sed %temp%\install.reg

volendo si può aggiungere una ulteriore riga finale per cancellare il file temporaneo:

del %TEMP%\install.reg

cmd.sed

/"DisplayName"/b matchpattern {
	d
	}
:matchpattern
s/"DisplayName"=\(.*\)/\1/
s/"//g
s/(remove only)//

Download

Archivio 7z con lo script
Gnuwin32 Homepage

Technorati Tags: , , , ,

Rimuovere il popup che Antivir propone dopo aver eseguito l’aggiornamento

Antivir è il mio antivirus preferito: è leggero, non rompe tanto le scatole, è gratuito (per uso personale), ha buone capacità di rilevazione dei malefici batteri di stagione ed è stato uno dei primi ad accorgersi che iexplorer.exe è un virus :-P . Battutaccie a parte - il problema è stato risolto con l’aggiornamento delle firme virali -, Antivirr, a mio avviso, è davvero un ottimo antivirus, lo consiglio per un uso domestico, e non è l’unico che di tanto in tanto dà falsi positivi abbastanza preoccupanti , è recente la notizia che il super rinomato Kaspersky se l’è presa con l’explore.exe :-P .

Mi fa sempre una certa tenerezza chi, fra amici e parenti, cerca di utilizzare antivirus più rinomati (e non per questo migliori) fuori licenza, riuscendo nell’impresa di infettarsi nel tentativo di trovare una crack efficace. A questo si aggiunga che l’acquisto di una licenza della versione Premium non è, se paragonata ad altri software simili presenti sul mercato, nemmeno tanto costosa, solo 20 euro (19,95 usando il prezzo psicologico), 36 euro per la Suite che include protezione proattiva,firewall e filtro anti spam. Per maggiori informazioni vi rimando al sito di Avira:

Logo Antivir

Ha un solo difettuccio, ogni qualvolta finisce l’aggiornamento delle firme virali (cioè ogni giorno) espone un gigantesco, e dopo un po’ assai noioso, popup per invitare ad acquistare una versionePremiumche offre maggiori livelli di protezione:

Popup Antivir

(dimensioni dimezzate rispetto a quelle reali)

Questo popup diventa assai fastidioso soprattutto se si sta lavorando in modalità full screen. Cercando con Google ecco come si può impedire la visualizzazione della fastidiosa finestrella pubblicitaria:

  • Start -> Esegui, digitare secpol.msc e dare invio;
  • All’apertura della finestra delle “Impostazioni protezione locale”, dal menu a sinistra navigare in: Criteri di restrizione software -> regole aggiuntive;
  • cliccare col tasto destro nel riquadro a destra e scegliere “Nuova regola percorso”;
  • vietare il file avnotify.exe (di solito in C:\programmi\AntiVir PersonalEdition Classic).

Fino al prossimo aggiornamento del processo avnotify.exe non verranno più mostrati popup alla fine dell’aggiornamento di Antivir, se il file verrà aggiornato è necessario ripetere la procedura.

Fonte: ghacks.net.

Technorati Tags: , , , ,

Come riconoscere i link nofollow

nell’attesa che mi rispondano sul forum inglese di Simple Php Blog su come rimuovere il nofollow nei commenti, ecco un trucchetto che può essere utilizzato per riconoscere al volo i link nofollow presenti in una pagina web. Il seguente metodo non richiede l’installazione di nessuna estensione SEO oriented, ma solo di aggiungere qualche riga di codice al file userContent.css (naturalmente si può fare via Stylish se la si ha già installata).

Mozilla Firefox (e come lui tutti i browser Gecko based come Seamonkey e K-Meleon) permettono di applicare delle regole di stile alle pagine Web sovvrascrivendo quelle impostate dal webmaster. Queste regole preferenziali vengono specificate nel file: userContent.css che si trova nella cartella del Profilo di Firefox. Ebbene, usando il file userContent.css si può fare in modo di colorare in maniera evidente i link con rel=”nofollow” in modo che siano ben distinguibili.

a[rel $='nofollow']
{
background-color: red !important;
color: #0000FF !important;
font-weight: bold !important;
text-decoration: none !important;
}

La prima riga va interpretata nel seguente modo: “A tutti i link con attributorel che finisce con nofollow applica il seguente stile”, il codice fra parentesi graffe definisce il colore dello sfondo, del testo, il livello di grassetto del carattere e il tipo di decorazione del testo (nessuna in questo caso).

L’uso dell’espressione regolare è necessaria perché ho visto che su alcuni siti (per esempio i blog WordPress) si utilizza un nofollow “avanzato” che distingue fra link interni ed esterni.

Ovviamente lo stesso trucchetto si può usare per i link con rel=”tag”, ma la cosa è molto meno interessante.

NOTA: il file userContent.css deve essere modificato con Firefox chiuso e utilizzando un editor di testo come Crimson Editor o Notepad++ o al limite il Notepad, Wordpad, Word e Writer non vanno bene.

@otoriousxl spiega come ottenere la stessa cosa con Epiphany:
Epiphany: evidenziare i link nofollow

Altri post che potrebbero interessare:
Cambiare il cursore quando passa sopra ai link con target=”blank” o javascript,
Cambiare il cursore quando il link punta a file DOC o PDF.

Inviare un header personalizzato con Mozilla Thunderbird

Questo post mi serve per uno successivo che farò e che chiarirà l’utilità di usare degli header personalizzati nelle mail, per il momento potrebbe sembrare un’inutile masturbazione mentale , nell’esempio fatto in questo post, solo X-No-Archive è sensato, gli altri sono completamente inventati. Prima una premessa su cosa si trova cercando con Google a riguardo.

Per quanto riguarda l’invio di header personalizzati con Tb/Seamonkey Mail, dalla home page di Mnenhy si viene rimandati al bug 61520, commento #16, il codice proposto però non funziona con l’ultima versione di Thunderbird, dopo qualche tentativo sono riuscito a capirne la causa, la riga che in Bugzilla viene messa all’inizio va spostata come ultima :-S. Il codice (funzionante) è il seguente:

user_pref("mail.identity.<id>.header.header1", "X-No-Archive: true");
user_pref("mail.identity.<id>.header.header2", "James-Was-Here: maybe");
user_pref("mail.identity.<id>.header.header3", "X-Taming-The-Lizard-Since:1995");
user_pref("mail.identity.<id>.headers", "header1,header2,header3");

dove: al posto di header1, header2, header3 si può scegliere qualunque altro nome significativo per l’header che andremo ad inserire, e <id> è l’identificativo del nostro account: id1, id2, id5 e così via. Come fare per capire qual’è l’identificativo che TB associa ad un determinato account ?

In teoria se non sono stati creati e cancellati troppi account l’identificativo dovrebbe coincidere con l’ordine di apparizione dell’account in Strumenti -> Impostazioni account, (id1 per il primo account, id2 per il secondo e così via) nel caso però siano stati cancellati account potrebbe anche essere leggermente diverso.

Per assicurarsi di usare l’ID giusto, accedere all’editor di configurazione avanzata e inserire nel campo di filtraggio: useremai, sotto la colonna “Valore” saranno visibili gli indirizzi email dei nostri account e nella colonna “Nome Preferenza” è possibile risalire all’ID ad essi associato. Perfetto, ora che abbiamo trovato l’ID associato al nostro account possiamo modificare il codice in modo che abbia senso e si spera funzioni .

Vediamo come inserire i tre header proposti nell’esempio su bugzilla, sia sfruttando l’editor di configurazione avanzata, sia utilizzando il file user.js. Visto che l’header X-No-Archive ha un suo significato utilizzo “xnoarchive” al posto del generico “header1″ per identificarlo.

Usare l’editor di configurazione avanzata

Accediamo all’editor di configurazione avanzata: Strumenti -> Opzioni -> Avanzate -> Editor di configurazione, e creiamo le seguenti nuove chiavi, associando i giusti valori, cliccando col tasto destro del mouse e scegliendo Nuova -> Stringa:

Chiave: mail.identity.id1.header.xnoarchive
Valore: X-No-Archive: true

Chiave: mail.identity.id1.header.header2
Valore: James-Was-Here: maybe

Chiave: mail.identity.id1.header.header3
Valore: X-Taming-The-Lizard-Since:1995

Chiave: mail.identity.id1.headers
Valore: xnoarchive,header2,header3

e abbiamo finito.
Usare il file user.js

Il file user.js è un semplice file di testo che sovvrascrive le preferenze del file prefs.js e che va creato nella cartella del Profilo. Per ottenere lo stesso risultato spiegato al passo precedente, inserire le seguenti righe di codice nel file user.js:

user_pref("mail.identity.id1.header.xnoarchive", "X-No-Archive[/url]: true”);
user_pref(”mail.identity.id1.header.header2″, “James-Was-Here: maybe”);
user_pref(”mail.identity.id1.header.header3″, “X-Taming-The-Lizard-Since:1995″);
user_pref(”mail.identity.id1.headers”, “xnoarchive,header2,header3″);

NOTA: se TB è aperto mentre si modifica il file user.js si potrebbero avere danni irreparabili .

Quando si va ad inserire qualcosa nel file user.js, bisogna tenere conto delle seguenti regole sintattiche:

  • il carattere ” all’interno di una stringa va sostituito con il carattere \”
  • il carattere \ all’interno di una stringa va sostituito con \\
  • il new line diventa \n

Stasera o domani spiego come fare ad inserire un X-Face (un avatar per i messaggi di posta o per i newsgroup) e forse quanto scritto qui avrà un senso .

NOTA: non è necessaria nessuna estensione per inviare un header personalizzato, se però si vuole migliorare la loro visualizzazione è consigliata l’installazione dell’ottima Mneny by Karsten “Mnyromyr” Düsterloh

Nascondere un file in una immagine

Vediamo come si può “nascondere un file all’interno di un’immagine, la cosa potrebbe tornare utile ad esempio per inviare file non permessi dal server SMTP.

In questo tutorial viene spiegato come eseguire l’operazione con Winrar, che però non è un software gratuito quindi ho deciso di rifare la procedura usando 7-Zip:

Logo di 7-Zip
Una volta scaricato ed installato 7-zip, isogna innanzitutto comprimere il file da nascondere in un archivio e quindi unirlo all’immagine prescelta. La procedura è molto più rapida se eseguita da prompt dei comandi, quindi premere Windows-R e digitare cmd e dare invio.

Dal prompt dei comandi per comprimere il file con 7-zip digitare:
7z a -t7z file.7z file_da_comprimere.exe
(naturalmente bisogna assicurarsi di essere nella cartella in cui si trova il file 7z.exe o eventualmente settare il giusto PATH)
Per unire il file compresso all’immagine, dare il comando:
copy /b immagine.png + file.7z output.png
(è importante che l’immagine venga messa prima del file compresso)

Prompt dei comandi

Ora se aprite normalmente il file output.png esso verrà aperto con un visualizzatore di immagini, se invece decidete di aprirlo con 7-Zip (o altro software per la gestione degli archivi compressi) esso mostrerà il file che abbiamo aggiunto. Ad esempio:
7zFM output.png

Bene, per fare prima potete usare un piccolo file BAT che io ho chiamato mfii (merge file in image) e che va usato nel seguente modo:
mfii file_da unire immagine
tenendo ben presente le seguenti cose:

  • se il percorso del file contiene spazi bisogna quotare con le virgolette;
  • l’immagine va sempre inserita come secondo parametro del comando;
  • se avete installato 7-zip in una cartella diversa da “C:\Programmi\7-zip” dovete modificare il file BAT inserendo il giusto percorso.

Il codice è il seguente:

@echo off
::  Se si è  installato 7-zip in una cartella diversa modificare il percorso con il  giusto PATH
PATH=%PATH%;C:\Programmi\7-zip;;
:: Imposta i tipi di file permessi per il file immagine
SET FILETYPE=.jpg .png .gif
:: Se non sono stati inseriti i parametri necessari lo script restituisce un errore
IF (%1)==() GOTO ERRORE3
IF (%2)==() GOTO ERRORE3
:: Verifica l'esistenza dei due file in input, se non esistono ritorna un ERRORE
IF NOT EXIST %1 GOTO  ERRORE1
IF NOT EXIST %2 GOTO ERRORE2
:: Estrae il nome del file di output che deriverà il suo nome dal file da aggiungere all'immagine
for %%F in (%1) do   SET IMGNAME=%%~nF
:: deriva l'estensione del file di output che coincide con l'estensione dell'immagine utilizzata
for %%F in (%2) do   SET IMGEXT=%%~xF
:: Verifica che il secondo file sia un'immagine altrimenti interrompe lo script
SET ISIMAGE=0
for %%F in (%FILETYPE%) do  IF (%%F)==(%IMGEXT%) SET ISIMAGE=1
IF (%ISIMAGE%)==(0) GOTO ERRORE4
:: Crea il file  archivio da aggiungere poi all'immagine, se il percorso di 7z.exe non è corretto verrà restituito un errore
7z  a -t7z temp.7z %1
:: unisce il file compresso all'immagine e dà il file di output
copy /b  %2 + temp.7z %IMGNAME%%IMGEXT%
:: Cancello il file temporaneo temp.7z
del temp.7z
:: Termina lo script non avendo incontrato nessun errore
echo Il file %IMGNAME%%IMGEXT%   è stato creato con successo
GOTO END
:ERRORE1
:: Se il primo file non esiste viene restituito un errore
echo il file %1  non esiste, accertarsi di aver digitato  correttamente il nome del file
GOTO END

:ERRORE2
:: Se il secondo file non esiste viene restituito un errore
echo il file %2 non esiste
GOTO END
:ERRORE3
echo  devi  inserire almeno due parametri
GOTO END

:ERRORE4
echo il secondo file in input deve essere un'immagine
GOTO END

:END

]]>

UPDATE: seguendo i suggerimenti di chi ha commentato ho creato uno script VBS che permette di “nascondere” un file in un’immagine dal menu contestuale di Explorer, questo è il link al nuovo post.

Traduttore in linea

AGGIORNAMENTO: purtroppo SPB fa delle conversioni assurde e i bookmarklet non funzionavano, ora ho fatto l'escape manuale dei caratteri e spero il problema si sistemi :-(.

Visto che un solo %s da usare come parametro nelle keyword di Firefox non bastava, quelli di Lifehacker si sono inventati il modo di utilizzare parametri multipli :-D. Qui trovate il post su Lifehacker con alcuni esempi di utilizzo delle keyword multiparametriche. Io mi ero posto una domanda simile ma non conoscendo così bene Javascript non ero riuscito nel mio scopo. Ora che ho visto come si fa però, ho modificato il bookmarklet per le traduzioni utilizzando questa nuova funzione segnalata su Lifehacker. Se leggete il post originale su Lifehacker troverete il bookmarklet prototipo che può essere utilizzato, ad esempio, per cercare del testo nei messaggi di particolari utenti nei Forum o affinare le ricerche con un parametro in più a vostra scelta.

Se qualcuno conosce bene Javascript si accorgerà sicuramente che il bookmarklet è migliorabile diciamo che lo scopo è quello che funzioni, ma, non è buon codice. Probabilmente ad un vero programmatore gli si rizzeranno i capelli :-P. Se qualcuno vuole migliorarlo è benvenuto :-).

Il bookmarklet necessita che vengano passati sempre almeno due parametri che rappresentano, rispettivamente, la sigla della lingua di partenza e di quella di arrivo e va usato da barra degli indirizzi richiamandolo tramite keyword, motivo per cui funziona solamente con Firefox. Con qualche if in più si potrebbe farlo andare anche con altri browser ma perderebbe di utilità e diventerebbe pressoché uguale a quelli proposti nei siti di traduzione. I bookmarklet sono due: il primo usa come servizio di traduzione Google Translate, mentre il secondo utilizza BabelFish.

Supponiamo di associare al bookmarklet che usa Google Translate la keyword: trans (tranquilli non è l'amico di Lapo ma solo l'abbreviazione di translate :-)) e trans2 a quello di BabelFish, ecco come vengono richiamati:

trans sigla_lingua_pagina sigla_lingua_in_cui_tradurre (opzionalmente altro testo)
trans2 sigla_lingua_pagina sigla_lingua_in_cui_tradurre (opzionalmente altro testo)

I primi due parametri devono sempre essere passati mentre il terzo è opzionale. Le sigle da passare sono quelle canoniche: it (italiano), en (inglese), fr (francese), de (tedesco) e così via.

Purtroppo, non si possono usare lettere accentate come testo opzionale e non ne so la ragione, anzi se qualcuno ne conosce il motivo, mi farebbe un grosso piacere a spiegarmelo commentando o contattandomi via email. Ecco come funziona:

  • se viene selezionato del testo nella pagina verrà tradotto il testo selezionato;
  • se non viene selezionato del testo e vengono passati solo due parametri viene tradotta la pagina;
  • se viene passato del testo senza selezionare nulla viene tradotto il testo digitato come “terzo parametro.

Ma bando alle ciance e facciamo qualche esempio pratico :-).

Esempi

trans it en
senza selezionare alcun testo traduce la pagina dall'italiano all'inglese
transen it
selezionando del testo, tradurrà il testo dall'inglese all'italiano,
trans it en oggi il sole splende
traduce dall'italiano all'inglese "oggi il sole splende".

Naturalmente la coppia di lingue deve essere supportata dal servizio di traduzione utilizzato, purtroppo per quanto riguarda Google Translate l'italiano può essere usato solo in coppia con l'inglese dunque non si possono usare combinazioni del genere (o meglio si possono usare ma non producono alcun risultato):
transit fr
Naturalmente se in futuro Google migliora il servizio offerto può darsi che tali comandi acquistino un senso compiuto. Se vi accontentate dell'inglese invece potete tradurre da/in quasi tutte le lingue del mondo, per esempio:

transen es
traduce dall'inglese allo spagnolo, oppure:
trans de en
traduce dal tedesco all'inglese e così via.

Se passate la stessa lingua, come ad esempio:
trans it it

potete bypassare l'eventuale proxy che vi blocca la pagina come spiegato da O'Reilly.

Con BabelFish si può inoltre tradurre dall'italiano al francese e viceversa, sono validi dunque i comandi:
trans2fr it
trans2it fr

bene ora che sapete come si usano, se volete potete aggiungere i due bookmarklet :-D.

Google Translate

javascript:var quote=document.getSelection();var s='%s'; if ((quote=='' && s.length>5)) {testo=encodeURIComponent(s.substring(5,s.length));url='http://translate.google.com/translate_t?langpair=%s|%s&text='+testo;} else{if (quote=='') url='http://www.google.com/translate?langpair=%s|%s&u='+encodeURIComponent(location.href); else url='http://translate.google.com/translate_t?text='+quote+'&langpair=%s|%s'};t=''; qc=0; chunks=url.split('%s'); for(i=0; i<5; i++){if(s.charAt(i)=='%22')qc=qc^1; t+=((s.charAt(i)==' '&&qc)?'^':s.charAt(i)); }args=t.split(/\s/); nurl=''; for(i=0; i<chunks.length; i++){nurl+=chunks[i]; if(args[i]!=undefined) {args[i]=args[i].replace(/\^/g,' '); nurl+=args[i]; }}location.replace(nurl,'');

BabelFish

javascript:var quote=document.getSelection();var s='%s'; if ((quote=='' && s.length>5)) {testo=s.substring(5,s.length);url='http://babelfish.altavista.com/tr?doit=done&intl=1&tt=urltext&lp=%s_%s&trtext='+encodeURIComponent(testo)+'&btnTrTxt=Traduci';} else{if (quote=='') url='http://babelfish.altavista.com/babelfish/tr?trurl='+encodeURIComponent(location.href)+'&lp=%s_%s&btnTrUrl=Traduci'; else url='http://babelfish.altavista.com/tr?doit=done&intl=1&tt=urltext&trtext='+encodeURIComponent(quote)+'&lp=%s_%s&btnTrTxt=Traduci'};t=''; qc=0; chunks=url.split('%s'); for(i=0; i<5; i++){if(s.charAt(i)=='%22')qc=qc^1; t+=((s.charAt(i)==' '&&qc)?'^':s.charAt(i)); }args=t.split(/\s/); nurl=''; for(i=0; i<chunks.length; i++){nurl+=chunks[i]; if(args[i]!=undefined) {args[i]=args[i].replace(/\^/g,' '); nurl+=args[i]; }}location.replace(nurl,'');javascript:var quote=document.getSelection();var s='%s'; if ((quote=='' && s.length>5)) {testo=encodeURIComponent(s.substring(5,s.length));url='http://babelfish.altavista.com/tr?doit=done&intl=1&tt=urltext&lp=%s_%s&trtext='+encodeURIComponent(testo)+'&btnTrTxt=Traduci';} else{if (quote=='') url='http://babelfish.altavista.com/babelfish/tr?trurl='+encodeURIComponent(location.href)+'&lp=%s_%s&btnTrUrl=Traduci'; else url='http://babelfish.altavista.com/tr?doit=done&intl=1&tt=urltext&trtext='+encodeURIComponent(quote)+'&lp=%s_%s&btnTrTxt=Traduci'};t=''; qc=0; chunks=url.split('%s'); for(i=0; i<5; i++){if(s.charAt(i)=='%22')qc=qc^1; t+=((s.charAt(i)==' '&&qc)?'^':s.charAt(i)); }args=t.split(/\s/); nurl=''; for(i=0; i<chunks.length; i++){nurl+=chunks[i]; if(args[i]!=undefined) {args[i]=args[i].replace(/\^/g,' '); nurl+=args[i]; }}location.replace(nurl,'');

Suggerimenti e opinioni sono gradite :-).

Altre letture::
Firefox Tip: How to set up multi-parameter keyword searches - Lifehacker,
Il blog che non c'è - Tradurre pagine Web al volo,
O'Reilly Network — Using Google to View MySpace or Any Restricted Site,
JavaScript Strings
ìì+JavaScript Strings.