mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-28 21:42:27 +08:00
fix: throw error when translate language detection failed (#9393)
* docs(ApiService): 为语言检测函数添加详细注释并修改错误处理 移除冗余的try-catch块,改为依赖shouldThrow参数控制错误抛出 * fix(翻译动作): 添加语言检测错误处理 捕获语言检测时的异常并记录错误日志,防止未处理的异常导致应用崩溃 * docs(ApiService): 修正语言检测函数的返回注释说明 原注释说明检测失败会返回空字符串,实际实现会抛出错误,修正注释以反映实际行为 * fix: 移除语言检测中多余的或空字符串检查
This commit is contained in:
parent
c7dcbdcb5b
commit
44b2d09e63
@ -615,6 +615,14 @@ interface FetchLanguageDetectionProps {
|
||||
onResponse?: (text: string, isComplete: boolean) => void
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测文本语言
|
||||
* @param params - 参数对象
|
||||
* @param {string} params.text - 需要检测语言的文本内容
|
||||
* @param {function} [params.onResponse] - 流式响应回调函数,用于实时获取检测结果
|
||||
* @returns {Promise<string>} 返回检测到的语言代码,如果检测失败会抛出错误
|
||||
* @throws {Error}
|
||||
*/
|
||||
export async function fetchLanguageDetection({ text, onResponse }: FetchLanguageDetectionProps) {
|
||||
const translateLanguageOptions = await getTranslateOptions()
|
||||
const listLang = translateLanguageOptions.map((item) => item.langCode)
|
||||
@ -661,16 +669,13 @@ export async function fetchLanguageDetection({ text, onResponse }: FetchLanguage
|
||||
assistant,
|
||||
streamOutput: stream,
|
||||
enableReasoning: false,
|
||||
shouldThrow: true,
|
||||
onResponse
|
||||
}
|
||||
|
||||
const AI = new AiProvider(provider)
|
||||
|
||||
try {
|
||||
return (await AI.completions(params)).getText() || ''
|
||||
} catch (error: any) {
|
||||
return ''
|
||||
}
|
||||
return (await AI.completions(params)).getText()
|
||||
}
|
||||
|
||||
export async function fetchMessagesSummary({ messages, assistant }: { messages: Message[]; assistant: Assistant }) {
|
||||
|
||||
@ -9,7 +9,7 @@ import { useSettings } from '@renderer/hooks/useSettings'
|
||||
import useTranslate from '@renderer/hooks/useTranslate'
|
||||
import MessageContent from '@renderer/pages/home/Messages/MessageContent'
|
||||
import { getDefaultTopic, getDefaultTranslateAssistant } from '@renderer/services/AssistantService'
|
||||
import { Assistant, Topic, TranslateLanguage } from '@renderer/types'
|
||||
import { Assistant, Topic, TranslateLanguage, TranslateLanguageCode } from '@renderer/types'
|
||||
import type { ActionItem } from '@renderer/types/selectionTypes'
|
||||
import { runAsyncFunction } from '@renderer/utils'
|
||||
import { abortCompletion } from '@renderer/utils/abortController'
|
||||
@ -114,7 +114,15 @@ const ActionTranslate: FC<Props> = ({ action, scrollToBottom }) => {
|
||||
|
||||
setIsLoading(true)
|
||||
|
||||
const sourceLanguageCode = await detectLanguage(action.selectedText)
|
||||
let sourceLanguageCode: TranslateLanguageCode
|
||||
|
||||
try {
|
||||
sourceLanguageCode = await detectLanguage(action.selectedText)
|
||||
} catch (err) {
|
||||
onError(err instanceof Error ? err : new Error('An error occurred'))
|
||||
logger.error('Error detecting language:', err as Error)
|
||||
return
|
||||
}
|
||||
|
||||
let translateLang: TranslateLanguage
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user