1、翻译内容

This commit is contained in:
2025-07-11 14:35:55 +08:00
parent 6d0727de4f
commit c59d13a3f0
7 changed files with 52 additions and 39 deletions

View File

@ -41,6 +41,7 @@ def translate_api(request):
status=status.HTTP_400_BAD_REQUEST
)
print(f"请求数据:{data}")
# 检查必填参数
required_fields = ['translation_service', 'target_lang', 'text', 'username', 'key']
missing_fields = [field for field in required_fields if field not in data]
@ -106,7 +107,6 @@ def translate_api(request):
status=status.HTTP_400_BAD_REQUEST
)
except Users.MultipleObjectsReturned:
logger.error(f"用户{username} 111111111111111")
return Response(
{"error": f"您登录的账号存在多个,请联系管理员检查登录账号唯一性"},
status=status.HTTP_400_BAD_REQUEST
@ -158,12 +158,20 @@ def translate_api(request):
# 判断翻译服务
try:
print("translation_service:",translation_service)
query_service = TranslationService.objects.get(service_type=translation_service)
query_code = StatusCode.objects.get(google_coding=target_lang, translation_service=translation_service)
if source_lang!='auto':
source_code = StatusCode.objects.get(google_coding=source_lang, translation_service=translation_service)
source_lang = source_code.translation_coding
k_1 = query_service.api_key
k_2 = query_service.api_secret
#根据服务调用翻译 编码 文本 服务 获取返回
try:
print("source_lang:",source_lang)
print("query_code.translation_coding:",query_code.translation_coding)
# 调用翻译api
translate_text = get_translate_text(source_lang=source_lang,target_lang=query_code.translation_coding,translation_service=translation_service,text=text,k_1 =k_1,k_2 =k_2)
# 端口/字符
@ -189,42 +197,24 @@ def translate_api(request):
{"error": f"设备字符添加失败"},
status=status.HTTP_400_BAD_REQUEST
)
# 翻译记录存储
# save_record = TranslationRecord(
# translation_service=translation_service,
# username=username,
# consumption=char_count,
# source_text=text,
# target_lang=target_lang,
# translated_text=translate_text,
# device=device,
# result=True,
# creator_id=user.id,
# dept_belong_id=4,
# platform = platform,
# contact_id=contact_id,
# current_id=current_id,
# contact_name=contact_name,
# )
# save_record.save()
return Response(
{"translate_text": translate_text},
)
except Exception as e:
print(f"翻译服务调用失败:{e} ")
return Response(
{"error": f"翻译服务调用失败,请检查:{e}"},
status=status.HTTP_400_BAD_REQUEST
)
except Exception as e:
print(f"查询翻译服务出错:{e} ")
return Response(
{"error": f"查询翻译服务或者编码出错:{e} "},
status=status.HTTP_400_BAD_REQUEST
)
except Exception as e:
print(f"翻译服务调用失败:{e} ")
return Response(
{"error": f"翻译失败,请重试或更换翻译服务!"},
status=status.HTTP_400_BAD_REQUEST

View File

@ -17,11 +17,15 @@ def aggregate_translate(text, source_lang, target_lang,platform, api_key):
translator = AggregateTranslator(api_key)
return translator.translate(text, source_lang, target_lang,platform)
except RuntimeError as e:
return f"翻译失败: {str(e)}"
print(f"{str(e)}")
raise RuntimeError(f"{str(e)}") from e
# return f"翻译失败: {str(e)}"
class AggregateTranslator:
def __init__(self, api_key: str):
self.api_url = f"http://www.apiapl.com/open-api/v1/translate"
# self.api_url = f"http://www.apiapl.com/open-api/v1/translate"
self.api_url = f"http://192.168.2.22:8085/open-api/v1/translate"
self.api_key = api_key
def translate(self, text: str, source_lang: str = "auto", target_lang: str = "EN",paltform:str = "deepseek") -> str:
@ -33,7 +37,7 @@ class AggregateTranslator:
}
try:
print("参数", params)
print("参数111", params)
headers = {
'x-api-key':self.api_key,
@ -45,20 +49,33 @@ class AggregateTranslator:
json=params,
timeout=10
)
response.raise_for_status()
result = response.json()
print("结果", result)
# 判断是否是成功响应
if isinstance(result, dict):
if result.get("code") == 200 and "data" in result:
return result["data"]["translatedText"]
elif "message" in result:
raise RuntimeError(f"翻译失败: {result['message']}")
elif "msg" in result:
raise RuntimeError(f"翻译失败: {result['msg']}")
else:
raise RuntimeError("未知的响应格式")
else:
raise RuntimeError("响应格式异常")
# except requests.exceptions.HTTPError as http_err:
# # HTTP 错误(如 404 Not Found, 500 Internal Server Error 等)
# print(f"HTTP 错误发生: {http_err}")
# except requests.exceptions.ConnectionError as conn_err:
# # 连接错误(如网络问题,目标服务器无响应)
# print(f"连接错误发生: {conn_err}")
# except requests.exceptions.Timeout as timeout_err:
# # 请求超时
# print(f"请求超时: {timeout_err}")
# except requests.exceptions.RequestException as req_err:
# # 其他所有请求相关的错误
# print(f"请求过程中发生未知错误: {req_err}")
except requests.exceptions.RequestException as e:
raise RuntimeError(f"请求失败: {str(e)}")
except json.JSONDecodeError:

View File

@ -9,23 +9,32 @@ from .aggregate_translate import aggregate_translate
def get_translate_text(source_lang,target_lang,translation_service,text,k_1,k_2):
print("service:",translation_service)
print(f"{translation_service}")
translate_text = ""
# 判断翻译服务
if translation_service == "baidu":
translate_text = baidu_translate(text=text,target_lang=target_lang,app_id=k_1,app_key=k_2 )
# translate_text = baidu_translate(text=text,target_lang=target_lang,app_id=k_1,app_key=k_2 )
translate_text=aggregate_translate(text=text,source_lang=source_lang, target_lang=target_lang,platform="baidu_trans", api_key=k_1)
elif translation_service == "xiaoNiu":
translate_text = xiaoniu_translate(text=text, target_lang=target_lang, app_id=k_1,app_key=k_2)
elif translation_service == "huoShan":
translate_text = huoshan_translate(text=text, target_lang=target_lang, app_id=k_1,app_key=k_2)
# translate_text = huoshan_translate(text=text, target_lang=target_lang, app_id=k_1,app_key=k_2)
translate_text=aggregate_translate(text=text,source_lang=source_lang, target_lang=target_lang,platform="huoshan_trans", api_key=k_1)
elif translation_service == "youDao":
translate_text = youdao_translate(text=text, target_lang=target_lang, app_id=k_1, app_key=k_2)
# translate_text = youdao_translate(text=text, target_lang=target_lang, app_id=k_1, app_key=k_2)
translate_text=aggregate_translate(text=text,source_lang=source_lang, target_lang=target_lang,platform="youdao_trans", api_key=k_1)
elif translation_service == "tengXun":
translate_text = tencent_translate(text=text, target_lang=target_lang, app_id=k_1, app_key=k_2)
elif translation_service == "deepl":
translate_text = aggregate_translate(text=text,source_lang=source_lang, target_lang=target_lang,platform=translation_service, api_key=k_1)
elif translation_service=="deepseek":
translate_text = aggregate_translate(text=text, source_lang=source_lang, target_lang=target_lang,platform=translation_service, api_key=k_1)
elif translation_service=="google":
translate_text = aggregate_translate(text=text, source_lang=source_lang, target_lang=target_lang,platform="google_trans", api_key=k_1)
elif translation_service=="bing":
translate_text = aggregate_translate(text=text, source_lang=source_lang, target_lang=target_lang,platform="bing_trans", api_key=k_1)
elif translation_service=="chatGpt4o":
translate_text = aggregate_translate(text=text, source_lang=source_lang, target_lang=target_lang,platform="chatgpt-4o_trans", api_key=k_1)
# 调用
print(translate_text)
return translate_text

View File

@ -112,8 +112,8 @@ class TencentTranslator:
elif not isinstance(text, list):
raise TypeError("text参数必须为字符串或列表")
if len(text) > 100:
raise ValueError("单次请求最多支持100条文本")
# if len(text) > 100:
# raise ValueError("单次请求最多支持100条文本")
total_length = sum(len(t) for t in text)
if total_length > 3000:

View File

@ -112,9 +112,6 @@ class TencentIntlTranslator:
if not isinstance(text, str):
raise TypeError("text 参数必须为单条字符串")
if len(text) > 100:
raise ValueError("单次请求最多支持100条文本")
total_length = sum(len(t) for t in text)
if total_length > 3000:
raise ValueError("总文本长度超过3000字符限制")

View File

@ -2,7 +2,7 @@
ENV = 'development'
# 本地环境接口地址
VITE_API_URL = 'http://127.0.0.1:8000'
VITE_API_URL = 'http://192.168.2.22:8000'
#VITE_API_URL = 'https://fyapi.suyou.online'
# 是否启用按钮权限
VITE_PM_ENABLED = true

View File

@ -3,7 +3,7 @@ ENV = 'production'
# 线上环境接口地址
VITE_API_URL = 'http://111.230.24.108:8005/'
VITE_API_URL = 'http://haiapp.org/'
# 是否启用按钮权限
VITE_PM_ENABLED = true