Las últimas versiones de Prestashop incluyen un error de código que puede hacernos desesperar. Es posible que después de habernos pasado horas traduciendo textos dentro del administrador de traducciones estos desaparezcan y los módulos en la administración no solo salgan sin traducir, sino sin texto.
Para solucionar este fallo debemos modificar 2 archivos de nuestro prestashop:
– classes/Translate.php. Dependiendo de tu versión de prestashop tendrás que cambiar el código siguiente(lineas 170-180 apróximamente):
Prestashop versión 1.6.0.11
if (isset($_MODULES[$current_key])) $ret = stripslashes($_MODULES[$current_key]); elseif (isset($_MODULES[$default_key])) $ret = stripslashes($_MODULES[$default_key]);
Por:
if (isset($current_key) && !empty($_MODULES[$current_key])) $ret = stripslashes($_MODULES[$current_key]); elseif (isset($default_key) && !empty($_MODULES[$default_key])) $ret = stripslashes($_MODULES[$default_key]); elseif (!empty($_MODULES[$current_key])) $ret = stripslashes($_MODULES[$current_key]); elseif (!empty($_MODULES[$default_key])) $ret = stripslashes($_MODULES[$default_key]);
Prestashop 1.6.0.12
if (isset($current_key_file) && isset($_MODULES[$current_key_file]))
Por:
if (isset($current_key_file) && !empty($_MODULES[$current_key_file]))
elseif (isset($default_key_file) && isset($_MODULES[$default_key_file]))
Por:
elseif (isset($default_key_file) && !empty($_MODULES[$default_key_file]))
elseif (isset($_MODULES[$current_key]))
Por:
elseif (!empty($_MODULES[$current_key]))
elseif (isset($_MODULES[$default_key]))
Por:
elseif (!empty($_MODULES[$default_key]))
– controllers/admin/AdminTranslationsController.php. En este archivo tenemos que cambiar este código(a partir de la linea 956):
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++;
Por este:
if (array_key_exists($post_key, $_POST) && !in_array($pattern, $array_check_duplicate)) { if ($_POST[$post_key] == '') continue; $array_check_duplicate[] = $pattern; $str_write .= '$_MODULE['.$pattern.'] = \''.pSQL(str_replace(array("\r\n", "\r", "\n"), ' ', $_POST[$post_key])).'\';'."\n"; $this->total_expression++; Una vez hechas estas modificaciones nuestra tienda funcionará correctamente.