Funzione php per tradurre testi utilizzando Google Translator - -oldpost-





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

 

25 thoughts on “Funzione php per tradurre testi utilizzando Google Translator - -oldpost-

  1. 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

    1. 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.

  2. 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.

  3. @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.

  4. 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];
    }

  5. @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

  6. 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

  7. 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.

  8. 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

Leave a Reply to Michele Todaro Cancel reply

Your email address will not be published. Required fields are marked *