Tradução Inline do Magento não funciona no Chrome

O que acontece?

Ao habilitar a tradução inline do Magento, quem usa o Chrome já reparou que ainda sim você não consegue modificar o texto. Um bug que apesar de chato, pode ser corrigido.

Acontece que quando o Magento desenvolveu a ferramenta de tradução inline, eles usaram um atributo translate fora do padrão para os elementos DOM que sinalizavam textos traduzíveis.

Desde então, o Google Chrome possui um recurso onde uma propriedade translate padrão é inserida para cada instância DOM disponível em javascript.

Isso interfere no código xpath do Magento PrototypeJS usado para a implementação da tradução inline, gerando o bug.

 

Como Corrigir?

Editar o arquivo: /app/code/core/Mage/Core/Model/Translate/Inline.php

Encontre o seguinte código:

new TranslateInline('translate-inline-trig', '<?php echo $ajaxUrl ?>', '<?php
    echo Mage::getDesign()->getArea() ?>');

 

E logo após insira esse código aqui:

 

if(Object.__defineGetter__)
{
    var hasTranslateAttribute = function(){
        return $(this).hasAttribute("translate");
    };
    document.observe("dom:loaded", function() {
        $$('*').each(function(theElement){
             theElement.__defineGetter__("translate", hasTranslateAttribute);
        });
    });
}

ATENÇÃO: Esse procedimento está alterando um arquivo do CORE do Magento! Portanto, MUITO CUIDADO ao editá-lo ou você corre o risco de detonar o Magento. O correto é eu você insira esse código no arquivo javascript do seu tema.

P.S – O autor não se responsabiliza por eventuais perdas e danos causados ao Magento. O artigo tem cunho exclusivamente educativo.

Fala Comigo!