Prestashop solución al error de traducción en el admin

Prestashop solución al error de traducción en el admin


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.

este error puede desesperar

 

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.

solucionar errores nos hace felices


3 COMMENTS

  1. Mario
    febrero 25, 2015 09:58 Responder

    Media mañana traduciendo y ¡sorpresa!. ¡Gracias por la solución!

  2. Diego
    marzo 18, 2015 15:04 Responder

    Tengo un problema serio con la versión 1.6.0.12, la actualicé y en el FO no carga la página principal, si voy a un link directo de producto sí lo puedo ver, pero si trato de entrar al BO me aparece la ventana de ingreso y luego de autenticar me aparece la página en blanco y solo se ve

    PrestaShop™ 1.6.0.12 – 0.317s

    Nada más… ya puse el modo debug On y sale esto cuando reviso el código fuente desde el navegador…

    <a href="http://www.prestashop.com/en/contact_us?utm_source=back-office&utm_medium=footer&utm_campaign=back-office-
    Fatal error: Call to undefined function mb_strtoupper() in /home/tomatico/public_html/cache/smarty/compile/71/93/94/7193946579aa01860cf892eea7fc366c6786d0d0.file.footer.tpl.php on line 67

    ….. qué se puede hacer en este caso???

Comenta