DeepL Translate page been wonky lately

For support with specific websites

Moderator: trava90

Forum rules
Please always mention the name/domain of the website in question in your topic title.
Please one website per topic thread (to help keep things organized). While behavior on different sites might at first glance seem similar, they are not necessarily caused by the same.

Please try to include any relevant output from the Toolkit Error Console or the Developer Tools Web Console using the following procedure:
  1. Clear any current output
  2. Navigate or refresh the page in question
  3. Copy and paste Errors or seemingly relevant Warnings into a single [ code ] block.
User avatar
jobbautista9
Board Warrior
Board Warrior
Posts: 1240
Joined: 2020-11-03, 06:47
Location: Philippines

Re: DeepL Translate page been wonky lately

Post by jobbautista9 » 2025-11-30, 15:31

UCyborg wrote:
2025-11-30, 11:05
Moonchild wrote:
2025-11-08, 21:37
UCyborg wrote:
2025-11-08, 20:59
That site has really become cumbersome, hasn't it?
It's been cumbersome for quite some time. I ended up just using Google Translate for when I need machine translation. It works.
DeepL works better for some languages. The idea in my case is specifically to avoid Google / Bing.
There's a Mozhi (fork of SimplyTranslate) instance which has DeepL as an option: https://mozhi.pussthecat.org/?engine=deepl

Updated bookmarklet code:

Code: Select all

javascript:(function translate() {
    function se(d) { return d.selection ? d.selection.createRange().text : d.getSelection(); }
    s = se(document);
    for (i = 0; i < frames.length && !s; i++) s = se(frames[i].document);
    if (!s || s == '') s = prompt('Enter text to translate with SimplyTranslate', null);
	if (!s) return; /* Don't do anything if prompt cancelled */
	let wn = 'w_' + Date.now() + Math.floor(Math.random() * 100000).toString();
	var f = document.createElement("form");
	f.setAttribute("method", "post");
	f.setAttribute("action", "https://mozhi.pussthecat.org/?engine=deepl");
	f.setAttribute("target", wn);
	var hf = new Array(3);
	for (i = 0; i < hf.length; i++) { hf[i] = document.createElement("input"); hf[i].type = "hidden"; }
	hf[0].name = "from";
	function avl(l) {
	  switch (l) {
	    case "bg":
	    case "cs":
	    case "da":
	    case "de":
	    case "el":
	    case "es":
	    case "et":
	    case "fi":
	    case "fr":
	    case "hu":
	    case "id":
	    case "it":
	    case "ja":
	    case "ko":
	    case "lv":
	    case "lt":
	    case "nb":
	    case "nl":
	    case "pl":
	    case "pt":
	    case "ro":
	    case "ru":
	    case "sk":
	    case "sl":
	    case "sv":
	    case "tr":
	    case "uk":
	    case "zh":
	    case "ar":
	    	return l;
	    default:
	    	return "ja";
	  }
	}
	hf[0].value = avl(document.documentElement.lang.split("-")[0]);
	hf[1].name = "to";
	hf[1].value = 'en';
	hf[2].name = "text";
	hf[2].value = s
	for (i = 0; i < hf.length; i++) f.appendChild(hf[i]);
	document.body.appendChild(f);
	open('', wn).focus();
	f.submit();
})();
Converted to a single-line with https://chriszarate.github.io/bookmarkleter/:

Code: Select all

javascript:void%20function(){var%20a=Math.floor;function%20b(a){return%20a.selection%3Fa.selection.createRange().text:a.getSelection()}function%20c(a){return%22bg%22===a||%22cs%22===a||%22da%22===a||%22de%22===a||%22el%22===a||%22es%22===a||%22et%22===a||%22fi%22===a||%22fr%22===a||%22hu%22===a||%22id%22===a||%22it%22===a||%22ja%22===a||%22ko%22===a||%22lv%22===a||%22lt%22===a||%22nb%22===a||%22nl%22===a||%22pl%22===a||%22pt%22===a||%22ro%22===a||%22ru%22===a||%22sk%22===a||%22sl%22===a||%22sv%22===a||%22tr%22===a||%22uk%22===a||%22zh%22===a||%22ar%22===a%3Fa:%22ja%22}for(s=b(document),i=0;i%3Cframes.length%26%26!s;i++)s=b(frames[i].document);if(s%26%26%22%22!=s||(s=prompt(%22Enter%20text%20to%20translate%20with%20SimplyTranslate%22,null)),!!s){let%20b=%22w_%22+Date.now()+a(1e5*Math.random()).toString();var%20d=document.createElement(%22form%22);d.setAttribute(%22method%22,%22post%22),d.setAttribute(%22action%22,%22https://mozhi.pussthecat.org/%3Fengine=deepl%22),d.setAttribute(%22target%22,b);var%20e=[,,,];for(i=0;i%3Ce.length;i++)e[i]=document.createElement(%22input%22),e[i].type=%22hidden%22;for(e[0].name=%22from%22,e[0].value=c(document.documentElement.lang.split(%22-%22)[0]),e[1].name=%22to%22,e[1].value=%22en%22,e[2].name=%22text%22,e[2].value=s,i=0;i%3Ce.length;i++)d.appendChild(e[i]);document.body.appendChild(d),open(%22%22,b).focus(),d.submit()}}();
The DeepL option unfortunately doesn't support an auto as source language, so I'm back with document.documentElement.lang. It will only do the non-English languages that DeepL supports though, and it will ignore the region part (e.g. es-AR becomes es). If the document doesn't have a supported language it will default to Japanese as source language (which seems to be the most used for DeepL, well at least I mostly use Japanese for it because as you said DeepL is better than Google for it).
Image

Tired of creating stuff!

Avatar artwork by Shinki669: https://www.pixiv.net/artworks/113645617

XUL add-ons developer. You can find a list of add-ons I manage at http://rw.rs/~job/software.html.

User avatar
Mæstro
Board Warrior
Board Warrior
Posts: 1238
Joined: 2019-08-13, 00:30
Location: Casumia

Re: DeepL Translate page been wonky lately

Post by Mæstro » 2025-12-01, 15:20

In the desire to avoid large language models altogether, I swapped DeepL for LibreTranslate, which is available in several instances and employs traditional, rules-based methods, like Babelfish in the good, old days. Like Job, I usually wish to make Japanese text intelligible, and I find this suffices. Online bilingual dictionaries also help. German readers might already know Leo and Pons, while other sites are more helpful for Chinese, Japanese and Korean. WolframAlpha can also serve as multilingual dictionary.
Life is a fever dream Mæstro would enjoy.
All posts 100% organic. Ash is the best letter.
What is being nice online?
Debian 10 ELTS / Official PM build

User avatar
Lecco
Moongazer
Moongazer
Posts: 10
Joined: 2025-08-16, 12:55

Re: DeepL Translate page been wonky lately

Post by Lecco » 2025-12-06, 12:12

jobbautista9 wrote:
2025-11-29, 15:32

Code: Select all

if (!s) return; /* Don't do anything if prompt cancelled */
That is a good idea, I added it to my script. :thumbup:

User avatar
tellu-white
Lunatic
Lunatic
Posts: 351
Joined: 2022-03-08, 22:02
Location: Arad, Romania

Re: DeepL Translate page been wonky lately

Post by tellu-white » 2025-12-07, 17:17

UCyborg wrote:
2025-11-30, 11:05
DeepL works better for some languages. The idea in my case is specifically to avoid Google / Bing.
In a previous post, I said:
I've made a Custom Button that gets rid of unnecessary stuff on the page, which also helps Pale Moon to reduce the load of heavy scripts.

Note: Unfortunately, from time to time, at irregular intervals (sometimes short, sometimes long), DeepL gets upset and removes all content from the page (the page becomes empty).
https://forum.palemoon.org/viewtopic.php?f=70&t=32874#p267168

Important!
If I don't remove the unnecessary tags from "DeepL Translator" page, Pale Moon ends up using up to 90% of the CPU ( I have an older PC ). After removing these tags, the CPU level drops to 0%.

***

It seems that in the Custom Button code posted in the previous comment, I also removed the tags that DeepL uses later. It seems that this is the reason why DeepL empties the page after a while (it cannot find the respective tags). I rewrote the code after several tests, and it seems that with the new code, the problem with the page becoming empty after a while has disappeared. After 40 minutes, "DeepL Translator" is still working correctly.

Also, in the new tests, I accepted cookies and manually closed all pop-ups (not with JavaScript code) before using the button. The URL used in the tests is https://www.deepl.com/en/translator

Custom Button "CODE" :

Code: Select all

/*CODE*/

var arr_is_home = content.document.getElementsByClassName("[.is-home_&]:hidden");

if(arr_is_home){
	for(var i=0; i<arr_is_home.length; i++){
		var is_home_className = arr_is_home[i].className;
		
		if(is_home_className == "[.is-home_&]:hidden"){
			arr_is_home[i].parentNode.removeChild(arr_is_home[i]);
		}
	}
}


var footer = content.document.getElementsByTagName("footer");

if(footer){
	footer[0].parentNode.removeChild(footer[0]);
}


var arr_header = content.document.getElementsByTagName("header");

for(var i=0; i<arr_header.length; i++){
	var header_className = arr_header[i].className;
	
	if(header_className && header_className.includes("page-header")){
		arr_header[i].parentNode.removeChild(arr_header[i]);
	}
}


var all_tags = content.document.getElementsByTagName("*");
var i = all_tags.length;

while(i--){
	try{
		var dataset = all_tags[i].dataset;
		
		if(dataset){
			var dataset_layoutId = all_tags[i].dataset.layoutId;
			
			if(dataset_layoutId){
				if(dataset_layoutId == "translatorSidePanel"){
					all_tags[i].parentNode.removeChild(all_tags[i]);
				}
			}
		}
		
	} catch(err){
		console.log('ERROR in "DeepL - Restore Page Layout" : ', err.message);
	}
}


var all_tags = content.document.getElementsByTagName("*");
var i = all_tags.length;

while(i--){
	try{
		var dataset = all_tags[i].dataset;

		if(dataset){
			var dataset_layoutId = all_tags[i].dataset.layoutId;
			
			if(dataset_layoutId){
				if(dataset_layoutId == "sourceTextareaContainer"){
					all_tags[i].style.cssText = 'display: inline-block; vertical-align: top; width: 48vw; margin: 0px; padding: 10px 0px 10px 10px;';
				}
				
				if(dataset_layoutId == "targetTextareaContainer"){
					all_tags[i].style.cssText = 'display: inline-block; vertical-align: top; width: 48vw; margin: 0px; padding: 10px 0px 10px 10px;';
				}
			}
		}
		
	} catch(err){
		console.log('ERROR in "DeepL - Restore Page Layout" : ', err.message);
	}
}


var textareas_Container = content.document.getElementById("textareasContainer");

if(textareas_Container){
	textareas_Container.style.cssText = 'width: 98vw; margin: 0px; padding: 0px;';
}


var arr_contents = content.document.getElementsByClassName("contents");

for(var i=0; i<arr_contents.length; i++){
	var contents_className = arr_contents[i].className;
	
	if(contents_className && contents_className == "contents"){
		var role_attribute = arr_contents[i].getAttribute("role");
		
		if(!role_attribute){
			arr_contents[i].style.cssText = "display: inline-block; margin: 0px; padding: 0px;";
		}
	}
}

Custom Buttons Enhanced 0.0.6

https://forum.palemoon.org/viewtopic.php?f=71&t=32626

Screenshots:
01.png
02.png
03.png
04.png
05.png
06.png
07.png
08.png
09.png
You do not have the required permissions to view the files attached to this post.
Telu (with a single L) was the name of the dog of one of my grandparents - when I was just a little boy.
He was a white dog of large size and very friendly.

User avatar
jobbautista9
Board Warrior
Board Warrior
Posts: 1240
Joined: 2020-11-03, 06:47
Location: Philippines

Re: DeepL Translate page been wonky lately

Post by jobbautista9 » 2025-12-09, 15:01

How does that custom button compare to using these uBlock Origin filters and Stylem/userContent CSS which seem to achieve the same thing?

Code: Select all

! 2025-12-09 https://www.deepl.com
www.deepl.com##.\[\.is-home_\&\]\:lg\:pb-\[90px\].\[\.is-home_\&\]\:md\:pb-\[130px\].\[\.is-home_\&\]\:min-h-screen.min-w-0.flex-1.relative > .z-\[999\].top-0.sticky
www.deepl.com##.Page_scalableTranslator__rzGIl.bg-white.relative > .\[\.is-home_\&\]\:hidden
www.deepl.com##.py-10.px-8.gap-10.flex-col.max-w-\[1440px\].w-full.flex.sm\:px-15
www.deepl.com##.items-center.justify-between.gap-2.py-2.px-3.flex-1.min-w-0.flex.mobile\:p-0 > .overflow-hidden.gap-1\.5.items-center.flex > .shared_contents__lpgzs > .shared_contents__lpgzs > .shared_contents__lpgzs.Tooltip_Target_Target__WFp_8

Code: Select all

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("deepl.com") {
  #textareasContainer
  {
    width: 98vw;
    margin: 0px;
    padding: 0px;
  }
  
  #textareasContainer > div.contents
  {
    display: inline-block;
    margin: 0px;
    padding: 0px;
  }
  
  div[data-layout-id='sourceTextareaContainer'],
  div[data-layout-id='targetTextareaContainer']
  {
    display: inline-block;
    vertical-align: top;
    width: 48vw;
    margin: 0px;
    padding: 10px 0px 10px 10px;
  }
  
  .Button.as-medium.is-icon-only
  {
    padding: unset !important;
    margin-left: 500px;
    margin-top: -500px;
  }
}
Image

Tired of creating stuff!

Avatar artwork by Shinki669: https://www.pixiv.net/artworks/113645617

XUL add-ons developer. You can find a list of add-ons I manage at http://rw.rs/~job/software.html.

User avatar
tellu-white
Lunatic
Lunatic
Posts: 351
Joined: 2022-03-08, 22:02
Location: Arad, Romania

Re: DeepL Translate page been wonky lately

Post by tellu-white » 2025-12-09, 18:13

jobbautista9 wrote:
2025-12-09, 15:01
How does that custom button compare to using these uBlock Origin filters and Stylem/userContent CSS which seem to achieve the same thing?
I don't know the answer to this question because I don't use uBlock Origin and Stylem.
Telu (with a single L) was the name of the dog of one of my grandparents - when I was just a little boy.
He was a white dog of large size and very friendly.

User avatar
UCyborg
Board Warrior
Board Warrior
Posts: 1092
Joined: 2019-01-10, 09:37
Location: Slovenia

Re: DeepL Translate page been wonky lately

Post by UCyborg » 2026-03-24, 23:43

Huh, now the site employs user agent sniffing and craps out when using native Pale Moon's user agent. It's happy with Firefox's user agent.
The Merovingian wrote:Choice is an illusion, created between those with power, and those without.

User avatar
Moonchild
Project founder
Project founder
Posts: 39642
Joined: 2011-08-28, 17:27
Location: Sweden

Re: DeepL Translate page been wonky lately

Post by Moonchild » 2026-03-25, 06:07

UCyborg wrote:
2026-03-24, 23:43
Huh, now the site employs user agent sniffing and craps out when using native Pale Moon's user agent. It's happy with Firefox's user agent.
As is usual for these kinds of situations, please let them know they are blocking legitimate maintained web browsers and kindly ask them to adjust their UA filtering.
"Sales hates anything that can't be turned into a confident sentence." - anonymous warehouse worker
"Why debate someone you fundamentally don't trust?" - Dario Amodei
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite

User avatar
UCyborg
Board Warrior
Board Warrior
Posts: 1092
Joined: 2019-01-10, 09:37
Location: Slovenia

Re: DeepL Translate page been wonky lately

Post by UCyborg » 2026-03-25, 08:53

I have native agent set on work laptop, where it works, though haven't updated PM to 34.1.0 yet, still on 34.0.1. Strange... :problem:
The Merovingian wrote:Choice is an illusion, created between those with power, and those without.

User avatar
tellu-white
Lunatic
Lunatic
Posts: 351
Joined: 2022-03-08, 22:02
Location: Arad, Romania

Re: DeepL Translate page been wonky lately

Post by tellu-white » 2026-03-25, 12:21

UCyborg wrote:
2026-03-25, 08:53
I have native agent set on work laptop, where it works, though haven't updated PM to 34.1.0 yet, still on 34.0.1. Strange... :problem:
I use "Pale Moon 34.1.0" with a distinct profile for DeepL ( https://www.deepl.com/en/translator ) and a "Custom Button" ( https://forum.palemoon.org/viewtopic.php?f=71&t=32626 ), and it works just fine.

The "Custom Button" code ( "Initialization Code" ):

Code: Select all

/*Initialization Code*/

this.buttonClick_DeepL_restore_page_layout = function(event) {
	
	// "Click" on Button = Open "DeepL Translator" Page
	
	if (event.button == 0 && !event.ctrlKey && !event.altKey && !event.shiftKey){
		var page_URL = "https://www.deepl.com/en/translator";
		
		var final_position = gBrowser.tabContainer.selectedIndex + 1;
		var new_tab = gBrowser.addTab(page_URL);
		gBrowser.moveTabTo(new_tab, final_position);
		gBrowser.selectedTab = new_tab;
	}
	
	// "Ctrl + Click" on Button = Restore DeepL Page Layout
	
	else if (event.button == 0 && event.ctrlKey && !event.altKey && !event.shiftKey){
		var arr_is_home = content.document.getElementsByClassName("[.is-home_&]:hidden");

		if(arr_is_home){
			for(var i=0; i<arr_is_home.length; i++){
				var is_home_className = arr_is_home[i].className;
				
				if(is_home_className == "[.is-home_&]:hidden"){
					arr_is_home[i].parentNode.removeChild(arr_is_home[i]);
				}
			}
		}

		var footer = content.document.getElementsByTagName("footer");

		if(footer){
			footer[0].parentNode.removeChild(footer[0]);
		}

		var arr_header = content.document.getElementsByTagName("header");

		for(var i=0; i<arr_header.length; i++){
			var header_className = arr_header[i].className;
			
			if(header_className && header_className.includes("page-header")){
				arr_header[i].parentNode.removeChild(arr_header[i]);
			}
			
			try{
				arr_header[i].style.cssText = 'display: none !important;';
				
			} catch(err){
				// console.log('ERROR in "DeepL - Restore Page Layout" : ', err.message);
			}
		}

		var all_tags = content.document.getElementsByTagName("*");
		var i = all_tags.length;

		while(i--){
			try{
				all_tags[i].classList.remove("sticky");
				
			} catch(err){
				// console.log('ERROR in "DeepL - Restore Page Layout" : ', err.message);
			}
			
			try{
				var dataset = all_tags[i].dataset;
				
				if(dataset){
					var dataset_layoutId = all_tags[i].dataset.layoutId;
					
					if(dataset_layoutId){
						if(dataset_layoutId == "translatorTabList"){
							all_tags[i].style.cssText = 'display: none !important;';
						}
						
						if(dataset_layoutId == "translatorSidePanel"){
							all_tags[i].parentNode.removeChild(all_tags[i]);
						}
						
						if(dataset_layoutId == "textarea-layout-toolbar"){
							all_tags[i].style.cssText = 'display: none !important;';
						}
						
						if(dataset_layoutId == "textarea-layout-source"){
							all_tags[i].parentNode.classList.remove("grid");
							all_tags[i].parentNode.style.cssText = 'width: 98vw;';
							
							all_tags[i].style.cssText = 'display: inline-block; vertical-align: top; width: 48.5vw; margin: 0px 0px 10px 0px; padding: 10px 0px 10px 10px;';
						}
						
						if(dataset_layoutId == "textarea-layout-target"){
							all_tags[i].style.cssText = 'display: inline-block; vertical-align: top; width: 48.5vw; margin: 0px 0px 0px 9px; padding: 10px 0px 10px 10px;';
						}
					}
				}
				
			} catch(err){
				// console.log('ERROR in "DeepL - Restore Page Layout" : ', err.message);
			}
		}

		var arr_contents = content.document.getElementsByClassName("contents");

		for(var i=0; i<arr_contents.length; i++){
			var contents_className = arr_contents[i].className;
			
			if(contents_className && contents_className == "contents"){
				var role_attribute = arr_contents[i].getAttribute("role");
				
				if(!role_attribute){
					arr_contents[i].style.cssText = "display: inline-block; margin: 0px; padding: 0px;";
				}
			}
		}
		
		var ai_solutions_that_help_you_get_work_done = content.document.getElementById("ai_solutions_that_help_you_get_work_done");

		if(ai_solutions_that_help_you_get_work_done){
			ai_solutions_that_help_you_get_work_done.parentNode.remove();
		}
		
		////////////////////////////////  START • Insert Buttons "Show / Hide" Languages Bar  ////////////////////////////////
		
		var main_TAG = content.document.getElementsByTagName("main")[0];

		var div_with_languages_bar = content.document.createElement('div');
		div_with_languages_bar.style.width = "97vw";
		div_with_languages_bar.style.textAlign = "center";
		div_with_languages_bar.style.marginTop = "0px";
		div_with_languages_bar.style.marginBottom = "10px";
				
		var btn__Show_Languages_Bar = content.document.createElement("button");
		btn__Show_Languages_Bar.setAttribute("id", "btn_show_languages_bar");
		btn__Show_Languages_Bar.textContent = "Show Languages Bar";
		btn__Show_Languages_Bar.setAttribute("cursor", "pointer");

		btn__Show_Languages_Bar.style.border = "1px solid #cccccc";
		btn__Show_Languages_Bar.style.borderTopLeftRadius = "4px";
		btn__Show_Languages_Bar.style.borderTopRightRadius = "4px";
		btn__Show_Languages_Bar.style.borderBottomRightRadius = "4px";
		btn__Show_Languages_Bar.style.borderBottomLeftRadius = "4px";

		btn__Show_Languages_Bar.style.padding = "2px 7px 2px 7px";
		btn__Show_Languages_Bar.style.color = "#000000";
		btn__Show_Languages_Bar.style.background = "#f1f2f3";

		btn__Show_Languages_Bar.addEventListener(
			"click",
			function(){
				var languages_bar = content.document.querySelectorAll('[data-layout-id="textarea-layout-toolbar"]')[0];
				languages_bar.style.cssText = 'display: block !important;';
			},
			true
		);
				
		var btn__Hide_Languages_Bar = content.document.createElement("button");
		btn__Hide_Languages_Bar.setAttribute("id", "btn_show_languages_bar");
		btn__Hide_Languages_Bar.textContent = "Hide Languages Bar";
		btn__Hide_Languages_Bar.setAttribute("cursor", "pointer");
		
		btn__Hide_Languages_Bar.style.marginLeft = "6px";
		btn__Hide_Languages_Bar.style.marginRight = "4px";

		btn__Hide_Languages_Bar.style.border = "1px solid #cccccc";
		btn__Hide_Languages_Bar.style.borderTopLeftRadius = "4px";
		btn__Hide_Languages_Bar.style.borderTopRightRadius = "4px";
		btn__Hide_Languages_Bar.style.borderBottomRightRadius = "4px";
		btn__Hide_Languages_Bar.style.borderBottomLeftRadius = "4px";

		btn__Hide_Languages_Bar.style.padding = "2px 7px 2px 7px";
		btn__Hide_Languages_Bar.style.color = "#000000";
		btn__Hide_Languages_Bar.style.background = "#f1f2f3";

		btn__Hide_Languages_Bar.addEventListener(
			"click",
			function(){
				var languages_bar = content.document.querySelectorAll('[data-layout-id="textarea-layout-toolbar"]')[0];
				languages_bar.style.cssText = 'display: none !important;';
			},
			true
		);

		div_with_languages_bar.appendChild(btn__Show_Languages_Bar);
		div_with_languages_bar.appendChild(btn__Hide_Languages_Bar);

		main_TAG.insertBefore(div_with_languages_bar, main_TAG.firstChild);

		////////////////////////////////  END • Insert Buttons "Show / Hide" Languages Bar  ////////////////////////////////
		
		var body_tag = content.document.getElementsByTagName("body")[0];
		
		var body_style = content.document.createElement("style");
		body_style.type = "text/css";
		body_style.innerHTML = `body{
			background-color: #ffffff !important;
		}`;

		body_tag.appendChild(body_style);
	}
}

this.setAttribute("onclick", "this.buttonClick_DeepL_restore_page_layout(event)");

this.name = '\n DeepL -  Restore Page Layout \n\n •  "Click" on Button = Open "DeepL Translator" Page \n\n •  "Ctrl + Click" on Button = Restore DeepL Page Layout \n ';

this.image = "data:image/png;base64,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";

Important!
Press "Ctrl + Click" on "Custom Button" only after the page https://www.deepl.com/en/translator has fully loaded (i.e., it is ready to be used).

Screenshot:
01.png
You do not have the required permissions to view the files attached to this post.
Telu (with a single L) was the name of the dog of one of my grandparents - when I was just a little boy.
He was a white dog of large size and very friendly.

User avatar
UCyborg
Board Warrior
Board Warrior
Posts: 1092
Joined: 2019-01-10, 09:37
Location: Slovenia

Re: DeepL Translate page been wonky lately

Post by UCyborg » 2026-03-25, 18:37

Today the page loads on the computer with latest Pale Moon 34.1.0. Yesterday, the page threw some sort of side client side exception error if I recall correctly.

Also tried the custom from previous post, clutter removal indeed helps with responsiveness.
The Merovingian wrote:Choice is an illusion, created between those with power, and those without.

User avatar
tellu-white
Lunatic
Lunatic
Posts: 351
Joined: 2022-03-08, 22:02
Location: Arad, Romania

Re: DeepL Translate page been wonky lately

Post by tellu-white » 2026-04-23, 15:31

For those using Deepl Translator along with the Custom Button code I posted: Deepl has modified the code of the page ( https://www.deepl.com/en/translator ), so I had to modify the Custom Button code as well to prevent changes to the width of the box containing the translated text when that box is clicked. This behavior is annoying and makes it challenging to select text within the box containing the translated text.

The new code for Custom Button (in "Initialization Code" TAB):

Code: Select all

/*Initialization Code*/

this.buttonClick_DeepL_restore_page_layout = function(event) {
	
	// "Click" on Button = Open "DeepL Translator" Page
	
	if (event.button == 0 && !event.ctrlKey && !event.altKey && !event.shiftKey){
		var page_URL = "https://www.deepl.com/en/translator";
		
		var final_position = gBrowser.tabContainer.selectedIndex + 1;
		var new_tab = gBrowser.addTab(page_URL);
		gBrowser.moveTabTo(new_tab, final_position);
		gBrowser.selectedTab = new_tab;
	}
	
	// "Ctrl + Click" on Button = Restore DeepL Page Layout
	
	else if (event.button == 0 && event.ctrlKey && !event.altKey && !event.shiftKey){
		var arr_is_home = content.document.getElementsByClassName("[.is-home_&]:hidden");

		if(arr_is_home){
			for(var i=0; i<arr_is_home.length; i++){
				var is_home_className = arr_is_home[i].className;
				
				if(is_home_className == "[.is-home_&]:hidden"){
					arr_is_home[i].parentNode.removeChild(arr_is_home[i]);
				}
			}
		}

		var footer = content.document.getElementsByTagName("footer");

		if(footer){
			footer[0].parentNode.removeChild(footer[0]);
		}

		var arr_header = content.document.getElementsByTagName("header");

		for(var i=0; i<arr_header.length; i++){
			var header_className = arr_header[i].className;
			
			if(header_className && header_className.includes("page-header")){
				arr_header[i].parentNode.removeChild(arr_header[i]);
			}
			
			try{
				arr_header[i].style.cssText = 'display: none !important;';
				
			} catch(err){
				// console.log('ERROR in "DeepL - Restore Page Layout" : ', err.message);
			}
		}

		var all_tags = content.document.getElementsByTagName("*");
		var i = all_tags.length;

		while(i--){
			try{
				all_tags[i].classList.remove("sticky");
				
			} catch(err){
				// console.log('ERROR in "DeepL - Restore Page Layout" : ', err.message);
			}
			
			try{
				var dataset = all_tags[i].dataset;
				
				if(dataset){
					var dataset_layoutId = all_tags[i].dataset.layoutId;
					
					if(dataset_layoutId){
						if(dataset_layoutId == "translatorTabList"){
							all_tags[i].style.cssText = 'display: none !important;';
						}
						
						if(dataset_layoutId == "translatorSidePanel"){
							all_tags[i].parentNode.removeChild(all_tags[i]);
						}
						
						if(dataset_layoutId == "textarea-layout-toolbar"){
							all_tags[i].style.cssText = 'display: none !important;';
						}
						
						if(dataset_layoutId == "textarea-layout-source"){
							all_tags[i].parentNode.classList.remove("grid");
							all_tags[i].parentNode.style.cssText = 'width: 98vw; max-width: 98vw;';
							
							all_tags[i].style.cssText = 'display: inline-block; vertical-align: top; width: 48vw; max-width: 48vw; margin: 0px 0px 10px 0px; padding: 10px 0px 10px 10px;';
						}
						
						if(dataset_layoutId == "textarea-layout-target"){
							all_tags[i].style.cssText = 'display: inline-block; vertical-align: top; width: 48vw; max-width: 48vw; margin: 0px 0px 0px 9px; padding: 10px 0px 10px 10px;';
						}
					}
					
					var dataset_testid = all_tags[i].dataset.testid;
					
					if(dataset_testid){
						if(dataset_testid == "translator-target-input"){
							var textbox = all_tags[i].querySelectorAll('[role="textbox"]');
							
							if(textbox){
								textbox[0].style.cssText = 'overflow-x : clip; width: 44vw; max-width: 44vw; min-width: 44vw;';
							}
						}
					}
				}
				
			} catch(err){
				console.log('ERROR in "DeepL - Restore Page Layout" : ', err.message);
			}
		}

		var arr_contents = content.document.getElementsByClassName("contents");

		for(var i=0; i<arr_contents.length; i++){
			var contents_className = arr_contents[i].className;
			
			if(contents_className && contents_className == "contents"){
				var role_attribute = arr_contents[i].getAttribute("role");
				
				if(!role_attribute){
					arr_contents[i].style.cssText = "display: inline-block; margin: 0px; padding: 0px;";
				}
			}
		}
		
		var ai_solutions_that_help_you_get_work_done = content.document.getElementById("ai_solutions_that_help_you_get_work_done");

		if(ai_solutions_that_help_you_get_work_done){
			ai_solutions_that_help_you_get_work_done.parentNode.remove();
		}
		
		////////////////////////////////  START • Insert Buttons "Show / Hide" Languages Bar  ////////////////////////////////
		
		var main_TAG = content.document.getElementsByTagName("main")[0];

		var div_with_languages_bar = content.document.createElement('div');
		div_with_languages_bar.style.width = "97vw";
		div_with_languages_bar.style.textAlign = "center";
		div_with_languages_bar.style.marginTop = "0px";
		div_with_languages_bar.style.marginBottom = "10px";
				
		var btn__Show_Languages_Bar = content.document.createElement("button");
		btn__Show_Languages_Bar.setAttribute("id", "btn_show_languages_bar");
		btn__Show_Languages_Bar.textContent = "Show Languages Bar";
		btn__Show_Languages_Bar.setAttribute("cursor", "pointer");

		btn__Show_Languages_Bar.style.border = "1px solid #cccccc";
		btn__Show_Languages_Bar.style.borderTopLeftRadius = "4px";
		btn__Show_Languages_Bar.style.borderTopRightRadius = "4px";
		btn__Show_Languages_Bar.style.borderBottomRightRadius = "4px";
		btn__Show_Languages_Bar.style.borderBottomLeftRadius = "4px";

		btn__Show_Languages_Bar.style.padding = "2px 7px 2px 7px";
		btn__Show_Languages_Bar.style.color = "#000000";
		btn__Show_Languages_Bar.style.background = "#f1f2f3";

		btn__Show_Languages_Bar.addEventListener(
			"click",
			function(){
				var languages_bar = content.document.querySelectorAll('[data-layout-id="textarea-layout-toolbar"]')[0];
				languages_bar.style.cssText = 'display: block !important;';
			},
			true
		);
				
		var btn__Hide_Languages_Bar = content.document.createElement("button");
		btn__Hide_Languages_Bar.setAttribute("id", "btn_show_languages_bar");
		btn__Hide_Languages_Bar.textContent = "Hide Languages Bar";
		btn__Hide_Languages_Bar.setAttribute("cursor", "pointer");
		
		btn__Hide_Languages_Bar.style.marginLeft = "6px";
		btn__Hide_Languages_Bar.style.marginRight = "4px";

		btn__Hide_Languages_Bar.style.border = "1px solid #cccccc";
		btn__Hide_Languages_Bar.style.borderTopLeftRadius = "4px";
		btn__Hide_Languages_Bar.style.borderTopRightRadius = "4px";
		btn__Hide_Languages_Bar.style.borderBottomRightRadius = "4px";
		btn__Hide_Languages_Bar.style.borderBottomLeftRadius = "4px";

		btn__Hide_Languages_Bar.style.padding = "2px 7px 2px 7px";
		btn__Hide_Languages_Bar.style.color = "#000000";
		btn__Hide_Languages_Bar.style.background = "#f1f2f3";

		btn__Hide_Languages_Bar.addEventListener(
			"click",
			function(){
				var languages_bar = content.document.querySelectorAll('[data-layout-id="textarea-layout-toolbar"]')[0];
				languages_bar.style.cssText = 'display: none !important;';
			},
			true
		);

		div_with_languages_bar.appendChild(btn__Show_Languages_Bar);
		div_with_languages_bar.appendChild(btn__Hide_Languages_Bar);

		main_TAG.insertBefore(div_with_languages_bar, main_TAG.firstChild);

		////////////////////////////////  END • Insert Buttons "Show / Hide" Languages Bar  ////////////////////////////////
		
		var body_tag = content.document.getElementsByTagName("body")[0];
		
		var body_style = content.document.createElement("style");
		body_style.type = "text/css";
		body_style.innerHTML = `body{
			background-color: #ffffff !important;
		}`;

		body_tag.appendChild(body_style);
	}
}

this.setAttribute("onclick", "this.buttonClick_DeepL_restore_page_layout(event)");

this.name = '\n DeepL -  Restore Page Layout \n\n •  "Click" on Button = Open "DeepL Translator" Page \n\n •  "Ctrl + Click" on Button = Restore DeepL Page Layout \n ';

this.image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAVCAYAAACg/AXsAAAACXBIWXMAAARuAAAEbgHQo7JoAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAuxJREFUeNqEk8+LHEUUxz+vqrq6Z2YnY1bCTBJcf6ARzO5FlOwh6kH/gKAeRIlnkXh2BcnFQ7zL/gfxIAh7zdmTKxiCu+BPMDFBM3HMJD2zM91d3f087EpmlkksqEvx6vPe933fE154H8tdnB+h9hjkKRJb9N6E6kjnU59OL4be8Yv1b9ufUwzhxDraW6Gxt0RefUMltzEsPu8ikpOmn4XERaTpJUQU+HBRsDv8IMKlMuiG+AQRAEWrCe7pl7A22cz+/GUFVjZm/8xWcg5BpWSDCpBZsKFOBxTDW8TOfOwptUbOzUI6GPO6ZNlWNUopBWi2iVi6aTIm6AwMCM7D4BZudHdLrXsVOCLN02eGSqNZ0PCiCrZCW4+949P6q1zzHbGsipbzmlVRb/HZsUJKPzEFR3cCyRXRGqyFVrsvu9//FIrraMO96O7bPtqAuZIECTXB9q8U8c0dA9wBBgcpANcF+wWwEwd3yixNeohZU21greIc6APeALhjZunUNdz7B9bOvkLj1CqTsCtGb0dR+TOICEgNn9TzfV8wJzaC9C+oh5RLe9ByXeCqSKCqocz2SbOUBcMmoBW4AvBBTWgU7d8/QM13qmAcztg5STjAAwkqYGtwUwhyHrWXEQhFlRDVH0H5MogeypgA3vmiva5SFkU0RdSAyb8mGX+JdIiiUVROW9dJe919DTMui+IL/5oUsTeTuP9r5sdD0SZoDU7eZrl4j6iCWq4CXcr57dAqxzefpHri+b+Lk3JNWDuLLTtnounytyH+A0kieLwPeQLjDocBVDn0TqM/XENOHl9n2W//19htRIQ6XCCUMH4Osi6U9iFLzoUDf7YXubOJqmDtZaIORPFh40bAG8Amj5yT/ejzVR7etLY1FmMejLxyAxf/SHoDJgMw7lEQUNgSYblpXZ+xgWkERleBtygC8uxTUA0hmzwccnACKj2NqzU9mhFlHhU9MRexN/1fyL44w241rZ8p7pfEDWlHEczefwcA93k06GMM1bkAAAAASUVORK5CYII=";

Important!
Press "Ctrl + Click" on "Custom Button" only after the page https://www.deepl.com/en/translator has fully loaded (i.e., it is ready to be used).
Telu (with a single L) was the name of the dog of one of my grandparents - when I was just a little boy.
He was a white dog of large size and very friendly.