Jump to content

(Solucionado) Relación Id_mensaje con texto a traducir


rogrod

Recommended Posts

Hola,

Alguien sabe cómo y donde guarda prestashop la relación del texto a traducir con el texto traducido que debe mostrarse?
Me explico:
En los fuentes, se visualiza el mensaje con la siguiente instrucción:
{l s='Choose a delivery address:'}
Ok.. Y además en el es.php aparece el texto que corresponde a ese mensaje:
...
$_LANG['order-address_d0748d2df4aed77bd7591b3ac6c52c83'] = 'Elija una direccion de envío:';
...

La pregunta es: ¿Dónde y/o cómo relaciona Prestashop el texto: 'Choose a delivery address' con el id: 'order-address_d0748d2df4aed77bd7591b3ac6c52c83' ??

Saludos.

Link to comment
Share on other sites

Hola,

Alguien sabe cómo y donde guarda prestashop la relación del texto a traducir con el texto traducido que debe mostrarse?
Me explico:
En los fuentes, se visualiza el mensaje con la siguiente instrucción:
{l s='Choose a delivery address:'}
Ok.. Y además en el es.php aparece el texto que corresponde a ese mensaje:
...
$_LANG['order-address_d0748d2df4aed77bd7591b3ac6c52c83'] = 'Elija una direccion de envío:';
...

La pregunta es: ¿Dónde y/o cómo relaciona Prestashop el texto: 'Choose a delivery address' con el id: 'order-address_d0748d2df4aed77bd7591b3ac6c52c83' ??

Saludos.


Depende de lo que busques. hay muchas tablas que terminan en LANG, esas son las traducciones. En los modulos, las traducciones se guardan en el fichero PHP correspondiente.
Link to comment
Share on other sites

  • 2 weeks later...

Hola shacker,

Un saludo y gracias por contestar antes de nada.

Tengo un access con las tablas de prestashop vinculadas y las tablas lang más o menos sé como funcionan.

La pregunta más que nada es sobre las traducciones en los códigos fuente de los módulos.
Por ejemplo, en el módulo 'Blockadvertising', tenemos:

El fichero 'es.php', donde figura una relación de códigos y traducciones al español. El contenido es:
<?php
global $_MODULE;
$_MODULE = array();
$_MODULE['<{blockadvertising}prestashop>blockadvertising_fd4c71c948857cce596a69fbaea7426b'] = 'Bloque de publicidad';
$_MODULE['<{blockadvertising}prestashop>blockadvertising_2c6706322b2b9f670251533d907d2bbc'] = 'Añadir un bloque para mostrar la publicidad';
$_MODULE['<{blockadvertising}prestashop>blockadvertising_2ce5fc289845ce826261032b9c6749ea'] = 'Publicidad';

por otra parte, entre otros está:

El fichero 'blockadvertising.php', donde figura la línea:
$this->description = $this->l('Adds a block to display an advertising');

Ahora.. ¿es la función 'l' la que, en función del texto en inglés, sabe que el código que debe buscar en el fichero 'es.php' es: 'blockadvertising_2c6706322b2b9f670251533d907d2bbc'?? ¿Y si es así, dónde está esa función? ¿Y tiene alguna tabla interna con la relación código-texto a mostrar? ¿Se van incorporando nuevas relaciones al instalar un nuevo módulo?

Perdona si pregunto algo muy obvio, pero es que no consigo ver la relación.. :o

Gracias de nuevo.

Link to comment
Share on other sites

Hola rogrod, interesante tema el que consultas, te explico basicamente la relación según he podido comprobar:
En principio la relación no la encontraras en la BD ya que los ficheros de traducciones según el idioma especificado se cargar mediante array ( al cargar la página de prestashop el usuario tendrá disponibles en memoria todas las traducciónes del idioma predefinido ) con lo cual la traducción es casi instantánea. Se podría hacer con la BD pero cuando se conectaran mas de xxx usuarios la BD se volveria totalmente inestable por la multitud de consultas al solicitar las traducciones. esta es la parte teorica ahora vamos a ver como está compuesto el array..

$_MODULE[’<{blockadvertising}prestashop>blockadvertising_fd4c71c948857cce596a69fbaea7426b’] = ‘Bloque de publicidad’; 


$_MODULE[’<{blockadvertising}prestashop>blockadvertising_[es el md5 de Bloque de publicidad]’] = ‘Bloque de publicidad’; 



Al agregar traducciones o modificar, el fichero AdminTranslations.php crea o modifica la linea array para esa traducción añadiendole a mi entender una especie de token de seguridad que seria el resultado de convertir el texto traducido en md5, con la idea de que al cargar el fichero el hash desencripta el md5 y lo compara con el resultado confirmando así el token. y aceptando las traducciones. A mi entender funciona así.. si alguien puede ampliar la información mejor ya que he tenido que hacer varias pruebas para realizar este planteamiento. Un saludo TECNILOCO.

Link to comment
Share on other sites

Hola Tecniloco y muchas gracias!!

Tienes razón, lo que hace prestashop es calcular el hash md5 del texto a traducir y luego buscarlo en los ficheros de traducciones..

En el ejemplo de antes,
El hash md5 de "Adds a block to display an advertising" es "2c6706322b2b9f670251533d907d2bbc", y ese código figura en el 'es.php' del módulo con la traducción "Añadir un bloque para mostrar la publicidad", así que está clara la relación.

gracias de nuevo!!

Link to comment
Share on other sites

  • 1 year later...
  • 9 months later...

Buah! Cuanto aprendo en este foro mirad para los que les interese

http://www.cuwhois.c...lar+MD5#resulta

y ahi haceis la conversion a md5. yeah!

Por favor, tengo ese mismo problema y no se como hacer para que por ejemplo el bloque blockmyaccount me aparecezca en español. este bloque viene con la traduccion al español (es.php) pero no lo traduce. ¿podrias ayudarme teniendo en cuenta que mis conocimientos son algo basicos)

Gracias

Link to comment
Share on other sites

fijate si en la carpeta de tu theme/modules/blockmyaccountexiste, quizas tengas el bloque personalizado

Los bloques que tengo instalados son los que vienen por defecto en la instalacion del Prestashop 1.4.5 y los que venian con la nueva plantilla (prestashop_template_15). He dado todos los permisos que me marcaban a la hora de hacer la instalacion tanto para el paquete de instalacion como para el nuevo Theme pero no me deja utilizar el bloque de traduccion desde administracion. Cuando voy por ejemplo a Herramientas/Traducciones/modificar traducciones/traduccion de modulos/español/My Account block on footer pongo la nueva traduccion le doy a actualizar y me sale el siguiente error 501 (Not Implemented The page you are looking for cannot be displayed because a header value in the request does not match certain configuration settings on the Web server. Web Server at venta-on-line.net)

He probado a poner todos los permisos de carpetas y ficheros de ese bloque en 777 pero sigo teniendo el mismo error.

Gracias por tu pronta respuesta, espero que me puedas ayudar

Link to comment
Share on other sites

Los bloques que tengo instalados son los que vienen por defecto en la instalacion del Prestashop 1.4.5 y los que venian con la nueva plantilla (prestashop_template_15). He dado todos los permisos que me marcaban a la hora de hacer la instalacion tanto para el paquete de instalacion como para el nuevo Theme pero no me deja utilizar el bloque de traduccion desde administracion. Cuando voy por ejemplo a Herramientas/Traducciones/modificar traducciones/traduccion de modulos/español/My Account block on footer pongo la nueva traduccion le doy a actualizar y me sale el siguiente error 501 (Not Implemented The page you are looking for cannot be displayed because a header value in the request does not match certain configuration settings on the Web server. Web Server at venta-on-line.net)

He probado a poner todos los permisos de carpetas y ficheros de ese bloque en 777 pero sigo teniendo el mismo error.

Gracias por tu pronta respuesta, espero que me puedas ayudar

Puedes ver la configuracion del servidor en : http://venta-on-line.net/info.php

 

gracias

Link to comment
Share on other sites

  • 4 weeks later...

Por esa regla entonces si miro

translations/en/fields.php

....

$_FIELDS['ProductDownload_d2fe70bac86b6021a1d92dad2ce912b5'] = 'deposit date';

.....

 

y translations/es/fields.php

....

$_FIELDS['ProductDownload_d2fe70bac86b6021a1d92dad2ce912b5'] = 'fecha_depósito';

....

 

 

Viendo el MD5 de 'deposit date' no coincide con ninguno. Hay algo que se me escapa y no sé el qué.

Además buscando por la cadena 32adb534727cee4636faaf9c5200594e no encuentra nada en ninguno de los dos ficheros.

 

md5("deposit date") = "32adb534727cee4636faaf9c5200594e"

 

Alguien sabe porqué?

Gracias.

Link to comment
Share on other sites

  • 11 months later...

petete2008 el texto que se codifica para sacar el codigo es el que hay en la etiqueta {l s='TEXTOCLAVE'} no el que se da despues como valor para enseñar en pantalla. mira a ver si puede fallarte por eso.

 

La pregunta que tengo yo, es como hacer para añadir texto nuevo tengo que hacer el md5 de cada clave que quiera añadir o hay alguna forma mas rápida.

 

muchas gracias.

Link to comment
Share on other sites

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