Greasy Fork is available in English.
Violentmonkey Сценарии
- // ==UserScript==// @name Google Translate English split words// @name:en Google Translate English split words// @name:zh-CN Google Translate English split words// @name:zh-TW Google Translate English split words// @name:ja Google Translate English split words// @name:ko Google Translate English split words// @name:de Google Translate English split words// @name:fr Google Translate English split words// @name:es Google Translate English split words// @name:pt Google Translate English split words// @name:ru Google Translate English split words// @name:it Google Translate English split words// @name:tr Google Translate English split words// @name:ar Google Translate English split words// @name:th Google Translate English split words// @name:vi Google Translate English split words// @name:id Google Translate English split words// @namespace Violentmonkey Scripts// @match *://translate.google.com/*// @version XiaoYing_2023.05.25.22// @grant GM_info// @grant GM_getValue// @grant GM_setValue// @grant GM_addStyle// @grant GM_deleteValue// @grant GM_xmlhttpRequest// @grant GM_setClipboard// @grant GM_registerMenuCommand// @grant GM_unregisterMenuCommand// @grant GM_getResourceText// @grant GM_getResourceURL// @grant GM_openInTab// @grant unsafeWindow// @run-at document-start// @author github.com @XiaoYingYo// @require https://greasyfork.org/scripts/464929-module-jquery-xiaoying/code/module_jquery_XiaoYing.js// @require https://greasyfork.org/scripts/464780-global-module/code/global_module.js// @description Violentmonkey Scripts// @description:en Violentmonkey Scripts// @description:zh-CN Violentmonkey 脚本// @description:zh-TW Violentmonkey 腳本// @description:ja Violentmonkey スクリプト// @description:ko Violentmonkey 스크립트// @description:de Violentmonkey Skripte// @description:fr Violentmonkey Scripts// @description:es Violentmonkey Scripts// @description:pt Violentmonkey Scripts// @description:ru Violentmonkey Сценарии// @description:it Violentmonkey Scripts// @description:tr Violentmonkey Scripts// @description:ar Violentmonkey Scripts// @description:th Violentmonkey Scripts// @description:vi Violentmonkey Scripts// @description:id Violentmonkey Scripts// ==/UserScript==var GlobalVariable = new Map();var ProcessRules = new Map();ProcessRules.set('convertToTitleCase_01', (Text) => {return convertToTitleCase(Text, '_');});ProcessRules.set('convertToTitleCase_02', (Text) => {return convertToTitleCase(Text, '-');});ProcessRules.set('UppercaseSplitWords', (Text) => {return Text.replace(/(?<!\s)([A-Z])/g, ' $1').trim();});function ProcessText(textarea) {if (GlobalVariable.get('InputIng') === 1) {return null;}let text = textarea.val();if (!containsEnglishLetter(text)) {return null;}if (text == '') {return null;}GlobalVariable.set('InputIng', 1);let oldLength = text.length;let newText = text;for (const item of ProcessRules.values()) {newText = item(newText);if (newText !== text) {break;}}if (newText === text) {GlobalVariable.set('InputIng', 0);return null;}let newLength = newText.length;global_module.AnalogInput.AnalogInput(textarea[0], newText);GlobalVariable.set('InputIng', 0);let oldChanges = GlobalVariable.get('IgnoreChanges');GlobalVariable.set('IgnoreChanges', oldChanges + 1);return newLength - oldLength;}function convertToTitleCase(Text, separator) {let regx = new RegExp(separator, 'g');const words = Text.replace(regx, ' ').split(' ');if (words.length == 1) {return Text;}const titleCaseWords = words.map((word) => {const lowerCaseWord = word.toLowerCase();return lowerCaseWord.charAt(0).toUpperCase() + lowerCaseWord.slice(1);});return titleCaseWords.join(' ');}function containsEnglishLetter(str) {for (let i = 0; i < str.length; i++) {if (i > 1000) {break;}const charCode = str.charCodeAt(i);if ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122)) {return true;}}return false;}async function main() {let textarea = await global_module.waitForElement('textarea[class][jsname]');let polite = await global_module.waitForElement("div[aria-live='polite']");textarea = textarea.eq(0);GlobalVariable.set('InputIng', 0);GlobalVariable.set('IgnoreChanges', 0);let MutationObserver = unsafeWindow.MutationObserver || unsafeWindow.WebKitMutationObserver || unsafeWindow.MozMutationObserver;let observer = new MutationObserver(global_module.debounce(() => {if (GlobalVariable.get('IgnoreChanges') !== 0) {let oldChanges = GlobalVariable.get('IgnoreChanges');GlobalVariable.set('IgnoreChanges', oldChanges - 1);return;}let selectionStart = textarea.prop('selectionStart');let selectionEnd = textarea.prop('selectionEnd');let index = ProcessText(textarea);if (index && index != 0) {selectionStart += index;selectionEnd += index;}textarea.prop('selectionStart', selectionStart);textarea.prop('selectionEnd', selectionEnd);textarea.focus();}),1000);observer.observe(polite[0], { childList: true, subtree: false });}main();