diff --git a/src/lang/en.ts b/src/lang/en.ts
index 93ef9fa4..0b3f54ec 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -417,4 +417,8 @@ export const languageEnglish = {
emotionMethod: "Emotion Method",
continueResponse: "Continue Response",
showMenuChatList: "Show Menu Chat List",
+ translatorLanguage: "Translator Language",
+ translatorType: "Translator Type",
+ deeplKey: "deepL API Key",
+ deeplFreeKey: "deepL Free API Key",
}
\ No newline at end of file
diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte
index 1fcbe0e7..fc232cd6 100644
--- a/src/lib/Setting/Pages/BotSettings.svelte
+++ b/src/lib/Setting/Pages/BotSettings.svelte
@@ -143,6 +143,8 @@
GPT-4 32k
GPT-3.5 0301
GPT-4 0301
+ GPT-3.5 0613
+ GPT-4 0613
claude-2
claude-v1.3
claude-v1.3-100k
diff --git a/src/lib/Setting/Pages/LanguageSettings.svelte b/src/lib/Setting/Pages/LanguageSettings.svelte
index 91b5807f..60215c02 100644
--- a/src/lib/Setting/Pages/LanguageSettings.svelte
+++ b/src/lib/Setting/Pages/LanguageSettings.svelte
@@ -9,6 +9,7 @@
import { alertNormal } from "src/ts/alert";
import { downloadFile } from "src/ts/storage/globalApi";
import { languageEnglish } from "src/lang/en";
+ import TextInput from "src/lib/UI/GUI/TextInput.svelte";
let langChanged = false
{language.language}
@@ -32,7 +33,7 @@
{#if langChanged}
Close the settings to take effect
{/if}
-{language.translator}
+{language.translatorLanguage}
{language.disabled}
Korean
@@ -46,17 +47,28 @@
Indonesian
Malaysian
Ukranian
-
{#if $DataBase.translator}
+ {language.translatorType}
+
+ Google
+ DeepL
+
+
+ {#if $DataBase.translatorType === 'deepl'}
+
+ {language.deeplKey}
+
+
+
+
+
+
+ {/if}
+
+
- {#if $DataBase.useExperimental}
-
-
-
-
- {/if}
{/if}
\ No newline at end of file
diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts
index d862d474..35788b0a 100644
--- a/src/ts/storage/database.ts
+++ b/src/ts/storage/database.ts
@@ -305,6 +305,11 @@ export function setDatabase(data:Database){
data.hypaModel ??= 'MiniLM'
data.mancerHeader ??= ''
data.emotionProcesser ??= 'submodel'
+ data.translatorType ??= 'google'
+ data.deeplOptions ??= {
+ key:'',
+ freeApi: false
+ }
changeLanguage(data.language)
DataBase.set(data)
}
@@ -465,7 +470,12 @@ export interface Database{
saveTime?:number
mancerHeader:string
emotionProcesser:'submodel'|'embedding',
- showMenuChatList?:boolean
+ showMenuChatList?:boolean,
+ translatorType:'google'|'deepl'|'none',
+ deeplOptions:{
+ key:string,
+ freeApi:boolean
+ }
}
export interface customscript{
diff --git a/src/ts/translator/translator.ts b/src/ts/translator/translator.ts
index b004682a..9e1b71b4 100644
--- a/src/ts/translator/translator.ts
+++ b/src/ts/translator/translator.ts
@@ -1,6 +1,8 @@
import { get } from "svelte/store"
import { translatorPlugin } from "../plugins/plugins"
import { DataBase } from "../storage/database"
+import { globalFetch } from "../storage/globalApi"
+import { alertError } from "../alert"
let cache={
origin: [''],
@@ -28,10 +30,10 @@ export async function translate(text:string, reverse:boolean) {
}
}
- return googleTrans(text, reverse, db.translator,db.aiModel.startsWith('novellist') ? 'ja' : 'en')
+ return runTranslator(text, reverse, db.translator,db.aiModel.startsWith('novellist') ? 'ja' : 'en')
}
-async function googleTrans(text:string, reverse:boolean, from:string,target:'en'|'ja') {
+async function runTranslator(text:string, reverse:boolean, from:string,target:'en'|'ja') {
const arg = {
from: reverse ? from : target,
@@ -70,6 +72,11 @@ async function googleTrans(text:string, reverse:boolean, from:string,target:'en'
}
const result = await translateMain(trimed, arg);
+ if(result.startsWith('ERR::')){
+ alertError(result)
+ return text
+ }
+
fullResult.push(result.trim())
}
@@ -90,6 +97,28 @@ async function googleTrans(text:string, reverse:boolean, from:string,target:'en'
}
async function translateMain(text:string, arg:{from:string, to:string, host:string}){
+ let db = get(DataBase)
+
+ if(db.translatorType === 'deepl'){
+ let url = db.deeplOptions.freeApi ? "https://api-free.deepl.com/v2/translate" : "https://api.deepl.com/v2/translate"
+ const f = await globalFetch(url, {
+ headers: {
+ "Authorization": "DeepL-Auth-Key " + db.deeplOptions.key,
+ },
+ body: {
+ text: text,
+ source_lang: arg.from.toLocaleUpperCase(),
+ target_lang: arg.to.toLocaleUpperCase(),
+ }
+ })
+
+ if(!f.ok){
+ return 'ERR::DeepL 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)
@@ -129,5 +158,5 @@ async function jaTrans(text:string) {
if(/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/.test(text)){
return text
}
- return await googleTrans(text,false, 'en','ja')
+ return await runTranslator(text,false, 'en','ja')
}
\ No newline at end of file