From 98ac573a134bf04fd4c2e4576aecddecb3ae79ce Mon Sep 17 00:00:00 2001 From: xunbu Date: Sun, 11 Jan 2026 13:03:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AF=E8=AF=AD=E8=A1=A8?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docutranslate/agents/markdown_agent.py | 1 - docutranslate/agents/segments_agent.py | 1 - .../translator/ai_translator/ass_translator.py | 18 ++++++++++++++---- .../ai_translator/docx_translator.py | 18 ++++++++++++++---- .../ai_translator/epub_translator.py | 18 ++++++++++++++---- .../ai_translator/html_translator.py | 18 ++++++++++++++---- .../ai_translator/json_translator.py | 18 ++++++++++++++---- .../translator/ai_translator/md_translator.py | 18 ++++++++++++++---- .../ai_translator/pptx_translator.py | 18 ++++++++++++++---- .../translator/ai_translator/srt_translator.py | 18 ++++++++++++++---- .../translator/ai_translator/txt_translator.py | 18 ++++++++++++++---- .../ai_translator/xlsx_translator.py | 18 ++++++++++++++---- 12 files changed, 140 insertions(+), 42 deletions(-) diff --git a/docutranslate/agents/markdown_agent.py b/docutranslate/agents/markdown_agent.py index 3368bde..6f1d1da 100644 --- a/docutranslate/agents/markdown_agent.py +++ b/docutranslate/agents/markdown_agent.py @@ -75,5 +75,4 @@ You are a professional machine translation engine. if self.glossary_dict is None: self.glossary_dict = {} if update_dict is not None: - # 以用户上传的术语表为主,自动生成的术语表只添加用户没有的术语 self.glossary_dict = self.glossary_dict | update_dict diff --git a/docutranslate/agents/segments_agent.py b/docutranslate/agents/segments_agent.py index 2ec877f..bd01804 100644 --- a/docutranslate/agents/segments_agent.py +++ b/docutranslate/agents/segments_agent.py @@ -276,5 +276,4 @@ class SegmentsTranslateAgent(Agent): if self.glossary_dict is None: self.glossary_dict = {} if update_dict is not None: - # 以用户上传的术语表为主,自动生成的术语表只添加用户没有的术语 self.glossary_dict = self.glossary_dict | update_dict diff --git a/docutranslate/translator/ai_translator/ass_translator.py b/docutranslate/translator/ai_translator/ass_translator.py index c65a901..b829b59 100644 --- a/docutranslate/translator/ai_translator/ass_translator.py +++ b/docutranslate/translator/ai_translator/ass_translator.py @@ -107,11 +107,16 @@ class AssTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) if self.translate_agent: translated_texts = self.translate_agent.send_segments(original_texts, self.chunk_size) @@ -129,11 +134,16 @@ class AssTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) if self.translate_agent: translated_texts = await self.translate_agent.send_segments_async(original_texts, self.chunk_size) diff --git a/docutranslate/translator/ai_translator/docx_translator.py b/docutranslate/translator/ai_translator/docx_translator.py index f1f3911..fc84d03 100644 --- a/docutranslate/translator/ai_translator/docx_translator.py +++ b/docutranslate/translator/ai_translator/docx_translator.py @@ -537,11 +537,16 @@ class DocxTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = self.glossary_agent.send_segments(originals, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) translated = self.translate_agent.send_segments(originals, self.chunk_size) if self.translate_agent else originals @@ -556,11 +561,16 @@ class DocxTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = await self.glossary_agent.send_segments_async(originals, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) translated = await self.translate_agent.send_segments_async(originals, self.chunk_size) if self.translate_agent else originals diff --git a/docutranslate/translator/ai_translator/epub_translator.py b/docutranslate/translator/ai_translator/epub_translator.py index 57b956b..ed05a98 100644 --- a/docutranslate/translator/ai_translator/epub_translator.py +++ b/docutranslate/translator/ai_translator/epub_translator.py @@ -280,11 +280,16 @@ class EpubTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) if self.translate_agent: translated_texts = self.translate_agent.send_segments(original_texts, self.chunk_size) else: @@ -304,11 +309,16 @@ class EpubTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) if self.translate_agent: translated_texts = await self.translate_agent.send_segments_async( original_texts, self.chunk_size diff --git a/docutranslate/translator/ai_translator/html_translator.py b/docutranslate/translator/ai_translator/html_translator.py index f5d2e07..0722f1c 100644 --- a/docutranslate/translator/ai_translator/html_translator.py +++ b/docutranslate/translator/ai_translator/html_translator.py @@ -206,11 +206,16 @@ class HtmlTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) if self.translate_agent: translated_texts = self.translate_agent.send_segments(original_texts, self.chunk_size) else: @@ -227,11 +232,16 @@ class HtmlTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) if self.translate_agent: translated_texts = await self.translate_agent.send_segments_async(original_texts, self.chunk_size) else: diff --git a/docutranslate/translator/ai_translator/json_translator.py b/docutranslate/translator/ai_translator/json_translator.py index 9115fc8..c608410 100644 --- a/docutranslate/translator/ai_translator/json_translator.py +++ b/docutranslate/translator/ai_translator/json_translator.py @@ -135,11 +135,16 @@ class JsonTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) # 步骤 2: 批量翻译提取出的文本 if self.translate_agent: @@ -166,11 +171,16 @@ class JsonTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) # 步骤 2: 批量翻译提取出的文本 if self.translate_agent: diff --git a/docutranslate/translator/ai_translator/md_translator.py b/docutranslate/translator/ai_translator/md_translator.py index ea852fd..5b927eb 100644 --- a/docutranslate/translator/ai_translator/md_translator.py +++ b/docutranslate/translator/ai_translator/md_translator.py @@ -67,11 +67,16 @@ class MDTranslator(AiTranslator): translate_chunks.append(chunk) if self.glossary_agent and translate_chunks: + # 1. 获取增量 glossary_dict_gen = self.glossary_agent.send_segments(translate_chunks, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) self.logger.info(f"markdown分为{len(chunks)}块 (其中需翻译{len(translate_chunks)}块)") @@ -108,12 +113,17 @@ class MDTranslator(AiTranslator): translate_chunks.append(chunk) if self.glossary_agent and translate_chunks: + # 1. 获取增量 glossary_dict_gen = await self.glossary_agent.send_segments_async(translate_chunks, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) self.logger.info(f"markdown分为{len(chunks)}块 (其中需翻译{len(translate_chunks)}块)") diff --git a/docutranslate/translator/ai_translator/pptx_translator.py b/docutranslate/translator/ai_translator/pptx_translator.py index f7b7b0a..48ad200 100644 --- a/docutranslate/translator/ai_translator/pptx_translator.py +++ b/docutranslate/translator/ai_translator/pptx_translator.py @@ -315,11 +315,16 @@ class PPTXTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = self.glossary_agent.send_segments(originals, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) translated = self.translate_agent.send_segments(originals, self.chunk_size) if self.translate_agent else originals @@ -334,11 +339,16 @@ class PPTXTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = await self.glossary_agent.send_segments_async(originals, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) translated = await self.translate_agent.send_segments_async(originals, self.chunk_size) if self.translate_agent else originals diff --git a/docutranslate/translator/ai_translator/srt_translator.py b/docutranslate/translator/ai_translator/srt_translator.py index def4d52..fb32378 100644 --- a/docutranslate/translator/ai_translator/srt_translator.py +++ b/docutranslate/translator/ai_translator/srt_translator.py @@ -119,11 +119,16 @@ class SrtTranslator(AiTranslator): self.logger.info("\n文件中没有找到需要翻译的字幕内容。") return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) # --- 步骤 2: 调用翻译Agent --- if self.translate_agent: translated_texts = self.translate_agent.send_segments(original_texts, self.chunk_size) @@ -145,11 +150,16 @@ class SrtTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) # --- 步骤 2: 调用翻译Agent (异步) --- if self.translate_agent: diff --git a/docutranslate/translator/ai_translator/txt_translator.py b/docutranslate/translator/ai_translator/txt_translator.py index 2a61f9f..64f16a6 100644 --- a/docutranslate/translator/ai_translator/txt_translator.py +++ b/docutranslate/translator/ai_translator/txt_translator.py @@ -220,11 +220,16 @@ class TXTTranslator(AiTranslator): texts_to_translate = [text for text in original_segments if text.strip()] if self.glossary_agent and texts_to_translate: + # 1. 获取增量 glossary_dict_gen = self.glossary_agent.send_segments(texts_to_translate, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) translated_texts_map = {} if self.translate_agent and texts_to_translate: @@ -250,11 +255,16 @@ class TXTTranslator(AiTranslator): texts_to_translate = [text for text in original_segments if text.strip()] if self.glossary_agent and texts_to_translate: + # 1. 获取增量 glossary_dict_gen = await self.glossary_agent.send_segments_async(texts_to_translate, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) translated_texts_map = {} if self.translate_agent and texts_to_translate: diff --git a/docutranslate/translator/ai_translator/xlsx_translator.py b/docutranslate/translator/ai_translator/xlsx_translator.py index c7bfd1c..699f472 100644 --- a/docutranslate/translator/ai_translator/xlsx_translator.py +++ b/docutranslate/translator/ai_translator/xlsx_translator.py @@ -471,11 +471,16 @@ class XlsxTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) if self.translate_agent: translated_texts = self.translate_agent.send_segments(original_texts, self.chunk_size) @@ -502,11 +507,16 @@ class XlsxTranslator(AiTranslator): return self if self.glossary_agent: + # 1. 获取增量 glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size) + + # 2. 在 Translator 层统一合并 (SSOT) if self.glossary: self.glossary.update(glossary_dict_gen) - if self.translate_agent: - self.translate_agent.update_glossary_dict(glossary_dict_gen) + + # 3. 将合并后的【完整字典】传给 Agent + if self.translate_agent and self.glossary: + self.translate_agent.update_glossary_dict(self.glossary.glossary_dict) if self.translate_agent: translated_texts = await self.translate_agent.send_segments_async(original_texts, self.chunk_size)