fix(Translate): update settings into db (#9305)

* fix(翻译): 修复设置没有储存到db的错误

* fix(translate): 修复自动检测方法设置更新失败的问题

添加错误处理逻辑,当更新自动检测方法设置失败时显示错误信息
This commit is contained in:
Phantom 2025-08-20 17:42:33 +08:00 committed by GitHub
parent 25531ecd76
commit 11b130736c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 33 additions and 12 deletions

View File

@ -3702,7 +3702,8 @@
"error": {
"detect": {
"qwen_mt": "QwenMT model cannot be used for language detection",
"unknown": "Unknown language detected"
"unknown": "Unknown language detected",
"update_setting": "Setting failed"
},
"empty": "The translation result is empty content",
"failed": "Translation failed",

View File

@ -3702,7 +3702,8 @@
"error": {
"detect": {
"qwen_mt": "QwenMTモデルは言語検出に使用できません",
"unknown": "検出された言語は不明です"
"unknown": "検出された言語は不明です",
"update_setting": "設定に失敗しました"
},
"empty": "翻訳結果が空の内容です",
"failed": "翻訳に失敗しました",

View File

@ -3702,7 +3702,8 @@
"error": {
"detect": {
"qwen_mt": "Модель QwenMT не может использоваться для определения языка",
"unknown": "Обнаружен неизвестный язык"
"unknown": "Обнаружен неизвестный язык",
"update_setting": "Настройка не удалась"
},
"empty": "Результат перевода пуст",
"failed": "Перевод не удалось",

View File

@ -3702,7 +3702,8 @@
"error": {
"detect": {
"qwen_mt": "QwenMT模型不能用于语言检测",
"unknown": "检测到未知语言"
"unknown": "检测到未知语言",
"update_setting": "设置失败"
},
"empty": "翻译结果为空内容",
"failed": "翻译失败",

View File

@ -3702,7 +3702,8 @@
"error": {
"detect": {
"qwen_mt": "QwenMT模型不能用於語言檢測",
"unknown": "檢測到未知語言"
"unknown": "檢測到未知語言",
"update_setting": "設定失敗"
},
"empty": "翻译结果为空内容",
"failed": "翻譯失敗",

View File

@ -3702,7 +3702,8 @@
"error": {
"detect": {
"qwen_mt": "Το μοντέλο QwenMT δεν μπορεί να χρησιμοποιηθεί για εντοπισμό γλώσσας",
"unknown": "Ανιχνεύθηκε άγνωστη γλώσσα"
"unknown": "Ανιχνεύθηκε άγνωστη γλώσσα",
"update_setting": "Η ρύθμιση απέτυχε"
},
"empty": "το αποτέλεσμα της μετάφρασης είναι κενό περιεχόμενο",
"failed": "Η μετάφραση απέτυχε",

View File

@ -3702,7 +3702,8 @@
"error": {
"detect": {
"qwen_mt": "El modelo QwenMT no se puede utilizar para la detección de idiomas",
"unknown": "Se detectó un idioma desconocido"
"unknown": "Se detectó un idioma desconocido",
"update_setting": "Configuración fallida"
},
"empty": "El resultado de la traducción está vacío",
"failed": "Fallo en la traducción",

View File

@ -3702,7 +3702,8 @@
"error": {
"detect": {
"qwen_mt": "Le modèle QwenMT ne peut pas être utilisé pour la détection de langues",
"unknown": "Langue inconnue détectée"
"unknown": "Langue inconnue détectée",
"update_setting": "Échec du paramétrage"
},
"empty": "Le résultat de la traduction est un contenu vide",
"failed": "échec de la traduction",

View File

@ -3702,7 +3702,8 @@
"error": {
"detect": {
"qwen_mt": "O modelo QwenMT não pode ser usado para detecção de idioma",
"unknown": "Idioma desconhecido detectado"
"unknown": "Idioma desconhecido detectado",
"update_setting": "Falha na configuração"
},
"empty": "Resultado da tradução está vazio",
"failed": "Tradução falhou",

View File

@ -18,6 +18,7 @@ import { setTranslating as setTranslatingAction } from '@renderer/store/runtime'
import { setTranslatedContent as setTranslatedContentAction } from '@renderer/store/translate'
import type { AutoDetectionMethod, Model, TranslateHistory, TranslateLanguage } from '@renderer/types'
import { runAsyncFunction } from '@renderer/utils'
import { formatErrorMessage } from '@renderer/utils/error'
import {
createInputScrollHandler,
createOutputScrollHandler,
@ -346,6 +347,17 @@ const TranslatePage: FC = () => {
})
}, [getLanguageByLangcode])
// 控制设置同步
const updateAutoDetectionMethod = async (method: AutoDetectionMethod) => {
try {
await db.settings.put({ id: 'translate:detect:method', value: method })
setAutoDetectionMethod(method)
} catch (e) {
logger.error('Failed to update auto detection method setting.', e as Error)
window.message.error(t('translate.error.detect.update_setting') + formatErrorMessage(e))
}
}
// 控制Enter触发翻译
const onKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
const isEnterPressed = e.key === 'Enter'
@ -530,7 +542,7 @@ const TranslatePage: FC = () => {
setBidirectionalPair={setBidirectionalPair}
translateModel={translateModel}
autoDetectionMethod={autoDetectionMethod}
setAutoDetectionMethod={setAutoDetectionMethod}
setAutoDetectionMethod={updateAutoDetectionMethod}
/>
</Container>
)

View File

@ -5,7 +5,7 @@ import useTranslate from '@renderer/hooks/useTranslate'
import { AutoDetectionMethod, Model, TranslateLanguage } from '@renderer/types'
import { Button, Flex, Modal, Radio, Space, Switch, Tooltip } from 'antd'
import { HelpCircle } from 'lucide-react'
import { Dispatch, FC, memo, SetStateAction, useEffect, useState } from 'react'
import { FC, memo, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import TranslateSettingsPopup from '../settings/TranslateSettingsPopup/TranslateSettingsPopup'
@ -23,7 +23,7 @@ const TranslateSettings: FC<{
setBidirectionalPair: (value: [TranslateLanguage, TranslateLanguage]) => void
translateModel: Model | undefined
autoDetectionMethod: AutoDetectionMethod
setAutoDetectionMethod: Dispatch<SetStateAction<AutoDetectionMethod>>
setAutoDetectionMethod: (method: AutoDetectionMethod) => void
}> = ({
visible,
onClose,