chainsdev Posted February 24, 2015 Share Posted February 24, 2015 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. 1 Link to comment Share on other sites More sharing options...
chainsdev Posted February 25, 2015 Author Share Posted February 25, 2015 (edited) 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 February 25, 2015 by chainsdev (see edit history) Link to comment Share on other sites More sharing options...
carlosys Posted February 28, 2015 Share Posted February 28, 2015 Muchas gracias!!! Me pasaba lo mismo y ya estaba volviendome loco. Lo dicho. GRACIAS!!! 1 Link to comment Share on other sites More sharing options...
elperi17 Posted April 17, 2015 Share Posted April 17, 2015 Vaya telita con las actualizaciones, verdad? Muchas gracias. 1 Link to comment Share on other sites More sharing options...
Recommended Posts