Jump to content
QuePáginas

Modulo de traducción - Magic Translator

Recommended Posts

Hola a todos, he desarrollado este módulo que espero que sirva de ayuda a los que queréis traducir la versión 1.6 de Prestashop.

 

En el adjunto está tanto el modulo como instrucciones de uso.

 

Saludos.

 

Novedades:

-MagicTranslator v0.2 release

 

      Reemplazado el método file get contents por llamadas cURL para un mejor rendimiento y evitar restricciones de hosting

Instrucciones de uso - Magic Translator.pdf

magictranslatorv002r.zip

magictranslator_v003b.zip

Edited by QuePáginas (see edit history)
  • Like 6

Share this post


Link to post
Share on other sites

Hola a todos, he desarrollado este módulo que espero que sirva de ayuda a los que queréis traducir la versión 1.6 de Prestashop.

 

En el adjunto está tanto el modulo como instrucciones de uso.

 

Saludos.

 

Ummm pues antes de instalar el módulo. (He leido el PDF,pero no termino de enterarme de la funcionalidad del modulo).

 

Es decir ¿Esto funciona mas rapido que cambiar los textos manualmente dede Localización -> Traducciones? ¿Traduce automaticamente? ¿Cambia los textos automaticamente?

 

(No he probado el módulo por eso pregunto)

 

Gracias,

Edited by galindogadea (see edit history)

Share this post


Link to post
Share on other sites

Hola galindogadea,

 

en resumen, el módulo crea un par de botones en el panel de administracion, en la sección traducciones. Cuando pinchas en ese botón, el programa mete la traducción automáticamente en todos los cuadros de texto que detecte como vacíos y que tendrías que llenar a mano. También tiene la opción sobreescribir traducciones, que permite traducir todos los cuadros de texto, tenga traducción o no.

 

Espero que te sea de ayuda.   

Share this post


Link to post
Share on other sites

Hola galindogadea,

 

en resumen, el módulo crea un par de botones en el panel de administracion, en la sección traducciones. Cuando pinchas en ese botón, el programa mete la traducción automáticamente en todos los cuadros de texto que detecte como vacíos y que tendrías que llenar a mano. También tiene la opción sobreescribir traducciones, que permite traducir todos los cuadros de texto, tenga traducción o no.

 

Espero que te sea de ayuda.   

 

¿Pero cuando mete las traducciones automaticas? ¿En base a que lo hace?

 

Por ejemplo una de mis tiendas esta totalmente en Chino ¿De donde saca la traduccion del chino ¿ de la oficial de Prestashop http://www.prestashop.com/es/traducciones o de un sistema externo? ¿Esas traducciones son fiables?

 

Lo comento, porque yo al final ni las traducciones oficiales ni las automaticas de otros sistemas que he probado me terminan de convencer y tengo que ir modificandolas 1 a 1, para dejarlo totalmente niquelado.

 

Saludos,

 

Gracias,

Edited by galindogadea (see edit history)

Share this post


Link to post
Share on other sites

En concreto el programa coge los campos en inglés de Prestashop y en base a eso los traduce -a través de Google Translate- al idioma que hayas seleccionado en la página de traducciones. El momento en que lo traduce es tan pronto pinchas el botón de traducciones que se añade a la plantilla donde estan los campos para traducir, pero no se almacenan hasta que pulsas guardar.

 

Para que no haya confusión, este plugin sólo sirve paralas traducciones de los archivos de plantillas que maneja prestashop a través de sus métodos de lenguaje. No para textos que se introducen manualmente desde el panel como los nombres y descripciones de productos o categorías.    

 

Está pensado para idiomas incompletos de Prestashop, o como el caso que me motivó a hacerlo, themes que no ofrecen traducción y añaden bastantes textos propios en sus plantillas.

 

Gracias por el interés.

Edited by QuePáginas (see edit history)

Share this post


Link to post
Share on other sites

En concreto el programa coge los campos en inglés de Prestashop y en base a eso los traduce -a través de Google Translate- al idioma que hayas seleccionado en la página de traducciones. El momento en que lo traduce es tan pronto pinchas el botón de traducciones que se añade a la plantilla donde estan los campos para traducir, pero no se almacenan hasta que pulsas guardar.

 

Para que no haya confusión, este plugin sólo sirve paralas traducciones de los archivos de plantillas que maneja prestashop a través de sus métodos de lenguaje. No para textos que se introducen manualmente desde el panel como los nombres y descripciones de productos o categorías.    

 

Está pensado para idiomas incompletos de Prestashop, o como el caso que me motivó a hacerlo, themes que no ofrecen traducción y añaden bastantes textos propios en sus plantillas.

 

Gracias por el interés.

 

Gracias por la información !

 

Yo en el caso de plantillas sin traducciones, me ha funcionado en la mayoria de los casos, si en la sección "Copiar" de la pestaña Localización -> Traducciones señalar copiar las traducciones de la "default" en la plantilla que usaba, automaticamente con 1 click, me copiaba gran parte de las traducciones.

 

De todos modos, en mi caso personal siempre he terminado de un modo u otro, personalizando las traducciones al maximo, ya que al final la mejor traducción es la que se hace profesionalmente y revisada.

 

Te agradezco que me hayas proporcionado toda la información que te he pedido del módulo, mañana lo instalare y probare en local y cuando pueda contare mi experiencia sobre el módulo.

 

Muchas gracias por el aporte.

Edited by galindogadea (see edit history)

Share this post


Link to post
Share on other sites

Hola,

 

gracias por el módulo, pero lo he probado en 1.6.0.9 y no me funciona, si clico en "Translate Section", en el lugar de la traducción me indica Bad translation.

 

Saludos

  • Like 1

Share this post


Link to post
Share on other sites

Hola francesc, 

 

Gracias por probar el módulo y dar feedback. Magic Translator está probado en la versión 1.6.0.9 de Prestashop y funciona correctamente.

 

El error que comentas se produce en el método translator() de la clase GoogleTranslate, aquí sucede algo lo suficientemente importante como para considerar un fallo no haberlo mencionado antes, en este método se realiza una llamada a través de la función de php file_get_contents(),la que permite cargar a memoria los datos que recibe de Google Translate.

 

Algunos hostings capan este metodo por seguridad, ya que un desarrollador malicioso que consiga ejecutar esa función desde tu servidor podría hacer llamadas a ficheros comprometidos y poner en riesgo el servidor. Deberías comprobar si tu hosting tiene esa restricción. 

 

El módulo está recién publicado, por lo que aún no sé si este problema serán casos aislados o algo más generalizado, pero ya está proyectado para próximas versiones cambiar esa metodología por llamadas curl, cosa que debería evitar este conflicto.

 

Publicaré un parche para los que tengáis este problema tan pronto tenga algo de tiempo libre.

 

Disculpa las molestias.

Edited by QuePáginas (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites
...El error que comentas se produce en el método translator() de la clase GoogleTranslate, aquí sucede algo lo suficientemente importante como para considerar un fallo no haberlo mencionado antes, en este método se realiza una llamada a través de la función de php file_get_contents(),la que permite cargar a memoria los datos que recibe de Google Translate.

 

Algunos hostings capan este metodo por seguridad, ya que un desarrollador malicioso que consiga ejecutar esa función desde tu servidor podría hacer llamadas a ficheros comprometidos y poner en riesgo el servidor. Deberías comprobar si tu hosting tiene esa restricción. 

 

El módulo está recién publicado, por lo que aún no sé si este problema serán casos aislados o algo más generalizado, pero ya está proyectado para próximas versiones cambiar esa metodología por llamadas curl, cosa que debería evitar este conflicto.

 

Publicaré un parche para los que tengáis este problema tan pronto tenga algo de tiempo libre.

 

Disculpa las molestias.

 

Seguramente sea esto, le preguntare a mi proveedor.

 

Saludos

Share this post


Link to post
Share on other sites

Hola amigos,

 

hoy traigo la actualización de llamadas por cURL. Esta actualización debería corregir los problemas que se lo presentaron a algunos usuarios a la hora de realizar las traducciones.

 

Es problema está comentado un par de posts más arriba y se resume en que algunos hostings tienen desactivada la directiva allow_url_fopen por lo que el metodo file_get_contents() no consigue recuperar los datos de traducción.

 

Para solucionarlo, simplemente cambiamos ese metodo de llamada por llamadas cURL, este cambio además de evitar esas restricciones, reduce notablemente el tiempo de proceso del traductor y se realiza de forma sencilla. De todas formas voy a subir la nueva versión con este cambio. !Saludos!

 

Método Manual:

 

Editamos el archivo GoogleTranslate.php que hay en la carpeta class del módulo.

Reemplazamos la línea:

 

$text = file_get_contents($url);

 

por esto

 

$ch =  curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$text = curl_exec($ch);
Edited by QuePáginas (see edit history)

Share this post


Link to post
Share on other sites

¡Gracias!

 

Ya me funciona perfectamente, tu módulo agiliza mucho la traducción!

  • Like 1

Share this post


Link to post
Share on other sites

 

Hola amigos,

 

hoy traigo la actualización de llamadas por cURL. Esta actualización debería corregir los problemas que se lo presentaron a algunos usuarios a la hora de realizar las traducciones.

 

Es problema está comentado un par de posts más arriba y se resume en que algunos hostings tienen desactivada la directiva allow_url_fopen por lo que el metodo file_get_contents() no consigue recuperar los datos de traducción.

 

Para solucionarlo, simplemente cambiamos ese metodo de llamada por llamadas cURL, este cambio además de evitar esas restricciones, reduce notablemente el tiempo de proceso del traductor y se realiza de forma sencilla. De todas formas voy a subir la nueva versión con este cambio. !Saludos!

 

Método Manual:

 

Editamos el archivo GoogleTranslate.php que hay en la carpeta class del módulo.

Reemplazamos la línea:

 

$text = file_get_contents($url);

 

por esto

 

$ch =  curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$text = curl_exec($ch);

 

 

Holas!!!

 

Gracias por el modulo!!

 

Uso o Prestashop 1.6.0.9 e instalei a versão 002r do módulo.

Consegui instalar, mas quando vou traduzir aparece: Bad Translation

 

Minhas configurações do php.ini são:

 

allow_url_fopen = On

allow_url_include = Off

 

Sabe onde pode estar o erro?

 

Gracias por todo!

Edited by Sam Oliveira (see edit history)

Share this post


Link to post
Share on other sites

Hola amigos.

 

Probado en Pretsashop 1.6.0.14.

Se instala pero no funciona .Simplemente no hace nada.

Saludos

Share this post


Link to post
Share on other sites

Hola a todos.

 

Hoy vengo con malas noticias. Desgraciadamente por falta de tiempo me es imposible darle soporte al plugin. Entre las clases, trabajo y ejercer las funciones mínimas vitales me he quedado sin tiempo para seguir atendiendo este proyecto. No me queda más remedio que dejarlo en "stand by" hasta que la situación cambie. Por lo que pido disculpas a aquellos que perdieron tiempo instalándolo para que no les funcionara.

 

Ofrezco el código libre y gratuitamente por si se diera el caso que alguien que que tenga ganas y esté disposición de hacerlo, lo quisiera tocar.

Share this post


Link to post
Share on other sites

Hola a todos.

 

Hoy vengo con malas noticias. Desgraciadamente por falta de tiempo me es imposible darle soporte al plugin. Entre las clases, trabajo y ejercer las funciones mínimas vitales me he quedado sin tiempo para seguir atendiendo este proyecto. No me queda más remedio que dejarlo en "stand by" hasta que la situación cambie. Por lo que pido disculpas a aquellos que perdieron tiempo instalándolo para que no les funcionara.

 

Ofrezco el código libre y gratuitamente por si se diera el caso que alguien que que tenga ganas y esté disposición de hacerlo, lo quisiera tocar.

 

Holas!!!

 

Obrigado pela resposta e pelo módulo!

Embora não esteja funcionando para mim, creio que funciona para alguns.

Vou desinstalar o módulo e aguardar alguma atualização quando for possível.

 

Gracias por todo!

Share this post


Link to post
Share on other sites

Parece que Google ha hecho algun cambio en la url que utiliza el programa para obtener la traducción. Mirando más adentro curiosamente conseguí obtener estas respuestas de esa url:

 

http://translate.google.es/translate_a/t?client=t&text=Page+not+found&hl=en&sl=en&tl=it&ie=UTF-8&oe=UTF-8&multires=1&prev=btn&ssel=0&tsel=4

(curiosamente la url en el navegador si funciona y es idéntica a la que se está usando).

 

El contenido de la respuesta de la llamada ajax y que se corresponden a las traducciones:

 

  1. text[0][]:
    Page not found
  2. text[0][]:
     
  3. text[1][]:
    This page is not available
  4. text[1][]:
     
  5. text[2][]:
    We're sorry, but the Web address you've entered is no longer available.
  6. text[2][]:
     
  7. text[3][]:
    To find a product, please type its name in the field below.
  8. text[3][]:
     
  9. text[4][]:
    Search our product catalog:
  10. text[4][]:
     
  11. text[5][]:
    Ok
  12. text[5][]:
     
  13. text[6][]:
    Home
  14. text[6][]:
     
  15. text[7][]:
    Home page
  16. text[7][]:

 

Ahora mismo no entiendo muy bien que pasa. Intentaré mirarlo.

 

Saludos

Share this post


Link to post
Share on other sites

Hola amigos,

 

se realizaron unas pequeñas correcciones en el archivo class/GoogleTranslate.php para solucionar el problema de la url y una pequeña corrección en la expresion regular que procesa la respuesta de Google.

 

Queda para un futuro meterle un campo en la configuración que permita introducir esta url, ya que no será raro que la vuelvan a cambiar

 

(agradecimientos , creditos y deuda de un churrasco para Hara ;)

 

Reemplazar el archivo GoogleTranslate.php por:

<?php
require_once 'Utils.php';
//ToDo:Conflictive words display in config panel
//Why crash with that?!!!
class GoogleTranslate{

	//pasar a expresion regular
	private static $regReplaces = array('RGCod1','RGCod2','RGCod3','RGCod4','RGCod5','RGCod6','RGCod7','RGCod8',
			'RGCod9','RGCod10','RGCod11','RGCod12');
	private static $regExs = array('%d','%s','%1$d','%2$d','%3$d','%4$d','%5$d','%1$s','%2$s',
			'%3$s','%4$s','%5$s');

	
	//This function prepares the string to be accepted by Google Translate and translator method;
	private static function toTranslateSanitize($text){
		//Encode regex
		$text = str_replace(self::$regExs, self::$regReplaces , $text);

		return $text;
	}

	
	
	//This function prepares de translated text to be returned to the program
	private static function fromTranslateSanitize($translation){
		//Decode regex
		$translation = str_replace(self::$regReplaces,self::$regExs,$translation);
		
		return $translation;
	}


	//Translator function make and process the call to google in order to get trasnlation
	private static function translator($url){
		
		//Procesamos la URL
		$ch =  curl_init($url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		$text = curl_exec($ch);
		

		//Procesamos la respuesta
		while(strpos($text,',,') !== false)
			$text = preg_replace('/,,/', ',"",', $text);
		$text = preg_replace('/\[,/', '["",', $text);
		$text = preg_replace('/,\]/', ',""]', $text);
		
		$text = json_decode($text,true);
		
		$translation = '';

		if(count($text[0])){
			foreach($text[0] as $phrase)
				$translation .= trim($phrase[0]);
		 
		}else 
			return 'Bad translation';

		return $translation;
	}

	
	//This is the main interface funcion, receive a text ans the languages and return the traslation
	public static function translate($text,$from = 'auto',$to='en'){
		if($text == "" ||  gettype($text) != "string"){
			return "";
		}
		
		//Conflictive words seems to be always 2 caracter words, so we will always skip this untill some better
		if(strlen($text) <= 2){
			return $text;
		}
	
		$text = self::toTranslateSanitize($text);

		$text = urlencode($text);
		$from = urlencode($from);
		$to = urlencode($to);
		
		//$url ='http://translate.google.es/translate_a/t?client=t&text='.$text.'&hl='.$from.'&sl='.$from.'&tl='.$to.'&ie=UTF-8&oe=UTF-8&multires=1&prev=btn&ssel=0&tsel=4';
		  $url ='http://translate.google.es/translate_a/single?client=t&q='.$text.'&hl='.$from.'&sl='.$from.'&tl='.$to.'&ie=UTF-8&oe=UTF-8&ssel=0&tsel=0&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at';
		
		$translation = GoogleTranslate::translator($url);

		$translation = GoogleTranslate::fromTranslateSanitize($translation);
		
		return $translation; 
	}
}
?>

 También se lanza la version 0.3 con estas correcciones.

 

Saludos.

Edited by QuePáginas (see edit history)

Share this post


Link to post
Share on other sites

Hola, el modulo funciona en la versión 1.6 could??, al instalarlo por el servidor ftp me dice:

 

``magictranslator´´ no puede ser enviado ya que no pertenece al sistema de archivos.

 

si no, me seria de gran ayuda sacar una versión compatible con el could, muchas gracias de antemano

Share this post


Link to post
Share on other sites

Solo quiero decir una cosa. El módulo y la idea es simplemente brillante! Muchas gracias por aportar este modulo.

Share this post


Link to post
Share on other sites

Hola,

 

gracias por el módulo, pero lo he probado en 1.6.0.9 y no me funciona, si clico en "Translate Section", en el lugar de la traducción me indica Bad translation.

 

Saludos

 

Estoy teniendo este mismo problema en PS 1.6.1.0 cuando intento traducir "modulos instalados". No tuve este problema cuando he traducido el "Front Office"

 

He notado tambien que lo que no se está traduciendo son los modulos que no son por defecto de PS. 

 

post-944125-0-18817600-1443998396_thumb.png

Edited by HeyVoOn (see edit history)

Share this post


Link to post
Share on other sites

Hola, no hay manea de pasar del "bad translation", he probado todo lo anterior y no logro que traduzca nada de nada...

 

¿alguien puede ayudar y decir que ocurre y como se soluciona realmente? 

 

Gracias

Share this post


Link to post
Share on other sites

No le he probado aún, pero como alternativa también dejé este tutorial en youtube hace tiempo, mucha gente lo está aplicando: 

 

Gracias por el aporte! Siempre es una alegría encontrar este tipo de desarrollos en la comunidad :)

  • Like 2

Share this post


Link to post
Share on other sites

La versión 3 me ha llenado el prestashop de expresiones BAD TRANSLATION, un desastre total, asi que si el que publica esto no da soporte, al bug, aconsejo al administrador del foro que quite este post, porque este modulo esta haciendo daño real.

Share this post


Link to post
Share on other sites

La versión 3 me ha llenado el prestashop de expresiones BAD TRANSLATION, un desastre total, asi que si el que publica esto no da soporte, al bug, aconsejo al administrador del foro que quite este post, porque este modulo esta haciendo daño real.

 

Yo creo que es mejor que este disponible el módulo aunque por ahora este allando, por si alguien quiere colaborar y "adaptarlo" o hacerle una mejora con el permiso del autor.

 

Lo que si siería conviente es colocar simplemente un aviso en el primer mensaje del tema, que diga los fallos que esta dando, para aquellas personas que lo vayan a descargar lo sepan de atemano y las que quieran mejorarlo lo tengan en cuenta. En los ultimos post si se habla del error que da.....

Share this post


Link to post
Share on other sites

ELIMINEN EL MALWARE, PLEASE. "LA MEDIOCRIDAD ES LA MADRE DE TODAS LAS DESGRACIAS"  por favor, me las he visto y deseado para quitar el mensajito(bad translator) gracias a un componente de mozilla pude limpiar la basura que dejó este plugin ineficaz que les va a hacer perder mucho tiempo como no reparen el bug que tiene. En informatica cuando un programa no solo no hace su cometido, sino que produce daños se le denomina como mínimo MALWARE...Y ESTE SOFTWARE LO ES. PRODUCE LA NON GRATA BROMA DE PONER UN MENSAJE DE BAD TRANSLATION EN TODO LO QUE TRADUCE, SI UDS LE DAN A OVERWRITE, MANDAN TODO EL TRABAJO AL CARAJO.

POR FAVOR E-LI-MI-NEN ESTE MALWARE.

Por cierto el complemento que use para limpiar la basura que dejo este malware es: la extension del navegador firefox foxreplace que es como el buscar pero que también reemplaza, tanto texto como código. (se activa con la tecla F9). Espero haberles ayudado a mejorar.

Edited by chamber77777 (see edit history)
  • Like 2

Share this post


Link to post
Share on other sites

Doy fe de ello, el modulo, no funciona correctamente, me tradujo toda la página con textos bad translation, ni se les ocurra probarlo

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More