Categorie


Ora che Google ha migliorato il suo sistema di traduzione, possiamo utilizzarlo per i nostri scopi, creando una funzione php che ci permetta di tradurre un testo da una lingua ad un’altra. La funzione accetta come input il testo da tradurre, la lingua sorgente (it/en/ja/ecc..) e la lingua destinazione (en/it/ja/ecc..) restituendo il testo tradotto.

Per far ciò ci avvaliamo della funzione postURL che ho introdotto nell’articolo ‘Prelevare il contenuto di una pagina web passando i parametri via POST (PHP)’“.
Ecco la funzione:

L’utilizzo è semplicissimo:

che permette di tradurre il testo dall’italiano all’inglese.

Logica della funzione:
Per prima cosa codifichiamo il testo tramite la funzione php urlencode , racchiudendolo in un tag unico non presente nel testo da tradurre. Io ho scelto la parola JHIKE (un mio nickname). Questo tag ha un ruolo fondamentale, per la ricerca del testo tradotto all’interno della pagina.
Impostiamo i parametri necessari al traduttore di google (langpair e text) e li passiamo alla mia precedente funzione postURL che ci restituirà la pagina di google con il testo tradotto.
Quindi preleviamo il testo con una espressione regolare, che dice grossomodo “restituiscimi il testo che è racchiuso tra il mio tag (JHIKE) facendo attenzione a prendermi quello tradotto”. Che definizione eh? ;)

Lo scopo di quest’articolo era come utilizzare praticamente  la funzione postURL . Effettuando il POST e non il GET per il sistema di traduzione di google, è possibile inserire testi più grandi.

Nel prossimo articolo illustrerò come creare un plugin per WordPress, che utilizzando queste funzioni, permetterà di tradurre in automatico il testo dei nostri articoli. Ovviamente, verrà tradotto SOLO l’articolo è non l’intera pagina ;)

 

« « Prelevare il contenuto di una pagina web passando i parametri via POST (PHP) | Configurare ThunderBird per GMail e IMAP » »

Articoli correlati

google plus 1
Aggiungere il pulsante google +1 per mettere in evidenza il tuo sito

l pulsante +1 consente agli utenti di trovare contenuti pertinenti di persone che conoscono già e di cui si fidano. Se aggiungi il pulsante +1 alle...


Librerie javascript Google
Utilizzare i server di Google per caricare jquery, swfobject ed altre librerie JavaScript

Un modo per ottimizzare il nostro sito è quello di rendere il caricamento della pagina web il più veloce possibile. Per far ciò dobbiamo cercare di...


Gestione amici in facebook - Gennaro Varriale.it
Gli amici – Come creare un applicazione per FaceBook (parte 2)

Nel primo articolo Come creare un applicazione per FaceBook abbiamo visto come creare una semplice applicazione, ora vediamo di scoprire le funzioni...


Seguimi su twitter : @ironico

25 commenti

  • Federico scrive:

    Peccato sembra non funzionare più….

  • angela scrive:

    complimenti per le istruzioni sono perfette e facili anche per chi, come me, non mastica molto il linguaggio web. Sappi che solo con le istruzioni trovate nel tuo sito sono riuscita ad inserire google+
    grazie infinite
    angela

  • ivan scrive:

    è ancora funzionante questa funzione ?
    o è stata migliorata con il tempo?

    • ciao,
      ultimamente Google ha potenziato il servizio di traduzione, mostrando anche l’audio della traduzione.
      Cambiando la riga 7 del codice con la corretta espressione regolare dovrebbe ancora funzionare.

  • Andrea scrive:

    Ciao, ho lo stesso problema di Walter V. ma nn ho trovato l’espressione regolare corretta perchè quelle suggerite nn funzionano. Qual è l’espressione corretta?

    • Ciao Andrea, ad occhio l’espressione sembra corretta, però controlla se google ha cambiato l’html. Quando scrissi l’articolo e per molto tempo è andata bene, ora potrebbe essere che google abbia aggiornato. Scaricati la pagina e vedi di intercettare la stringa corretta.

  • Andrea scrive:

    Ciao Gennaro,
    ho lo stesso problema di Walter V. ma non sono riuscito a risolvere. Qual è l’istruzione preg_match_all corretta? Quelle suggerite nei post nn mi funzionano :(

  • @Walter: grazie ;) Ogni volta che modifico l’articolo wordpress aggiunge o toglie spazi..quindi lascio così ;)

  • Walter V. scrive:

    Ho notato che lo script non traduceva bene la prima e l’ultima parola, probabilemtente perchè attaccate al tag. E’ bastato distanziare frase di uno spazio per sistemare il problema.

    Comunque complimenti e grazir veramente sia per questa funzione che per l’altra. Erano mesi che andavo avanti a usare javascript per tradurre :D.

  • Pitbull scrive:

    eh data l’ora devo essermi perso qualcosa :D …grazie x la risposta tempestiva ;)

  • @Pitbull : beh..leggi meglio l’articolo..:) “Per far ciò ci avvaliamo della funzione postURL che ho introdotto nell’articolo ‘Prelevare il contenuto di una pagina web passando i parametri via POST (PHP)’“.
    Inoltre ricorda che postURL è diverso da posturl in php, rispetta minuscole e maiuscole.

  • Pitbull scrive:

    a me da errore… Fatal error: Call to undefined function: posturl();

    la riga incriminata è:
    $data= postURL(‘http://translate.google.com/translate_t?’, $params);

  • Già! Ed anche lo slash della chisura del div..credo che c’è l’abbiamo fatta ;)

  • Luca scrive:

    Ciao Gennaro,
    manca un < nel secondo div (non so se funziona senza) per il resto è ok (e scusami ancora per i multi messaggi :) )

  • Ciao Luca, credo ci siamo..
    ho eliminato i messaggi inutili , per rendere la pagina più pulita.
    Grazie per la tua collaborazione :)

  • Luca scrive:

    Funzione corretta:

    function traduci ($testo,$src,$dest) {
    $testo=urlencode($testo);
    $params="langpair=$src|$dest&text=".$testo;
    $data= postURL('http://translate.google.com/translate_t?', $params);
    preg_match_all('/<div id=result_box dir=ltr>(.*?)>\/<\/div>/', $data, $result, PREG_SET_ORDER);
    return $result[0][1];
    }

  • @marcello:
    UPDATE: prova a cambiare la parola JHIKE da maiuscolo in minuscolo (‘jhike’).

    Al momento ho fatto questa prova inserendo il link direttamente nel browser
    “http://translate.google.com/translate_t?langpair=en|it&text=this%20is%20a%20test”
    che dovrebbe tradurre ‘this is a test’ dall’inglese all’italiano, ed è tutt’ok.

    Quindi se non funziona lo script, deve esserci un problema nell’estrazione del testo dalla pagina google, cosa che fa la seguente riga:
    preg_match_all(”/result_box.*”.$tag.”(.*)”.$tag.”\s*\< \/div\>/mi”, ..

    Molto probabilmente basta modificare “result_box” con una stringa più specifica,che si trova all’interno della pagina di ricerca.

    Puoi fare qualche test controllando che la variabile “$data” contenga la pagina derivante da Google (es: echo “$data”;)

    Se non ci riesci appena ho un pò di tempo, controllo.
    Ciao

  • Marcello Ciampa scrive:

    ciao gennaro
    stavo utilizzando la funzione traduci() da una settimana a questa parte per ottenere un sito multilingua, andava tutto bene, ma da ieri sera per qualche strano motivo ha smesso di funzionare..

    dopo diversi tentativi mi rivolgo a te perchè non ho ancora capito dove sta l’inghippo!!

    grazie

  • 1)Devi creare prima una form html contenente un campo input (es. testo),
    una select per la lingua di partenza (es.src) ed una per quella di arrivo (es.dest) (entrambi facoltativi),
    ed un submit button. L’action della form deve puntare al tuo script php (che contiene la funzione traduci) .
    2) Lo script php carica questi valori tramite $_GET['testo'], $_GET['src'] e $_GET['dest'] e li passi alla funzione traduci.

  • Michele Todaro scrive:

    Potresti spiegarmi come faccio a collegare un bottone alla funzione che hai illustrato(GRAZIE!)per tradurre il testo di una pagina web?
    Sperando di ricevere al più presto una risposta ti ringrazio e ti invio cordiali saluti.

    Michele Todaro

  • Per molte lingue, google translator traduce solo in inglese e viceversa.
    Per tradurre da tedesco a italiano, si deve fare due passaggi, tedesco/inglese e inglese/italiano, questo vale anche per le altre lingue (cinese,giapponese,ecc..)

  • ago scrive:

    perche’ non c’e’ anche ” tedesco/italiano e viceverso

  • [...] “Funzione php per tradurre testi utilizzando Google Translator” mostro come  utilizzare questa funzione per tradurre testi tramite google. Successivamente [...]

Rispondi

Attenzione : Per inserire codice html/php o caratteri speciali utilizza Postable. Postable converte i caratteri speciali del tuo commento.
XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Login with:
Powered by Sociable!