Jump to content

Guardado de Cadenas Vacias en Traducciones PS 1.6.0.11


Recommended Posts

Hola, 

 

Tengo un problema con las traducciones en una tienda PS 1.6.0.11. El tema NO es el de por defecto aunque entiendo que no debe afectar ya que es a la hora de guardar las traducciones desde el backoffice.

 

El caso es que cuando voy a traducir alguna cadena para un modulo en cuestion en Español y le doy a guardar, todas las cadenas que están vacias me las guarda también como cadenas vacias, es decir en el archivo es.php aprece por ejemplo esto:

global $_MODULE;
$_MODULE = array();
$_MODULE['<{nombre_modulo}nombre_tema>nombre_modulo_6d2fb53e17cf29ae7ff2552fa28d3289'] = '';
$_MODULE['<{nombre_modulo}nombre_tema>pnombre_modulo_e58c27818bf68b1f92513ad4f99972c4'] = '';


Y eso para todos los modulos y todas las cadenas que no he traducido. 

 

La consecuencia es que según prestashop, me quedan 0 cadenas por traducir, y lo que es mas grave todas las cadenas que no he traducido (y se han guardado como cadenas vacías) dejan de mostrarse a lo largo y ancho de la tienda...

 

 

¿Alguien me sabe decir algo al respecto? :)

 

Gracias.

 

  • Like 1
Link to comment
Share on other sites

Me respondo a mi mismo.

 

En el fichero /controllers/admin/AdminTranslationsController.php  aproximadamente en la linea 974 (funcion findAndWriteTranslationsIntoFile) no comprueba que la cadena no esté vacía.

 

En el controlador de la versión 1.6.0.11 aparece este código para guardar las traducciones:

		if (array_key_exists($post_key, $_POST) && !in_array($pattern, $array_check_duplicate))
		{
			$array_check_duplicate[] = $pattern;
			$str_write .= '$_MODULE['.$pattern.'] = \''.pSQL(str_replace(array("\r\n", "\r", "\n"), ' ', $_POST[$post_key])).'\';'."\n";
			$this->total_expression++;
		}

Mientras que si la comparamos con versiones anteriores:

	if (array_key_exists($post_key, $_POST) && !empty($_POST[$post_key]) && !in_array($pattern, $array_check_duplicate))
	{
		$array_check_duplicate[] = $pattern;
		$str_write .= '$_MODULE['.$pattern.'] = \''.pSQL(str_replace(array("\r\n", "\r", "\n"), ' ', $_POST[$post_key])).'\';'."\n";
		$this->total_expression++;
	}

La clave está en la condición marcada !empty($_POST[$post_key])

 

Añadiendo esta condición se arregla. 

Edited by chainsdev (see edit history)
Link to comment
Share on other sites

  • 1 month later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...