Untitled

mail@pastecode.io avatarunknown
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": "西班牙语"
        }
    }
]