Frage

Ich möchte die Geschlechtsoptionen für einen Kunden übersetzen.Zuerst dachte ich, ich könnte dafür einfach eine Übersetzungsdatei verwenden, aber ich habe mir die Vorlage angesehen app/design/frontend/base/default/template/customer/widget/gender.phtml Ich sehe, dass die Optionsbezeichnung nicht an die Übersetzungsfunktion übergeben wird.

Was ist der beste Prozess, um diese Werte für verschiedene Geschäfte zu aktualisieren?

War es hilfreich?

Lösung

Der gender Attribut ist ein Dropdown-Attribut wie jedes andere.Seine Beschriftungen werden in der Tabelle gespeichert eav_attribute_option_value.
Da es jedoch keine (standardmäßige) Möglichkeit gibt, die Kundenattribute vom Backend aus zu verwalten, sehe ich hier zwei Optionen.

Option 1. Schnell und dreckig:
Ändern Sie die Optionen in der Vorlage.
Kopieren app/design/frontend/base/default/template/customer/widget/gender.phtml zu Ihrem Thema hinzufügen und anschließend hinzufügen

 <?php $options = Mage::getResourceSingleton('customer/customer')->getAttribute('gender')->getSource()->getAllOptions();?>

Das:

<?php foreach ($options as $key => $option) : ?>
    <?php $options[$key]['label'] = $this->__($option['label']);?>
<?php endforeach;?>

Dann können Sie die Werte wie jede andere Zeichenfolge übersetzen.

Option 2 - Lang, aber sauber.
In die Tabelle einfügen eav_attribute_option_value die Werte für Ihre zweite (und dritte usw.) Geschäftsansicht.

Ich sagte, dass dies die „saubere“ Version ist.
Theoretisch ist es sauber, aber die Lösung, die ich habe, ist nicht so sauber.

Identifizieren Sie die Attribut-ID:

SELECT * FROM eav_attribute where attribute_code = 'gender';

Nehmen wir an, es sind 1000.
Identifizieren Sie dann die Optionen für das Attribut

select * from eav_attribute_option where attribute_id = 1000;

Nehmen wir an, Sie erhalten 100 und 101.
Dann schauen Sie in der eav_attribute_option_value um zu sehen, welches welches ist.

select * from eav_attribute_option_value where option_id in (100, 101);

Jetzt werden Sie sehen, welches das ist Male Option und welche ist die Female Möglichkeit.

Sagen wir 100 => Male, 101=>Female.
Geben Sie nun Ihre Werte für den zweiten Store Store ein.

Insert into `eav_attribute_option_value` set option_id = 100, store_id = 1, value = 'Translation for Male here'; 
Insert into `eav_attribute_option_value` set option_id = 101, store_id = 1, value = 'Translation for Female here';

Tut mir leid, aber ich habe keine Upgrade-Skriptversion dafür.

Ich würde mich für Quick and Dirty entscheiden.Weniger Kopfschmerzen.

Andere Tipps

Eine andere Lösung besteht darin, zu aktualisieren (zu überschreiben). widget/gender.phtml um die Übersetzung zu ermöglichen.

aus :

<?php foreach ($options as $option):?>
        <option value="<?php echo $option['value'] ?>"<?php if ($option['value'] == $value) echo ' selected="selected"' ?>><?php echo $option['label'] ?></option>
<?php endforeach;?>

Zu :

<?php foreach ($options as $option):?>
        <option value="<?php echo $option['value'] ?>"<?php if ($option['value'] == $value) echo ' selected="selected"' ?>><?php echo $this->__($option['label']) ?></option>
<?php endforeach;?>

Und schließlich fügen Sie Ihren Übersetzungstext hinzu Mage_Customer.csv, so was :

"Male","Your translate for Male"
"Female","Your translate for Female"

Vergessen Sie nicht, den Cache zu leeren system > cache management


BEARBEITEN 07. Sept.2015

Ich habe um eine Pull-Anfrage auf Magento2 gebeten, siehe: https://github.com/magento/magento2/pull/1801

Working Update-Skript ... müssen Sie nur die generationspflichtige Variable von $labels anpassen, um Ihren Shop-IDs abzugleichen ... generasacodicetagpre.

leicht Weg

Finden Sie die Attribute heraus

SELECT * von EAV_ATTRIBUTE_OPTION_VALUE, wo Option_ID in (Option "Option_ID aus EAV_ATTRIBUTE_OPTION auswählen, wo Attribut_ID= (attribut_id aus EAV_Attribute auswählen, wo Attribut_code=" Geschlecht ")

Jetzt machen Sie einfach unser Update

: d

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top