La traducción con un archivo de traducción personalizado falla para ciertas palabras en Magento

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?

preguntado el 22 de mayo de 12 a las 15:05

¿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. -

Sí, 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 con City1 la traducción funciona. -

2 Respuestas

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

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 or haz tu propia pregunta.