修复术语表问题

This commit is contained in:
xunbu
2026-01-11 13:03:02 +08:00
parent 65eaf514ef
commit 98ac573a13
12 changed files with 140 additions and 42 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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:

View File

@@ -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)}块)")

View File

@@ -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

View File

@@ -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:

View File

@@ -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:

View File

@@ -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)