Atualização do cliente de gênero traduções
-
12-12-2019 - |
Pergunta
Eu gostaria de traduzir o gênero opções para um cliente.No começo eu pensei que eu poderia simplesmente usar um arquivo de tradução para esta, mas olhando para o modelo app/design/frontend/base/default/template/customer/widget/gender.phtml
Eu vejo que a opção rótulo não é passado para a função converter.
Qual é o melhor processo para a atualização desses valores para diferentes lojas?
Solução
O gender
atributo é uma lista suspensa atributo como qualquer outro.Seus rótulos são armazenados na tabela eav_attribute_option_value
.
Mas como não há nenhum (fora da caixa) de forma a gerenciar a partir do back-end do cliente atributos vejo 2 opções aqui.
Opção 1. Rápida e suja:
Alterar as opções de modelo.
Cópia app/design/frontend/base/default/template/customer/widget/gender.phtml
para o seu tema e adicionar depois de
<?php $options = Mage::getResourceSingleton('customer/customer')->getAttribute('gender')->getSource()->getAllOptions();?>
este:
<?php foreach ($options as $key => $option) : ?>
<?php $options[$key]['label'] = $this->__($option['label']);?>
<?php endforeach;?>
Em seguida, você pode traduziu a valores como qualquer outra cadeia de caracteres.
Opção 2 - Longo, mas limpo.
Inserir na tabela eav_attribute_option_value
os valores para o seu segundo (e terceiro e assim por diante..) vista de arquivo.
Eu disse que esta é a "limpeza" da versão.
A teoria é limpo, mas a solução que eu tenho é que não limpa.
Identificar o atributo id:
SELECT * FROM eav_attribute where attribute_code = 'gender';
Vamos dizer que é 1000.
em seguida, identificar as opções para o atributo
select * from eav_attribute_option where attribute_id = 1000;
Vamos dizer que você começa 100 e 101.
Em seguida, examine o eav_attribute_option_value
para ver qual é qual.
select * from eav_attribute_option_value where option_id in (100, 101);
agora você vai ver que é o Male
opção e que é o Female
opção.
Vamos dizer que 100 => Male
, 101=>Female
.
Agora, insira os valores para a segunda loja da loja.
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';
Desculpe, mas eu não tenho um script de atualização de versão para esta.
Gostaria de ir com a rápida e suja.Menos dores de cabeça.
Outras dicas
Outra solução, é a atualização (substituir) widget/gender.phtml
para permitir a tradução.
a partir de :
<?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;?>
para :
<?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;?>
E, finalmente, adicionar a sua traduzir texto Mage_Customer.csv
, como este :
"Male","Your translate for Male"
"Female","Your translate for Female"
Não se esqueça de limpar o cache system > cache management
EDIÇÃO de 07 de setembro.2015
Eu perguntei para um pull request no Magento2, consulte: https://github.com/magento/magento2/pull/1801
Trabalho script de atualização ...só precisa ajustar $labels
variável para corresponder ao seu armazenar IDs ...
<?php
require_once('./app/Mage.php');
Mage::app();
$labels = array(
'Male' => array( # default value
1 => 'Male-DE', # key is storeId
2 => 'Male-FR'
),
'Female' => array(
1 => 'Female-DE',
2 => 'Female-FR'
)
);
$attributeCode = 'gender';
$attribute = Mage::getModel('customer/customer')->getResource()
->getAttribute($attributeCode);
$values = array();
if ($attribute->usesSource()) {
foreach ($labels as $label => $translations) {
if ($optionId = $attribute->getSource()->getOptionId($label)) {
$values[$optionId] = array(0 => $label) + $translations;
}
}
}
$data = array();
$data['option']['value'] = $values;
$attribute->addData($data);
try {
$attribute->save();
} catch (Mage_Core_Exception $e) {
echo $e->getMessage();
}
Facilmente maneira
Descubra os atributos
select * from eav_attribute_option_value onde option_id in (select option_id de eav_attribute_option onde attribute_id = (SELECT attribute_id DE eav_attribute onde attribute_code = "sexo"))
Agora é só fazer a nossa atualização
:D