diff --git a/src/lang/en.ts b/src/lang/en.ts index 69a97e52..57a20681 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -483,4 +483,5 @@ export const languageEnglish = { template: "Template", chatAsOriginalOnSystem: "Send as original role", exportAsDataset: "Export Save as Dataset", + editTranslationDisplay: "Edit Translation Display", } \ No newline at end of file diff --git a/src/lib/ChatScreens/Chat.svelte b/src/lib/ChatScreens/Chat.svelte index 9d973bce..547294f7 100644 --- a/src/lib/ChatScreens/Chat.svelte +++ b/src/lib/ChatScreens/Chat.svelte @@ -92,7 +92,7 @@ if(translateText){ const marked = await ParseMarkdown(data, charArg, mode, chatID) translating = true - const translated = await translateHTML(marked, false) + const translated = await translateHTML(marked, false, charArg) translating = false lastParsed = translated lastCharArg = charArg diff --git a/src/lib/SideBars/Scripts/RegexData.svelte b/src/lib/SideBars/Scripts/RegexData.svelte index a9ba689a..b70bf782 100644 --- a/src/lib/SideBars/Scripts/RegexData.svelte +++ b/src/lib/SideBars/Scripts/RegexData.svelte @@ -52,6 +52,7 @@ {language.editOutput} {language.editProcess} {language.editDisplay} + {language.editTranslationDisplay} IN: diff --git a/src/ts/translator/translator.ts b/src/ts/translator/translator.ts index 0304be8d..21b721c8 100644 --- a/src/ts/translator/translator.ts +++ b/src/ts/translator/translator.ts @@ -1,10 +1,12 @@ import { get } from "svelte/store" import { translatorPlugin } from "../plugins/plugins" -import { DataBase } from "../storage/database" +import { DataBase, type customscript } from "../storage/database" import { globalFetch } from "../storage/globalApi" import { alertError } from "../alert" import { requestChatData } from "../process/request" import { doingChat } from "../process" +import type { simpleCharacterArgument } from "../parser" +import { selectedCharID } from "../stores" let cache={ origin: [''], @@ -171,7 +173,7 @@ export function isExpTranslator(){ return db.translatorType === 'llm' || db.translatorType === 'deepl' } -export async function translateHTML(html: string, reverse:boolean): Promise { +export async function translateHTML(html: string, reverse:boolean, charArg:simpleCharacterArgument|string = ''): Promise { let db = get(DataBase) let DoingChat = get(doingChat) if(DoingChat){ @@ -233,6 +235,28 @@ export async function translateHTML(html: string, reverse:boolean): Promise tags translatedHTML = translatedHTML.replace(/^]*>|<\/body>$/g, ''); + if(charArg !== ''){ + let scripts:customscript[] = [] + if(typeof(charArg) === 'string'){ + const db = get(DataBase) + const charId = get(selectedCharID) + const char = db.characters[charId] + scripts = (db.globalscript ?? []).concat(char.customscript) + } + else{ + scripts = (db.globalscript ?? []).concat(charArg.customscript) + + } + for(const script of scripts){ + if(script.type === 'edittrans'){ + const reg = new RegExp(script.in, script.ableFlag ? script.flag : 'g') + let outScript = script.out.replaceAll("$n", "\n") + translatedHTML = translatedHTML.replace(reg, outScript) + } + } + + } + // console.log(html) // console.log(translatedHTML) // Return the translated HTML, excluding the outer tags if needed