diff --git a/docutranslate/translator/ai_translator/ass_translator.py b/docutranslate/translator/ai_translator/ass_translator.py index cdef8b3..c65a901 100644 --- a/docutranslate/translator/ai_translator/ass_translator.py +++ b/docutranslate/translator/ai_translator/ass_translator.py @@ -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) diff --git a/docutranslate/translator/ai_translator/base.py b/docutranslate/translator/ai_translator/base.py index f9603fe..daaa0bf 100644 --- a/docutranslate/translator/ai_translator/base.py +++ b/docutranslate/translator/ai_translator/base.py @@ -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 ): diff --git a/docutranslate/translator/ai_translator/docx_translator.py b/docutranslate/translator/ai_translator/docx_translator.py index 6947a71..f1f3911 100644 --- a/docutranslate/translator/ai_translator/docx_translator.py +++ b/docutranslate/translator/ai_translator/docx_translator.py @@ -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 diff --git a/docutranslate/translator/ai_translator/epub_translator.py b/docutranslate/translator/ai_translator/epub_translator.py index 9f79e76..c744a35 100644 --- a/docutranslate/translator/ai_translator/epub_translator.py +++ b/docutranslate/translator/ai_translator/epub_translator.py @@ -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 diff --git a/docutranslate/translator/ai_translator/html_translator.py b/docutranslate/translator/ai_translator/html_translator.py index e09ae8f..f5d2e07 100644 --- a/docutranslate/translator/ai_translator/html_translator.py +++ b/docutranslate/translator/ai_translator/html_translator.py @@ -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: diff --git a/docutranslate/translator/ai_translator/json_translator.py b/docutranslate/translator/ai_translator/json_translator.py index 33cbea5..e15e79e 100644 --- a/docutranslate/translator/ai_translator/json_translator.py +++ b/docutranslate/translator/ai_translator/json_translator.py @@ -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: diff --git a/docutranslate/translator/ai_translator/md_translator.py b/docutranslate/translator/ai_translator/md_translator.py index 640c2c7..ea852fd 100644 --- a/docutranslate/translator/ai_translator/md_translator.py +++ b/docutranslate/translator/ai_translator/md_translator.py @@ -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)}块)") diff --git a/docutranslate/translator/ai_translator/pptx_translator.py b/docutranslate/translator/ai_translator/pptx_translator.py index 13678be..f7b7b0a 100644 --- a/docutranslate/translator/ai_translator/pptx_translator.py +++ b/docutranslate/translator/ai_translator/pptx_translator.py @@ -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 diff --git a/docutranslate/translator/ai_translator/srt_translator.py b/docutranslate/translator/ai_translator/srt_translator.py index 31846d9..f700963 100644 --- a/docutranslate/translator/ai_translator/srt_translator.py +++ b/docutranslate/translator/ai_translator/srt_translator.py @@ -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: diff --git a/docutranslate/translator/ai_translator/txt_translator.py b/docutranslate/translator/ai_translator/txt_translator.py index 47146ed..271b052 100644 --- a/docutranslate/translator/ai_translator/txt_translator.py +++ b/docutranslate/translator/ai_translator/txt_translator.py @@ -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: diff --git a/docutranslate/translator/ai_translator/xlsx_translator.py b/docutranslate/translator/ai_translator/xlsx_translator.py index d75a1c8..c7bfd1c 100644 --- a/docutranslate/translator/ai_translator/xlsx_translator.py +++ b/docutranslate/translator/ai_translator/xlsx_translator.py @@ -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) diff --git a/docutranslate/workflow/ass_workflow.py b/docutranslate/workflow/ass_workflow.py index 2ac773a..c424517 100644 --- a/docutranslate/workflow/ass_workflow.py +++ b/docutranslate/workflow/ass_workflow.py @@ -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 diff --git a/docutranslate/workflow/docx_workflow.py b/docutranslate/workflow/docx_workflow.py index b090b30..6a35844 100644 --- a/docutranslate/workflow/docx_workflow.py +++ b/docutranslate/workflow/docx_workflow.py @@ -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 diff --git a/docutranslate/workflow/epub_workflow.py b/docutranslate/workflow/epub_workflow.py index 8ebcf03..1f8afb5 100644 --- a/docutranslate/workflow/epub_workflow.py +++ b/docutranslate/workflow/epub_workflow.py @@ -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 diff --git a/docutranslate/workflow/html_workflow.py b/docutranslate/workflow/html_workflow.py index f82df66..3b3fbd2 100644 --- a/docutranslate/workflow/html_workflow.py +++ b/docutranslate/workflow/html_workflow.py @@ -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 diff --git a/docutranslate/workflow/json_workflow.py b/docutranslate/workflow/json_workflow.py index 45e36a4..68a892c 100644 --- a/docutranslate/workflow/json_workflow.py +++ b/docutranslate/workflow/json_workflow.py @@ -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 diff --git a/docutranslate/workflow/md_based_workflow.py b/docutranslate/workflow/md_based_workflow.py index c31bfec..4a03ce8 100644 --- a/docutranslate/workflow/md_based_workflow.py +++ b/docutranslate/workflow/md_based_workflow.py @@ -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 diff --git a/docutranslate/workflow/pptx_workflow.py b/docutranslate/workflow/pptx_workflow.py index a6724cc..cf9c1dd 100644 --- a/docutranslate/workflow/pptx_workflow.py +++ b/docutranslate/workflow/pptx_workflow.py @@ -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 diff --git a/docutranslate/workflow/srt_workflow.py b/docutranslate/workflow/srt_workflow.py index 6bc6f90..cd643b5 100644 --- a/docutranslate/workflow/srt_workflow.py +++ b/docutranslate/workflow/srt_workflow.py @@ -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 diff --git a/docutranslate/workflow/txt_workflow.py b/docutranslate/workflow/txt_workflow.py index e4084af..a898d48 100644 --- a/docutranslate/workflow/txt_workflow.py +++ b/docutranslate/workflow/txt_workflow.py @@ -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 diff --git a/docutranslate/workflow/xlsx_workflow.py b/docutranslate/workflow/xlsx_workflow.py index b49532c..167208e 100644 --- a/docutranslate/workflow/xlsx_workflow.py +++ b/docutranslate/workflow/xlsx_workflow.py @@ -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