From 8127ef826715718060556d3dba3a4ac82a276f6a Mon Sep 17 00:00:00 2001 From: xunbu Date: Mon, 5 Jan 2026 23:58:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E6=9C=AF?= =?UTF-8?q?=E8=AF=AD=E8=A1=A8=E4=B8=8D=E8=A6=86=E7=9B=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9C=AF=E8=AF=AD=E8=A1=A8=EF=BC=8C=E6=9C=80=E7=BB=88=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E7=9A=84=E6=98=AF=E5=90=88=E5=B9=B6=E6=9C=AF=E8=AF=AD?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docutranslate/agents/markdown_agent.py | 3 ++- docutranslate/agents/segments_agent.py | 3 ++- docutranslate/workflow/ass_workflow.py | 12 ++++++++---- docutranslate/workflow/docx_workflow.py | 12 ++++++++---- docutranslate/workflow/epub_workflow.py | 12 ++++++++---- docutranslate/workflow/html_workflow.py | 12 ++++++++---- docutranslate/workflow/json_workflow.py | 12 ++++++++---- docutranslate/workflow/md_based_workflow.py | 12 ++++++++---- docutranslate/workflow/pptx_workflow.py | 12 ++++++++---- docutranslate/workflow/srt_workflow.py | 12 ++++++++---- docutranslate/workflow/txt_workflow.py | 12 ++++++++---- docutranslate/workflow/xlsx_workflow.py | 12 ++++++++---- 12 files changed, 84 insertions(+), 42 deletions(-) diff --git a/docutranslate/agents/markdown_agent.py b/docutranslate/agents/markdown_agent.py index f616f71..3368bde 100644 --- a/docutranslate/agents/markdown_agent.py +++ b/docutranslate/agents/markdown_agent.py @@ -75,4 +75,5 @@ 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 = update_dict | self.glossary_dict + # 以用户上传的术语表为主,自动生成的术语表只添加用户没有的术语 + self.glossary_dict = self.glossary_dict | update_dict diff --git a/docutranslate/agents/segments_agent.py b/docutranslate/agents/segments_agent.py index 506f2bc..2ec877f 100644 --- a/docutranslate/agents/segments_agent.py +++ b/docutranslate/agents/segments_agent.py @@ -276,4 +276,5 @@ class SegmentsTranslateAgent(Agent): if self.glossary_dict is None: self.glossary_dict = {} if update_dict is not None: - self.glossary_dict = update_dict | self.glossary_dict + # 以用户上传的术语表为主,自动生成的术语表只添加用户没有的术语 + self.glossary_dict = self.glossary_dict | update_dict diff --git a/docutranslate/workflow/ass_workflow.py b/docutranslate/workflow/ass_workflow.py index 5dcd68a..2ac773a 100644 --- a/docutranslate/workflow/ass_workflow.py +++ b/docutranslate/workflow/ass_workflow.py @@ -42,16 +42,20 @@ class AssWorkflow(Workflow[AssWorkflowConfig, Document, Document], HTMLExportabl def translate(self) -> Self: document, translator=self._pre_translate(self.document_original) translator.translate(document) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document return self diff --git a/docutranslate/workflow/docx_workflow.py b/docutranslate/workflow/docx_workflow.py index 8eaaa97..b090b30 100644 --- a/docutranslate/workflow/docx_workflow.py +++ b/docutranslate/workflow/docx_workflow.py @@ -41,16 +41,20 @@ class DocxWorkflow(Workflow[DocxWorkflowConfig, Document, Document], HTMLExporta def translate(self) -> Self: document, translator = self._pre_translate(self.document_original) translator.translate(document) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document return self diff --git a/docutranslate/workflow/epub_workflow.py b/docutranslate/workflow/epub_workflow.py index bc0940f..8ebcf03 100644 --- a/docutranslate/workflow/epub_workflow.py +++ b/docutranslate/workflow/epub_workflow.py @@ -39,16 +39,20 @@ class EpubWorkflow(Workflow[EpubWorkflowConfig, Document, Document], HTMLExporta def translate(self) -> Self: document, translator = self._pre_translate(self.document_original) translator.translate(document) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document return self diff --git a/docutranslate/workflow/html_workflow.py b/docutranslate/workflow/html_workflow.py index 44f22f1..f82df66 100644 --- a/docutranslate/workflow/html_workflow.py +++ b/docutranslate/workflow/html_workflow.py @@ -37,16 +37,20 @@ class HtmlWorkflow(Workflow[HtmlWorkflowConfig, Document, Document], HTMLExporta def translate(self) -> Self: document, translator = self._pre_translate(self.document_original) translator.translate(document) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document return self diff --git a/docutranslate/workflow/json_workflow.py b/docutranslate/workflow/json_workflow.py index 6fd0f6f..45e36a4 100644 --- a/docutranslate/workflow/json_workflow.py +++ b/docutranslate/workflow/json_workflow.py @@ -38,16 +38,20 @@ class JsonWorkflow(Workflow[JsonWorkflowConfig, Document, Document], HTMLExporta def translate(self) -> Self: document, translator = self._pre_translate(self.document_original) translator.translate(document) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document return self diff --git a/docutranslate/workflow/md_based_workflow.py b/docutranslate/workflow/md_based_workflow.py index b5cc590..c31bfec 100644 --- a/docutranslate/workflow/md_based_workflow.py +++ b/docutranslate/workflow/md_based_workflow.py @@ -108,8 +108,10 @@ 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document_md return self @@ -117,8 +119,10 @@ 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document_md return self diff --git a/docutranslate/workflow/pptx_workflow.py b/docutranslate/workflow/pptx_workflow.py index 0ce4c19..a6724cc 100644 --- a/docutranslate/workflow/pptx_workflow.py +++ b/docutranslate/workflow/pptx_workflow.py @@ -41,16 +41,20 @@ class PPTXWorkflow(Workflow[PPTXWorkflowConfig, Document, Document], HTMLExporta def translate(self) -> Self: document, translator = self._pre_translate(self.document_original) translator.translate(document) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document return self diff --git a/docutranslate/workflow/srt_workflow.py b/docutranslate/workflow/srt_workflow.py index 81776ef..6bc6f90 100644 --- a/docutranslate/workflow/srt_workflow.py +++ b/docutranslate/workflow/srt_workflow.py @@ -39,16 +39,20 @@ class SrtWorkflow(Workflow[SrtWorkflowConfig, Document, Document], HTMLExportabl def translate(self) -> Self: document, translator=self._pre_translate(self.document_original) translator.translate(document) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document return self diff --git a/docutranslate/workflow/txt_workflow.py b/docutranslate/workflow/txt_workflow.py index fe225e1..e4084af 100644 --- a/docutranslate/workflow/txt_workflow.py +++ b/docutranslate/workflow/txt_workflow.py @@ -39,16 +39,20 @@ class TXTWorkflow(Workflow[TXTWorkflowConfig, Document, Document], HTMLExportabl def translate(self) -> Self: document, translator=self._pre_translate(self.document_original) translator.translate(document) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document return self diff --git a/docutranslate/workflow/xlsx_workflow.py b/docutranslate/workflow/xlsx_workflow.py index 4a48cca..b49532c 100644 --- a/docutranslate/workflow/xlsx_workflow.py +++ b/docutranslate/workflow/xlsx_workflow.py @@ -62,8 +62,10 @@ 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document return self @@ -71,8 +73,10 @@ 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) - if translator.glossary_dict_gen: - self.attachment.add_document("glossary", Glossary.glossary_dict2csv(translator.glossary_dict_gen)) + # 使用合并后的术语表(用户上传 + 自动生成) + 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)) self.document_translated = document return self