Hoy compartiré con ustedes esta sencilla clase PHP que nos ayudara a implementar la API AJAX de idiomas de Google en nuestras aplicaciones, logrando traducir textos en diversos idiomas sin necesidad de usar JavaScript. Aquí están los archivos completos:
index.php
1 2 3 4 5 6 7 8 9 | <?php require_once( 'Labs_gTranslate.class.php' ); $labsgTranslate = new Labs_gTranslate( 'es' , 'it' , 'Hola mundo' ); print $labsgTranslate->traducir(); ?> |
Labs_gTranslate.class.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | <?php /** * Clase Labs_gTranslate. Traduce diversos idiomas utilizando la API AJAX de idiomas de Google. * Derechos de autor © 2009 Gilberto Pineda Vanegas <gilberto.pineda@gmail.com> * * Este programa es software libre: usted puede redistribuirlo y/o modificarlo bajo los términos de * la GNU General Public License publicada por la Free Software Foundation, bien de la versión 3 de * la Licencia, o (a su elección) cualquier versión posterior. * * Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, incluso * sin la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte * la GNU General Public License para más detalles. * * Usted debería haber recibido una copia de la GNU General Public License junto con este programa. * De lo contrario, véase <http://www.gnu.org/licenses/>. **/ class Labs_gTranslate { private $_googleurl = NULL; private $_idiomaorigen = NULL; private $_idiomadestino = NULL; private $_texto = NULL; private $_traduccionesvalidas = NULL; private $_datosget = NULL; /* Constructor de la clase. */ public function __construct( $p_idiomaorigen , $p_idiomadestino , $p_texto ) { $this->_googleurl = 'http://ajax.googleapis.com/ajax/services/language/translate'; $this->_idiomaorigen = $p_idiomaorigen; $this->_idiomadestino = $p_idiomadestino; $this->_texto = $p_texto; $this->_traduccionesvalidas = array( 'en|es' , 'en|fr' , 'en|it' , 'es|en' , 'es|fr' , 'es|it' , 'fr|en' , 'fr|es' , 'fr|it' , 'it|en' , 'it|es' , 'it|fr' ); $this->_datosget = array( 'langpair' =>NULL, 'q' =>NULL ); } /* Conecta con el Servidor de API's de Google y retorna el texto traducido. */ public function traducir() { $idiomapar = $this->_idiomaorigen . '|' . $this->_idiomadestino; if( !$this->validarIdioma( $idiomapar ) ) { return false; // TRADUCCION_IDIOMA_PAR_DESCONOCIDO } $this->_datosget['langpair'] = $idiomapar; $consulta = $this->construirConsulta(); $ch = curl_init(); curl_setopt( $ch , CURLOPT_URL , $this->_googleurl . $consulta ); curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 ); $salida = curl_exec( $ch ); $salidaprocesada = $this->filtrarSalida( $salida ); return $salidaprocesada; } /* Comprueba que la traduccion a realizar sea valida. */ private function validarIdioma( $p_idiomapar ) { if( in_array( $p_idiomapar , $this->_traduccionesvalidas ) ) { return true; } return false; } /* Construye el fragmento de URL valida con los datos para la traduccion. */ private function construirConsulta() { if( ( $this->_idiomaorigen || $this->_idiomadestino || $this->_texto ) == ( '' || NULL ) ) { return false; // TRADUCCION_DATOS_DESCONOCIDOS } $this->_datosget['q'] = $this->_texto; return '?v=1.0&' . http_build_query( $this->_datosget ); } /* Decodifica la cadena JSON y retorna el texto traducido. */ private function filtrarSalida( $p_salida ) { $json = json_decode( $p_salida , true ); return $json['responseData']['translatedText']; } } ?> |
Para este caso en particular son cuatro los idiomas validos: Ingles (en), español (es), frances (fr) e italiano (it). En la línea 37 podemos ver los tipos traducciones permitidas entre estos idiomas (idioma origen | idioma destino):
37 | $this->_traduccionesvalidas = array( 'en|es' , 'en|fr' , 'en|it' , 'es|en' , 'es|fr' , 'es|it' , 'fr|en' , 'fr|es' , 'fr|it' , 'it|en' , 'it|es' , 'it|fr' ); |
Como pueden ver son una serie de sencillos métodos que conectan al Servidor de API’s de Google y envían los datos necesarios para hacer la traducción del texto al idioma requerido. Ya cada quien deberá complementar esta clase de acuerdo a sus necesidades, pues todavía queda un poco de trabajo con respecto a la gestión de errores y otros aspectos.
Eso es todo, cualquier crítica o inquietud no duden en comentarla.
¿Te fue útil este artículo? Invitame una cerveza para calmar la sed y escribir muchos más.



Hola, estoy programando un blog en php de wordpres y quería implementarle este traductor que tú compartes. ¿Cómo puedo hacerlo? ¿Dónde introduzco estos códigos? y sobre todo, cómo se visualiza posteriormente en el blog? ¿Me podrías ayudar? Gracias.