diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index ecd278585d..5792038d29 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -1820,7 +1820,7 @@ "close": "Close", "closed": "Translation closed", "copied": "Translation content copied", - "detected.language": "Detected Language", + "detected.language": "Auto Detect", "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 99e29e6a8e..d7e5491ea7 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -1853,7 +1853,7 @@ "menu": { "description": "對當前輸入框內容進行翻譯" }, - "detected.language": "検出された言語" + "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 5a5308ed2c..a7a759d0ba 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -1853,7 +1853,7 @@ "menu": { "description": "Перевести содержимое текущего ввода" }, - "detected.language": "Обнаруженный язык" + "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 3b8ab324c2..5d7b05fe37 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -1853,7 +1853,7 @@ }, "title": "翻译", "tooltip.newline": "换行", - "detected.language": "检测到的语言" + "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 05a658b74d..a17ae514b0 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -1853,7 +1853,7 @@ "menu": { "description": "對當前輸入框內容進行翻譯" }, - "detected.language": "檢測到的語言" + "detected.language": "自動檢測" }, "tray": { "quit": "結束", diff --git a/src/renderer/src/pages/translate/TranslatePage.tsx b/src/renderer/src/pages/translate/TranslatePage.tsx index 7653aba898..470ada1c7c 100644 --- a/src/renderer/src/pages/translate/TranslatePage.tsx +++ b/src/renderer/src/pages/translate/TranslatePage.tsx @@ -215,6 +215,7 @@ const TranslatePage: FC = () => { const [bidirectionalPair, setBidirectionalPair] = useState<[string, string]>(['english', 'chinese']) const [settingsVisible, setSettingsVisible] = useState(false) const [detectedLanguage, setDetectedLanguage] = useState(null) + const [sourceLanguage, setSourceLanguage] = useState('auto') // 添加用户选择的源语言状态 const contentContainerRef = useRef(null) const textAreaRef = useRef(null) const outputTextRef = useRef(null) @@ -288,10 +289,17 @@ const TranslatePage: FC = () => { setLoading(true) try { - const sourceLanguage = await detectLanguage(text) - console.log('检测到的语言:', sourceLanguage) - setDetectedLanguage(sourceLanguage) - const result = determineTargetLanguage(sourceLanguage, targetLanguage, isBidirectional, bidirectionalPair) + // 确定源语言:如果用户选择了特定语言,使用用户选择的;如果选择'auto',则自动检测 + let actualSourceLanguage: string + if (sourceLanguage === 'auto') { + actualSourceLanguage = await detectLanguage(text) + console.log('检测到的语言:', actualSourceLanguage) + setDetectedLanguage(actualSourceLanguage) // 更新检测到的语言 + } else { + actualSourceLanguage = sourceLanguage + } + + const result = determineTargetLanguage(actualSourceLanguage, targetLanguage, isBidirectional, bidirectionalPair) if (!result.success) { let errorMessage = '' if (result.errorType === 'same_language') { @@ -324,7 +332,7 @@ const TranslatePage: FC = () => { } }) - await saveTranslateHistory(text, translatedText, sourceLanguage, actualTargetLanguage) + await saveTranslateHistory(text, translatedText, actualSourceLanguage, actualTargetLanguage) setLoading(false) } catch (error) { console.error('Translation error:', error) @@ -498,15 +506,28 @@ const TranslatePage: FC = () => {