fix: update source language handling and persist user selection in TranslatePage component (#7243)

This commit is contained in:
自由的世界人 2025-06-22 12:28:31 +08:00 committed by GitHub
parent c660aaba3d
commit d9b8e68c30
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -229,7 +229,7 @@ const TranslatePage: FC = () => {
const [bidirectionalPair, setBidirectionalPair] = useState<[string, string]>(['english', 'chinese'])
const [settingsVisible, setSettingsVisible] = useState(false)
const [detectedLanguage, setDetectedLanguage] = useState<string | null>(null)
const [sourceLanguage, setSourceLanguage] = useState<string>('auto') // 添加用户选择的源语言状态
const [sourceLanguage, setSourceLanguage] = useState<string>('auto')
const contentContainerRef = useRef<HTMLDivElement>(null)
const textAreaRef = useRef<TextAreaRef>(null)
const outputTextRef = useRef<HTMLDivElement>(null)
@ -307,8 +307,7 @@ const TranslatePage: FC = () => {
let actualSourceLanguage: string
if (sourceLanguage === 'auto') {
actualSourceLanguage = await detectLanguage(text)
console.log('检测到的语言:', actualSourceLanguage)
setDetectedLanguage(actualSourceLanguage) // 更新检测到的语言
setDetectedLanguage(actualSourceLanguage)
} else {
actualSourceLanguage = sourceLanguage
}
@ -385,6 +384,9 @@ const TranslatePage: FC = () => {
const targetLang = await db.settings.get({ id: 'translate:target:language' })
targetLang && setTargetLanguage(targetLang.value)
const sourceLang = await db.settings.get({ id: 'translate:source:language' })
sourceLang && setSourceLanguage(sourceLang.value)
const bidirectionalPairSetting = await db.settings.get({ id: 'translate:bidirectional:pair' })
if (bidirectionalPairSetting) {
const langPair = bidirectionalPairSetting.value
@ -526,12 +528,15 @@ const TranslatePage: FC = () => {
value={sourceLanguage}
style={{ width: 180 }}
optionFilterProp="label"
onChange={(value) => setSourceLanguage(value)}
onChange={(value) => {
setSourceLanguage(value)
db.settings.put({ id: 'translate:source:language', value })
}}
options={[
{
value: 'auto',
label: detectedLanguage
? `${t('translate.detected.language')}(${t(`languages.${detectedLanguage.toLowerCase()}`)})`
? `${t('translate.detected.language')} (${t(`languages.${detectedLanguage.toLowerCase()}`)})`
: t('translate.detected.language')
},
...translateLanguageOptions().map((lang) => ({