From ae6d12ea29cb71fbdc5571299dd57bfabd337522 Mon Sep 17 00:00:00 2001 From: Bo26fhmC5M <88071760+Bo26fhmC5M@users.noreply.github.com> Date: Thu, 28 Nov 2024 21:53:15 +0900 Subject: [PATCH] Add autoTranslateCachedOnly option to auto-translate only previously translated text when enabled. --- src/lang/en.ts | 2 ++ src/lib/ChatScreens/Chat.svelte | 12 ++++++++++-- src/lib/Setting/Pages/LanguageSettings.svelte | 6 ++++++ src/ts/storage/database.svelte.ts | 1 + src/ts/translator/translator.ts | 4 ++++ 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index 5dc39a0e..bc0d11a6 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -170,6 +170,7 @@ export const languageEnglish = { summarizationPrompt: "The prompt that is used for summarization. if it is blank, it will use the default prompt. you can also use ChatML formating with {{slot}} for the chat data.", translatorPrompt: "The prompt that is used for translation. if it is blank, it will use the default prompt. you can also use ChatML formating with {{slot}} for the dest language, {{solt::content}} for the content, and {{slot::tnote}} for the translator note.", translateBeforeHTMLFormatting: "If enabled, it will translate the text before Regex scripts and HTML formatting. this could make the token lesser but could break the formatting.", + autoTranslateCachedOnly: "If enabled, it will automatically translate only the text that the user has translated previously.", }, setup: { chooseProvider: "Choose AI Provider", @@ -811,4 +812,5 @@ export const languageEnglish = { translateBeforeHTMLFormatting: "Translate Before HTML Formatting", retranslate: "Retranslate", loading: "Loading", + autoTranslateCachedOnly: "Auto Translate Cached Only", } \ No newline at end of file diff --git a/src/lib/ChatScreens/Chat.svelte b/src/lib/ChatScreens/Chat.svelte index 3a48eb7c..1f5995d1 100644 --- a/src/lib/ChatScreens/Chat.svelte +++ b/src/lib/ChatScreens/Chat.svelte @@ -7,7 +7,7 @@ import { type MessageGenerationInfo } from "../../ts/storage/database.svelte"; import { alertStore, DBState } from 'src/ts/stores.svelte'; import { HideIconStore, ReloadGUIPointer, selIdState } from "../../ts/stores.svelte"; - import { translateHTML } from "../../ts/translator/translator"; + import { translateHTML, getLLMCache } from "../../ts/translator/translator"; import { risuChatParser } from "src/ts/process/scripts"; import { type Unsubscriber } from "svelte/store"; import { get, isEqual, startsWith } from "lodash"; @@ -140,7 +140,15 @@ translateText = false try { if(DBState.db.autoTranslate){ - translateText = true + if(DBState.db.autoTranslateCachedOnly && DBState.db.translatorType === "llm"){ + const cache = await getLLMCache(data) + if(cache !== null){ + translateText = true + } + } + else{ + translateText = true + } } setTimeout(() => { diff --git a/src/lib/Setting/Pages/LanguageSettings.svelte b/src/lib/Setting/Pages/LanguageSettings.svelte index 182afb6a..7f313af1 100644 --- a/src/lib/Setting/Pages/LanguageSettings.svelte +++ b/src/lib/Setting/Pages/LanguageSettings.svelte @@ -158,5 +158,11 @@ + +
+ + + +
{/if} {/if} \ No newline at end of file diff --git a/src/ts/storage/database.svelte.ts b/src/ts/storage/database.svelte.ts index caf92699..6224c911 100644 --- a/src/ts/storage/database.svelte.ts +++ b/src/ts/storage/database.svelte.ts @@ -846,6 +846,7 @@ export interface Database{ otherAx: SeparateParameters } translateBeforeHTMLFormatting:boolean + autoTranslateCachedOnly:boolean } interface SeparateParameters{ diff --git a/src/ts/translator/translator.ts b/src/ts/translator/translator.ts index 72e8a35d..156db65d 100644 --- a/src/ts/translator/translator.ts +++ b/src/ts/translator/translator.ts @@ -507,4 +507,8 @@ async function translateLLM(text:string, arg:{to:string, regenerate?:boolean}):P }).replace(/<\/style-data>/g, '') await LLMCacheStorage.setItem(text, result) return result +} + +export async function getLLMCache(text:string):Promise{ + return await LLMCacheStorage.getItem(text) } \ No newline at end of file