Google AJAX API Language e Prototype.js
Martedì 13 Maggio, 2008Dopo aver visto il funzionamento delle Google AJAX API mi è venuto in mente un modo alternativo per tradurre realtime le nostre pagine Web. Sfruttando prototype.js è possibile marcare i TAG HTML che desideriamo tradurre, invece di sottoporre l'intero documento alla traduzione. Per marcare i TAG HTML da tradurre ho usato l'attributo rel, impostandolo a translate:
-
<p rel="translate">Questo testo deve essere tradotto</p>
Con una semplice funzione, poi, possiamo sfruttare prototype.js per elaborare tutti i TAG HTML con rel='translate':
-
/*
-
** @name : translate()
-
** @description : translate
-
*/
-
function translate() {
-
$$('[rel="translate"]').each(
-
function(e) {
-
google.language.translate(e.innerHTML, 'it', 'en',
-
function(result) {
-
if (result.translation) {
-
e.innerHTML = result.translation;
-
} else {
-
alert( 'Translate Error!\n\n' + result.error.message );
-
}
-
}
-
);
-
}
-
);
-
}
Potete vedere questa funzione in azione su e-lementi.com
Ovviamente lo script può (e/o deve) essere perfezionato a seconda dei casi. È interessante notare, tuttavia, che è possibile specializzarlo in modo tale da sostituire delle immagini (nel caso di bottoni in grafica che contengono testo) o fargli elaborare TAG particolari come INPUT o TEXTAREA.
Uno dei limiti che ho riscontrato, e che voorei approfondire, riguarda il numero di caratteri che possono essere tradotti. In caso di testi importanti, infatti, non è difficile ottenere un errore: che infatti ho gestito nello script con un alert().





















