From 11b130736c21e5c11c8d68320e00b78d4079e0d0 Mon Sep 17 00:00:00 2001 From: Phantom <59059173+EurFelux@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:42:33 +0800 Subject: [PATCH] fix(Translate): update settings into db (#9305) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(翻译): 修复设置没有储存到db的错误 * fix(translate): 修复自动检测方法设置更新失败的问题 添加错误处理逻辑,当更新自动检测方法设置失败时显示错误信息 --- src/renderer/src/i18n/locales/en-us.json | 3 ++- src/renderer/src/i18n/locales/ja-jp.json | 3 ++- src/renderer/src/i18n/locales/ru-ru.json | 3 ++- src/renderer/src/i18n/locales/zh-cn.json | 3 ++- src/renderer/src/i18n/locales/zh-tw.json | 3 ++- src/renderer/src/i18n/translate/el-gr.json | 3 ++- src/renderer/src/i18n/translate/es-es.json | 3 ++- src/renderer/src/i18n/translate/fr-fr.json | 3 ++- src/renderer/src/i18n/translate/pt-pt.json | 3 ++- src/renderer/src/pages/translate/TranslatePage.tsx | 14 +++++++++++++- .../src/pages/translate/TranslateSettings.tsx | 4 ++-- 11 files changed, 33 insertions(+), 12 deletions(-) diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 36f5e61b16..2af6c5a9ad 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -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", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index c386c301ac..c70be947da 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -3702,7 +3702,8 @@ "error": { "detect": { "qwen_mt": "QwenMTモデルは言語検出に使用できません", - "unknown": "検出された言語は不明です" + "unknown": "検出された言語は不明です", + "update_setting": "設定に失敗しました" }, "empty": "翻訳結果が空の内容です", "failed": "翻訳に失敗しました", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index aed6241d8d..22494fb87b 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -3702,7 +3702,8 @@ "error": { "detect": { "qwen_mt": "Модель QwenMT не может использоваться для определения языка", - "unknown": "Обнаружен неизвестный язык" + "unknown": "Обнаружен неизвестный язык", + "update_setting": "Настройка не удалась" }, "empty": "Результат перевода пуст", "failed": "Перевод не удалось", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 60b5a544dc..a17b0f2247 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -3702,7 +3702,8 @@ "error": { "detect": { "qwen_mt": "QwenMT模型不能用于语言检测", - "unknown": "检测到未知语言" + "unknown": "检测到未知语言", + "update_setting": "设置失败" }, "empty": "翻译结果为空内容", "failed": "翻译失败", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 8487289fdf..03e6f671ef 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -3702,7 +3702,8 @@ "error": { "detect": { "qwen_mt": "QwenMT模型不能用於語言檢測", - "unknown": "檢測到未知語言" + "unknown": "檢測到未知語言", + "update_setting": "設定失敗" }, "empty": "翻译结果为空内容", "failed": "翻譯失敗", diff --git a/src/renderer/src/i18n/translate/el-gr.json b/src/renderer/src/i18n/translate/el-gr.json index 9cf801e5ef..c694511a2f 100644 --- a/src/renderer/src/i18n/translate/el-gr.json +++ b/src/renderer/src/i18n/translate/el-gr.json @@ -3702,7 +3702,8 @@ "error": { "detect": { "qwen_mt": "Το μοντέλο QwenMT δεν μπορεί να χρησιμοποιηθεί για εντοπισμό γλώσσας", - "unknown": "Ανιχνεύθηκε άγνωστη γλώσσα" + "unknown": "Ανιχνεύθηκε άγνωστη γλώσσα", + "update_setting": "Η ρύθμιση απέτυχε" }, "empty": "το αποτέλεσμα της μετάφρασης είναι κενό περιεχόμενο", "failed": "Η μετάφραση απέτυχε", diff --git a/src/renderer/src/i18n/translate/es-es.json b/src/renderer/src/i18n/translate/es-es.json index 6e1a1c4d59..1a31c3861d 100644 --- a/src/renderer/src/i18n/translate/es-es.json +++ b/src/renderer/src/i18n/translate/es-es.json @@ -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", diff --git a/src/renderer/src/i18n/translate/fr-fr.json b/src/renderer/src/i18n/translate/fr-fr.json index 570e600437..ed45fd124d 100644 --- a/src/renderer/src/i18n/translate/fr-fr.json +++ b/src/renderer/src/i18n/translate/fr-fr.json @@ -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", diff --git a/src/renderer/src/i18n/translate/pt-pt.json b/src/renderer/src/i18n/translate/pt-pt.json index 20cae5287a..2157fcb51e 100644 --- a/src/renderer/src/i18n/translate/pt-pt.json +++ b/src/renderer/src/i18n/translate/pt-pt.json @@ -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", diff --git a/src/renderer/src/pages/translate/TranslatePage.tsx b/src/renderer/src/pages/translate/TranslatePage.tsx index b04c332f30..923aedaa22 100644 --- a/src/renderer/src/pages/translate/TranslatePage.tsx +++ b/src/renderer/src/pages/translate/TranslatePage.tsx @@ -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) => { const isEnterPressed = e.key === 'Enter' @@ -530,7 +542,7 @@ const TranslatePage: FC = () => { setBidirectionalPair={setBidirectionalPair} translateModel={translateModel} autoDetectionMethod={autoDetectionMethod} - setAutoDetectionMethod={setAutoDetectionMethod} + setAutoDetectionMethod={updateAutoDetectionMethod} /> ) diff --git a/src/renderer/src/pages/translate/TranslateSettings.tsx b/src/renderer/src/pages/translate/TranslateSettings.tsx index 3fa4c6fe49..f26fad8114 100644 --- a/src/renderer/src/pages/translate/TranslateSettings.tsx +++ b/src/renderer/src/pages/translate/TranslateSettings.tsx @@ -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> + setAutoDetectionMethod: (method: AutoDetectionMethod) => void }> = ({ visible, onClose,