Translates English text to Portuguese on Botghost
当前为
// ==UserScript==
// @name English to Portuguese Live Botghost Translator
// @namespace https://thelostmoon.net
// @license MIT
// @version 2.6.9
// @description Translates English text to Portuguese on Botghost
// @match http://https://dashboard.botghost.com/*
// @match https://dashboard.botghost.com/*
// @grant GM_xmlhttpRequest
// ==/UserScript==
(function() {
'use strict';
// Google Translate API URL
const API_URL = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=pt&dt=t&q=";
// Translate function
function translate(text, callback) {
const url = API_URL + encodeURIComponent(text);
GM_xmlhttpRequest({
method: "GET",
url: url,
onload: function(response) {
const translation = JSON.parse(response.responseText)[0][0][0];
callback(translation);
}
});
}
// Translate all text nodes in the given DOM node
function translateNode(node) {
if (node.nodeType === Node.TEXT_NODE) {
const text = node.textContent.trim();
if (text) {
translate(text, function(translation) {
node.textContent = translation;
});
}
} else if (node.nodeType === Node.ELEMENT_NODE) {
const children = node.childNodes;
for (let i = 0; i < children.length; i++) {
translateNode(children[i]);
}
}
}
// Translate all text nodes in the given subtree
function translateSubtree(subtree) {
const nodes = subtree.querySelectorAll('*');
for (let i = 0; i < nodes.length; i++) {
translateNode(nodes[i]);
}
}
// Observe the DOM for changes and translate any new content that gets added
const observer = new MutationObserver(function(mutations) {
for (let i = 0; i < mutations.length; i++) {
const mutation = mutations[i];
if (mutation.type === "childList" && mutation.addedNodes.length > 0) {
for (let j = 0; j < mutation.addedNodes.length; j++) {
const addedNode = mutation.addedNodes[j];
translateSubtree(addedNode);
}
}
}
});
observer.observe(document.body, { childList: true, subtree: true });
// Translate all existing content when the script is first loaded
translateSubtree(document.body);
})();