×
×

Error de autenticación

Ha habido un problema a la hora de conectarse a la red social. Por favor intentalo de nuevo

Si el problema persiste, nos lo puedes decir AQUÍ

×

Art Project GroupMiembro desde: 05/05/12

Art Project Group

http://www.artprojectgroup.es

0
Posición en el Ranking
0
Usuarios seguidores
Sus noticias
RSS
  • Visitas
    5.249
  • Publicadas
    25
  • Puntos
    0
Veces compartidas
0
¡Consigue las insignias!
Trimestrales
Recientes
Visitas a noticias
21/01/2013

Hace muy pocos días hemos necesitado traducir al vuelo y de forma totalmente automática descripciones en español a otros idiomas como inglés, alemán, ruso o chino, y dado que la API de Google Translate ha modificado sus condiciones y cobra $20 por cada millón de palabras traducidas, y que no nos apetecía hacer pasar por caja a nuestro cliente tuvimos que buscar una alternativa gratuita.

¿Y cuál fue? Pues muy sencillo. Tras rastrear por Internet dimos con una pista que nos puso en alerta sobre cómo conseguirlo. Gracias a Rupesh Patel se nos ocurrió este pequeño y sencillo código PHP que consiguió nuestro objetivo y que hoy compartimos con todos vosotros, así que esperamos que os guste, lo uséis y nos deis vuestros comentarios.

Manos a la obra

Lo primero que vamos a necesitar es una función como esta:

//Procesa Google Translate
function traductor($url)
{
	//Procesamos la URL
	$contenido = file_get_contents($url);
	//Procesamos la respuesta
	preg_match_all('/\[+"(.*?)", ".*?"\]/', $contenido, $procesa);
	$descripcion = '';
	foreach($procesa[1] as $procesado)
	{
		if (!preg_match("/, \[+.*?\]/", $procesado)) $descripcion .= $procesado . " ";
	}

	return trim($descripcion);
}

Y otra como esta:

//Traduce las descripciones a otros idiomas
function traduce($descripcion)
{
	//Codificamos la descripción para que Google la entienda
	$descripcion = urlencode($descripcion);
	//Traducimos de Español a inglés
	$url = "http://translate.google.es/translate_a/t?client=t&text=$descripcion&hl=es&sl=es&tl=en&ie=UTF-8&oe=UTF-8&multires=1&otf=2&ssel=0&tsel=3";
	$ingles = traductor($url);
	//Traducimos de Español a alemán
	$url = "http://translate.google.es/translate_a/t?client=t&text=$descripcion&hl=es&sl=es&tl=de&ie=UTF-8&oe=UTF-8&multires=1&prev=btn&ssel=0&tsel=4";
	$aleman = traductor($url);
	//Traducimos de Español a ruso
	$url = "http://translate.google.es/translate_a/t?client=t&text=$descripcion&hl=es&sl=es&tl=ru&ie=UTF-8&oe=UTF-8&multires=1&prev=conf&psl=es&ptl=de&otf=2&it=sel.449408%2Ctgtd.7679&ssel=0&tsel=4";
	$ruso = traductor($url);
	//Traducimos de Español a chino
	$url = "http://translate.google.es/translate_a/t?client=t&text=$descripcion&hl=es&sl=es&tl=zh-CN&ie=UTF-8&oe=UTF-8&multires=1&prev=conf&psl=es&ptl=zh-TW&otf=2&it=sel.5752%2Ctgtd.2438&ssel=0&tsel=4";
	$chino = traductor($url);
	//Guardamos el resultado
	...
}

Y listo, ya tenemos todo lo que necesitamos, aunque obviamente hay que hacer algunas cosas más, como procesar el texto que nos devuelve Google Translate, ya que no siempre es todo lo limpio que necesitamos, o guardar los textos recibidos en una base de dato, pero eso ya entra dentro de las necesidades de cada cual.

Vamos a explicar brevemente ambas funciones.

En la primera, traductor($url), vamos a procesar la URL que recibimos, para la que recibiremos una respuesta. Por ejemplo, para traducir el siguiente texto:

Texto de prueba de Art Project Group

, recibiremos la siguiente URL:

http://translate.google.es/translate_a/t?client=t&text=Texto%20de%20prueba%20de%20Art%20Project%20Group&hl=es&sl=es&tl=en&ie=UTF-8&oe=UTF-8&multires=1&otf=1&ssel=0&tsel=4&otf=1&pc=1&ssel=0&tsel=4&sc=1

, y la siguiente respuesta:

[[["Test Text Art Project Group", "Texto de prueba de Art Project Group", "", ""]], , "es", , [["Test", [5], 1, 0, 486, 0, 1, 0], ["Text", [6], 1, 0, 486, 1, 2, 0], ["Art Project", [7], 1, 0, 341, 2, 4, 0], ["Group", [8], 1, 0, 461, 4, 5, 0]], [["de prueba de", 5, [["Test", 486, 1, 0], ["Testing", 0, 1, 0], ["Trial", 0, 1, 0], ["Proof of", 0, 1, 0]], [[6, 18]], "Texto de prueba de Art Project Group"], ["Texto", 6, [["Text", 486, 1, 0], ["Text with", 0, 1, 0], ["Text proposed", 0, 1, 0], ["Text proposed by", 0, 1, 0]], [[0, 5]], ""], ["Art Project", 7, [["Art Project", 341, 1, 0]], [[19, 30]], ""], ["Group", 8, [["Group", 461, 1, 0]], [[31, 36]], ""]], , , [["es"]], 40]

, que tras ser procesada por la función traductor, nos devolverá el texto que nos interesa:

Test Text Art Project Group

.

En la segunda, traduce($descripcion), se crean las URLs que necesitamos pasar a traductor. En nuestro caso hemos necesitado traducir al inglés, alemán, ruso y chino desde el español, pero podemos necesitar cualquier otra combinación, para obtener la URL correcta sólo necesitaremos el sitio web de Google Translate, un navegador web como Mozilla Firefox, por ejemplo, y Firebug o cualquier otra herramienta para desarrolladores que nos permita ver las consultas AJAX. De esta forma sólo tendremos que elegir la combinación de idiomas que necesitamos, copiar la ruta que aparece en la consola de Firebug y sustituir, por ejemplo,

&text=Texto%20de%20prueba%20de%20Art%20Project%20Group

por

&text=$descripcion

, en nuestro caso.

image

Alternativa gratuita a la API de Google Translate

Con estos pocos ingredientes ya tenemos una alternativa totalmente gratuita a la API de Google Translate. Obviamente necesitaremos almacenar todos los datos recogidos en una base de datos, y como ya hemos dicho anteriormente procesar el texto recibido para limpiarlo de imperfecciones que recibiremos, pero básicamente con estas pocas líneas de código podemos traducir todo lo que queramos en tiempo real y totalmente gratis.

Entradas relacionadas:

Más recientes de Art Project Group

¿Problemas con la hoja de estilo del tema hijo?

Cuando creamos un tema hijo a partir del tema principal que hemos elegido para construir nuestro sitio web bajo WordPress, normalmente sólo necesitamos tres archivos:screenshot.jpg: se trata de una imagen JPG de 600×450 píxeles que será la imagen de nuestro tema hijo 25/11/2015

Optimización SEO de las imágenes en WordPress

Optimización SEO de las imágenes en WordPress

Ya hemos hablado anteriormente del plugin Google XML Sitemap for Images y de cómo mejorarlo para que los buscadores web optimicen el indexado de nuestras imágenes (WordPress y los distintos archivos de mapa de sitio (sitemap)) 21/08/2012

Novedades de Google

Novedades de Google

Eventos en Google+, aplicación de Google+ específica para tabletas y Google Now 28/06/2012

Mostrando: 1-5 de 24