Usar la API del Traductor de Google Clase en PHP para utilizar el traductor de Google de forma gratuita

PHP, Proyectos, Recursos

Hace poco un cliente me planteaba la posibilidad de usar la API del famoso traductor de Google para implementarlo en una aplicación Android e iOS, hasta la fecha estaba usando la versión de pago la cuál para el número de peticiones que realizaba no le estaba siendo rentable.

Por este motivo decidí crear una pequeña clase en PHP para que pudiese utilizarla desde su propio servidor y no tener que pagar la cuota. El método para utilizar esta API es mediante CURL en PHP, todo el código puede ser portado a otros lenguajes, es bastante simple de utilizar.

La he colocado en GitHub para acceso público, lo único que tienes que hacer es clonar el proyecto en tu escritorio o descargarlo y empezar a usar esta clase de PHP.

Actualización: También podéis descargar la libería para NodeJS desde aquí.

Uso sencillo mediante JSON

Aquí podéis ver una petición real de ejemplo.

Y ahora vamos con un sencillo ejemplo de una aplicación realizada con Ionic Framework y AngularJS que simplemente traduce el texto que tienede español a inglés, no he colocado más lenguajes pero se pueden mirar todos los códigos aquí e implementarlos con una etiqueta select por ejemplo.

Alternativas profesionales

Es de saber popular que el Traductor de Google no es la mejor opción si lo que estamos buscando es una traducción profesional, para ello podemos recurrir a expertos o utilizar otras plataformas como la que os presento a continuación.

tran-sl-logo

Ellos mismos se apodan como “human translation API” o API de traducción humana. Realmente es como suena. Disponen de una gran red de traductores a la que tu, como traductor te puedes unir para ganarte un dinerillo.

Actualmente soportan archivos PO, JSON, TXT, XML mediante traducción en la API en “tiempo real”, porque al ser humanos los que traducen, puede tardar. Es ideal, a mi modo de verlo, para empresas e incluso start-ups que mediante un acceso aportado previamente a archivos remotos y enlazados con la API, Trans SL pueda realizar su servicio de forma transparente.

También brindan por la traducción de contenido generado, sin duda algo muy llamativo, publicar una entrada en tu blog y en cuestión de minutos-horas tienes tu post traducido al idioma deseado.

Sin duda es un servicio a tener en cuenta si estás buscando una traducción profesional, y no me pagan por decirlo, pero las cosas bien hechas, bien hechas están.

40 comentario

  1. Hola. Esa solución de API no funciona completamente, y realmente es muy frustrante porque trato de traducir algo tan simple como esto “Born in a rough neighborhood to strict, but loving parents. Neil Brown, Jr, who was a gifted martial artist and self proclaimed “knucklehead “, received his first role in film purely by chance, when a producer Patty Thomas Robinson walked into his karate Dojo looking for a kid to be in the TV series WMAC masters, which was being shot in Orlando, FL . After catching ” the acting bug” during filming, Neil claims he never looked back, and has been acting ever since.” y lo que me arroja es esta simple traducción “Nacido en un barrio peligroso a la estricta, pero los padres cariñosos.” Y listo… y que pasa con el resto del texto?

    • Hola John, el problema es por algún caracter que no está tratado como UTF-8 en Javascript, si usas la librería en PHP podrás comprobar que lo hace bien. Saludos.

  2. Hola.
    Tengo un problema para llamar por php a google traductor.
    me aparece el siguiente error :

    Se produjo un error al analizar el documento JSON. El documento podría no estar bien formateado.
    unexpected character at line 1 column 1

    Notice: Undefined offset: 0 in C:\xampp2\htdocs\traductor\GoogleTranslate.class.php on line 35
    {“status”:false}

    Podrias pasarme los fuentes. He visto que en tu url si que funciona https://statickidz.com/scripts/traductor/index.php?source=es&target=en&q=mi%20nombre%20es%20jose
    Felicidades por tu blob!!
    Muchas gracias

    • Dime cómo lo estás implementando, si como una API como en el ejemplo o estas incluyendo más código aparte. Asegúrate que envías todos los valores que requiere el método! Gracias a ti por comentar.

      • Cómo el ejemplo. De hecho he copiado el mismo código que el tuyo para hacer la prueba.
        He leido que google ya no permite acceder a la API y que si se desea se tiene que pagar.
        ¿Tu el ejemplo lo tienes usando la api de pago de google traductor?

          • El problema está que no funciona en local (utilizo xampp).
            Si lo alojo en un servidor externo si que funciona.
            Voy a ver si soy capaz de hacerlo funcionar en local porque es lo que necesito.
            Gracias.

  3. Lo implemente en mi servidor y funcionaba correctamente hasta hoy…. veo que el tuyo le pasa lo mismo y es debido a que la url de google devuelve error en la pagina, sabes si es eventual o es que lo han capado? gracias, el aporte es muy bueno y muy util y sencillo.

    • Gracias por avisar, si, lo habían capado. He tenido que buscar otra forma de hacerlo. Un saludo, lo tienes de nuevo subido a Github.

  4. Buenas Adrián.

    Estoy haciendo pruebas con el código y devuelve error.Hago algo mal o es que Google ha vuelto a caparlo.

    Muchas gracias por tu tiempo.

      • a mi me devuelve esto:
        {“status”:true,”translation”:”‘;INPUT_TOOL_PATH=’\/\/www.google.com’;var ctr, h;tld=’.com’;FEATURE_STICKINESS=[[,,,false,\”auto\”,\”en\”],true];window.jstiming.load.tick(‘prt’);Init(); “}

      • Ese fallo me lo daba con el ejemplo de github. con el codigo de la pagina, funciana al 100%.
        Muchas gracias!

  5. Alguien ha resuelto el problema que comentaba Jose “El problema está que no funciona en local (utilizo xampp).”
    Gracias

  6. Yo tengo problemas al traducir textos al francés, como por ejemplo con “Be sure that your students love and know you” obtengo “Assurez-vous que vos ?l?ves aiment et vous savez”, es decir, no se ven las tildes francesas. He probado tal y como viene en la clase PHP, y así se ven rombos negros. Si utilizo la función utf8_decode() con el resultado, los rombos se transforman en esas interrogaciones. La salida está configurada (tanto por web como por consola) para poder mostrar UTF-8, así que no entiendo qué está pasando con el charset que me envía Google.
    Gracias.

  7. Me respondo a mí mismo.
    He visto, usando mb_detect_encoding() que la cadena me estaba llegando codificada en ISO-8859-1, así que la solución ha sido tan sencilla como usar iconv() con la opción de TRANSLIT para obtener la traducción en un francés perfecto.
    Un saludo.

  8. Buenas. Lo implemente en un servidor PHP tal como comentas. Puse el GoogleTranslate.Class.php en la carpeta raíz, y en la misma otro que llame traductor.php, en el cual copie tu código tal cual. Al hacer la prueba desde el explorado, poniendo http://192.168.0.135:3400/traductor.php?source=es&target=en&q=hola%20soy%20muy%20bueno, el JSON que me devuelve, primero me devolvía “status: false”. Luego lo cambien para ver la respuesta, y tiene 2 comillas. Probé de todo, y no entiendo que es lo que no esta funcionando. Alguna idea ?? Aclaro que el servidor php funciona ok, ya que lo estoy usando. También probé ver si la consulta me la estaba bloqueando el Router, puse la ip del server en DMZ, y tampoco. Gracias.

  9. Yo estaba ideando traducirlo por la url, pero esto me la hace muy facil, tambien pense usar, simple html dom, en vez de curl, pero voy a provar si me funciona y vuelvo a decirles, pero es justo lo que necesito.

  10. Adrian, que buen aporte, por favor, necesito orientaciòn.

    Debo implementar algo que tiene que ver con computaciòn cognitva, para explicar donde estudio, me imagino que entra en el àrea este documento.
    Si la palabra no la encuentra, ¿hay forma de decirle a la API de que aprenda la respuesta o darle la opciòn de uno ingresarla?. Gracias.

    • Gracias Henry, pues según yo lo veo podrías crear una base de datos y jugar con eso que dices, pero sería ya implementación en el proyecto que estés desarrollando. Si ves que no traduce algo bien (propia del propio traductor de google) mándalo traducir a otro idioma y luego de ese lo traduces al que quieres.

  11. quisiera q en ves de traducir texto lo pueda implementar con imagenes o videos pequeños q tengo en mi base comopodria hacer eso

  12. Saludos a mi me da este error –> “8>Error 403 (Forbidden)!!1*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:[email protected] screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:[email protected] only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) [email protected] only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}403. That’s an error.Your client does not have permission to get URL / from this server. (Client IP address: 173.236.44.178) That’s all we know.”

    Le agradeceria que me ayudara…

  13. Hola Adrián, creo que ha dejado de funcionar. Tenía la API configurada en una app y me devuelve un 303, lo mismo ocurre en el ejemplo del post. Gracias

  14. Hola, actualmente no funciona, sabéis como solucionarlo?

    Google esta devolviendo error:

    ml lang=en>Error 403 (Forbidden)!!1*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:[email protected] screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:[email protected] only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) [email protected] only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}403. That’s an error.Your client does not have permission to get URL / from this server. (Client IP address: 2001:41d0:51:1::1cd9)

    That’s all we know.

Enviar un comentario