Aktualisieren Sie die Geschlechtsübersetzungen Ihrer Kunden
-
12-12-2019 - |
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?
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