improve translation

This commit is contained in:
kwaroran
2024-06-18 21:55:22 +09:00
parent 0925431588
commit f4c10b8395
4 changed files with 44 additions and 14 deletions

View File

@@ -1,6 +1,6 @@
<script lang="ts">
import { ArrowLeft, ArrowRight, PencilIcon, LanguagesIcon, RefreshCcwIcon, TrashIcon, CopyIcon, Volume2Icon, BotIcon, ArrowLeftRightIcon, UserIcon } from "lucide-svelte";
import { ParseMarkdown, type simpleCharacterArgument } from "../../ts/parser";
import { ParseMarkdown, postTranslationParse, type simpleCharacterArgument } from "../../ts/parser";
import AutoresizeArea from "../UI/GUI/TextAreaResizable.svelte";
import { alertConfirm, alertError, alertRequestData } from "../../ts/alert";
import { language } from "../../lang";
@@ -102,13 +102,25 @@
} catch (error) {}
}
if(translateText){
const marked = await ParseMarkdown(data, charArg, mode, chatID)
translating = true
const translated = await translateHTML(marked, false, charArg, chatID)
translating = false
lastParsed = translated
lastCharArg = charArg
return translated
if(!$DataBase.legacyTranslation){
const marked = await ParseMarkdown(data, charArg, 'pretranslate', chatID)
translating = true
console.log(marked)
const translated = postTranslationParse(await translateHTML(marked, false, charArg, chatID))
translating = false
lastParsed = translated
lastCharArg = charArg
return translated
}
else{
const marked = await ParseMarkdown(data, charArg, mode, chatID)
translating = true
const translated = await translateHTML(marked, false, charArg, chatID)
translating = false
lastParsed = translated
lastCharArg = charArg
return translated
}
}
else{
const marked = await ParseMarkdown(data, charArg, mode, chatID)

View File

@@ -117,6 +117,9 @@
<Help key="removePunctuationHypa"/>
</Check>
</div>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.legacyTranslation} name="Legacy Translator" />
</div>
<div class="flex items-center mt-4">
<Check bind:check={$DataBase.dynamicAssets} name={language.dynamicAssets}>
<Help key="dynamicAssets"/>

View File

@@ -169,25 +169,24 @@ export interface simpleCharacterArgument{
}
export async function ParseMarkdown(data:string, charArg:(character|simpleCharacterArgument | groupChat | string) = null, mode:'normal'|'back' = 'normal', chatID=-1) {
export async function ParseMarkdown(data:string, charArg:(character|simpleCharacterArgument | groupChat | string) = null, mode:'normal'|'back'|'pretranslate' = 'normal', chatID=-1) {
let firstParsed = ''
const orgDat = data
const db = get(DataBase)
const additionalAssetMode = (mode === 'back') ? 'back' : 'normal'
let char = (typeof(charArg) === 'string') ? (findCharacterbyId(charArg)) : (charArg)
if(char && char.type !== 'group'){
data = await parseAdditionalAssets(data, char, mode, 'pre')
data = await parseAdditionalAssets(data, char, additionalAssetMode, 'pre')
firstParsed = data
}
if(char){
data = (await processScriptFull(char, data, 'editdisplay', chatID)).data
}
if(firstParsed !== data && char && char.type !== 'group'){
data = await parseAdditionalAssets(data, char, mode, 'post')
data = await parseAdditionalAssets(data, char, additionalAssetMode, 'post')
}
data = await parseInlayImages(data)
data = encodeStyle(data)
if(mode !== 'back'){
if(mode === 'normal'){
data = risuFormater(data)
data = mconverted.parse(data)
}
@@ -197,6 +196,20 @@ export async function ParseMarkdown(data:string, charArg:(character|simpleCharac
}))
}
export function postTranslationParse(data:string){
let lines = risuFormater(data).split('\n')
for(let i=0;i<lines.length;i++){
const trimed = lines[i].trim()
if(trimed.startsWith('<')){
lines[i] = trimed
}
}
data = mconverted.parse(lines.join('\n'))
return data
}
export function parseMarkdownSafe(data:string) {
return DOMPurify.sanitize(mconverted.parse(data), {
FORBID_TAGS: ["a", "style"],

View File

@@ -418,6 +418,7 @@ export function setDatabase(data:Database){
data.lineHeight ??= 1.25
data.stabilityModel ??= 'sd3-large'
data.stabllityStyle ??= ''
data.legacyTranslation ??= false
changeLanguage(data.language)
DataBase.set(data)
}
@@ -691,6 +692,7 @@ export interface Database{
stabilityModel: string
stabilityKey: string
stabllityStyle: string
legacyTranslation: boolean
}
export interface customscript{