Ach herrje, ich glaube, ich tu Boesenfeger unrecht.
Es gibt eine viel ältere Anpassung des Skripts an DeepL!
Dazu aber heute Nachmittag mehr. Muss weg.
Beiträge von Mira_Belle
-
-
Sören Hentzschel Ok, ich habe mich da ganz offensichtlich missverständlich ausgedrückt!
Ich meine, als ich das Skript für DeepL angepasst habe, damals, funktionierte es.
Deshalb hätte ich, damals, besagte Zeilen Code nicht rausgenommen.
Da ich diese Funktion aber nie nutz(t)e, ist mir halt nie aufgefallen,
dass es irgendwann nicht mehr funktionierte.Es hat sich ja auch nie irgendwer gemeldet!
Jetzt weiß ich, dass es nicht geht, und habe den Code bereinigt.
Ergo, alles wird gut.
/* ------------------------------------------------------------------------------ */
Nachtrag! Ganz Wichtig
Ich schmücke mich hier mit fremden Federn!!
Nein, die Anpassungen des Skripts an DeepL stammen gar nicht von mir!
Boersenfeger war's! ER ist schuld!


BeitragRe: TranslateGoogles.uc.js
// Wer lieber mit Deepl übersetzen will:
Hier ist eine Modifikation nicht nötig:
Siehe weiter unten im Thread...
(Quelltext, 35 Zeilen)
Boersenfeger15. März 2019 um 12:07 Ich habe nur das mit den Symbolen angepasst und hinzugefügt.
-
Mal überarbeitet und bereinigt!
PS. Link im header neu gesetzt!JavaScript
Alles anzeigen// Translate_DeepL.uc.js // https://github.com/ardiman/userChrome.js/tree/master/contexttranslate // ex ContextTranslate.uc.js/// // modifiziert by universum 123, Umlaute geändert by 2002Andreas // https://www.camp-firefox.de/forum/thema/139966/?postID=1281813#post1281813 (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 !== ''); if (text) { openWebLinkIn('https://www.deepl.com/translator#en/de/' + encodeURIComponent(message.data), 'tab'); }; browserMM.removeMessageListener('getSelection', listener, true); }); browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true); } let menuitem = document.createXULElement('menuitem'); menuitem.id = 'context-DeepLtranslate'; menuitem.setAttribute('label', '\u00dcbersetzen (DeepL)'); menuitem.classList.add('menuitem-iconic'); let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); let IconPath = '/chrome/icons/'; // Pfad in den entsprechenden Unterordner let ButtonIcon = "DeepL_2.png"; // Name & Dateiendung des anzuzeigenden Symbols! 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); })();Was aber nicht funktioniert, ganze Seiten übersetzen zu lassen.
Wie ich bereits schrieb: Das hat mit DeepL noch nie in der kostenlosen Version funktioniert. Dafür musst du mindestens 7,49 € pro Monat bezahlen.
Irgendwann einmal muss es funktioniert haben, sonst hätte ich es ja nicht eingebaut.
Ist aber auch nun egal, es geht nicht, also Code bereinigt! -
...
Eigentlich wollte ich mir lediglich nochmal zu Gemüte führen, auf welche Weise es nimmer funktioniert. Und siehe da: es funktioniert einfach wieder.
Tatsache. Da hat DeepL dann doch wieder erbarmen gehabt und die Änderungen teilw. zurückgenommen.
Was aber nicht funktioniert, ganze Seiten übersetzen zu lassen.
D.h. aus dem "alten" Skript können die Zeilen 17 & 18 gelöscht werden. -
Mh, leider hatte die letzte Version einen Bug!
Bei mehrmaligen Nutzen der Funktion öffnete sich jedes Mal ein Tab mehr.
Eventuell jetzt:JavaScript
Alles anzeigen(function () { if (location.href !== 'chrome://browser/content/browser.xhtml') return; let translate = function () { let browserMM = gBrowser.selectedBrowser.messageManager; function listener(message) { let text = message.data; const deepl__deeplURL = `https://www.deepl.com/translator`; const browserLang = navigator.language; const deepl__defaultLang = browserLang.startsWith('de') ? 'en' : 'de'; if (text) { openWebLinkIn(`${deepl__deeplURL}#${deepl__defaultLang}/${encodeURIComponent(text)}`, 'tab'); } browserMM.removeMessageListener('getSelection', listener, true); } browserMM.addMessageListener('getSelection', listener); 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); })(); -
Nachtrag!
Noch etwas "Feintuning"
JavaScript
Alles anzeigen// 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); })(); -
Ich habe nach langem Hin und Her endlich eine Möglichkeit gefunden, die funktioniert

Hier das "neue" Skript.JavaScript
Alles anzeigen// 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 deepl__defaultLang = navigator.language.match(/^(zh-)?\w+/g)[0] || 'en'; // change default language if you want 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); })(); -
Wenn mir jetzt jemand ganz genau erklärt, was wie getestet werden soll, ....
-
Wurzelknolle Und unter Einstellungen auch "Links in Tabs anstatt in neuen Fenstern öffnen" aktiviert?
-
Genau so habe ich auch diese Einstellungen.
-
Wenn ich mich mal einmischen dürfte, ich nutze eine Erweiterung!
Und ich nutze GMX sowie Web.deBeim Anklicken eines Links öffnet sich ganz einfach ein neuer Tab.
Open Link in New Tab – Holen Sie sich diese Erweiterung für 🦊 Firefox (de)Laden Sie Open Link in New Tab für Firefox herunter. Open Link in New Tab help you change default how a link opened - in current tab or in new tab. Compatible…addons.mozilla.org -
Nein: bitte nicht & nein: ist es nicht & allerdings. Grüße Lionsson
?

Was für Fragen hast Du noch?Wenn nichts mehr anliegt, ist in Beitrag #33 alles gesagt.
Entweder die offizielle Erweiterung nutzen
oder mein Skript mit dem Workaround. -
Sören Hentzschel Bitte zu machen.
Das Eingangsthema ist erledigt
und der ganze andere Rest, der nichts zum Thema beiträgt,
gehört hier einfach nicht hin.Danke.
-
Grundsätzlich kann ich Dir da nicht weiterhelfen,
aber ...
es gibt da eine erweiterung, die Du Dir mal anschauen kannst.
In festen Intervallen erstellt diese ein Backup der geöffneten Seiten (Tabs).
Damit hast Du schon einmal einen Notnagel.MySessions – Holen Sie sich diese Erweiterung für 🦊 Firefox (de)Laden Sie MySessions für Firefox herunter. Ein einfacher Sitzungsmanager. Sie können Ihren aktuellen Browserzustand schnell speichern und bei Bedarf erneut…addons.mozilla.org -
Mit der LTSC bist du eh technisch veraltet, abgehängt, auch wenn das meiste wohl funktioniert, Support komplett nicht vorhanden.
Technisch veraltet! Wenn für Dich der Blödsinn mit W11 DER Fortschritt ist, bitte, mach das alles mit.
Für mich ist mit W10 das Ende der Verarsche erreicht und darüber brauchen wir nicht zu diskutieren.
Manchmal ist halt weniger mehr und solange ich Sicherheitspatches bekomme, ist doch alles gut. -
Äh, es ging um Leute, denen ich vertraue, wenn die einen "Server" für DeepLX aufsetzen würden!
Was sie tun, ist sowas von unwichtig.Aber das ist im Grunde auch egal, weil ich niemanden von denen damit "belästigen" möchte.
Und ich auch nicht glaube, dass irgendwer von den genannten Personen sich so ein Projekt ans Bein binden würde.Also lasst es bitte gut sein, ist kein Thema zum Diskutieren. Danke.
Wenn diese Verbindungen aus Usernamen und echtem Namen nicht bereits bekannt sind bzw. von den echten Personen kein OK dafür vorliegt, würde ich diese aus DSGVO-Gründen mal wieder rausnehmen.
Danke für Deine Fürsorge, aber die Daten sind auf deren Pages einsehbar!
-
Habe nun recht lange recherchiert und folgende Infos.
ZitatDas Userskript funktioniert nicht mehr, weil DeepL im März 2025 bedeutende Änderungen an seiner Schnittstelle vorgenommen hat. Ab diesem Zeitpunkt akzeptiert DeepL keine GET-Anfragen oder über die URL übergebenen Daten mehr zum Übersetzen. Stattdessen muss die Datenübertragung per POST erfolgen, wobei die zu übersetzenden Inhalte im Anfrage-Body gesendet werden. Die alte Methode, den Text direkt an die URL zu hängen (z.B. wie im Skript), wird jetzt abgelehnt. Dadurch führen Links wie dein Skript sie generiert, nicht mehr automatisch zur Übersetzung, sondern auf die Startseite oder ins Leere.
Damit sollte auch klar sein, warum so viele Erweiterungen ebenfalls nicht mehr funktionieren.
Also, entweder die offizielle Erweiterung von DeepL nutzen
Persönliche Anmerkung!
Die gefällt mir aber nicht, weil sie immer dieses kleine Popup einblendet, wenn man Text markiert.
Oder "mein" Skript, wobei man dann halt manuell noch "Strg+v" bemühen muss.
Kurz, es wird so schnell keine Möglichkeit geben, Text einfach an die Seite von DeepL weiterzuleiten.
Es gäbe da noch das DeepLX-Projekt, aber einen Eigenen Server aufsetzen?
Etwas übertrieben und einem externen vertrauen, falls vorhanden, mh.
Wenn Sören das machen würde, ja, aber das ist ja auch nur eine Schnapsidee!
Ok, ich kenne noch einige wenige andere Personen, denen ich vertrauen würde,
Caschy (Carsten Knobloch), Supernature (Martin Geuß), Mozzel (Manuel Hoefs) und einige wenige mehr,
aber ob die sich so etwas antun wollen? Eher nicht.
Schnapsidee eben halt! -
Aber wie gesagt, DeepL funktioniert damit zur Zeit leider auch nicht.
Danke erst einmal. (Die finde ich richtig gut)
Habe aber gerade festgestellt, dass Bing damit auch nicht funktioniert,
weder einzelne Worte noch ganze Seite. -
@Horstmann Wenn kein Text markiert ist, wird, bzw. sollte, die komplette Page übersetzt werden!
Probiere es doch mal mit dem Google-Skript aus,
denn genau so WAR das DeepL-Skript ja auch aufgebaut!irgendwas "Neues" möchte ich nicht mehr anfangen. Hoffe du verstehst das...
Schade,

An alle anderen, wie geschrieben komme ich nur nicht damit zurecht das Texteingabefeld zu identifizieren.
Alle Selektoren, die ich bisher gefunden und ausprobiert habe, scheinen nicht richtig gewesen zu sein.Das lässt sich in der Erweiterung ganz einfach einstellen/ändern.
In DER Erweiterung? Welche ist das denn?
Aber Du hast recht, ich habe selbst so einige ausprobiert, keine kam mehr mit DeepL zurecht! -
BrokenHeart Könntest Du mal schauen wie man das Textfeld auf der Page auswählen kann
und dann da einfach das Kopierte einfügt?
Ich bin daran gescheitert!Sören Hentzschel Wüsstest Du jemand, der die Seite "https://www.deepl.com/de/translator" analysieren könnte,
damit man per Skript da ins Textfeld gespeicherte Worte/Text hineinkopieren kann?Mein Problem, Text ist zwar in der Zwischenablage, aber ich schaffe es nicht diesen eben per Skript
dann in das entsprechende Feld zu kopieren (einzufügen)!