Cómo saber qué archivo (s) de traducción csv se utilizan en el archivo phtml actual

Respuestas:

3

Supongo que te refieres a las traducciones por $this->__('...')donde no se usa ningún ayudante explícito. Entonces depende del alcance del módulo del bloque

Esto depende de múltiples factores:

  1. La clase de bloque que se usa para representar la plantilla. Debería poder determinarlo a partir de los archivos XML de diseño, pero algunos bloques se crean mediante programación, en este caso tendrá que buscar en el código. Si tiene suerte, la clase de bloque se documenta en la plantilla en sí, así:

    /** @var $this Mage_Catalog_Block_Product_List */

    o así:

    /** @see Mage_Catalog_Block_Product_List */

    El alcance es el módulo al que pertenece esta clase (like Mage_Catalog). Pero ten cuidado con las reescrituras de clase. Si la clase de bloque ha sido reescrita por una extensión, el alcance cambia a esta extensión.

  2. Si la propiedad module_namese ha establecido (por ejemplo, a través del diseño XML), esto tiene prioridad.
  3. Finalmente, si el bloque anula el getModuleName()método, se utiliza el alcance devuelto por este método.

¿Ya llegamos?

Ahora que conoce el alcance, puede buscar el archivo CSV correspondiente, que es el que se define en este módulo config.xml. También podría ser más de uno, pero la convención generalmente seguida es tener un archivo por módulo en el formulario Module_Name.csv.

  1. Si este archivo contiene la cadena a traducir, lo encontró, excepto si tiene un translate.csvtema en su tema, que anula la traducción para este alcance exacto (como:) "Module_Name::Foo","Foo".

  2. Si no está en ambos, busque la traducción sin el prefijo de alcance del módulo en translate.csv(si existe).

  3. Si no está allí, busque en todos los demás archivos CSV del módulo. El del módulo que se carga primero, gana (es decir, los módulos principales primero, luego alfabéticamente, respetando las dependencias). Tenga en cuenta que este respaldo solo se usa cuando no está en modo desarrollador.


Si quiere estar seguro, de qué archivos proviene una traducción específica de la página, puedo recomendarle la extensión gratuita TranslationHints ( DESCARGO DE RESPONSABILIDAD: lo escribí)

Consíguelo aquí: https://github.com/schmengler/TranslationHints

Captura de pantalla: Sugerencias de traducción

Fabian Schmengler
fuente
2

A menos que esté realizando pruebas unitarias, generalmente no le importa qué traducción csv se está utilizando porque todas se fusionan antes de que Magento comience la traducción de cualquier cosa.

Sin embargo, si aún desea resolverlo, primero use los archivos xml de diseño para averiguar qué clase de bloque se está utilizando. Si encuentra la clase de bloque, utilizará el config.xml de ese módulo. Si no se especifica ninguna clase de bloque en los diseños, es posible que deba buscar en las clases y controladores de bloque principal.

Lo principal que debe saber es que las plantillas usan la función de traducción __ de su clase de bloque asociada, y la clase de bloque usa la función __ de su clase Data.php helper class.

Jay El-Kaake
fuente
1
"Por lo general, no te importa qué traducción csv se está utilizando porque todas se fusionan antes de que Magento comience la traducción de cualquier cosa". - A menos que se realicen pruebas unitarias para un paquete de traducción existente. Mis módulos generalmente fallan si faltan inglés, español o francés antes de convertirlo en el equipo de control de calidad.
Luke A. Leber
1

Parece que quiere mantenerse organizado cuando agrega sus traducciones. Con tantos archivos CSV para traducir, ¿por qué elegir un archivo aleatorio, por qué no agregarlo al archivo CSV correcto?

Aquí hay un ejemplo en el que estaba trabajando: suponga que está editando la página de la cuenta del cliente y ha cambiado la libreta de direcciones a Mis direcciones . Ahora no hay traducción al francés para Mis direcciones .

La forma de encontrar el archivo CSV correcto es buscar una traducción existente en la misma parte del sitio. El artículo Mis pedidos / Mes Commandes está en la misma parte del sitio, por lo que puedo realizar una búsqueda:

$ cd magento/app/
$ find . -iname '*.csv' | xargs grep -in --color 'Mes Commandes'
./locale/fr_FR/Mage_Sales.csv:73:"Back to My Orders","Retour à mes commandes"
./locale/fr_FR/Mage_Sales.csv:308:"My Orders","Mes commandes"
./locale/fr_FR/Mage_Sales.csv:309:"My Orders - Details","Mes commandes - Détails"
./locale/fr_FR/Mage_Oscommerce.csv:7:"Back to My Orders","Retour à mes commande "
./locale/fr_FR/Mage_Oscommerce.csv:51:"My Previous Orders","Mes commandes précédentes"
./locale/fr_FR/Mage_Customer.csv:215:"My Orders","Mes commandes"

Entonces, mirando esto con un poco de adivinanzas, el mejor archivo para modificar es locale / fr_FR / Mage_Sales.csv. Después de hacer cambios, ¡no olvide actualizar Traducciones en Sistema> Administración de caché !

Aparte: tenga en cuenta las opciones que no distinguen entre mayúsculas y minúsculas; -inamepara findy -ipara grep. Estos reducen el esfuerzo que necesita para cazar. La --coloropción no se refleja aquí, pero la salida será mucho más legible en comparación con lo que ves aquí.

Antonio
fuente
0

El método de traducción __ () utilizado en las plantillas está en el archivo /app/code/core/Mage/Core/Block/Abstract.php y toma el nombre del módulo para encontrar la traducción correcta. Construye una matriz en el siguiente formato para ser utilizada para la traducción:

array(1) {
    [0]=> object(Mage_Core_Model_Translate_Expr)#161 (2) {
        ["_text":protected]=> string(18) "Orders and Returns"
        ["_module":protected]=> string(10) "Mage_Sales"
    }
}

Si desea ver qué nombre de módulo usa su plantilla, puede llamar a una función:

 $this->getModuleName();

Entonces debería haber un archivo de traducción que coincida con esta cadena. Por ejemplo, para mí en la página de vista de categoría, esta función devolverá * Mage_Catalog * y luego de esto puedo encontrar el archivo de traducción Mage_Catalog.csv

David modales
fuente
¿Qué línea en este gran archivo Abstract.php?
Vicky Dev