¿Existe algún método para saber qué archivos CSV de traducción se utilizan en el archivo de plantilla phtml actual?
fuente
¿Existe algún método para saber qué archivos CSV de traducción se utilizan en el archivo de plantilla phtml actual?
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
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.
module_name
se ha establecido (por ejemplo, a través del diseño XML), esto tiene prioridad.getModuleName()
método, se utiliza el alcance devuelto por este método.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
.
Si este archivo contiene la cadena a traducir, lo encontró, excepto si tiene un translate.csv
tema en su tema, que anula la traducción para este alcance exacto (como:) "Module_Name::Foo","Foo"
.
Si no está en ambos, busque la traducción sin el prefijo de alcance del módulo en translate.csv
(si existe).
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
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.
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:
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;
-iname
parafind
y-i
paragrep
. Estos reducen el esfuerzo que necesita para cazar. La--color
opción no se refleja aquí, pero la salida será mucho más legible en comparación con lo que ves aquí.fuente
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:
Si desea ver qué nombre de módulo usa su plantilla, puede llamar a una función:
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
fuente