From 86d7e0240bfc01ab28f469b4feff2275023307ed Mon Sep 17 00:00:00 2001 From: Pleasurecruise <3196812536@qq.com> Date: Thu, 29 May 2025 15:13:24 +0800 Subject: [PATCH] fix: ui/ux --- src/renderer/src/i18n/locales/en-us.json | 1 + src/renderer/src/i18n/locales/ja-jp.json | 3 +- src/renderer/src/i18n/locales/ru-ru.json | 7 +- src/renderer/src/i18n/locales/zh-cn.json | 3 +- src/renderer/src/i18n/locales/zh-tw.json | 3 +- .../src/pages/translate/TranslatePage.tsx | 137 ++++++++++-------- 6 files changed, 91 insertions(+), 63 deletions(-) diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index c43d0ae0df..f89c26446c 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -1766,6 +1766,7 @@ "close": "Close", "closed": "Translation closed", "copied": "Translation content copied", + "detected.language": "Detected Language", "empty": "Translation content is empty", "not.found": "Translation content not found", "confirm": { diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index d95e636251..9eb9eaaaaa 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -1798,7 +1798,8 @@ "tooltip.newline": "改行", "menu": { "description": "對當前輸入框內容進行翻譯" - } + }, + "detected.language": "検出された言語" }, "tray": { "quit": "終了", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 40540e5343..84e147aa61 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -1791,14 +1791,15 @@ "model": "Настройки модели", "model_desc": "Модель, используемая для службы перевода", "bidirectional": "Настройки двунаправленного перевода", - "directional_tip": "После включения поддерживается только двунаправленный перевод между исходным и целевым языками", - "scroll_sync": "Настройки синхронизации прокрутки" + "scroll_sync": "Настройки синхронизации прокрутки", + "bidirectional_tip": "Если включено, перевод будет выполняться в обоих направлениях, исходный текст будет переведен на целевой язык и наоборот." }, "title": "Перевод", "tooltip.newline": "Перевести", "menu": { "description": "Перевести содержимое текущего ввода" - } + }, + "detected.language": "Обнаруженный язык" }, "tray": { "quit": "Выйти", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 8577377da7..89a1fec7f7 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -1798,7 +1798,8 @@ "scroll_sync": "滚动同步设置" }, "title": "翻译", - "tooltip.newline": "换行" + "tooltip.newline": "换行", + "detected.language": "检测到的语言" }, "tray": { "quit": "退出", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index b822a4893a..b964a32d7d 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -1798,7 +1798,8 @@ "tooltip.newline": "換行", "menu": { "description": "對當前輸入框內容進行翻譯" - } + }, + "detected.language": "檢測到的語言" }, "tray": { "quit": "結束", diff --git a/src/renderer/src/pages/translate/TranslatePage.tsx b/src/renderer/src/pages/translate/TranslatePage.tsx index 76f259a4fe..c605ecea55 100644 --- a/src/renderer/src/pages/translate/TranslatePage.tsx +++ b/src/renderer/src/pages/translate/TranslatePage.tsx @@ -18,7 +18,7 @@ import { detectLanguage, determineTargetLanguage } from '@renderer/utils/translate' -import { Button, Empty, Flex, Modal, Popconfirm, Select, Space, Switch, Tooltip } from 'antd' +import { Button, Dropdown, Empty, Flex, Modal, Popconfirm, Select, Space, Switch, Tooltip } from 'antd' import TextArea, { TextAreaRef } from 'antd/es/input/TextArea' import dayjs from 'dayjs' import { useLiveQuery } from 'dexie-react-hooks' @@ -214,7 +214,7 @@ const TranslatePage: FC = () => { const [isBidirectional, setIsBidirectional] = useState(false) const [bidirectionalPair, setBidirectionalPair] = useState<[string, string]>(['english', 'chinese']) const [settingsVisible, setSettingsVisible] = useState(false) - const [originalTargetLanguage, setOriginalTargetLanguage] = useState(null) + const [detectedLanguage, setDetectedLanguage] = useState(null) const contentContainerRef = useRef(null) const textAreaRef = useRef(null) const outputTextRef = useRef(null) @@ -289,6 +289,8 @@ const TranslatePage: FC = () => { setLoading(true) try { const sourceLanguage = await detectLanguage(text) + console.log('检测到的语言:', sourceLanguage) + setDetectedLanguage(sourceLanguage) const result = determineTargetLanguage(sourceLanguage, targetLanguage, isBidirectional, bidirectionalPair) if (!result.success) { let errorMessage = '' @@ -337,11 +339,6 @@ const TranslatePage: FC = () => { const toggleBidirectional = (value: boolean) => { setIsBidirectional(value) db.settings.put({ id: 'translate:bidirectional:enabled', value }) - - if (!value && originalTargetLanguage) { - setTargetLanguage(originalTargetLanguage) - setOriginalTargetLanguage(null) - } } const onCopy = () => { @@ -450,70 +447,96 @@ const TranslatePage: FC = () => { {t('translate.history.title')} - - - + {!isEmpty(translateHistory) && ( + + + + )} - {translateHistory && translateHistory.length > 0 ? ( + {translateHistory && translateHistory.length ? ( - {translateHistory.map((history) => ( - onHistoryItemClick(history)}> - {history.sourceText} - - {dayjs(history.createdAt).format('MM-DD HH:mm')} -