Add autoTranslateCachedOnly option to auto-translate only previously translated text when enabled.

This commit is contained in:
Bo26fhmC5M
2024-11-28 21:53:15 +09:00
parent b6ee2928dd
commit ae6d12ea29
5 changed files with 23 additions and 2 deletions

View File

@@ -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",
}

View File

@@ -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(() => {

View File

@@ -158,5 +158,11 @@
<Help key="translateBeforeHTMLFormatting"/>
</Check>
</div>
<div class="flex items-center mt-4">
<Check bind:check={DBState.db.autoTranslateCachedOnly} name={language.autoTranslateCachedOnly}>
<Help key="autoTranslateCachedOnly"/>
</Check>
</div>
{/if}
{/if}

View File

@@ -846,6 +846,7 @@ export interface Database{
otherAx: SeparateParameters
}
translateBeforeHTMLFormatting:boolean
autoTranslateCachedOnly:boolean
}
interface SeparateParameters{

View File

@@ -508,3 +508,7 @@ async function translateLLM(text:string, arg:{to:string, regenerate?:boolean}):P
await LLMCacheStorage.setItem(text, result)
return result
}
export async function getLLMCache(text:string):Promise<string | null>{
return await LLMCacheStorage.getItem(text)
}