Thomas Maier | Magento & WordPress Develover post@webzunft.de | +49 162 9313 708

Antworten auf die Fragen – nicht nur meiner Kunden 

RSS
Home Magento Magento für Entwickler JavaScript in Magento-Templates übersetzen

JavaScript in Magento-Templates übersetzen

Ich versuche soweit es geht keine im Frontend zu lesenden Texte in JavaScript-Dateien zu verwenden, weil es nicht ganz der Trennung von Logik und Inhalt entspricht. Außerdem bedeutet das in Magento eine weitere Logik zu pflegen, nämlich das Übersetzungs-Objekt. Da kann es ohne Dokumentation schnell passieren, dass man einen von einem früheren Entwickler eingefügten Text ewig sucht. Nichtsdestotrotz lässt es sich manchmal nicht vermeiden, und damit ich nicht ständig vergesse wie das geht, habe ich hier niedergeschrieben, wie die Übersetzung von Texten in JavaScript-Dateien von Magento funktioniert.

Übersetzung laden

Es beginnt in der Template-Datei mit einer Mischung aus Javascript und PHP. In diesem Fall geht es um einen weiterlesen-Link der die ausgeblendete Beschreibung einblendet. Der Code befindet sich in meinem Fall am Ende der Template-Datei list.phtml. Dem in Magento schon vorhandenen Translator-Objekt wird „einfach“ ein weiterer Wert hinzugegeben. Der erste Teil ist dabei der String, der auch in der JavaScript-Datei mit der Logik auftaucht. Der zweite Teil ist die sicher bekannte Logik, die in den Templates für Übersetzungen sorgt und deren Übersetzungen in der translate.csv eingetragen werden können.

<script>
    Translator.add('[read more]','<?php echo $this->__('[read more]')?>');
</script>

Übersetzung anlegen

In der translate.csv meines Themes steht dann z.B. diese Zeile.

"[read more]","[Mehr zeigen]"

Übersetzen in JavaScript

In der JavaScript-Datei, in meinem Fall die custom.js, wird dann die translate()-Methode des Translator-Objektes mit dem String aufgerufen, den wir oben geladen haben.

$(this).text( Translator.translate('[read more]'));

$(this) ist dabei einfach ein Absatz, dessen Textinhalt ich hiermit setze.

Reihenfolge beachten

Bei diesem Code ist unbedingt die Reihenfolge der Aufrufe im Quellcode zu beachten.

  1. die Datei js/mage/translate.js muss geladen sein (meist Standard im Header), bevor das Translator-Objekt genutzt werden kann.
  2. der Text sollte geladen werden, bevor die JavaScript-Datei mit dem String geladen wird (hier kann ich mich aber auch irren, wenn ein Aufruf wie $jQ(document).ready() genutzt wird.

Der Translator funktioniert nach meinen Tests übrigens sowohl im Prototype Framework als auch mit jQuery.

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.