mirror of
https://github.com/Physton/sd-webui-prompt-all-in-one.git
synced 2026-05-01 11:41:46 +00:00
Modify the batch translation button to stop translation when clicked during translation
Former-commit-id: afe10c8f6349a3908fb13044308355cb59d94749
This commit is contained in:
@@ -1 +1 @@
|
||||
8d4bdf477e0e63a5f8d4a645b80e62ea5c68469d
|
||||
9c068d1d470911810bea124edae4ce5372f70370
|
||||
@@ -1 +1 @@
|
||||
181e07ea47752d8bf7605092d912ac75f8b7376e
|
||||
29cf5f5b8e25714298cade003f51f052e1d6ef7f
|
||||
@@ -1 +1 @@
|
||||
d53222c7c31e9cabc1996fe36cc5389f0c6729c0
|
||||
1616fc1a1d3c8fcd5501496d8989546f8dde0083
|
||||
@@ -29,6 +29,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
cancelMultiTranslate: false,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -106,27 +107,34 @@ export default {
|
||||
})
|
||||
},
|
||||
async translateMulti(texts, from_lang, to_lang, callback, complete = null, translateApi = null, translateApiConfig = null) {
|
||||
this.cancelMultiTranslate = false
|
||||
translateApi = translateApi || this.translateApi
|
||||
translateApiConfig = translateApiConfig || this.translateApiConfig || {}
|
||||
if (translateApi === 'openai') {
|
||||
// 使用openai翻译,先把所有需要翻译的文本改为JSON数组格式,然后一次性请求,完成后在解析数组
|
||||
let needTranslateTexts = []
|
||||
for (const index in texts) {
|
||||
const text = texts[index]
|
||||
if (common.canTranslate(text)) {
|
||||
// 如果需要翻译
|
||||
let translateText = this.translateByCSV(text, from_lang, to_lang)
|
||||
if (translateText) {
|
||||
// 如果从CSV中翻译成功了
|
||||
callback(this._translateRes(true, '', text, translateText, from_lang, to_lang, translateApi, translateApiConfig), index)
|
||||
} else {
|
||||
// 如果从CSV中没有翻译成功,就放到需要翻译的数组中
|
||||
needTranslateTexts.push({
|
||||
"text": text,
|
||||
"index": index
|
||||
})
|
||||
}
|
||||
} else {
|
||||
// 如果不需要翻译,直接返回
|
||||
callback(this._translateRes(true, '', text, text, from_lang, to_lang, translateApi, translateApiConfig), index)
|
||||
}
|
||||
}
|
||||
if (needTranslateTexts.length === 0) {
|
||||
// 如果没有需要翻译的文本,直接返回
|
||||
if (complete) complete()
|
||||
return
|
||||
}
|
||||
@@ -160,6 +168,7 @@ export default {
|
||||
if (complete) complete()
|
||||
})
|
||||
} else if (translateApiConfig.concurrent && translateApiConfig.concurrent >= texts.length) {
|
||||
// 如果并发数大于等于需要翻译的文本数,并发翻译
|
||||
let completeCount = texts.length
|
||||
const completeFunc = () => {
|
||||
completeCount--
|
||||
@@ -167,7 +176,6 @@ export default {
|
||||
if (complete) complete()
|
||||
}
|
||||
}
|
||||
// 如果并发数大于等于需要翻译的文本数,并发翻译
|
||||
for (const index in texts) {
|
||||
const text = texts[index]
|
||||
this.translate(text, from_lang, to_lang, translateApi, translateApiConfig).then(res => {
|
||||
@@ -182,6 +190,11 @@ export default {
|
||||
// 一个个翻译
|
||||
for (const index in texts) {
|
||||
const text = texts[index]
|
||||
if (this.cancelMultiTranslate) {
|
||||
// 如果取消了翻译,跳过
|
||||
callback(this._translateRes(true, '', text, '', from_lang, to_lang, translateApi, translateApiConfig), index)
|
||||
continue
|
||||
}
|
||||
try {
|
||||
let res = (await this.translate(text, from_lang, to_lang, translateApi, translateApiConfig))
|
||||
callback(res, index)
|
||||
|
||||
Reference in New Issue
Block a user