Translate Buttons for beta.character.ai

Adds a translate buttons for character messages in the chat for beta.character.ai

目前为 2022-12-13 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Translate Buttons for beta.character.ai
  3. // @namespace TranslateButtonsForBetaCharacterAI
  4. // @version 1.5
  5. // @description Adds a translate buttons for character messages in the chat for beta.character.ai
  6. // @icon https://www.google.com/s2/favicons?sz=64&domain=beta.character.ai
  7. // @match https://beta.character.ai/chat?char=*
  8. // @grant GM_xmlhttpRequest
  9. // @run-at document-end
  10. // @license MIT
  11. // ==/UserScript==
  12.  
  13. function addButtons() {
  14. var elements = document.getElementsByClassName("msg char-msg");
  15. for (var i = 0; i < elements.length; i++) {
  16. const charMsg = elements[i];
  17.  
  18. if (charMsg.querySelector(".translate-button") === null) {
  19. var btn = document.createElement("button");
  20. btn.innerHTML = "Tr";
  21. btn.classList.add("translate-button");
  22. btn.style.cssText = "width: 30px; height: 30px;";
  23.  
  24. // Add event listener for click event on translate button
  25. btn.addEventListener("click", function() {
  26. const msgElements = charMsg.querySelectorAll('p, li');
  27. for (var j = 0; j < msgElements.length; j++) {
  28. const msgElement = msgElements[j];
  29. const text = msgElement.innerHTML;
  30.  
  31. if (msgElement.originalText != null) {
  32. console.log("Return original message text: " + msgElement.originalText);
  33. msgElement.innerHTML = msgElement.originalText;
  34. msgElement.originalText = null;
  35. continue;
  36. }
  37.  
  38. console.log("Message text: " + text);
  39. msgElement.originalText = text;
  40.  
  41. // Use the user's language as the target language in the API request
  42. var url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=" + navigator.language + "&dt=t&q=" + encodeURIComponent(text);
  43.  
  44. GM_xmlhttpRequest({
  45. method: "GET",
  46. url: url,
  47. onload: function(response) {
  48. const responseText = JSON.parse(response.responseText);
  49.  
  50. let translation = "";
  51. responseText[0].forEach((part) => {
  52. translation += part[0];
  53. });
  54.  
  55. // Log the translation
  56. console.log("Translated text: " + translation);
  57.  
  58. // Replace the original text with the translated text
  59. msgElement.innerHTML = translation;
  60. }
  61. });
  62. }
  63. });
  64.  
  65. // Log the button being added
  66. console.log("Added translate button for element: " + charMsg);
  67. charMsg.insertBefore(btn, charMsg.firstChild);
  68. }
  69. }
  70. }
  71.  
  72. // Check every second
  73. setInterval(addButtons, 1000);