From c4f4d0fea9a0eb0c74cbad899abab66a92e19dd1 Mon Sep 17 00:00:00 2001 From: xunbu Date: Sun, 5 Oct 2025 20:23:24 +0800 Subject: [PATCH] =?UTF-8?q?json=E5=B7=A5=E4=BD=9C=E6=B5=81=E6=94=B9?= =?UTF-8?q?=E7=94=A8json=5Frepair?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docutranslate/__init__.py | 2 +- docutranslate/translator/ai_translator/json_translator.py | 6 +++--- 更新日志.txt | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docutranslate/__init__.py b/docutranslate/__init__.py index f3599d8..a526e25 100644 --- a/docutranslate/__init__.py +++ b/docutranslate/__init__.py @@ -1,3 +1,3 @@ # SPDX-FileCopyrightText: 2025 QinHan # SPDX-License-Identifier: MPL-2.0 -__version__="1.4.8" \ No newline at end of file +__version__="1.4.8.a1" \ No newline at end of file diff --git a/docutranslate/translator/ai_translator/json_translator.py b/docutranslate/translator/ai_translator/json_translator.py index 85a2503..72beb01 100644 --- a/docutranslate/translator/ai_translator/json_translator.py +++ b/docutranslate/translator/ai_translator/json_translator.py @@ -1,5 +1,6 @@ # SPDX-FileCopyrightText: 2025 QinHan # SPDX-License-Identifier: MPL-2.0 +import json_repair import json from dataclasses import dataclass from typing import Self, Any, Tuple, List @@ -120,7 +121,7 @@ class JsonTranslator(AiTranslator): 4. 将翻译回来的文本根据其原始位置,更新回JSON对象中。 5. 将更新后的 content 写回 document。 """ - content = json.loads(document.content.decode()) + content = json_repair.loads(document.content.decode()) # 步骤 1: 提取所有需要翻译的字符串及其位置 original_texts, update_targets = self._collect_strings_for_translation(content) @@ -144,13 +145,12 @@ class JsonTranslator(AiTranslator): # 步骤 3: 将翻译结果写回原始JSON对象 self._apply_translations(update_targets, translated_texts) - document.content = json.dumps(content, ensure_ascii=False, indent=2).encode('utf-8') return self async def translate_async(self, document: Document) -> Self: - content = json.loads(document.content.decode()) + content = json_repair.loads(document.content.decode()) # 步骤 1: 提取所有需要翻译的字符串及其位置 original_texts, update_targets = self._collect_strings_for_translation(content) diff --git a/更新日志.txt b/更新日志.txt index 5ab0634..0dbe644 100644 --- a/更新日志.txt +++ b/更新日志.txt @@ -1,5 +1,9 @@ 更新日志 ---------------- +v1.4.9.a1版 2025.10.5 +优化 +- 提升json翻译工作流对json格式容错率 +---------------- v1.4.8版 2025.10.4 特性 - 生成术语表支持自定义提示词