Adds a translate buttons for character messages in the chat for beta.character.ai
目前為
// ==UserScript==
// @name Translate Buttons for beta.character.ai
// @namespace TranslateButtonsForBetaCharacterAI
// @version 1.5
// @description Adds a translate buttons for character messages in the chat for beta.character.ai
// @icon https://www.google.com/s2/favicons?sz=64&domain=beta.character.ai
// @match https://beta.character.ai/chat?char=*
// @grant GM_xmlhttpRequest
// @run-at document-end
// @license MIT
// ==/UserScript==
function addButtons() {
var elements = document.getElementsByClassName("msg char-msg");
for (var i = 0; i < elements.length; i++) {
const charMsg = elements[i];
if (charMsg.querySelector(".translate-button") === null) {
var btn = document.createElement("button");
btn.innerHTML = "Tr";
btn.classList.add("translate-button");
btn.style.cssText = "width: 30px; height: 30px;";
// Add event listener for click event on translate button
btn.addEventListener("click", function() {
const msgElements = charMsg.querySelectorAll('p, li');
for (var j = 0; j < msgElements.length; j++) {
const msgElement = msgElements[j];
const text = msgElement.innerHTML;
if (msgElement.originalText != null) {
console.log("Return original message text: " + msgElement.originalText);
msgElement.innerHTML = msgElement.originalText;
msgElement.originalText = null;
continue;
}
console.log("Message text: " + text);
msgElement.originalText = text;
// Use the user's language as the target language in the API request
var url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=" + navigator.language + "&dt=t&q=" + encodeURIComponent(text);
GM_xmlhttpRequest({
method: "GET",
url: url,
onload: function(response) {
const responseText = JSON.parse(response.responseText);
let translation = "";
responseText[0].forEach((part) => {
translation += part[0];
});
// Log the translation
console.log("Translated text: " + translation);
// Replace the original text with the translated text
msgElement.innerHTML = translation;
}
});
}
});
// Log the button being added
console.log("Added translate button for element: " + charMsg);
charMsg.insertBefore(btn, charMsg.firstChild);
}
}
}
// Check every second
setInterval(addButtons, 1000);