En una extensión en la que estoy trabajando, tengo un XML de diseño agregado a través del módulo config.xml. Este diseño tiene algunas modificaciones en la interfaz. Sin embargo, algunos de estos bloques pertenecen a los módulos principales de Magento. Todas las plantillas se muestran correctamente como se esperaba.
Las plantillas que he empaquetado con el módulo en sí están usando los archivos de traducción de mi propio módulo. Las plantillas empaquetadas con el núcleo de Magento se muestran sin traducir. Si agrego un archivo de traducción para el módulo principal respectivo, entonces ese archivo de traducción se usa y la plantilla muestra traducida.
¿Hay alguna manera de hacer que Magento use el archivo de traducción de mi módulo si no puede encontrar ningún archivo de traducción para el módulo principal de Magento? ¿Hay algo más que pueda hacer aquí?
fuente
$this->__()
oMage::helper('...')->__()
. En el primer caso, puede forzar el bloqueo para usar su ayudante de traducción. Pero creo que, en general, la única opción es la actualización de datos para lacore_translate
tabla. Aquí se describen detalladamente las preguntas de internacionalización: blog.belvg.com/… .Respuestas:
No importa cómo lo aborde, su problema requiere una solución "creativa", digna de una nota del desarrollador para que los desarrolladores / desarrolladores posteriores la usen. Primero, algunos antecedentes, seguidos de una nota, seguida de una solución fácil y creo que es razonable al final
<--
tl; dr .Como señaló Zyava , la traducción está sujeta al módulo que realiza la traducción. Las plantillas se representan en instancias de bloque, y las instancias de bloque tienen una
module_name
propiedad que se utiliza al invocar la traducción; refMage_Core_Block_Abstract::__()
:La
module_name
propiedad se deriva (normalmente) según demanda y se basa en el nombre de la clase (ref.::getModuleName()
):Entonces, si el
module_name
propiedad ya está establecida, se aplica la traducción de ese módulo. Para los bloques existentes del diseño principal, esta propiedad se puede establecer a través del diseño XML; por ejemplo:Voilà! Su módulo CSV posee la traducción para esa instancia. Esto podría ser un enfoque. Por supuesto, todavía existe la situación difícil de que la traducción de otros módulos se aplique a través del asistente específico del módulo en instancias de bloque (incluidos los archivos de plantilla, por supuesto), y siempre es cierto para las traducciones XML de diseño. Además, este enfoque interrumpirá el comportamiento de Salida de los módulos deshabilitados, que utiliza el
module_name
parámetro.Solución
Como resultado, es posible especificar múltiples archivos de traducción para un módulo. No se hace en el núcleo (cada módulo solo declara un archivo .csv ), pero la funcionalidad está ahí
Mage_Core_Model_Translate
:y
Debido a que el contenido de los archivos se fusionó (probé), es posible especificar solo aquellas cadenas que desea anular en sus CSV personalizados. Por ejemplo, si desea traducir la cadena de Información adicional en la página del producto (traducida por el
Mage_Catalog
módulo), lo siguiente funcionaría:app / locale / Custom.csv :
En su configuración del módulo - que debe
<depends />
deMage_Catalog
asegurar su contenido se fusionan después - la siguiente hará que el Custom.csv pares de traducción de fusión en la parte superior del original:Lo bueno de este enfoque es que puede recopilar sus principales traducciones principales en un solo archivo.
fuente