Dieser Artikel stammt aus einem früheren, persönlichen Blog und ist nicht Teil des Leistungsangebots der blaumedia GmbH. Er wird hier aus archivarischen Gründen bereitgestellt.

Ich habe vor kurzem den Google Translator in den Header meines Blogs eingebaut, um Menschen, die nicht der Deutschen Sprache mächtig sind, meine Beiträge dennoch zugänglich zu machen. Ich möchte nun aber natürlich wissen wie häufig und in welchen Sprachen der Translator genutzt wird. Für Matomo findet man keinerlei Möglichkeit im Internet, also habe ich ein Snippet entwickelt.

Das Snippet

if ("MutationObserver" in window || "WebKitMutationObserver" in window) {
    var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
    var myObserver = new MutationObserver(mutationHandler);
    var obsConfig = {
        childList: false,
        characterData: false,
        attributes: true,
        subtree: false
    };
    myObserver.observe(document.querySelector("html"), obsConfig);
    function mutationHandler(mutationRecords) {
        mutationRecords.forEach(function(mutation) {
            if (mutation.type == "attributes" && mutation.attributeName == "lang") {
                _paq.push(["trackEvent", "Translator", "ChangeLang", mutation.target.attributes.lang.nodeValue]);
            }
        });
    }
} else {
    // Fallback for older browsers
    document.querySelector("html").addEventListener("DOMAttrModified", function(e) {
        if (e.target.attributes.lang.nodeValue) {
            _paq.push(["trackEvent", "Translator", "ChangeLang", e.target.attributes.lang.nodeValue]);
        }
    });
}

Das Skript nutzt einen MutationObserver, der die Änderung des lang-Attributs im <html>-Tag überwacht und als Event in Matomo tracked. Als Fallback wird das veraltete Event "DOMAttrModified" verwendet.

Das Snippet nach dem Matomo-Tracking-Code einfügen. In Matomo unter "Verhalten" -> "Ereignisse" die Translator-Events ansehen.

Google Translator Tracking in Piwik/Matomo Darstellung des Ereignis-Trackings von Google Translator