Untitled
plain_text
a month ago
2.3 kB
5
Indexable
Never
[ { "name": "语言检测", "version": 4, "ruleId": "con.Autolanguage.tts.speech_rule", "author": "ChatGPT", "code": "let SpeechRuleJS = {\n name: \"语言检测\",\n id: \"con.Autolanguage.tts.speech_rule\",\n author: \"ChatGPT\",\n version: 4,\n tags: {\n chinese: \"中文\",\n english: \"英文\",\n japanese: \"日语\",\n french: \"法语\",\n spanish: \"西班牙语\"\n },\n detectLanguage(text) {\n const chineseReg = /[\\u4e00-\\u9fa5]/;\n const englishReg = /[a-zA-Z]/;\n const japaneseReg = /[\\u3040-\\u309F\\u30A0-\\u30FF]/;\n const frenchReg = /[\\u00C0-\\u017F]/;\n const spanishReg = /[\\u00E0-\\u00FC\\u20A7]/;\n\n if (chineseReg.test(text)) {\n return \"chinese\";\n } else if (englishReg.test(text)) {\n return \"english\";\n } else if (japaneseReg.test(text)) {\n return \"japanese\";\n } else if (frenchReg.test(text)) {\n return \"french\";\n } else if (spanishReg.test(text)) {\n return \"spanish\";\n } else if (/^\\s+$/.test(text)) { // 判断是否为空格符号\n return \"any_language\"; // 将空格符号判断为任何语言\n } else {\n return \"chinese\";\n }\n },\n handleText(text) {\n const list = [];\n let tmpStr = \"\";\n let endTag = \"chinese\"; // 默认语言为中文\n let lastLang = \"\"; // 上一段的语言类型\n text.split(\"\").forEach((char, index) => {\n const lang = this.detectLanguage(char);\n if (lang !== \"any_language\") { // 排除掉空格符号\n if ((lang !== lastLang) && (lastLang !== \"\")) { // 新的段落,将上一段加入数组\n list.push({ text: tmpStr.trim(), tag: endTag });\n tmpStr = \"\";\n }\n endTag = lang;\n lastLang = lang;\n }\n\n tmpStr += char;\n\n if (index === text.length - 1) { // 处理最后一个字符\n if (tmpStr) {\n list.push({ text: tmpStr.trim(), tag: endTag });\n }\n }\n });\n\n return list;\n }\n};", "tags": { "chinese": "中文", "english": "英文", "japanese": "日语", "french": "法语", "spanish": "西班牙语" } } ]