更新术语表bug

This commit is contained in:
xunbu
2026-01-09 18:00:16 +08:00
parent 8ed3749435
commit 17f946612c
21 changed files with 155 additions and 128 deletions

View File

@@ -25,6 +25,7 @@ class AssTranslator(AiTranslator):
super().__init__(config=config)
self.chunk_size = config.chunk_size
self.translate_agent = None
glossary_dict = self.glossary.glossary_dict if self.glossary else None
if not self.skip_translate:
agent_config = SegmentsTranslateAgentConfig(
custom_prompt=config.custom_prompt,
@@ -37,7 +38,7 @@ class AssTranslator(AiTranslator):
concurrent=config.concurrent,
timeout=config.timeout,
logger=self.logger,
glossary_dict=config.glossary_dict,
glossary_dict=glossary_dict,
retry=config.retry,
system_proxy_enable=config.system_proxy_enable,
force_json=config.force_json,
@@ -106,9 +107,11 @@ class AssTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
if self.translate_agent:
translated_texts = self.translate_agent.send_segments(original_texts, self.chunk_size)
@@ -126,9 +129,11 @@ class AssTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
if self.translate_agent:
translated_texts = await self.translate_agent.send_segments_async(original_texts, self.chunk_size)

View File

@@ -6,6 +6,7 @@ from typing import TypeVar
from docutranslate.agents.agent import AgentConfig
from docutranslate.agents.glossary_agent import GlossaryAgentConfig, GlossaryAgent
from docutranslate.glossary.glossary import Glossary
from docutranslate.ir.document import Document
from docutranslate.translator.base import Translator, TranslatorConfig
@@ -22,7 +23,7 @@ class AiTranslatorConfig(TranslatorConfig, AgentConfig):
to_lang: str = "简体中文"
custom_prompt: str | None = None
chunk_size: int = 3000
glossary_dict: dict[str:str] | None = field(default=None)
glossary: Glossary | None = None
glossary_generate_enable: bool = False
glossary_agent_config: GlossaryAgentConfig | None = None
skip_translate: bool = False # 当skip_translate为False时base_url、model_id为必填项
@@ -39,8 +40,8 @@ class AiTranslator(Translator[T]):
def __init__(self, config: AiTranslatorConfig):
super().__init__(config=config)
self.skip_translate = config.skip_translate
self.glossary = config.glossary if config.glossary else Glossary()
self.glossary_agent = None
self.glossary_dict_gen = None
if not self.skip_translate and (
config.base_url is None or config.api_key is None or config.model_id is None
):

View File

@@ -123,12 +123,13 @@ class DocxTranslator(AiTranslator):
super().__init__(config=config)
self.chunk_size = config.chunk_size
self.translate_agent = None
glossary_dict = self.glossary.glossary_dict if self.glossary else None
if not self.skip_translate:
agent_config = SegmentsTranslateAgentConfig(
custom_prompt=config.custom_prompt, to_lang=config.to_lang, base_url=config.base_url,
api_key=config.api_key, model_id=config.model_id, temperature=config.temperature,
thinking=config.thinking, concurrent=config.concurrent, timeout=config.timeout,
logger=self.logger, glossary_dict=config.glossary_dict, retry=config.retry,
logger=self.logger, glossary_dict=glossary_dict, retry=config.retry,
system_proxy_enable=config.system_proxy_enable, force_json=config.force_json,
rpm=config.rpm,
tpm=config.tpm,
@@ -536,9 +537,11 @@ class DocxTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = self.glossary_agent.send_segments(originals, self.chunk_size)
glossary_dict_gen = self.glossary_agent.send_segments(originals, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
translated = self.translate_agent.send_segments(originals,
self.chunk_size) if self.translate_agent else originals
@@ -553,9 +556,11 @@ class DocxTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = await self.glossary_agent.send_segments_async(originals, self.chunk_size)
glossary_dict_gen = await self.glossary_agent.send_segments_async(originals, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
translated = await self.translate_agent.send_segments_async(originals,
self.chunk_size) if self.translate_agent else originals

View File

@@ -279,9 +279,11 @@ class EpubTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
if self.translate_agent:
translated_texts = self.translate_agent.send_segments(original_texts, self.chunk_size)
else:
@@ -301,9 +303,11 @@ class EpubTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
if self.translate_agent:
translated_texts = await self.translate_agent.send_segments_async(
original_texts, self.chunk_size

View File

@@ -54,6 +54,7 @@ class HtmlTranslator(AiTranslator):
super().__init__(config=config)
self.chunk_size = config.chunk_size
self.translate_agent = None
glossary_dict = self.glossary.glossary_dict if self.glossary else None
if not self.skip_translate:
agent_config = SegmentsTranslateAgentConfig(
custom_prompt=config.custom_prompt,
@@ -66,7 +67,7 @@ class HtmlTranslator(AiTranslator):
concurrent=config.concurrent,
timeout=config.timeout,
logger=self.logger,
glossary_dict=config.glossary_dict,
glossary_dict=glossary_dict,
retry=config.retry,
system_proxy_enable=config.system_proxy_enable,
force_json=config.force_json,
@@ -205,9 +206,11 @@ class HtmlTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
if self.translate_agent:
translated_texts = self.translate_agent.send_segments(original_texts, self.chunk_size)
else:
@@ -224,9 +227,11 @@ class HtmlTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
if self.translate_agent:
translated_texts = await self.translate_agent.send_segments_async(original_texts, self.chunk_size)
else:

View File

@@ -134,9 +134,11 @@ class JsonTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
# 步骤 2: 批量翻译提取出的文本
if self.translate_agent:
@@ -163,9 +165,11 @@ class JsonTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
# 步骤 2: 批量翻译提取出的文本
if self.translate_agent:

View File

@@ -27,6 +27,7 @@ class MDTranslator(AiTranslator):
super().__init__(config=config)
self.chunk_size = config.chunk_size
self.translate_agent = None
glossary_dict = self.glossary.glossary_dict if self.glossary else None
if not self.skip_translate:
agent_config = MDTranslateAgentConfig(custom_prompt=config.custom_prompt,
to_lang=config.to_lang,
@@ -38,7 +39,7 @@ class MDTranslator(AiTranslator):
concurrent=config.concurrent,
timeout=config.timeout,
logger=self.logger,
glossary_dict=config.glossary_dict,
glossary_dict=glossary_dict,
retry=config.retry,
system_proxy_enable=config.system_proxy_enable,
rpm=config.rpm,
@@ -66,9 +67,11 @@ class MDTranslator(AiTranslator):
translate_chunks.append(chunk)
if self.glossary_agent and translate_chunks:
self.glossary_dict_gen = self.glossary_agent.send_segments(translate_chunks, self.chunk_size)
glossary_dict_gen = self.glossary_agent.send_segments(translate_chunks, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
self.logger.info(f"markdown分为{len(chunks)}块 (其中需翻译{len(translate_chunks)}块)")
@@ -105,10 +108,12 @@ class MDTranslator(AiTranslator):
translate_chunks.append(chunk)
if self.glossary_agent and translate_chunks:
self.glossary_dict_gen = await self.glossary_agent.send_segments_async(translate_chunks,
glossary_dict_gen = await self.glossary_agent.send_segments_async(translate_chunks,
self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
self.logger.info(f"markdown分为{len(chunks)}块 (其中需翻译{len(translate_chunks)}块)")

View File

@@ -40,12 +40,13 @@ class PPTXTranslator(AiTranslator):
super().__init__(config=config)
self.chunk_size = config.chunk_size
self.translate_agent = None
glossary_dict = self.glossary.glossary_dict if self.glossary else None
if not self.skip_translate:
agent_config = SegmentsTranslateAgentConfig(
custom_prompt=config.custom_prompt, to_lang=config.to_lang, base_url=config.base_url,
api_key=config.api_key, model_id=config.model_id, temperature=config.temperature,
thinking=config.thinking, concurrent=config.concurrent, timeout=config.timeout,
logger=self.logger, glossary_dict=config.glossary_dict, retry=config.retry,
logger=self.logger, glossary_dict=glossary_dict, retry=config.retry,
system_proxy_enable=config.system_proxy_enable, force_json=config.force_json,
rpm=config.rpm,
tpm=config.tpm,
@@ -314,9 +315,11 @@ class PPTXTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = self.glossary_agent.send_segments(originals, self.chunk_size)
glossary_dict_gen = self.glossary_agent.send_segments(originals, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
translated = self.translate_agent.send_segments(originals,
self.chunk_size) if self.translate_agent else originals
@@ -331,9 +334,11 @@ class PPTXTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = await self.glossary_agent.send_segments_async(originals, self.chunk_size)
glossary_dict_gen = await self.glossary_agent.send_segments_async(originals, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
translated = await self.translate_agent.send_segments_async(originals,
self.chunk_size) if self.translate_agent else originals

View File

@@ -118,9 +118,11 @@ class SrtTranslator(AiTranslator):
self.logger.info("\n文件中没有找到需要翻译的字幕内容。")
return self
if self.glossary_agent:
self.glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
# --- 步骤 2: 调用翻译Agent ---
if self.translate_agent:
translated_texts = self.translate_agent.send_segments(original_texts, self.chunk_size)
@@ -142,9 +144,11 @@ class SrtTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
# --- 步骤 2: 调用翻译Agent (异步) ---
if self.translate_agent:

View File

@@ -219,9 +219,11 @@ class TXTTranslator(AiTranslator):
texts_to_translate = [text for text in original_segments if text.strip()]
if self.glossary_agent and texts_to_translate:
self.glossary_dict_gen = self.glossary_agent.send_segments(texts_to_translate, self.chunk_size)
glossary_dict_gen = self.glossary_agent.send_segments(texts_to_translate, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
translated_texts_map = {}
if self.translate_agent and texts_to_translate:
@@ -247,9 +249,11 @@ class TXTTranslator(AiTranslator):
texts_to_translate = [text for text in original_segments if text.strip()]
if self.glossary_agent and texts_to_translate:
self.glossary_dict_gen = await self.glossary_agent.send_segments_async(texts_to_translate, self.chunk_size)
glossary_dict_gen = await self.glossary_agent.send_segments_async(texts_to_translate, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
translated_texts_map = {}
if self.translate_agent and texts_to_translate:

View File

@@ -28,6 +28,7 @@ class XlsxTranslator(AiTranslator):
super().__init__(config=config)
self.chunk_size = config.chunk_size
self.translate_agent = None
glossary_dict = self.glossary.glossary_dict if self.glossary else None
if not self.skip_translate:
agent_config = SegmentsTranslateAgentConfig(
custom_prompt=config.custom_prompt,
@@ -40,7 +41,7 @@ class XlsxTranslator(AiTranslator):
concurrent=config.concurrent,
timeout=config.timeout,
logger=self.logger,
glossary_dict=config.glossary_dict,
glossary_dict=glossary_dict,
retry=config.retry,
system_proxy_enable=config.system_proxy_enable,
force_json=config.force_json,
@@ -470,9 +471,11 @@ class XlsxTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
glossary_dict_gen = self.glossary_agent.send_segments(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
if self.translate_agent:
translated_texts = self.translate_agent.send_segments(original_texts, self.chunk_size)
@@ -499,9 +502,11 @@ class XlsxTranslator(AiTranslator):
return self
if self.glossary_agent:
self.glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
glossary_dict_gen = await self.glossary_agent.send_segments_async(original_texts, self.chunk_size)
if self.glossary:
self.glossary.update(glossary_dict_gen)
if self.translate_agent:
self.translate_agent.update_glossary_dict(self.glossary_dict_gen)
self.translate_agent.update_glossary_dict(glossary_dict_gen)
if self.translate_agent:
translated_texts = await self.translate_agent.send_segments_async(original_texts, self.chunk_size)

View File

@@ -42,20 +42,18 @@ class AssWorkflow(Workflow[AssWorkflowConfig, Document, Document], HTMLExportabl
def translate(self) -> Self:
document, translator=self._pre_translate(self.document_original)
translator.translate(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self
async def translate_async(self) -> Self:
document, translator = self._pre_translate(self.document_original)
await translator.translate_async(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self

View File

@@ -41,20 +41,18 @@ class DocxWorkflow(Workflow[DocxWorkflowConfig, Document, Document], HTMLExporta
def translate(self) -> Self:
document, translator = self._pre_translate(self.document_original)
translator.translate(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self
async def translate_async(self) -> Self:
document, translator = self._pre_translate(self.document_original)
await translator.translate_async(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self

View File

@@ -39,20 +39,18 @@ class EpubWorkflow(Workflow[EpubWorkflowConfig, Document, Document], HTMLExporta
def translate(self) -> Self:
document, translator = self._pre_translate(self.document_original)
translator.translate(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self
async def translate_async(self) -> Self:
document, translator = self._pre_translate(self.document_original)
await translator.translate_async(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self

View File

@@ -37,20 +37,18 @@ class HtmlWorkflow(Workflow[HtmlWorkflowConfig, Document, Document], HTMLExporta
def translate(self) -> Self:
document, translator = self._pre_translate(self.document_original)
translator.translate(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self
async def translate_async(self) -> Self:
document, translator = self._pre_translate(self.document_original)
await translator.translate_async(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self

View File

@@ -38,20 +38,18 @@ class JsonWorkflow(Workflow[JsonWorkflowConfig, Document, Document], HTMLExporta
def translate(self) -> Self:
document, translator = self._pre_translate(self.document_original)
translator.translate(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self
async def translate_async(self) -> Self:
document, translator = self._pre_translate(self.document_original)
await translator.translate_async(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self

View File

@@ -108,10 +108,9 @@ class MarkdownBasedWorkflow(Workflow[MarkdownBasedWorkflowConfig, Document, Mark
convert_engine, convert_config, translator_config, translator = self._pre_translate(self.document_original)
document_md = self._get_document_md(convert_engine, convert_config)
translator.translate(document_md)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document_md
return self
@@ -119,10 +118,9 @@ class MarkdownBasedWorkflow(Workflow[MarkdownBasedWorkflowConfig, Document, Mark
convert_engine, convert_config, translator_config, translator = self._pre_translate(self.document_original)
document_md = await asyncio.to_thread(self._get_document_md, convert_engine, convert_config)
await translator.translate_async(document_md)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document_md
return self

View File

@@ -41,20 +41,18 @@ class PPTXWorkflow(Workflow[PPTXWorkflowConfig, Document, Document], HTMLExporta
def translate(self) -> Self:
document, translator = self._pre_translate(self.document_original)
translator.translate(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self
async def translate_async(self) -> Self:
document, translator = self._pre_translate(self.document_original)
await translator.translate_async(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self

View File

@@ -39,20 +39,18 @@ class SrtWorkflow(Workflow[SrtWorkflowConfig, Document, Document], HTMLExportabl
def translate(self) -> Self:
document, translator=self._pre_translate(self.document_original)
translator.translate(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self
async def translate_async(self) -> Self:
document, translator = self._pre_translate(self.document_original)
await translator.translate_async(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self

View File

@@ -39,20 +39,18 @@ class TXTWorkflow(Workflow[TXTWorkflowConfig, Document, Document], HTMLExportabl
def translate(self) -> Self:
document, translator=self._pre_translate(self.document_original)
translator.translate(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self
async def translate_async(self) -> Self:
document, translator = self._pre_translate(self.document_original)
await translator.translate_async(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self

View File

@@ -62,10 +62,9 @@ class XlsxWorkflow(Workflow[XlsxWorkflowConfig, Document, Document], HTMLExporta
document_xlsx = self._get_document_xlsx(self.document_original)
document, translator = self._pre_translate(document_xlsx)
translator.translate(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self
@@ -73,10 +72,9 @@ class XlsxWorkflow(Workflow[XlsxWorkflowConfig, Document, Document], HTMLExporta
document_xlsx = await asyncio.to_thread(self._get_document_xlsx, self.document_original)
document, translator = self._pre_translate(document_xlsx)
await translator.translate_async(document)
# 使用合并后的术语表(用户上传 + 自动生成)
merged_glossary = getattr(translator.translate_agent, 'glossary_dict', None) or translator.glossary_dict_gen
if merged_glossary:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(merged_glossary))
# 直接从 translator.glossary 获取术语表
if translator.glossary.glossary_dict:
self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary.glossary_dict))
self.document_translated = document
return self