1、翻译内容
This commit is contained in:
		| @ -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 | ||||
|  | ||||
| @ -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: | ||||
|  | ||||
| @ -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 | ||||
| @ -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: | ||||
|  | ||||
| @ -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字符限制") | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user