Magento Optionstitel übersetzen (Workaround)

Wenn man einen mehrsprachigen Magento-Shop umsetzt, kommt man früher oder später in die Verlegenheit, die Titel der auswählbaren Attribute bei einem Artikel übersetzen zu müssen. Leider gibt es an der Stelle einen Bug bzw. eine fehlende Funktion, so daß die Bezeichnungen nur in einer Sprache angegeben werden können. Abhilfe schafft ein kleiner Kniff an der richtigen Stelle.

Öffnen Sie die passende Datei für die Optionsauswahl in Ihrem Lieblingseditor. Die Datei findet sich hier:

app/design/frontend/default/default/template/catalog/product/view/type/options/configurable.phtml

Am Anfang der Datei findet sich eine foreach Schleife, die alle zugehörigen Attribute auflistet und mit einem passenden Label nebst Auswahlbox versieht. Uns geht es hierbei um das Label des Attributs, also diese Zeile:

<dt><label><?php echo $_attribute->getLabel() ?><span class="required"> *</span></label></dt>  

Um dieses Label zu übersetzen, umgeben wir es einfach mit der von Magento global bereitgestellten Funktion für Übersetzungen ($this->__(‚foobar‘)), und nach einem Neuladen haben Sie die Möglichkeit diesen String z.B. per Inline-Translation zu bearbeiten, passend für jeden StoreView. Die angepasste Zeile sieht so aus:

<dt><label><?= $this->__($_attribute->getLabel()) ?><span class="required"> *</span></label></dt>  

Das war’s schon. Weiterhin viel Spaß mit Magento und seinen Stärken und Schwächen 😉

Getagged mit: , , , ,
7 Kommentare zu “Magento Optionstitel übersetzen (Workaround)
  1. Rico Neitzel sagt:

    Meinst du hier, dass quasi passend zum im Backend gewählten Locale auch das Attribut dann on the fly übersetzt wird?

    Das macht doch nur dann sinn, wenn im Backend zwei User arbeiten, die beide unterschiedliche Sprachen sprechen, oder?

    LG rico

  2. IT sagt:

    Hi Rico,

    nein ich meine im Frontend die Label für die auswählbaren Attribute bei einem konfigurierbaren Produkt. Da kann man aktuell im Backend nur einen Titel eingeben, aber eben nicht sprachenspezifisch.

    Mit diesem Workaround wird das Label im Frontend passend zur Sprache des StoreViews angezeigt. Natürlich nur, wenn man eine Übersetzung z.B. per Inline-Translation hinterlegt hat.

  3. IT sagt:

    PS: Ich glaube man kann die Übersetzung doch im Backend bearbeiten, indem man den entsprechenden StoreView auswählt beim Bearbeiten des Produkts, und dort dann bei „Verknüpfte Produkte“ die passenden Übersetzungen einträgt. Auf jeden Fall nicht sehr intuitiv, und ziemlich zeitaufwendig. Die obige Lösung geht zumindest sehr viel schneller 🙂

  4. Jan sagt:

    Hallo

    Ich habe die Lösung ausprobiert nur leider speichert er die übersetzung , die ich im frontend eingegeben habe nicht ab. Nach drücken auf den Submit button schliesst er den ubersetzungslayer aber nach dem refresh ist alles wie vorher

  5. Dima sagt:

    Bei den Attribute Namen (Attribut label) ist die gleiche Gschichte. Wie schaut`s da aus? Diese werden auch nicht übersetzt.

  6. Dima sagt:

    Bei den Attribute Namen (Attribut label) ist die gleiche Gschichte. Wie schaut`s da aus? Diese werden auch nicht übersetzt.

  7. Nico sagt:

    Ich würde es so machen: <?php echo $this->__($_attribute->getProductAttribute()->getStoreLabel() ) ?>

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.