Nachtrag!
Noch etwas "Feintuning" ![]()
JavaScript
// Translate_DeepL.uc.js
(function () {
if (location.href !== 'chrome://browser/content/browser.xhtml') return;
let translate = function () {
let browserMM = gBrowser.selectedBrowser.messageManager;
browserMM.addMessageListener('getSelection', function listener(message) {
let text = message.data;
let deepl__selection = getSelection().toString();
const deepl__deeplURL= `https://www.deepl.com/translator#null/`;
const browserLang = navigator.language;
const deepl__defaultLang = browserLang.startsWith('de') ? 'en' : 'de';
if (text) {
openWebLinkIn('https://www.deepl.com/translator#en/de/' + encodeURIComponent(message.data), 'tab');
window.open(`${deepl__deeplURL + deepl__defaultLang}/${encodeURIComponent(deepl__selection).replaceAll("%2F", "\\%2F").replaceAll("%7C", "\\%7C").replaceAll("%5C", "%5C%5C")}`, '_blank');
}
browserMM.storage.onChanged.addListener(getDefaultSettings);
});
browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true);
};
let menuitem = document.createXULElement('menuitem');
menuitem.id = 'context-DeepLtranslate';
menuitem.setAttribute('label', 'Übersetzen (DeepL)');
menuitem.classList.add('menuitem-iconic');
let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
let IconPath = '/chrome/icons/';
let ButtonIcon = "DeepL_2.png";
menuitem.style.setProperty('--menuitem-icon', 'url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '")');
menuitem.addEventListener('command', translate);
let refItem = document.getElementById('context-inspect');
refItem.parentNode.insertBefore(menuitem, refItem);
})();
Alles anzeigen