La traducción con un archivo de traducción personalizado falla para ciertas palabras en Magento
Frecuentes
Visto 9,776 veces
7
Estoy desarrollando un módulo personalizado para mi instalación de Magento (versión 1.6.2.0). Registré un archivo de traducción para el módulo en config.xml y comencé a agregar traducciones al alemán. El módulo agrega un nuevo comportamiento al back-end de Magento.
Mientras hacía la traducción noté un comportamiento extraño de Magento. Ciertas palabras no son traducidas por Magento aunque se proporciona una traducción en el archivo csv del módulo.
Cuando cambio la clave a un valor diferente, la traducción funciona como se esperaba, por lo que parece que Magento ve y lee el archivo cvs.
De momento noto este comportamiento para las teclas "Ciudad" y "Tienda".
Contenido del archivo csv:
"City","Stadt"
"City1","Stadt"
Uso la siguiente línea para traducir las cadenas.
Mage::helper('mymodule')->__('City') // returns "City"
Cuando cambio la clave a "City1", todo funciona como se esperaba.
Mage::helper('mymodule')->__('City1') // returns "Stadt"
Después de esto, busqué en los archivos csv de traducción al alemán (proporcionados por la comunidad alemana de Magento) una traducción para la clave "Ciudad" y encontré una en el "módulo adminhtml".
Mage::helper('adminhtml')->__('City') // returns "Stadt"
Así que esto también funciona como se esperaba.
No sé qué estoy haciendo mal. Como dije, el mismo comportamiento ocurre para la cadena "Store".
Alguna idea sobre esto?
2 Respuestas
8
Finalmente resolví el problema de traducción. El motivo fue una configuración incorrecta en config.xml. Lo descubrí al depurar el código donde Magento lee en los archivos de traducción. Cuando esto sucede, hay un parámetro llamado ámbito que se lee de uno de los elementos XML del archivo config.xml.
Este elemento normalmente debería tener el nombre del módulo, por ejemplo <MyCompany_MyModule>
. En el tutorial que seguí para configurar la traducción, este elemento XML se llamó <translations>
que estaba mal.
Supongo que esto podría haber sido correcto para una versión anterior de Magento. Lo que dificultó descubrirlo fue que los errores solo ocurren para las claves que también se definieron en los archivos de traducción de otros módulos. Las claves que solo se definieron en mi archivo de traducción funcionaron como se esperaba.
Una configuración correcta debería verse así.
<frontend>
...
<translate>
<modules>
<MyCompany_MyModule>
<files>
<default>MyCompany_MyModule.csv</default>
</files>
</MyCompany_MyModule>
</modules>
</translate>
...
</frontend>
<adminhtml>
...
<translate>
<modules>
<MyCompany_MyModule>
<files>
<default>MyCompany_MyModule.csv</default>
</files>
</MyCompany_MyModule>
</modules>
</translate>
...
</adminhtml>
Respondido el 14 de junio de 12 a las 14:06
Gracias por publicar eso: me perdí las etiquetas 'predeterminadas' que causaron un error foreach en cada página. - teodoros
¿Qué archivo principal es donde agregó la depuración? Tengo el mismo problema y los mismos ajustes de configuración, pero algunas palabras aún se toman de otro archivo de traducción. - Agosto
4
Es difícil de decir sin tener su código a mano, pero supongo que el alcance de la traducción de su módulo de alguna manera se pierde (por el motivo que sea), lo que hace que Magento retroceda.
Afaik, en Magento 1.6.2.0 los siguientes archivos de traducción Además, definir la clave City
:
/app/locale/<language>_<region>/Mage_Checkout.csv
/app/locale/<language>_<region>/Mage_Customer.csv
/app/locale/<language>_<region>/Mage_Persistent.csv
/app/locale/<language>_<region>/Mage_Sales.csv
/app/locale/<language>_<region>/Mage_Shipping.csv
/app/locale/<language>_<region>/Mage_XmlConnect.csv
Intentaría cambiar la traducción de City
en estos .csv
archivos uno por uno, para averiguar de dónde proviene realmente la traducción en cuestión.
Una vez que haya encontrado el archivo al que recurre Magento, Además, saber, qué alcance de traducción necesita anular, para forzar su traducción de City
para ser utilizado.
Por ejemplo, si encuentra cambiar la traducción en Mage_Shipping.csv
tiene efecto, entonces editas tu archivo de traducción (My_Module.csv
) contener
"Mage_Shipping::City","Stadt"
contestado el 23 de mayo de 12 a las 10:05
Cuando activo la traducción en línea, puedo ver que el alcance está configurado correctamente en mi módulo. También realicé un poco de depuración y seguí el código hasta la matriz con todas las traducciones, supongo que por el alcance del módulo, es buscar la clave "Ciudad" con el resultado de que no se encontró ninguna entrada y, por lo tanto, se usa la cadena original. . Me pregunto por qué falta la llave. Pero probaré tu sugerencia a ver qué pasa. - Flo
Seguí tus instrucciones pero solo confirmó lo que supuse. Cambié la traducción en cada archivo a un valor diferente, pero ninguno de ellos apareció en la interfaz de usuario. Entonces, esto se ajusta a mi suposición de que la palabra no está traducida en absoluto, ya que no se puede encontrar ninguna traducción. - Flo
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas magento translation or haz tu propia pregunta.
¿Tiene una sección de traducción en la configuración (config.xml) de
mymodule
? Magento generalmente recurre a otros módulos, si no puede encontrar una traducción adecuada dentro del csv configurado, por lo que ese podría ser el problema. - FlorianSí, tengo una sección de este tipo en el archivo de configuración del módulo; de lo contrario, la traducción no debería funcionar con la clave.
City1
cualquiera. Pero ese no es el caso conCity1
la traducción funciona. - Flo