更新术语表bug
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)}块)")
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user