In einer Erweiterung, an der ich arbeite, habe ich ein Layout-XML über die config.xml des Moduls hinzugefügt. Dieses Layout hat einige Änderungen am Frontend. Einige dieser Blöcke gehören jedoch zu Magento-Kernmodulen. Die Vorlagen werden alle wie erwartet korrekt angezeigt.
Die Vorlagen, die ich mit dem Modul selbst gepackt habe, verwenden die Übersetzungsdateien meines eigenen Moduls. Die mit dem Magento-Kern gelieferten Vorlagen werden nicht übersetzt angezeigt. Wenn ich eine Übersetzungsdatei für das jeweilige Kernmodul hinzufüge, wird diese Übersetzungsdatei verwendet und die Vorlage wird übersetzt angezeigt.
Kann Magento die Übersetzungsdatei meines Moduls verwenden, wenn keine Übersetzungsdateien für das Magento-Kernmodul gefunden werden? Kann ich hier noch etwas tun?
quelle
$this->__()
oder verwendet wirdMage::helper('...')->__()
. Im ersten Fall können Sie block zwingen, Ihren Übersetzungshelfer zu verwenden. Aber ich glaube im Allgemeinen ist die einzige Option ein Daten-Upgrade für diecore_translate
Tabelle. Hier werden Internationalisierungsfragen ausführlich beschrieben: blog.belvg.com/… .Antworten:
Ganz gleich, wie Sie vorgehen, für Ihr Problem ist eine "kreative" Lösung erforderlich, die einen Hinweis für Entwickler verdient, damit nachfolgende Entwickler / Betreuer sie verwenden können. Zunächst einiger Hintergrund mit einer Note, gefolgt von einer einfachen und ich denke , vernünftige Lösung am Ende
<--
tl; dr .Wie Zyava betonte , unterliegt die Übersetzung dem Modul, das die Übersetzung vornimmt . Vorlagen werden in Blockinstanzen gerendert, und Blockinstanzen verfügen über eine
module_name
Eigenschaft, die beim Aufrufen der Übersetzung verwendet wird. refMage_Core_Block_Abstract::__()
:Die
module_name
Eigenschaft wird (normalerweise) nach Bedarf abgeleitet und basiert auf dem Klassennamen (Ref.::getModuleName()
):Wenn also die
module_name
Eigenschaft bereits festgelegt ist , gilt diese Modulübersetzung. Für vorhandene Blöcke aus dem Core-Layout kann diese Eigenschaft über Layout-XML festgelegt werden. beispielsweise:Voilà! Ihr Modul CSV besitzt die Übersetzung für diese Instanz. Dies könnte ein Ansatz sein. Natürlich bleibt die Situation, dass die Übersetzung anderer Module über einen modulspezifischen Helfer in Blockinstanzen (natürlich auch in Vorlagendateien) angewendet wird, unverändert, und dies gilt immer für Layout-XML-Übersetzungen. Außerdem wird durch diesen Ansatz das Verhalten "
module_name
Modulausgabe deaktivieren" , bei dem der Parameter verwendet wird, unterbrochen.Lösung
Wie sich herausstellt, können für ein Modul mehrere Übersetzungsdateien angegeben werden. Es wird nicht im Kern ausgeführt (jedes Modul deklariert nur eine CSV- Datei), aber die Funktionalität ist in Folgendem enthalten
Mage_Core_Model_Translate
:und
Da der Inhalt der Dateien zusammengeführt wird (von mir getestet), können nur die Zeichenfolgen angegeben werden, die Sie in Ihren benutzerdefinierten CSVs überschreiben möchten. Wenn Sie beispielsweise die Zeichenfolge " Zusätzliche Informationen" auf der Produktseite (vom
Mage_Catalog
Modul übersetzt) übersetzen möchten, funktioniert Folgendes:app / locale / Custom.csv :
In Ihrem Modul Config - das sollte
<depends />
aufMage_Catalog
seinen Inhalt , um sicherzustellen , fusionieren nach - folgenden wird die verursachen Custom.csv Übersetzungspaare fusionieren oben auf das Original:Das Schöne an diesem Ansatz ist, dass Sie Ihre übergeordneten Kernübersetzungen in einer Datei zusammenfassen können.
quelle