From 1d2d71db48257fdf25213ffc54122abc57717103 Mon Sep 17 00:00:00 2001 From: testman Date: Sun, 24 Mar 2024 19:44:55 +0900 Subject: [PATCH] deeplX function added --- src/lang/cn.ts | 2 ++ src/lang/de.ts | 2 ++ src/lang/en.ts | 2 ++ src/lang/ko.ts | 2 ++ src/lang/vi.ts | 2 ++ src/lib/Setting/Pages/LanguageSettings.svelte | 9 +++++++ src/ts/process/tts.ts | 3 ++- src/ts/storage/database.ts | 10 +++++++- src/ts/translator/translator.ts | 25 ++++++++++++++++++- 9 files changed, 54 insertions(+), 3 deletions(-) diff --git a/src/lang/cn.ts b/src/lang/cn.ts index f018dd42..f0e237a7 100644 --- a/src/lang/cn.ts +++ b/src/lang/cn.ts @@ -391,6 +391,8 @@ export const languageChinese = { "translatorType": "翻译类型", "deeplKey": "deepl API密钥", "deeplFreeKey": "deepl 免费 API密钥", + "deeplXUrl": "deepLX URL", + "deeplXToken": "deepLX Token", "exportPersona": "导出角色", "importPersona": "导入角色", "export": "导出", diff --git a/src/lang/de.ts b/src/lang/de.ts index ffab1c6e..080b8e15 100644 --- a/src/lang/de.ts +++ b/src/lang/de.ts @@ -421,6 +421,8 @@ export const languageGerman = { translatorType: "Übersetzer-Typ", deeplKey: "DeepL API-Schlüssel", deeplFreeKey: "DeepL Gratis API-Schlüssel", + deeplXUrl: "deepLX URL", + deeplXToken: "deepLX Token", exportPersona: "Profil exportieren", importPersona: "Profil importieren", export: "Exportieren", diff --git a/src/lang/en.ts b/src/lang/en.ts index 76b07569..523b7c15 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -456,6 +456,8 @@ export const languageEnglish = { translatorType: "Translator Type", deeplKey: "deepL API Key", deeplFreeKey: "deepL Free API Key", + deeplXUrl: "deepLX URL", + deeplXToken: "deepLX Token", exportPersona: "Export Persona", importPersona: "Import Persona", export: "Export", diff --git a/src/lang/ko.ts b/src/lang/ko.ts index b3219bfb..c5bbf533 100644 --- a/src/lang/ko.ts +++ b/src/lang/ko.ts @@ -394,6 +394,8 @@ export const languageKorean = { translatorType: "번역기 타입", deeplKey: "deepL API 키", deeplFreeKey: "deepL 무료 API 키", + deeplXUrl: "deepLX URL", + deeplXToken: "deepLX Token", exportPersona: "페르소나 엑스포트", importPersona: "페르소나 임포트", export: "엑스포트", diff --git a/src/lang/vi.ts b/src/lang/vi.ts index c5446148..44fdf8b2 100644 --- a/src/lang/vi.ts +++ b/src/lang/vi.ts @@ -392,6 +392,8 @@ export const LanguageVietnamese = { "translatorType": "Loại dịch giả", "deeplKey": "Khóa API deepL", "deeplFreeKey": "Khóa API miễn phí deepL", + "deeplXUrl": "deepLX URL", + "deeplXToken": "deepLX Token", "exportPersona": "Xuất khẩu nhân vật", "importPersona": "Nhập khẩu nhân vật", "export": "Xuất khẩu", diff --git a/src/lib/Setting/Pages/LanguageSettings.svelte b/src/lib/Setting/Pages/LanguageSettings.svelte index c123ed2b..04218c39 100644 --- a/src/lib/Setting/Pages/LanguageSettings.svelte +++ b/src/lib/Setting/Pages/LanguageSettings.svelte @@ -58,6 +58,7 @@ Google DeepL Ax. Model + DeepL X {#if $DataBase.translatorType === 'deepl'} @@ -71,6 +72,14 @@ {/if} + + {#if $DataBase.translatorType === 'deeplX'} + {language.deeplXUrl} + + + {language.deeplXToken} + + {/if} {#if $DataBase.translatorType === 'llm'} {language.translationPrompt} diff --git a/src/ts/process/tts.ts b/src/ts/process/tts.ts index 1d368db9..db3e32c2 100644 --- a/src/ts/process/tts.ts +++ b/src/ts/process/tts.ts @@ -56,7 +56,8 @@ export async function sayTTS(character:character,text:string) { const audioContext = new AudioContext(); const da = await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${character.ttsSpeech}`, { body: JSON.stringify({ - text: text + text: text, + model_id: "eleven_multilingual_v2" }), method: "POST", headers: { diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 87ef9256..c578cc26 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -332,6 +332,10 @@ export function setDatabase(data:Database){ key:'', freeApi: false } + data.deeplXOptions ??= { + url:'', + token:'' + } data.NAIadventure ??= false data.NAIappendName ??= true data.NAIsettings.cfg_scale ??= 1 @@ -555,13 +559,17 @@ export interface Database{ mancerHeader:string emotionProcesser:'submodel'|'embedding', showMenuChatList?:boolean, - translatorType:'google'|'deepl'|'none'|'llm', + translatorType:'google'|'deepl'|'none'|'llm'|'deeplX', NAIadventure?:boolean, NAIappendName?:boolean, deeplOptions:{ key:string, freeApi:boolean } + deeplXOptions:{ + url:string, + token:string + } localStopStrings?:string[] autofillRequestUrl:boolean customProxyRequestModel:string diff --git a/src/ts/translator/translator.ts b/src/ts/translator/translator.ts index 08ef0e03..576790f6 100644 --- a/src/ts/translator/translator.ts +++ b/src/ts/translator/translator.ts @@ -127,6 +127,29 @@ async function translateMain(text:string, arg:{from:string, to:string, host:stri return f.data.translations[0].text } + if(db.translatorType === 'deeplX'){ + const body = { + text: [text], + target_lang: arg.to.toLocaleUpperCase(), + source_lang: arg.from.toLocaleUpperCase() + } + let url = db.deeplXOptions.url + const f = await globalFetch(url, { + headers: { + "Content-Type": "application/json", + "Authorization" : "Bearer " + db.deeplXOptions.token + }, + body: body + }) + + if(!f.ok){ + return 'ERR::DeepLX API Error' + (await f.data) + } + return f.data.translations[0].text + + } + + const url = `https://${arg.host}/translate_a/single?client=gtx&dt=t&sl=${arg.from}&tl=${arg.to}&q=` + encodeURIComponent(text) @@ -171,7 +194,7 @@ async function jaTrans(text:string) { export function isExpTranslator(){ const db = get(DataBase) - return db.translatorType === 'llm' || db.translatorType === 'deepl' + return db.translatorType === 'llm' || db.translatorType === 'deepl' || db.translatorType === 'deeplX' } export async function translateHTML(html: string, reverse:boolean, charArg:simpleCharacterArgument|string = ''): Promise {