Inline dịch lỗi Chrome?


7

Có thể đó chỉ là tôi, nhưng trong trình duyệt Chrome, dịch nội tuyến không hoạt động. Các ô màu đỏ được hiển thị và nếu tôi di chuột, biểu tượng sách sẽ xuất hiện nhưng nếu tôi nhấp vào thì không có gì xảy ra. Tôi đã có cùng một vấn đề trên các máy chủ khác nhau.

Các trình duyệt khác như Firefox và IE đều ổn.

Có một lỗi cho điều này?


"Không làm việc" nghĩa là gì? Nó không xuất hiện, nó không lưu, bạn có bị lỗi js không?
Marius

Câu trả lời:


11

Có, tính năng dịch nội tuyến bị hỏng trong Google Chrome. Quay lại khi tính năng dịch nội tuyến ban đầu được phát triển, Magento đã sử dụng translatethuộc tính không chuẩn trong các thành phần DOM để gắn cờ văn bản có thể dịch.

Kể từ đó, Google Chrome có một tính năng trong đó một thuộc tính mặc định translateđược thêm vào mọi nút DOM có sẵn trong javascript (đơn giản hóa hơn).

Đến lượt nó, giao tiếp với mã xpath PrototypeJS của Magento được sử dụng để triển khai tính năng dịch. Cụ thể, cái này

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

Giải pháp tôi đã đưa ra năm ngoái là thêm một chút javascript sau vào mỗi trang khi các bản dịch nội tuyến đang hoạt động.

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

Nó vẫn là một vấn đề. Nhưng dòng vấn đề là một vài vấn đề và tôi đã thay đổi nó như sau: // if (target && $ (target) .match ('* [dịch]')) {if (target && $ (target). readAttribution ('dịch')) {
phazei

5

Đối với khách hàng Doanh nghiệp, có một bản vá lõi Magento có sẵn (SUPEE-1373) đã được chúng tôi thử nghiệm và hoạt động.

Về cơ bản, nó thay thế tất cả các translatethuộc tính bằng data-translatemã.


Có phải chỉ tôi hoặc có bản vá "SUPEE-1373" này đã biến mất khỏi internet? google.com/ Quảng cáo
7ochem 10/03/2015

@ 7ochem: Bản vá chỉ khả dụng thông qua hỗ trợ Magento Enterprise. Thật không may, họ đã không sửa nó trong CE 1.9, ngay cả bản vá đã có sẵn trước khi phát hành CE 1.9
Alex

Tôi đã đi qua toàn bộ danh sách tệp trong tài nguyên kỹ thuật EE của mình, nhưng tôi không thể tìm thấy nó ...
7ochem 11/03/2015

Chỉ cần mở một yêu cầu hỗ trợ và yêu cầu các bản vá.
Alex

-1

Giải pháp được cung cấp bởi Alan Storm hoạt động. Để làm cho nó hoạt động trên toàn bộ trang web, chỉ cần thêm đoạn mã vào /app/code/core/Mage/Core/Model/Translate/Inline.php, ngay sau đó

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

Đó là dòng 278 trong 1.7.


3
Có thật không? Thay đổi cốt lõi? Ít nhất, đề nghị người dùng sử dụng các bản viết lại của Magento. Có nhiều cách khác để thực hiện thay đổi này mà không cần viết lại.
đánh dấu

Tôi đã thêm nó vào tập tin javascript của mẫu của tôi.
PiTheNumber
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.