diff --git a/src/lang/cn.ts b/src/lang/cn.ts index 33ec2e43..de0e4f31 100644 --- a/src/lang/cn.ts +++ b/src/lang/cn.ts @@ -472,6 +472,7 @@ export const languageChinese = { "imgGenInstructions": "图像生成指令", "usePlainFetchWarn": "请在使用NovelAI时禁用此选项,因为它可能导致CORS错误。", "translationPrompt": "翻译提示", + "translationResponseSize": "翻译响应大小", "webdeeplwarn": "此选项不推荐在网页版本中使用,因为它可能导致CORS错误。", "saveBackupLocal": "本地保存备份", "loadBackupLocal": "本地加载备份", diff --git a/src/lang/en.ts b/src/lang/en.ts index 70f65f67..526d5cb0 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -504,6 +504,7 @@ export const languageEnglish = { imgGenInstructions: "Image Generation Instructions", usePlainFetchWarn: "Please disable this option when using NovelAI, as it can cause CORS errors when using NovelAI.", translationPrompt: "Translation Prompt", + translationResponseSize: "Translation Response Size", webdeeplwarn: "This option is not recommended for use with web version, as it can cause CORS errors.", saveBackupLocal: "Save Backup Locally", loadBackupLocal: "Load Backup Locally", diff --git a/src/lang/ko.ts b/src/lang/ko.ts index 2353f596..d0a85278 100644 --- a/src/lang/ko.ts +++ b/src/lang/ko.ts @@ -469,6 +469,7 @@ export const languageKorean = { "imgGenInstructions": "이미지 생성 지시사항", "usePlainFetchWarn": "NovelAI 사용 시 CORS 오류가 발생할 수 있으므로, NovelAI를 사용할 때는 이 옵션을 비활성화해 주세요.", "translationPrompt": "번역 프롬프트", + "translationResponseSize": "번역 응답 크기", "webdeeplwarn": "이 옵션은 웹에서는 제대로 작동하지 않을 수 있습니다.", "saveBackupLocal": "로컬 백업 저장", "loadBackupLocal": "로컬 백업 불러오기", diff --git a/src/lang/zh-Hant.ts b/src/lang/zh-Hant.ts index 607d5944..5e50f5d8 100644 --- a/src/lang/zh-Hant.ts +++ b/src/lang/zh-Hant.ts @@ -472,6 +472,7 @@ export const languageChineseTraditional = { "imgGenInstructions": "圖像產生指令", "usePlainFetchWarn": "請在使用NovelAI時禁用此選項,因為它可能導致CORS錯誤。", "translationPrompt": "翻譯提示", + "translationResponseSize": "翻譯響應大小", "webdeeplwarn": "此選項不推薦在網頁版本中使用,因為它可能導致CORS錯誤。", "saveBackupLocal": "本地保存備份", "loadBackupLocal": "本地載入備份", diff --git a/src/lib/Setting/Pages/LanguageSettings.svelte b/src/lib/Setting/Pages/LanguageSettings.svelte index 0974f0af..4f54c5ef 100644 --- a/src/lib/Setting/Pages/LanguageSettings.svelte +++ b/src/lib/Setting/Pages/LanguageSettings.svelte @@ -5,7 +5,8 @@ import { sleep } from "src/ts/util"; import OptionInput from "src/lib/UI/GUI/OptionInput.svelte"; import SelectInput from "src/lib/UI/GUI/SelectInput.svelte"; - import { alertNormal, alertSelect } from "src/ts/alert"; + import NumberInput from "src/lib/UI/GUI/NumberInput.svelte"; + import { alertNormal, alertSelect, alertConfirm } from "src/ts/alert"; import { downloadFile, isTauri } from "src/ts/storage/globalApi"; import { languageEnglish } from "src/lang/en"; import TextInput from "src/lib/UI/GUI/TextInput.svelte"; @@ -111,7 +112,8 @@ {/if} {#if $DataBase.translatorType === 'llm'} - {language.translationPrompt} + {language.translationResponseSize} + {/if} diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 158dfa41..eb862d1e 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -93,6 +93,9 @@ export function setDatabase(data:Database){ if(checkNullish(data.translator)){ data.translator = '' } + if(checkNullish(data.translatorMaxResponse)){ + data.translatorMaxResponse = 1000 + } if(checkNullish(data.currentPluginProvider)){ data.currentPluginProvider = '' } @@ -610,6 +613,7 @@ export interface Database{ huggingfaceKey:string allowAllExtentionFiles?:boolean translatorPrompt:string + translatorMaxResponse:number top_p: number, google: { accessToken: string @@ -897,6 +901,7 @@ export interface botPreset{ useInstructPrompt?:boolean customPromptTemplateToggle?:string templateDefaultVariables?:string + translatorMaxResponse: number } @@ -1101,7 +1106,7 @@ export const presetTemplate:botPreset = { }, top_p: 1, useInstructPrompt: false, - + translatorMaxResponse: 1000, } const defaultSdData:[string,string][] = [ @@ -1165,7 +1170,8 @@ export function saveCurrentPreset(){ openrouterProvider: db.openrouterProvider, useInstructPrompt: db.useInstructPrompt, customPromptTemplateToggle: db.customPromptTemplateToggle ?? "", - templateDefaultVariables: db.templateDefaultVariables ?? "" + templateDefaultVariables: db.templateDefaultVariables ?? "", + translatorMaxResponse: db.translatorMaxResponse } db.botPresets = pres setDatabase(db) @@ -1250,6 +1256,7 @@ export function setPreset(db:Database, newPres: botPreset){ db.useInstructPrompt = newPres.useInstructPrompt ?? false db.customPromptTemplateToggle = newPres.customPromptTemplateToggle ?? '' db.templateDefaultVariables = newPres.templateDefaultVariables ?? '' + db.translatorMaxResponse = newPres.translatorMaxResponse ?? db.translatorMaxResponse return db } diff --git a/src/ts/translator/translator.ts b/src/ts/translator/translator.ts index e4ca8957..187ad48c 100644 --- a/src/ts/translator/translator.ts +++ b/src/ts/translator/translator.ts @@ -238,10 +238,7 @@ export async function translateHTML(html: string, reverse:boolean, charArg:simpl return html } } - if(db.translatorType === 'llm'){ - const tr = db.translator || 'en' - return translateLLM(html, {to: tr}) - } + const dom = new DOMParser().parseFromString(html, 'text/html'); console.log(html) @@ -416,8 +413,8 @@ export async function translateHTML(html: string, reverse:boolean, charArg:simpl // Serialize the DOM back to HTML const serializer = new XMLSerializer(); let translatedHTML = serializer.serializeToString(dom); - // Remove the outer tags - translatedHTML = translatedHTML.replace(/^]*>|<\/body>$/g, ''); + // Remove the outer tags + translatedHTML = translatedHTML.replace(/<\/?(html|body|head)[^>]*>/g, ''); if(charArg !== ''){ let scripts:customscript[] = [] @@ -464,7 +461,7 @@ async function translateLLM(text:string, arg:{to:string}){ bias: {}, useStreaming: false, noMultiGen: true, - maxTokens: 1000, + maxTokens: db.translatorMaxResponse, }, 'submodel') if(rq.type === 'fail' || rq.type === 'streaming' || rq.type === 'multiline'){