Question

Peut-être juste moi, mais dans le navigateur Chrome traduire en ligne ne fonctionne pas. Les boîtes rouges sont représentés et si je passe la souris de la souris le livre icône apparaît, mais si je clique rien ne se passe. J'ai eu le même problème sur différents serveurs.

Autre navigateur comme Firefox et IE sont très bien.

Y at-il un bugfix pour cela?

Était-ce utile?

La solution

Oui, la fonction de traduction en ligne est cassé dans Google Chrome. Retour lorsque la fonction de traduction en ligne a été développé à l'origine, Magento a fait usage d'un attribut translate non standard dans les éléments DOM pour marquer le texte traduisible.

Depuis, Google Chrome a une fonction où une propriété translate par défaut est ajouté à chaque nœud DOM disponible en javascript (sur la simplification).

, à son tour, avec les prototypejs interfère Magento XPath code utilisé pour implémenter la fonctionnalité de traduction. Plus précisément, cette

if (!$(target).match('*[translate]')) {
    target = target.up('*[translate]');
}

solution que je je suis venu avec l'année dernière a été d'ajouter le bit suivant de javascript à chaque page lorsque les traductions inline sont actives.

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

Autres conseils

Pour les clients de l'entreprise, il y a un patch de base Magento disponible (SUPEE-1373) qui a été testé par nos soins et de travaux.

Il remplace essentiellement toutes les propriétés de translate par data-translate à travers le code.

La solution fournie par Alan Tempête fonctionne. Pour faire fonctionner l'ensemble du site, il suffit d'ajouter l'extrait à /app/code/core/Mage/Core/Model/Translate/Inline.php, juste après

<script type="text/javascript">
new TranslateInline('translate-inline-trig', '<?php echo $ajaxUrl ?>', '<?php
    echo Mage::getDesign()->getArea() ?>');

C'est la ligne 278 en 1.7.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top